《单片机原理与应用》实验报告
一、实验工具、器材
Proteus仿真软件,Keil程序编写软件,四个共阳数码管,AT89C51单片机
二、实验原理
a)四个七段LED数码管,通过与单片机P2接口连接实现显示功能,用延时程序和循环程序产生一秒的定时,达到时、分、秒的计时。
b)动态显示:所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度合适,字
符才不闪烁。本实验要求显示的时间为时,分,并且都用两个一位数码管来实现显示,此处调用显示函数计算显示。
三、硬件电路说明
本实验使用共阳型数码管,通常的数码管分为8段,即8个LED显示段, 其中dp代表小数点。数码管显示方法可分为静态显示和动态显示两种,这里采用动态显示方式,用P2.0~P2.7口来控制LED数码管的段控线。四位共阳LED数码管,其标号分别为HourH,HourL,MinL,MinH,低电平选通,且任何时候仅有一位输出低电平,显示时对各显示器进行动态扫描,显示器分时轮流工作。虽然每次只有一个显示器显示,但是由于人的视觉暂留现象我们仍会感觉所有
的显示器都在同时显示。P2.0~P2.7口作为输出口控制8个发光二极管的亮灭,控制数码管的显示。因此,可以实现4个LED在我们看来同时亮,显示时间。
四、软件程序说明
主函数:主函数中采用计数延时,并且引用时钟函数,对各部分程序进行调用。与采用一般的延时函数相比,可以避免显示模块频闪问题。
时钟函数:在调用时钟函数时,先对时、分、秒进行判断,如果秒等与60,则分钟加一,秒数清零,如果分钟等与60,则小时加一,分钟清零,如果小时数等与24,则小时数清零。
延时函数:数码管显示动态扫描时,用到延时程序,这里使用延迟10us的程序,此程序会反复调用,除数码管动态扫描外,数码管的闪烁提示也用到延时函数。
显示函数:在显示前先对小时和分钟的十位和个位进行判断,小时数除以10,得到的整数为小时的十位,对小时数取余,得到小时的个位,分钟数除以10,得到分钟数的十位,对分钟数取余,得到分钟数的个位,4个数码管轮流进行显示,分别延时10us,达到数码管显示时钟的效果。
五、实验结果描述
四个七段数码管均接在单片机AT89C51的P2.0~P2.7端口上,dp端依次接在P3.0~P3.3接口,引入hex文件之后,四个数码管分别显示小时十位、小时个位、分钟十位、分钟个位,并按照设置的延时实现自动计时并且显示时间,达到数码管动态显示时钟的效果,同时,dp实现闪烁的效果,构成一个完整的计时系统。
图一 图二
六、实验分析总结
a)运行电路时,数码管乱码
解决的方法:检查电路,发现程序中扫描信号端口错误,将扫描信号的端口顺序调换,重新运行。
问题二:重新运行后,数码管只显示其中的一部分。
解决的方法:检查程序,发现是延时时间的问题,在改动延时时间后,重新编译后在次运行电路,电路正常显示,符合要求。
解决的方法:检查电路,发现程序中扫描信号端口错误,将扫描信号的端口顺序调换,重新运行。
问题二:重新运行后,数码管只显示其中的一部分。
解决的方法:检查程序,发现是延时时间的问题,在改动延时时间后,重新编译后在次运行电路,电路正常显示,符合要求。
b)通过本次的实验,在前几个实验的基础上让我复习了知识点,让我在次掌握了新的知识。在完成这次实验后,让我想到可以用种方式实现多个数码管的动态显示时钟功能。我觉得这次的课程实验让我知道,一次次的失败,并不会让我放弃去追求,相反它会引领着我去发现问题,从而解决问题,完成更深入的探索。也让我明白理论知识的重要性,并且与实际相结合,多动手,在实践中成长。所以我会很重视每一次的实验。因为每次实验都会给我们自身很大实验。每次实验都会给我自身很大帮助,慢慢的积累点滴的知识,到最后就会多的。
发布评论