AVR应用笔记 AVR单片机笑傲江湖 使用74LS165将AVR的串口输入扩为并口输入

使用74LS165将AVR的串口输入扩为并口输入

以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!

系统功能

   使用74LS165将AVR的串口输入扩为并口输入。


硬件设计
  


AVR主控电路原理图(点击图片放大,不需要放大镜!

串行输入扩展为并行输入芯片74LS165控制电路原理图(点击图片放大,不需要放大镜!

软件设计

下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!

//目标系统: 基于AVR单片机
//应用软件: ICC AVR

/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
实验内容:
使用PA口作为信号源输入到74LS165,74LS165将会将该信号转为串行信号,
MCU再自己接收串行信号,使用PB口的LED指示灯查看数据是否正确。
----------------------------------------------------------------------
硬件连接:
将PB口的LED指示灯开关切换到"ON"状态。
           SeialBoard(165PrlPort)   SMK1632
    P0  ---------     PB0
    P1   ---------     PB1
    P2   ---------     PB2
    P3   ---------     PB3
    P4   ---------     PB4
    P5   ---------     PB5
    P6   ---------     PB6
    P7   ---------     PB7
    PL  ---------   PD2
     SeialBoard(165SrlPort)    SMK1632
    VCC  ---------   VCC
    GND  ---------   GND
    TXD  ---------   RXD
    RXD  ---------   TXD
----------------------------------------------------------------------
注意事项:
(1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘
(2)请详细阅读:光盘根目录下的“产品资料\开发板实验板\SMK系列\SMK1632\说明资料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/

#include <iom16v.h>
#include "D:\ICC_H\CmmICC.H"

#define DISP_DDR    DDRB
#define DISP_PORT   PORTB

#define SOURCE_DDR  DDRA
#define SOURCE_PORT PORTA

#define IN_RXD  cbi(DDRD,0)    //PD0 数据口
#define GET_RXD  gbi(PIND,0)

#define OUT_TXD   sbi(DDRD,1)    //PD1 脉冲口
#define SET_TXD  sbi(PORTD,1)
#define CLR_TXD   cbi(PORTD,1)

#define OUT_PL  sbi(DDRD,2)    //PD2 锁存口
#define SET_PL  sbi(PORTD,2)
#define CLR_PL  cbi(PORTD,2)

/*--------------------------------------------------------------------
程序名称:从74LS165获取数据
程序功能:
注意事项:
提示说明:
输    入:
返    回:
--------------------------------------------------------------------*/
uint8 getDat()
{
 uint8 i,dat;

 for(i=0;i<8;i++) //循环输出8位数据
 {
  SET_TXD; //设置为高电平
  if(GET_RXD) //下降沿时候获取数据
   dat |= 0x01;
  dat = dat<<1;
  CLR_TXD; //设置为低电平
 }
 dat = dat>>1;
 return dat;
}
/*--------------------------------------------------------------------
程序名称:
程序功能:
注意事项:
提示说明:
输    入:
返    回:
--------------------------------------------------------------------*/
void main()

 uint8 i;
 
 DISP_DDR = 0XFF;
 SOURCE_DDR = 0XFF;
 OUT_PL;
 OUT_TXD;
 IN_RXD;
 //while(1)
 //{
  SOURCE_PORT = 0X55;
  SET_PL;
  CLR_PL;
  SET_PL;
  DISP_PORT = getDat();
 //}
}


系统调试

将74LS165的输入端口P0--P7接入单片机的PB口,那么PB口输出的数据经过74LS165的转换变为串行数据,将串行数据接入串口,那样若正常工作接收到的数据将与从PB口发出的数据一致,用LED指示串口接收到的数据,进行观察。


 相关AVR资料说明

可作为如下AVR的参考资料: ATtiny13 ATtiny24 ATtiny44 ATtiny84 ATtiny2313 ATtiny26 ATmega48 ATmega88 ATmega168 ATmega8 ATmega16 ATmega32 ATmega64 ATmega128 ATmega162 ATmega169 ATmega169P ATmega8515 ATmega8535

 相关AVR型号资料

ATtiny13 ATtiny24 ATtiny44 ATtiny84 ATtiny26 ATtiny2313
ATmega48 ATmega88 ATmega168 ATmega8 ATmega16 ATmega32
ATmega64 ATmega128 ATmega162 ATmega169 ATmega8515 ATmega8535

使用74LS165将AVR的串口输入扩为并口输入

——