实训六双单片机控制霓虹灯.ppt
文本预览下载声明
任务四 串行口控制霓虹灯 任务单 案例示范 [任务单] 任务电路图 案例示范 1. 串行口的编程 串行口需初始化后,才能完成数据的输入、输出。其初始化过程如下: (1)按选定串行口的工作方式设定SCON的SM0、SM1两位二进制编码。 (2)对于工作方式2或3,应根据需要在TB8中写入待发送的第9位数据(地址为1,数据为0)。 (3)若选定的工作方式不是方式0,还需设定接收/发送的波特率。 (4)设定SMOD的状态,以控制波特率是否加倍。 (5)若选定工作方式1或3,则应对定时器 T1进行初始化以设定其溢出率。 2.双机通信案例:两个单片机利用串口相连,实现从一个单片机U1发送数据让另一外单片机U2所连接的发光二极管实现流水灯效果。 分 析: 波特率不能太高,设为240,则计数器的初值为16。 使用串行口通信时,必须将双方的“地”线相连以使其具有相同的电压参考点。 #includereg51.h unsigned char sdata=0xfe; void isr_uart(); void main() { TMOD=0X20; TH1=16;TL1=16; SCON=0X40;PCON=0; TR1=1;EA=1;ES=1; SBUF=sdata; while(1); } U2接收程序 #includereg51.h unsigned char sdata; void isr_uart(); void main() { TMOD=0X20; TH1=16;TL1=16; SCON=0X50;PCON=0; TR1=1; EA=1;ES=1; while(1); } 1.利用教师提供的电路图,编写程序; 2.在Proteus仿真运行,实现任务要求。 实现方法 两个单片机通过串行口连接,一个单片机U1接16只发光二极管(P0口各脚分别连接红、绿、黄、蓝四种颜色),一个单片机U2接两只数码管(BCD码),让16只发光二极管按规律的闪亮(如第1次点亮所有红灯、第2次点亮黄灯、第3次点亮绿灯、第4次点亮蓝灯,依次循环往复),而霓虹灯闪亮的规律字由另一个单片机U1通过串行口传送过来;与U1的P2口连接的数码管显示闪亮的轮数,即U2设置一个计数值(初值为0),收到的数据是霓虹灯每轮的开始(即红灯亮时)则该计数值加1,并将该计数值传送到U1显示,当计数值超过99时计数值归0继续计数,如果U2发现数据传送有错误,则两只数码管显示“FF”。 任务要求 本任务是通过两个单片机通过串行口进行通信实现霓虹灯效果。 任务描述 U1发送程序: void isr_uart() interrupt 4 { sdata=1; sdata |=1; if(sdata==0xff) sdata=0xfe; SBUF=sdata;TI=0; } void isr_uart() interrupt 4 { RI=0; sdata=SBUF; P0=sdata; } * *
显示全部