资源描述
实验五 串行口静态显示
一.实验目的
1.学习用单片机的串行口扩展74LS164 实现静态显示方法。
2.学习用单片机I/O 口模拟串口工作实现静态显示的编程方法。
3.掌握静态显示的编程方法和数码管显示技术。
二.实验任务
1.根据共阳数码管的功能结构,自编一组0~F 的笔形码,并按顺序存放建立程序数据表格。
2.利用单片机串行口扩展74LS164,完成串--并转换输出,实现静态显示:要求循环显示0~F
这数字,即输出数字“0”时,四位同时显示0,显示1 秒后再输出数字“1”,即四位同时显示1,
依次类推,相当于数字自检循环显示。
3.利用单片机串行口(RXD、TXD)编写静态显示程序,在数码显示器上30H、31H 单元的内
容,30H、31H 单元为任意的十六进制数。
4.用P1.6、P1.7 分别替代RXD、TXD 做模拟串口完成任务3 的静态显示程序。
三.实验电路
静态显示实验电路
连线方法:静态显示只要连接2 根线:单片机的RXD 与DAT 节点连接,TXD 与CLK 接点连
接,要把电源短路片插上。PW11 是电源端。
四.实验原理说明
1.静态显示实际上动态的过程,静态的显示,单片机串行口输出的数据通过74LS164 串并转换
输出,每输出一个数据,把原先的的数据推挤到下一个显示位上显示。实验时,单片机串行口应工作在方式0,RXD(P3.0)输出串行数据,TXD(P3.1)输出移位时钟,在移位时钟的作用下,串行口发送缓冲器的数据一位一位地从RXD 移入到74LS164 中,并把后面送入的数据推挤原先的数据到下一个级联的74LS164 中输出,每输出一个数据可以延时1ms。实验时,通过改变延时时间,可以更清楚地观察到数据推挤的过程。
2.串行口工作在方式0 时,串行传输数据为8 位,只能从RXD 端输入输出。TXD 端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12,由软件置位串行控制寄存器SCON 的REN位才能启动串行接收。在CPU 将数据写入SBUF 寄存器后,立即启动发送,第8 位数据输送完后,硬件将SCON 寄存器的TI 位置1,必须由软件对它清0 才能启动发送下一帧数据。
3.静态显示笔型码:
笔形码: 0 1 2 3 4 5 6 7 8 9 A B C D E F
11H,D7H,98H,92H,56H,32H,30H,97H,10H,12H,14H,70H,39H,D0H,38H,3CH
五.程序流程图和资源分配
1.编程思路
单片机串行口应工作在方式0,RXD(P3.0)输出串行数据,TXD(P3.1)输出移位时钟。使用R0作指针,将30H单元指向R0.采用查表方式,先取单元中低字节,查表后发送内容,再取单元高字节,再发送。再指针加1,重复上述。
2.算法流程图
开始
R0作指针,置入30H
R7作计数器,控制显示数量
选择串行口工作方式
取R0内容低字节数
通过查表找出笔型码
发送笔型码
取R0内容低字节数
通过查表找出笔型码
发送笔型码
指针加1
R7-1=0?
结束
是
否
3.资源分配
用R0作指针,R7作控制显示数
4.程序设计
ORG 0000
MOV SCON,#00
MOV DPTR,#TAB
MOV R0,#30H
MOV R7,#02
LOOP: MOV A,@R0
ANL A,#0FH
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,@R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC R0
DJNZ R7,LOOP
TAB: DB 11H,0D7H,98H,92H,56H,32H,30H,97H,10H,12H,14H,70H,39H,0D0H,38H,3CH
END
六.调试
1.第一次调试时发现数码管显示的数字错码,认真检查程序没发现错误。分析原因可能是笔形码错误,改正笔形码。
2.改正笔形码后,程序能够正常运行,并且能够显示正常。
七.结果分析和总结
1.结果分析:
在30H和31H中分别置数12H和34H,数码管显示3412。结果正确。
2. 总结:
问题1:数码管显示数据错乱。
解决办法:笔形码错误,改正笔形码。
体会:以前只在生活中看到过数码管显示数据,这次试验通过自己从编程,到接线再到自己调试,把生活中看到的通过自己的动手和理论分析将它实现了,科学的魅力极大啊。以后一定得努力学习科学知识!
展开阅读全文