此项目是作为单片机应用系统设计,通过STC单片机实验开发装置的结构、原理电路、以及其所能实现的功能和应用,建立单片机实现多功能综合应用系统的整体概念,打下实际工程项目设计、开发、应用的较好基础。
- 分析和熟悉实验装置的硬件结构
- 分析和掌握实验装置的电路原理:器件工作原理、电路接口原理、端口和编址分配原理、电路的主要技术参数等
- 分析和了解PCB板的设计方法,理解器件的合理布局,装置的工艺设计及安装工艺
一、说明
串行通信作为计算机通信方式之一,主要起到主机与外设以及主机之间的数据传输作用,串行通信具有传输线少、成本低的特点,主要适用于近距离的人机交换、实时监控等系统通信工作当中,借助于现有的电话网也能实现远距离传输,因此串行通信接口是计算机系统当中的常用接口。
异步通信中,在异步通信中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。
用Proteus仿真编程实现以下功能:
- 2个同种单片机之间的异步串行通信
二、重点
- 单片机异步串行通信的工作方式及其控制方法
- 单片机异步串行通信的实际应用
三、实现
#include<reg51.h> #define uchar unsigned char #define uint unsigned int unsigned char code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; sbit LED1 = P1^0; sbit LED2 = P1^3; sbit K1 = P1^7;//按键的引脚 //延时子程序,延时时间为 1ms * x void Delay_1ms(uint i)//1ms延时 { uchar x,j; for(j=0;j<i;j++) for(x=0;x<=148;x++); } //************************************ //串口初始化 //************************************ void Init_Uart() { SCON = 0X50; //设置串口工作在方式1,允许接收 TMOD |= 0x20; //定时器工作在方式2 TH1 = 0xfd; //9600波特率 TL1 = 0xfd; EA = 1; //总中断 TR1 = 1; REN=1;//允许串口接收 ES = 1; //允许中断 } //串口输出数据 void TX_data(uchar num) { SBUF = num; while(!TI); TI=0; } //读取按键 uchar Get_Key() { static uchar flag=0; if(flag==0&&K1==0) { flag=1; Delay_1ms(5); if(K1==0)return 1; } else if(K1==1){flag=0;} return 0; } //主函数 void main(void) { uchar key_num=0; uchar mode=0; Init_Uart(); //串口初始化 P0=0; while(1) { key_num=Get_Key();//检测按键 if(key_num!=0) { TX_data(mode); if(++mode>15)mode=0; } Delay_1ms(10); } } //串口中断子函数 void Uart_INT(void) interrupt 4 { uchar temp=0; uchar t=0; if(RI==1) //如果接收到了数据 { RI=0; temp=SBUF;//接收数据 P0=table[temp];//显示数据 t=temp%4; if(t==0) { LED1=0; LED2=1; } else if(t==1) { LED1=1; LED2=0; } else if(t==2) { LED1=0; LED2=0; } else if(t==3) { LED1=1; LED2=1; } } }
四、下载