基于单片机的智能数字钟的设计与实现
2020-06-16严敏
严 敏
(江苏旅游职业学院 信息工程学院,江苏 扬州 225127)
1 系统硬件设计
1.1 总体结构
本设计的智能数字钟系统硬件电路的核心是AT89C51单片机,外围设备由6位LED数码管显示模块、4*3键盘模块以及闹钟模块等组成。采用可编程外围并行接口8255扩展模块作为键盘和显示的接口电路,解决了AT89C51单片机自身I/O口资源紧张的问题。智能数字钟系统的总体结构如图1所示。
1.2 8255扩展模块
8255是一种通用可编程并行I/O口扩展器件,包括PA、PB、PC3个8位的并行I/O口,可扩展多个外围设备,有效地解决了AT89C51单片机自身I/O口资源紧张的问题。电路设计时,8255的复位信号RST与单片机的复位信号RST合用,连接在一起。8255的读信号、写信号分别与单片机的读信号、写信号相连接。8255的片选信号与单片机的P2.7相连接。8255的通道选择地址A0、A1与单片机的P2.5、P2.6相连接,这样,8255扩展单元PA口、PB口、PC口和控制寄存器的地址分别为0x1FFF、0x3FFF、0x5FFF、0x7FFF。利用8255的PA口作为6位LED数码管显示器的位选口。其中,PA0—PA5分别对应于6位数码管的位选口w1—w6。利用8255的PB口作为6位LED数码管显示器的段选口,PB0—PB7分别对应于6位LED数码管显示器的段选口A、B、C、D、E、F、G、DP。利用8255的PC口低3位作为键盘的行输入口,8255的PA口作为键盘的列扫描口。8255的数据总线D0—D7和单片机的数据总线P0相连。8255电路原理图如图2所示。
1.3 6位LED数码管显示模块
由于本设计使用共阴极的数码管,8255的PA口外接了能够提高驱动能力的74LS04反相器,因此PA口输出高电平选中相应数码管的位,而PB口输出高电平点亮相应数码管的段。LED数码管显示电路原理图如图3所示。
1.4 4*3键盘模块
按键模块采用4*3行列式键盘,由12个按键组成,用于闹铃和时间校准设置。其中,10个按键作为“0—9”数字键,1个按键作为校时键,1个按键作为闹铃键。4*3键盘的行线分别连接8255扩展模块的PC0、PC1、PC2,列线分别连接8255扩展模块的PA0、PA1、PA2、PA3。4*3键盘电路原理图如图4所示。
1.5 闹钟模块
闹钟电路直接连接单片机的P1.0口,采用三极管驱动蜂鸣器。单片机的P1.0口输出低电平驱动蜂鸣器启动闹钟。当P1.0口输出低电平,三极管导通,闹钟启动;当P1.0口输出高电平,三极管截止,闹钟不启动。闹钟电路原理图如图5所示。
2 系统软件设计
系统软件设计主要包括8255驱动程序设计、LED数码管显示程序设计、4*3键盘扫描处理程序设计、闹钟程序设计等。系统主程序流程图如图6所示。
2.1 8255驱动程序设计
8255通过软件编程可以设置PA、PB、PC口的工作方式,将方式控制字写入8255的控制字寄存器,控制命令的格式及定义。8255控制命令字格式及定义如图7所示[1-4]。本设计PA口工作于方式为0,输出;PB口工作于方式为0,输出;PC4—PC7工作于方式1,输入;PC0—PC3工作于方式1,输入,从而8255的方式控制字为10001001B=89H。8255的控制字在单片机相应的初始化程序中设置即可。单片机上电执行完初始化程序后,8255即按设定的工作方式进行操作。
设置好8255的工作方式之后,在程序中定义8255的PA、PB、PC口及控制寄存器的地址,在main函数中加入8255初始化语句,其部分代码如下:
2.2 LED数码管显示程序设计
LED数码管显示程序主要完成6位LED数码管的动态显示,其部分代码如下:
2.3 4*3键盘扫描处理程序设计
判断是否有按键按下,求取键号,确定是哪一个按键按下,并进入相应的键处理程序。其部分代码如下:
2.4 闹钟程序设计
闹钟程序主要完成定时启闹的功能,当计时时间等于设定的闹铃时间时,立即启动闹钟鸣叫。其部分代码如下:
3 仿真结果与分析
在Med Win V3.0集成开发环境中,编写系统程序,进行编译、调试后,生成十六进制HEX文件。在Proteus硬件仿真软件中将其加载到单片机芯片中,观察智能数字钟的仿真运行效果。系统上电后,自动进入时钟显示,从“00:00:00”开始自动计时,此时按下校时键,单片机内部定时器停止计时,进入时间设定状态,时、分、秒的十位、个位分别对应6个LED数码管。校准时间时,它们对应的LED数码管会依次闪烁显示,等待输入,此时按下“0—9”数字键分别进行设置,直至6个LED数码管设置完毕,再次按下校时键,则退出设置。智能数字电路原理图如图8所示。按下闹铃键,单片机内部定时器继续计时,进入闹钟设置状态,闹铃时间只设置时、分,数码管初始显示“12:00:--”,按下“0—9”数字键依次设置闹铃时间,闹铃时间设置完毕,数码管恢复计时时间显示,当计时时间达到闹铃时间时,启动闹钟鸣叫,再次按下闹铃键,闹钟停止鸣叫。
4 结论
本研究以AT89C51单片机为系统控制核心,使用8255扩展外围键盘、显示等设备,在Proteus仿真软件中设计系统硬件电路,在Med Win V3.0开发环境中编写程序并调试、运行。Proteus和Med Win V3.0两款软件的联合使用,降低了单片机系统的设计成本,缩短了开发周期,极大地提高了单片机系统的设计效率。此外,本研究对单片机课程的课堂教学演示和实际系统设计都有很大的参考价值。