一、实验要求
1.在单片机开辟板上实现电子计数器。在CL3641AH数码管上显示当前技术,用按键K1,K2控制数字增减。
2.参考实验五附件中的电路图,实现数码管的片选和点亮、按键的轮询。
3.要求使用三个数码管LED1、LED2、LED3分别显示计数的个、十、百位。
4.按下K1,计数器加1,按下K2,计数器减1。长按则连续加减。
二、实验计划
1.团体思路
该代码实现了一个简单的计数器功能,通过按键控制计数器的增减,并在数码管上显示计数结果。程序从ORG 0000H开始,首先在START处对三个存储单元40H、41H和42H举行初始化,将它们的值都设置为00H。然后进入MAIN程序段,在MAIN中主要是不绝循环调用DisPlay子程序来显示当前的计数结果,并检测按键状态。当检测到按键按下时,根据按下的差异按键(P3.0或P3.1),分别调用Pkey0(对应P3.1按下,实现计数加)或Pkey1(对应P3.0按下,实现计数减)子程序举行相应的计数操作,并在操作完成后再次显示计数结果。
2.流程图
3.主要模块计划思路及分析
(1)显示模块(DisPlay子程序)
计划思路
该子程序的主要功能是将存储在40H、41H和42H单元中的计数值转换为对应的数码管显示段码,并输出到相应的数码管上举行显示。通过MOV DPTR,#Value将数据指针指向存储数码管段码的Value表,然后分别取出40H、41H和42H中的值作为索引,从Value表中获取对应的段码,并通过P0口输出到数码管上举行显示。同时,每次输出段码后调用D10ms子程序举行短暂延时,以确保数码管显示稳固。
分析
这种计划方式简单直接,通过一个查找表(Value)实现了数字到数码管显示段码的转换。但如果必要显示更多的字符或符号,可能必要扩展Value表的内容。同时,延时时间的长短(D10ms)会影响数码管显示的稳固性和视觉结果,如果延时时间过短,数码管可能会出现闪烁现象;如果延时时间过长,可能会导致按键响应不实时。
(2)按键检测与处理模块
计划思路
D10ms子程序用于按键消抖。当检测到按键按下时,首先调用D10ms子程序举行短暂延时(通过两层循环实现延时),然后再次检测按键状态,以制止因按键抖动而导致误判。
D1s子程序用于在某些操作(如计数增加或淘汰操作完成后)举行较长时间的等待,以确保用户能够看到操作结果。它通过多层循环实现了大约 1 秒的延时,在延时过程中也会不绝检测按键状态,如果按键再次按下,则提前竣事延时并举行相应处理。
分析
这种按键消抖和延时处理方式是常见的单片机编程技巧。D10ms的延时时间选择是为了避开按键抖动的时间范围,通常按键抖动时间在几毫秒到十几毫秒之间,所以选择10ms左右的延时可以有效消除抖动。D1s的延时时间则是根据必要让用户能够观察到操作结果而设定的,但如果在D1s延时过程中必要响应其他按键操作,可能必要进一步优化代码逻辑,比方增加更多的按键状态判断分支。
(3)按键功能处理(Pkey0和Pkey1子程序)
计划思路
Pkey0子程序对应P3.1按键按下的环境,实现计数增加功能。它首先调用DisPlay和D1s子程序,然后对40H单元中的值举行加 1 操作,如果40H的值达到0AH(对应十进制的 10),则将其重置为00H,并对41H单元的值举行加 1 操作,以此类推,实现三位计数器的进位功能。
Pkey1子程序对应P3.0按键按下的环境,实现计数淘汰功能。它与Pkey0类似,首先调用DisPlay和D1s子程序,然后对40H单元中的值举行减 1 操作,如果40H的值减到0FFH(对应十进制的 -1),则将其重置为09H,并对41H单元的值举行减 1 操作,同样实现三位计数器的退位功能。
分析
这种计数器的计划方式符合常见的十进制计数逻辑。通过对三个存储单元的操作实现了三位计数器的功能,而且考虑到了进位和退位的环境。但如果必要扩展计数器的位数,必要对代码举行较大幅度的修改,包括存储单元的使用、进位和退位逻辑的调解等。
三、实现结果
四、总结
1. 在DisPlay子程序中,虽然每次输出段码后调用了D10ms延时来稳固显示,但由于在D1s延时子程序中也不绝调用DisPlay,如果D1s延时时间过长,可能会导致数码管显示出现闪烁现象。由于在D1s延时过程中,频繁更新显示内容可能会干扰正常的显示稳固机制。
2. 深入明白了计数器的工作原理和实现方式,特别是十进制计数器的进位和退位逻辑。通过对内存单元(如40H、41H和42H)的操作来实现计数值的存储和更新,以及在计数增加(Pkey0)和淘汰(Pkey1)操作中处理进位和退位环境,这有助于提高对编程逻辑和算法的计划本领。
3. 掌握了两种差异时长延时子程序(D10ms和D1s)的计划方法,通过循环计数来实现精确的时间延长。明白了延时在单片机程序中的重要性,比方用于按键消抖(D10ms)和在操作完成后给用户留出观察时间(D1s)等。同时,也了解到延时时间的选择必要根据实际环境举行调解,以均衡体系的响应速度和稳固性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |