基于AT89C51 单片机的计数器设计

2019-03-28 10:34沈矗孙妍沈阳工学院
传播力研究 2019年3期
关键词:数码管个位计数器

沈矗 孙妍 沈阳工学院

计数器是一种常见的运算逻辑电路,它会对脉冲个数进行统计和控制。当下,计数器的应用十分广泛,例如在计算机的控制器中对指令地址进行计数,在运算器中作乘除法运算时记下加减法次数等等。科技在不断进步,计数器的控制系统也在不断更新换代,本次将利用AT89C51 单片机对计数器的控制系统进行设计。使其具有操作方便,维修便捷,简易,成本低廉等优点。

一、计数器的设计思路

该时钟以AT89C51 为主控芯片,采用C 语言进行编程设计。由于计数器的计数范围为0—99,可以用2 位LED 数码管来显示计数值,采用动态显示方式,P2 口做段选口,输出段码,P3 口做位选口,输出位选信号,P1 口接按键。在软件设计上,设置一个软件计数器,用来统计按键的次数,然后将计数值的个位、十位所对应的段码送到LED 数码管中显示。

二、计数器的电路设计

计数器的硬件部分主要包括电容、电阻、电源、按键、数码管、导线、开关等,反映在ISIS 7 professional 仿真软件中则是:RES、AT89C51、BUTTON、CAP、CAP-ELEC、CRYSTAL、7SEG-MPX2-CA等。我们需对电路进行模拟仿真,如果模拟成功,然后在PCB 电路板上搭线、焊接、连接电路。如果模拟失败则需重新设计电路,再依次进行上述流程。

三、计数器的程序设计

首先对两位数码管的数字分别命名并设置起始数值与终止值,其次对个位与十位数字设置显示函数,然后再设置按键流程,按键释放时,刷新数码管,初次判断按键是否按住时,设计加函数并加一个延时函数,再次判断按键按住时,依次取出十位、取出个位,最后与之前设计思路一样对另外两个按钮设置减函数和清零函数。将所有程序语言输入Keil uVision4 软件进行模拟运行,检测成功以后导入单片机。

四、计数器的总体测试

在PCB 板上焊接一个个电气元件,符合走线方便的原则。插上单片机芯片,按下第一个按键,观察计数器数值是否累加,按下第二个按键,观察计数器数值是否递减,按下第三个按键观察数码管是否清零。

图1 仿真图

图2

五、模拟仿真图(见图1)

六、程序流程图(见图2)

七、小结

本文讨论了基于AT89C51 单片机的计数器设计,该设计体现了AT89C51 的可控性与简易性等诸多特点。AT89C51 单片机操作简单,便于维护且稳定性很高,它是作为连接电路与程序的理想中端。但它亦有不少缺点,其中之一就是应对复杂功能设计时设计较为繁琐,这些问题我们值得考虑。本次设计是在老师的指导下完成的,我明白自身还存在很多不足,以后的学习中,我们将学到不同的单片机原理,希望可以不断进步。作为一个初学者,笔者对AT89C51 单片机的掌握程度比较有限,本文可能存在一些疏漏的地方,虚心诚受广大同仁和各位老师的批评指正。

猜你喜欢
数码管个位计数器
采用虚拟计数器的电子式膜式燃气表
微课教学设计之“数码管动态显示”
关于74LS90计数器的Multisim仿真分析
Arduino编程
MC9S08FL16单片机数码管静态显示分析
个位与十位的故事
个位与十位的故事
单片机控制的四位数码管动态显示编程
个位与十位的故事
学习100以内的数三要点