理论教育 C51单片机液晶电子时钟

C51单片机液晶电子时钟

时间:2023-11-25 理论教育 版权反馈
【摘要】:◇任务要求◇利用单片机的定时器中断,实现电子钟的准确计时,在TG12864液晶显示屏的居中位置,分两行显示当天的日期和时间,显示效果如下:◇任务准备◇一、AT89S52单片机中断系统1.中断的概念所谓中断就是当CPU正在处理某项事务时,如果外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而去处理这件紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。

C51单片机液晶电子时钟

◇任务要求◇

利用单片机定时器中断,实现电子钟的准确计时,在TG12864液晶显示屏的居中位置,分两行显示当天的日期和时间,显示效果如下:

◇任务准备◇

一、AT89S52单片机中断系统

1.中断的概念

所谓中断就是当CPU正在处理某项事务时,如果外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而去处理这件紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。

2.中断的优点

(1)分时操作。CPU与低速的外部设备交换信息时,可以分时命令多个外设同时工作,外设工作的同时,CPU可以执行主程序,当外设完成工作时向CPU申请中断,CPU才转去执行中断服务程序,这样大大提高了CPU工作效率。

(2)实时处理。可以通过中断响应实时处理环境变化。

(3)故障处理。CPU可以通过中断自行处理运行过程中无法预料的故障问题。

3.中断源

引起并发出中断请求的源头(如某设备或事件)称为中断源。

51系列单片机有6个中断源:两个外部中断(INT0﹑INT1)﹑三个定时器/计数器中断(T0﹑T1﹑T2)和一个串行口中断。

中断源的判别方式有两种:

(1)查询中断:通过软件逐个查询各中断源的中断请求标志。

(2)向量中断:中断请求通过优先级排队电路,一旦响应转向对应的向量地址执行。

4.中断优先级

中断优先级越高,则响应优先权就越高。当CPU正在执行中断服务程序时,又有中断优先级更高的中断申请产生,这时CPU就会暂停当前的中断服务转而处理高级中断申请,待高级中断处理程序完毕,再返回原中断程序断点处继续执行,这一过程称为中断嵌套

5.中断源、入口地址及C语言程序

中断源﹑入口地址及C语言程序格式表见表5-14。

表5-14 中断源、入口地址及C语言程序格式表

6.C语言中断服务函数格式说明

为了便于用C语言编写单片机中断服务程序,Keil C51编译器也支持51单片机的中断服务程序,而且用C语言编写中断服务程序比汇编语言方便得多。C语言写中断服务函数的格式如下:

函数类型 函数名(形式参数列表)interrupt n [using m]

其中,interrupt后面的n是中断编号,取值为0~5;using后面的m表示使用的工作寄存器组号,取值为0~3,若不声明using项,默认用第0组工作寄存器。

例如,定时器T0的中断服务函数:

void time_0(void)interrupt 1 using 0

二、AT89S52单片机定时器/计数器

AT89S52单片机有三个16位内部定时器/计数器(T0﹑T1﹑T2),这里主要介绍T0﹑T1,它们分别由两个8位计数器组成。

T0由TH0(高8位)﹑TL0(低8位)构成;T1由TH1(高8位)﹑TL1(低8位)构成。

如果是计数内部晶振驱动时钟,则它是定时器;如果是计数单片机输入引脚的脉冲信号,则它是计数器。

1.模式介绍

(1)定时器模式:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。当晶振为12 MHz时,计数频率为1 MHz,每1 μs计数值加1。

(2)计数器模式:设置为计数器模式时,外部事件计数脉冲由T0(P3.4)或T1(P3.5)引脚输入到计数器。当T0或T1引脚上负跳变时计数器加1。识别引脚上的负跳变需要2个机器周期,即24个振荡周期。所以T0或T1引脚输入的可计数外部脉冲的最高频率为fosc/24。当晶振为12 MHz时,最高计数频率为500 KHz,高于此频率将计数出错。

2.定时器/计数器的相关寄存器

(1)定时器/计数器的方式寄存器(TMOD)。

①GATE:门控位,用来确定对应的外部中断请求引脚是否参与T0或T1的操作控制。当GATE=0时,只要定时器/计数器控制寄存器(TCON)中的TR0或TR1为1,T0或T1被允许开始计数。

当GATE=1时,不仅要TCON中的TR0或TR1为1,还要P3口的/INT0或/INT1引脚为1才允许开始计数。

②C/T:计数器或定时器选择位。

C/T=1时,T0或T1为计数器模式。C/T=0时,T0或T1为定时器模式。

③M1和M0:工作方式选择位。

51单片机的定时器/计数器有4种工作方式,由M1﹑M0状态确定,见表5-15。

表5-15 定时器/计数器工作方式

(2)定时器/计数器控制寄存器(TCON)。

①TF1/TF0:溢出标志位。

当T0或T1溢出时,硬件置位(TF1/TF0=1),并向CPU申请中断。

当CPU响应中断时,由硬件清除(TF1/TF0=0)。

②TR1/TR0:运行控制位。

当TR1/TR0=1时,启动T0或T1。

当TR1/TR0=0时,关闭T0或T1。

③IE1/IE0:外部中断请求标志。

当外部信号产生中断时,由硬件置位(IE1/IE0=1)。

当CPU响应中断时,由硬件清除(IE1/IE0=0)。

④IT1/IT0:外部中断0﹑1的触发方式选择位,由软件设置。

当IT1/IT0=1时,下降沿触发方式。/INT0或/INT1引脚上由高到低的负跳变可引起中断。

当IT1/IT0=0时,电平触发方式。/INT0或/INT1引脚上低电平可引起中断。

3.中断系统相关寄存器

(1)中断允许寄存器(IE)。

EA:中断总开关控制位。EA=1时,CPU开中断;EA=0时,CPU关中断。

ET2﹑ES﹑ET1﹑Ex1﹑ET0﹑Ex0分别为T2﹑串口﹑T1﹑外部中断1﹑T0﹑外部中断0的中断开关控制位,置1时允许该项中断,清0时禁止该项中断产生。

要使单片机某项中断有效,必须使EA为1,同时该项中断开关控制也为1。

(2)中断优先级寄存器(IP)。

51单片机的6个中断源可以被设为两个不同的级别,CPU先响应中断级别高的中断源。中断优先级通过中断优先级寄存器IP中相应位的状态来设定。

PT2﹑PS﹑PT1﹑Px1﹑PT0﹑Px0分别为T2﹑串口﹑T1﹑外部中断1﹑T0﹑外部中断0的中断优先级控制位,各项置1时为高级中断,清0时为低级中断。

4.定时器/计数器的初始化

在使用定时器/计数器前,应对它进行初始化,主要是对TMOD和TCON编程,还需计算和装载计数初值。一般完成下列几个步骤:(www.daowen.com)

(1)确定定时器/计数器的工作方式:设定TMOD。

(2)计算计数初始值,并装载到TH和TL中。

(3)定时器/计数器在中断方式工作时,必须使EA为1,同时定时器中断开关控制也为1。

(4)启动定时器/计数器——编程TCON中的TR1或TR0位。

5.定时器计数初始值的计算

(1)当fosc=12 MHz时,计算定时器计数初始值。

当工作在定时器模式下,定时器/计数器是对机器周期脉冲计数的,一个机器周期为12/fosc=1μs,则定时器不同方式下的最大定时时间如下:

方式0:13位定时器最大定时间隔=213×1μs=8.192 ms

方式1:16位定时器最大定时间隔=216×1μs=65.536 ms

方式2:8位定时器最大定时间隔=28×1μs=256μs

若T0工作在方式1,要求定时1ms,计算计数初值。如设计数初值为x,则:

(216-x)×1μs=1000μs,

即x=216-1000。

可计数得到65536-1000=64536=0xfc18。因此TH0=0xfc,TL0=0x18。

(2)当fosc=11.0592 MHz时,计算定时器计数初始值

当fosc=11.0592 MHz时,一个机器周期为12/fosc=12/11.0592μs,如工作在方式1,要定时t(us),设计数初始值为x,则:

(216-x)×12/11.0592μs =t,

即x=216-11.0592 t/12。

例如:T0工作在方式1,要求定时10 ms,则x=216-110592/12,数据(216-110592/12)在单片机中存储时,占用2个字节,等效于(-110592/12),先将(-110592/12)强制转换为uint类型数据,再将其拆分为高﹑低8位,编译时可产生最精简汇编语句,提高定时精度。

因此,装载定时器计数初始值的C51语句为:

TL0=(uint)(-110592/12)%256;

//去掉(uint),将导致计算结果错误

TH0=(uint)(-110592/12)/256;

◇任务实施◇

一、硬件电路搭建

本项目需在YL-236型单片机实训平台上选用四个模块:主机模块﹑电源模块和显示模块,搭建TG 12864显示系统。

1.模块选择见表5-16。

表5-16 本任务所需模块

2.工具和器材选择见表5-17。

表5-17 任务所需工具和器材

3.电路搭建

结合YL-236型单片机实训平台主机模块和显示模块,按照图5-13所示连接电路。

图5-13 硬件接线图

主函数流程图如图5-14所示。

图5-14 主函数流程图

中断函数流程图如图5-15所示。

图5-15 中断函数流程图

二、程序代码的编写、编译

(1)启动Keil C51编程软件,新建工程﹑文件并均以“clock”为名保存在文件夹中。

(2)在clock.c文件的文本编辑器窗口中输入程序代码。

(3)编译源程序,排除程序输入错误,生成clock.hex文件。

参考程序:

三、系统调试

系统调试的步骤如下:

(1)使用程序下载专配USB线将计算机的USB接口与单片机主机模块程序下载接口连接起来。

(2)打开电源总开关,启动程序下载软件,下载可执行文件至单片机中。

(3)观察TG 12864液晶屏显示效果,若实现任务要求,则系统调试完成;否则,需要进行故障排除。

◇任务评价◇

一、工艺性评分标准

工艺性评分标准如表5-18所示。

表5-18 工艺性评分标准

二、功能评分标准

功能评分标准如表5-19所示。

表5-19 功能评分标准

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈