资源描述:
《单片机数码管静态显示实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验五串行口静态显示一.实验目的1.学习用单片机的串行口扩展74LS164实现静态显示方法。2.学习用单片机I/O口模拟串口工作实现静态显示的编程方法。3.掌握静态显示的编程方法和数码管显示技术。二.实验任务1.根据共阳数码管的功能结构,自编一组0~F的笔形码,并按顺序存放建立程序数据表格。2.利用单片机串行口扩展74LS164,完成串--并转换输出,实现静态显示:要求循环显示0~F这数字,即输出数字“0”时,四位同时显示0,显示1秒后再输出数字“1”,即四位同时显示1,依次类推,相当于数字自检循环显示。3.利用单片机串行口(RXD、TXD)编写静态显示程序,在数
2、码显示器上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)输出
3、移位时钟,在移位时钟的作用下,串行口发送缓冲器的数据一位一位地从RXD移入到74LS164中,并把后面送入的数据推挤原先的数据到下一个级联的74LS164中输出,每输出一个数据可以延时1ms。实验时,通过改变延时时间,可以更清楚地观察到数据推挤的过程。2.串行口工作在方式0时,串行传输数据为8位,只能从RXD端输入输出。TXD端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12,由软件置位串行控制寄存器SCON的REN位才能启动串行接收。在CPU将数据写入SBUF寄存器后,立即启动发送,第8位数据输送完后,硬件将SCON寄存器的TI位置1,必须由软件对它清
4、0才能启动发送下一帧数据。3.静态显示笔型码:笔形码:0123456789ABCDEF11H,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作指针,置入30HR7作计数器,控制显示数量选择串行口工作方式取R0内容低字
5、节数通过查表找出笔型码发送笔型码取R0内容低字节数通过查表找出笔型码发送笔型码指针加1R7-1=0?结束是否3.资源分配用R0作指针,R7作控制显示数4.程序设计ORG0000MOVSCON,#00MOVDPTR,#TABMOVR0,#30HMOVR7,#02LOOP:MOVA,@R0ANLA,#0FHMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIMOVA,@R0SWAPAANLA,#0FHMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIINCR0DJNZR7,LOOPTAB:DB11H,0D7H,98H,92H,56H,
6、32H,30H,97H,10H,12H,14H,70H,39H,0D0H,38H,3CHEND六.调试1.第一次调试时发现数码管显示的数字错码,认真检查程序没发现错误。分析原因可能是笔形码错误,改正笔形码。2.改正笔形码后,程序能够正常运行,并且能够显示正常。七.结果分析和总结1.结果分析:在30H和31H中分别置数12H和34H,数码管显示3412。结果正确。2.总结:问题1:数码管显示数据错乱。解决办法:笔形码错误,改正笔形码。体会:以前只在生活中看到过数码管显示数据,这次试验通过自己从编程,到接线再到自己调试,把生活中看到的通过自己的动手和理论分析将它实现了
7、,科学的魅力极大啊。以后一定得努力学习科学知识!