单片机的TXD,RXD引脚把程序烧进去的。管脚TXD和RXD用于异步串行通信。其实STC89C52单片机的ISP下载线就是一个max232芯片连接STC和计算机的串行通信口。计算机把程序
8
f从九针串口送到max232芯片,电平转换后送进单片机的串行口,也就是TXD和RXD。然后单片机的串行模块把数据送到程序区。5、显示电路
本项目显示采用LCD1602液晶显示器,比之数码管显示更实惠,也更直观。而且更容易软件的编程。
6、时钟显示校正电路本设计利用按键开关来校正时钟显示的数字。当按钮按下时,将在相应的端口输入一个低电平,通过相应的程序来改变时钟显示。其中me
u按键开关用来选择要修改的数字;plus按键用来增加所选数字的数值;mi
us按键用来
9
f减少所选数字的数值。
(五)软件部分根据上述电子时钟的工作流程,软件设计可分为以下几个功能模块:(1)主程序模块。主程序主要用于系统初始化:设置计时缓冲区的位置及初值,设置定时器的工作方式和计数初值等参数。主程序流程如下图所示。
开始定义堆栈区T0、数据缓冲区、标志位初始化调用键盘扫描程序
10
f否是CR键?
是
地址指针指向计时缓冲区
调用时间设置程序
主程序流程图
(2)计时模块。即定时器0中断子程序,完成刷新计时缓冲区的功能。系统使用12MHz的晶振,假设定时器0工作在方式1,则定时器的最大定时时间为65536ms,这个值远远小于1s。因此本系统采用定时器与软件循环相结合的定时方法。设定时器0工作在方式1,每隔50ms溢出中断一次,则循环中断20次延时时间是1s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00。因定时器0工作在方式1,则50ms定时对应的定时器初值为:65536-50ms2us40536,即TH09EH,TH058H。但应当指出:CPU从响应T0中断到完成定时器初值重装这段时间,定时器T0并不停止工作,而是继续计数。因此,为了确保T0能准确定时50ms,重装的定时器初值必须加以修正,修正的定时器初值必须考虑到从原定时器初值中扣除计数器多计的脉冲个数。由于定时器计数脉冲的周期恰好和机器周期吻合,因此修正量等于CPU从响应中断到重装完TL0为止所用的机器周期数。CPU响应中断通常要38个机器周期。经过测试,定时器0重装的计数初值设为9E5FH9E67H,可以满足精度要求。另外,MCS51单片机只有二进制加法指
11
f令,而时间是按十进制递增,因此用加法指令后必须进行二十进制转换。计时模块流程图如下图所示。
保护现场
重装定时器初值
循环次数减1
否满20次r