51单片机汇编实验:LED数码管显示“HELLO-88”
【声明】该博客仅供个人学习参考与研究禁止进行任何方式的学术剽窃如直接抄袭、盗用电路设计等由于读者自身造成的一切学术不端行为与原作者无关。实验原理基于AT89C51芯片汇编语言实现。一实验要求1P0口的2个扩展口作为段控口和位控口通过使用P2.6和P2.7对SN74HC573芯片的使能。系统复位时显示“HELLO-88 ”。2画出AT89C51实现上述功能的完整电路图包括微控制器电源、复位电路、晶振电路和控制电路3完成全部程序和电路调试工作二实验目的1了解八段共阴极LED工作动态显示原理2掌握微控制器LED工作动态显示的方法3掌握LED显示和按键输入联合控制的方法。三实验设计1硬件电路图2程序;设8个数码管的从左到右显示缓冲区为片内RAM的50H57H单元ORG 0000HLJMP MAINORG 0100HMAIN: MOV A,#0 ;显示缓冲区50H57H单元初始化为07MOV R2,#8MOV R0,#50HLOOP: MOV R0,AINC R0INC ADJNZ R2,LOOPLOOP1: LCALL DISPLAY ;调用显示子程序SJMP LOOP1SJMP $;显示子程序DISPLAY:MOV R0,#57H ;动态显示初始化,使R0指向缓冲区首地址MOV R3,#7FH ;首位位选字送R3MOV A,R3LD0: MOV P2,A ;从P2口送出位选字MOV A,R0 ;读要显示数ADD A,#0EH ;调整距离字段码表首的偏移量MOVC A,APC ;查表取得字段码MOV P0,A ;字段码从P0口输出ACALL DL1 ;调用1ms延时子程序DEC R0 ;指向缓冲区下一单元MOV A,R3 ;位选码送累加器AJNB ACC.0,LD1 ;判断8位是否显示完毕,显示完返回RR A ;未显示完,把位选字变为下一位选字MOV R3,A ;修改后的位选字送R3AJMP LD0 ;循环实现按位序依次显示LD1: RETTAB: DB 76H,79H,38H,38H,3FH,40H,7FH,7FH;字段码表DL1: MOV R7,#02H ;延时子程序DL: MOV R6,#0FFHDL0: DJNZ R6,DL0DJNZ R7,DLRETEND四实验调试与结果分析1调试过程中遇到的问题及其解决办法问题1数码管显示字符混乱部分字符无显示或显示错误现象数码管显示的字符与“HELLO-88”不符存在字符残缺/不符。原因字段码表TAB中字符的字段码定义错误显示缓冲区50H~57H的初始化值与字符索引不匹配导致查表时获取错误字段码硬件上P0字段码输出或P2位选输出口连接虚接。解决办法逐一核对“H、E、L、O、-、8”各字符的字段码确保TAB表中新增字段码如H的6EH、L的38H定义正确检查MAIN程序中50H~57H单元的初始化值保证其能通过ADDA,#0EH准确指向TAB表目标字段码。问题2数码管闪烁明显视觉效果差现象数码管显示的字符闪烁频繁人眼易察觉闪烁影响显示连贯性。原因延时子程序DL1的延时时间过短动态扫描刷新频率低于人眼视觉暂留临界频率≥50Hz或延时过长导致单个数码管点亮时间过久。解决办法调整DL1中R7和R6的初值通过测试找到合适参数。2写出实验结果并进行分析动态显示原理验证实验通过“分时扫描视觉暂留”技术实现多路显示。对每个数码管依次执行“位选→送字段码→延时消影→更新位选”操作利用人眼视觉残留让多个数码管呈现“同时点亮”的效果验证了动态扫描在多路数码管显示中的有效性。程序逻辑有效性显示缓冲区初始化、TAB表扩展及MOVCA,APC查表指令的运用确保了字符字段码的精准检索与输出体现了汇编语言对硬件资源片内RAM、I/O端口的精确控制能力。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2572291.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!