立即注册 找回密码

微雪课堂

搜索
微雪课堂 首页 AVR AVR单片机笑傲江湖 查看内容

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

2015-6-2 18:14| 发布者: waveshare-admin| 查看: 2056| 评论: 0

摘要: 系统功能   使用74LS165将AVR的串口输入扩为并口输入。硬件设计  AVR主控电路原理图(点击图片放大,不需要放大镜!)串行输入扩展为并行输入芯片74LS165控制电路原理图(点击图片放大,不需要放大镜!)软件设 ...
系统功能

   使用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指示串口接收到的数据,进行观察。

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


199

顶一下

刚表态过的朋友 (199 人)

最新评论

所有教程
AVR

微雪官网|产品资料|手机版|小黑屋|微雪课堂. ( 粤ICP备05067009号 )

GMT+8, 2019-9-21 15:34 , Processed in 0.021440 second(s), 18 queries .

Powered by Discuz! X3.2 © 2001-2013 Comsenz Inc & Style Design

返回顶部