APP下载

基于51单片机的分数计数器设计

2021-04-14

湖北农机化 2021年3期
关键词:数码管低电平高电平

余 丹

(江西工业职业技术学院,江西 南昌 330096)

1 单片机

单片机是集成在一块芯片上的计算机,功能强大,质量轻,体积小,供电方便,具有计算机的强大功能。单片机把中央处理器、存储器、定时/计数器、各种输入输出接口等集成在一块电路芯片上,相当于一个微型的计算机。具有结构简单、控制功能强、可靠性高、体积小、价格低、使用方便灵活、通用性强等优点,广泛应用于工业控制、智能化仪器仪表、家用电器、电子玩具等领域[1]。51单片机价格低廉,使用广泛,本文采用AT89C51型号单片机,搭建硬件电路,采用C语言进行程序设计,实现分数计数器的设计。

2 分数计数器

计数器用于很多场合,可以对一场比赛进行分数计数,也能对货品数量进行计数。根据不同要求可以采用不同的计数器。计数器可以根据计数范围、计数方式等来选择,如1位数计数、2位数计数器、3位数计数器,一般采用LED数码管显示,计数方式可以通过按钮控制,有加按钮或减按钮,每次加/减不一样,就需多个按钮。根据具体的控制要求,设计出专门的计数器。本文设计1个2位的简易分数计数器,只有1个按钮,每按1次按钮就加1分,采用LED数码管进行显示。

3 硬件设计

根据要求分析,2位计数器采用LED数码管显示,需要2个LED数码管,1个按钮进行加分,要1个按钮按键,按键按1次加1分,按2次加2分,即需要加几分就按几次。用1块51单片机结合单片机最小系统电路就能设计,硬件电路如图1所示。也可以根据分数计数器的实际要求来更改设计,如分数有加有减,可以增加一个减分按钮,即在此电路上就能更改,变化很小,给设计留有余量,增加功能变换,更改简单。

图1 分数计数器硬件图

LED数码管能清晰显示字符,经常用来作为单片机人机对话的输出设备,用于显示单片机系统的计算结果、显示信息等。LED数码管由7段或8段发光二极管构成,含有小数点的为8段,不含小数点的为7段数码管,每一个发光二极管组成一个段,分别为a、b、c、d、e、f、g、dp段,并且以a段为8位二进制的低位,dp段为最高位。将发光二极管组合好,就能显示不同的字符或数字。LED数码管有共阳、共阴极之分,发光二极管要点亮,需要连成一个完整电路,有电源端、接地端,发光二极管有正负极之分,正极对应电源端,负极对应接地端,如果将8个发光二极管的负极连在一起接低电平,就是共阴数码管,反之,将8个发光二极管的正极连在一起接高电平,就是共阳数码管,本系统采用共阳数码管。当共阳数码管的公共端接高电平,该数码管就能点亮,如果公共端接低电平,该数码管不能被点亮。采用共阳数码管,需要某段被点亮,该段应接上低电平,即对应的发光二极管导通,如显示数字2,需要a、b、g、e、d段接低电平,其它段接高电平,公共端接高电平。

LED数码管有静态显示和动态显示2种,静态显示就是数码管显示字符时,其公共端恒定接低电平(共阴数码管)或高电平(共阳数码管),每个数码管的8段都由单片机的1个8位I/O端口连接,这种方式需要占用较多单片机I/O端口,硬件成本高,电路复杂,适用于显示位数少的场合。动态显示就是利用人肉眼辨别时间差,合理控制每个数码管点亮的时间,给人一种是同时点亮的假象,让多个数码管看起来是同时被点亮的,呈现稳定的显示。这种方式可以节省单片机I/O端口,一块单片机能控制多个数码管显示,硬件电路简单。LED数码管是静态显示还是动态显示,通过程序设计来实现,在硬件电路设计上只需将数码管公共端是直接接低电平(共阴数码管)或高电平(共阳数码管),还是其公共端由单片机的I/O端口来控制,8段是每个数码管分别由1个8位的I/O端口来控制,还是全部数码管都由1个8位的I/O端口来控制。本系统采用数码管动态显示,由P2.0、P2.1端口控制数码管公共端即位选,P1口控制段选。

计数器的加分按键由P0.0端口外接上拉电阻,当按键按下时相应P0.0端口为低电平,当按键断开时,P0.0端口为高电平。

4 软件设计

2位的分数计数器系统采用LED数码管动态显示的方式,先第一个数码管显字,关闭第一个数码管显字,接着第二个数码管显字,关闭第二个数码管显字,再循环第一个数码管显字,关闭第一个数码管显字,第二个数码管显字,这样的循环方式,显示当前的分数。51单片机采用C语言编写程序,先设计程序流程图,如图2所示。

图2 程序流程图

在主函数中,while无限循环,先if判断是否有按键按下,并采用按键去抖动,若有按键按下,分数就加1,并判断分数是否达到100,若达到100,就立马清0,重新开始计数,2位简易分数计数器计数的最大值为99。2个LED数码管控制好显示时间,利用人肉眼的视觉差形成2个LED数码管同时显示的假象,稳定显示2位的分数值。数码管动态显示的主要程序为:

P1=0xff;

P2=0x01;//选中第一个数码管

P1=led[jishu/10];//显示分数计数器的十位数值

delay(100);

P1=0xff;

P2=0x02;//选中第二个数码管

P1=led[jishu%10];//显示分数计数器的个位数值

delay(100);

在Keil C51软件中编写好程序,在Proteus仿真软件中进行如图1搭建硬件电路,将.HEX文件下载至单片机中,调试程序,可以观看到2个LED数码管初始状态为00,通过按键按下1次,会加1,当显示99后,再次按下按键,会显示00,重新开始计数。若有实际的硬件电路,可以通过STC-ISP将程序下载至单片机,调试结果与仿真结果一致。可见,基于单片机的2位简易分数计数器软硬件设计合理,达到控制要求,实现计数功能。

5 结语

本文以2位简易分数计数器软硬件开发过程为例,通过硬件和软件设计,在Keil C51软件中编写好程序,在Proteus软件中仿真,查看分数计数器的仿真效果,得出基于单片机的分数计数器设计合理有效的结论。

猜你喜欢

数码管低电平高电平
物理项目教学设计,用单片机控制四位数码管显示
蓝桥杯树莓派模拟题解析三:“电子测距仪”
一种实用的电脑接口判断方法
Arduino编程
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
MC9S08FL16单片机数码管静态显示分析
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
数字电子技术的应用
浅谈物理电路与数字电路
关于Multisim10.0的高电平调幅电路仿真研究