《单片机技术》课程设计基于单片机的电子钟的设计

上传人:仙*** 文档编号:33148847 上传时间:2021-10-16 格式:DOC 页数:37 大小:2.09MB
收藏 版权申诉 举报 下载
《单片机技术》课程设计基于单片机的电子钟的设计_第1页
第1页 / 共37页
《单片机技术》课程设计基于单片机的电子钟的设计_第2页
第2页 / 共37页
《单片机技术》课程设计基于单片机的电子钟的设计_第3页
第3页 / 共37页
资源描述:

《《单片机技术》课程设计基于单片机的电子钟的设计》由会员分享,可在线阅读,更多相关《《单片机技术》课程设计基于单片机的电子钟的设计(37页珍藏版)》请在装配图网上搜索。

1、湖南工学院 单片机技术课程设计说明书课题名称: 基于单片机的电子钟的设计专业名称: 自动化 学生班级: 0402班 学生姓名: 学 生 学 号: 46040222 指 导 教 师: 湖南工学院课程设计任务书课 程: 单片机技术 课程设计题目: 基于单片机的电子钟的设计 基于单片机的频率计的设计 适 用 班 级: 自本04010403 时 间: 20072008学年第一学期 指 导 教 师: 单片机技术课程设计任务书一、设计题目:基于单片机的电子钟的设计二、适用班级:自本04010403三、指导教师:王韧四、任务与要求:1、本课题任务如下:(1)、基于单片机的电子钟的设计设计一个具有特定功能的电

2、子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。(2)、基于单片机的频率计的设计设计一个能够测量矩形波信号的频率、周期、脉宽、占空比的频率计。该频率计上电或按键复位后能自动显示系统提示符“P.”, 进入测量准备状态。按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测量键则测量占空比。2、本课题可选择设计方案如下:(1)、基于单片机

3、并行口的设计在AT89S52的P0口和P2口上外接LED数码管显示器,P0口作LED数码管显示器的段控口,P2口作LED数码管显示器的位控口,P1口外接四个按键A、B、C、D。(2)、基于单片机串行口的设计将AT89S52的串行口扩展成并行口,外接LED数码管显示器;P1口外接四个按键A、B、C、D。(3)、基于Intel 8279的设计利用Intel 8279芯片为AT89S52扩展并行口,通过Intel 8279外接LED数码管显示器和四个按键A、B、C、D构成的键盘。(4)、基于Intel 8155的设计利用Intel 8155芯片为AT89S52扩展并行口,通过Intel 8155外接

4、LED数码管显示器和四个按键A、B、C、D构成的键盘。(5)、基于Intel 8255的设计利用Intel 8255芯片为AT89S52扩展并行口,通过Intel 8255外接LED数码管显示器和四个按键A、B、C、D构成的键盘。3、本课题基本要求如下:(1)、基于单片机的电子钟的设计LED数码管显示器显示当前时间;四个按键的功能:A键用于电子钟启动/调整;B键用于调时,范围0-23,0为24点,每按一次时加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调秒, 范围0-59,0为60秒,每按一次秒加1;(2)、编程语言:汇编或C51;(3)、计算机打印单片机技术课程设计

5、说明书一份;(4)、设计时间:二周;(5)、实物制作或Proteus仿真;(6)、人员分组:一人一组或多人一组(不超4人)。五、单片机技术课程设计说明书正文主要内容参照“单片机技术课程设计说明书正文主要内容”文件。六、单片机技术课程设计说明书书写格式 参照“单片机技术课程设计说明书书写格式”文件。七、参考资料1、曹巧媛,单片机原理及应用M,北京:电子工业出版社,1997.7;2、赵秀珍,单永磊,单片微型计算机原理及其应用M,北京:中国水利水电出版社,2001.8;3、张毅刚,修林成,胡振江,MCS-51单片机应用设计M,哈尔滨:哈尔滨工业大学出版社,1990.8;4、张洪润,兰清华,单片机应用

6、技术教程M,北京:清华大学出版社,1997.11;。5、李华,MCS-51系列单片机实用接口技术M,北京:北京航空航天大学出版社,1993.8;6、陈景初,单片机应用系统设计与实践M,北京:北京航空航天大学出版社;7、马忠梅,单片机的C语言Windows环境编程宝典M, 北京:北京航空航天大学出版社,2003.6; 8、李光飞,单片机C程序设计指导M,北京:北京航空航天大学出版社,2003.01 ;9、李光飞,单片机课程设计实例指导M,北京:北京航空航天大学出版社,2004.9。 电气自动化教研室 2007年9月10日 摘 要MCS-51单片机是Intel公司推出的世界上著名的高性能低功耗非易

7、失性存储器和数字集成电路的一流半导体,它的EEPROM 电可擦除技术、闪速存储器技术和质量、高可靠性的生产技术。在CMOS 器件生产领域中,Intel 的先进设计水平、优秀的生产工艺及封装技术一直处于世界的领先地位,这些技术用于单片机生产使单片机也具有优秀的品质、在结构、性能和功能等方面都有明显的优势。Intel公司的单片机是目前世界上一种独具特色而性能卓越的单片机。它在计算机外部设备、通讯设备、自动化工业控制、宇航设备、仪器仪表和各消费类产品中都有着广泛的应用前景。51系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。

8、本设计通过对一个基于单片机的能实现调时功能功能的电子时钟的设计学习,详细介绍了单片机应用中的动态扫描显示原理,键盘扫描原理,单片机的定时中断原理。从而达到学习、了解单片机相关指令在各方面的应用。系统由AT89S51、时钟芯片、LED显示器、稳压电源等部分构成,能进行时、分、秒的显示。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。关键词 单片机,电子钟,独立式键盘,动

9、态扫描显示目 录第1章 系统设计要求1 1.1 设计任务1 1.2 系统框图及设计方案11.2.1 系统框图1 1.2.2 设计方案1第2章 电子钟工作原理22.1 电子钟原理图22.1 硬件设计原理22.1.1 AT89S52简介22.1.2 时钟电路原理42.1.3 复位电路原理42.1.4 键盘电路原理 52.1.5 驱动限流和显示电路 52.3 软件设计原理62.3.1 实现时钟计时的基本方法62.3.2 电子钟的时间显示方法72.3.2 按键识别方法7第3章 软件设计93.1 监控程序流程图93.2 键扫描子程序103.4 定时器1务子程序流程图113.4 键功能函数流程图123.5

10、 定时器0服务子程序流程图13第4章 系统调试144.1 硬件调试14 4.2 软件调试144.3 误差现象 、分析及对策154.3.1 误差现象154.3.2 误差分析154.3.3 误差对策16第5章使用说明17第6章 单片机技术课程教学建议18结束语19参考文献20致谢21附录22 附录一元器件清单22 附录二程序清单23附录三电子钟原理图29第1章 系统设计要求1.1 设计任务(1)、 LED数码管显示器显示当前时间;(2)、 该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;(3)、 四个按键的功能:A键用于电子钟启动/调整;B键用于调秒,范围0-59,0为6

11、0秒,每按一次秒加1;C键用于调分,范围0-59,0 为60分,每按一次分加1;D键用于调时, 范围0-23,0为24时,每按一次时加1。 1.2 系统框图及设计方案1.2.1 系统框图 1.2.2 设计方案本设计采用单片机控制技术方案,使用本方案能满足课程设计要求。本方案设计的电子钟采用单片机(AT89S51)作为主控制器,利用单片机内部定时器中断累计计时,通过数码管动态扫描显示时间,采用独立式键盘对电子钟进行调整,经运用C语言编译程序,在Pretues仿真软件上观察设计结果。第2章 电子钟工作原理2.1 电子钟原理图该电子钟是以单片机AT89S51为核心来完成的,在硬件电路中采用P0口作为

12、8位一体共阴LED数码管的段驱动接口, 8位一体共阴LED数码管的位选线分别由相应的P2. 0P2. 7控制, 同时在数码管和P0口之间加入了驱动芯片74LS244和限流电阻。在电路中还设有四个按键A、B、C和D进行启动/停止、调秒、调分、调时,分别与单片机的P1. 0、P1. 1、P1. 2、P1.3口相连接。电子钟原理图见附录三。2.2 硬件设计原理2.2.1 AT89S51简介本设计中采用了AT89S51芯片,它是一种低功耗、高性能的CMOS8位单片机,带有4K Flash 可编程和擦除的只读存储器(EPROM),该器件采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C5

13、1和82C52的指令系统及引脚兼容,片内Flash 集成在一个芯片上,可用与解决复杂的问题,且成本较低。AT89S51提供了4K字节Flash ,128字节RAM,32线I/O口,2个16位定时器/计数器,5向量两极中断,一个双工串行口,片内根据振荡器和始终电路等标准功能。图2-1为AT89S51芯片的结构框图。AT89S51芯片的管脚、引线与功能如下: (1)、引脚信号介绍:P0.0P0.7:P0口8位双向口线P1.0P1.7:P1口8位双向口线P2.0P2.7:P2口8位双向口线P3.0P3.7:P3口8位双向口线(2)、/Vpp:访问外部程序存储器控制信号(3)、 ALE地址锁存控制信号

14、: ALE是以晶振六分之一的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲作用。(4)、 外部程序存储器读选取通信号:在读外部ROM时有效(低电平),以实现外部ROM单元的读操作。(5)、VCC:电源;GND:地线;RST:复位端,当振荡器工作时,此引脚上出现两个机器周期的高电平将系统复位。(6)、 P0口:是一个8位漏极开路的双向I/O口。作为输出口,每个引脚可吸入8个TTL输入。当把“1”写入P0口的引脚时可作为高阻输入。当访问外部程序存储器和数据存储器时,P0口也可作复用的地址/数据总线。在此状态下,P0口有内部上拉电路。P0口也在Flash 编程时,接收代码字节,而在程序校验时

15、,输出代码字节。在程序校验期间,需要外部上拉电路。(7)、 P1口、P2口、P3口:是一个具有内部上拉电路的8位双向I/O口。P1口的输出缓冲器能够吸入/放出4个TTL输入。当对P1口的引脚写“1”时,它被内部上拉电路拉高,并能作输入使用,作为输入时,由于上拉电路的作用,由外部拉低的P1口引脚将放出电流(IIL)。P0口在Flash编程和校验期间,接收低8位地址。当访问外部程序存储器及使用16位地址的是数据存储器(MOVXDPTR)时,P2口输出高8位地址。这种情况下,当不置“1”时,P2口使用强大的内部上拉电路。当访问使用8位地址的外部存储器(MOVXRI)时,P2口输出P2口锁存器的内容。

16、在Flash编程及检验期间,P3口也接收某些控制信号。P3口也提供AT89S51各种专用功能见表2.1.1。(8) XTAL1:振荡器反向放大器输入端和内部时钟发生器的输入端。XTAL2:振荡器反相放大器输出端。引脚替代的专用功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通) 表2.1.1 AT89S51的P3口各种专用功能表2.2.2 时钟电路原理MCS51内部有一个高增益反相放大器,其输入引脚为芯片引脚XT

17、AL1,其输出引脚为芯片引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路,这样就构成了一个稳定的自激振荡器。振荡电路产生的振荡脉冲并不直接使用,经二分频后为系统的时钟信号。在二分频的基础上再三分频产生ALE信号,在二分频的基础上六分频得到机器周期信号。时钟电路见图2-2。2.2.3 复位电路原理本设计采用按键电平复位方式,利用 RC微分电路产生的正脉冲实现,RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期,即2个机器周期以上。复位电路见图2-3。2.2.4 键盘电路原理通过上拉电阻使AT89S51与键盘相连引脚为高电平,当按

18、键按下时,使引脚变为低电平 。键盘电路见图2-4。电子钟设置4个按键通过程序控制来完成电子钟的启、停及时间调整。A键控制电子钟的启动/停止; B键调整秒;C键调整分;D键调整时。2.2.5 驱动限流和显示原理74LS244用于字型驱动,它具有200mA的输出电流能力,发光二级管正常工作时,其两端正向压降约为1.6v,正向电流约为10mA,假如8个发光二级管都点亮,则共有80mA电流从阳极流出(因为是动态扫描,所以8位数码管任何时刻都只有一位工作), 74LS244完全有能力接受80mA的灌入电流。由于P0口输出驱动电路工作处于开漏状态,它的驱动能力强,故只需外接上拉电阻便可以把LED数码管点亮

19、。因为共阴的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故该电路中的8位一体LED数码管用共阴极的数码管。在8位一体LED显示时,为了简化电路降低成本, 8个LED显示器共用一个8位的I/O,P2口为八位一体LED共阴数码管位驱动接口。2.3 软件设计原理2.3.1 实现时钟计时的基本方法16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存

20、器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。利用MCS-51系列单片机的可编程定时/计数器、中断系统来实现时钟计数。采用定时器0中断方式进行溢出次数累计,计满5000次为秒计时(1秒),从秒到分和从分到时的计时是通过累加和数值比较实现。定时器0设为工作方式2,定时时间为200S,则计数溢5000次即得时钟计时最小单位秒,而5000次计数可用软件方法实现。假设使用T/C0,方式2,200S定时,fosc=12MHz。则初值X满足(28-X)*1S

21、=200S,X=0X38, 采用定时器1用于动态扫描P点显示。定时器1设为工作方式2,定时时间为250S,fosc=12MHz。则初值X满足(28-X)*1S=250S,X=0X06,采用中断方式进行溢出次数累计,计满8次实现。2.3.2 电子钟的时间显示方法电子钟的时钟时间在八位一体共阴数码管上进行动态扫描显示,因此,显示缓冲区从左至右依次存时、分、秒的数值。时、分、秒之间加入分隔符。动态扫描显示方法 :动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示稳定的一组数据。P0完成字形码的输出,P2口完成各数码管的轮流点亮。在进行数码显示的时候,要对

22、显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。对于显示的字形码数据采用查表方法来完成。 2.3.3 按键识别方法 其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的 过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。因此在按键按下的时候,要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以

23、采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如上图所示: 从图2-6中可以看出,我们在程序设计时,从按键被识别按下之后,延时5ms以上,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命令,因此从按键被

24、识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释放的过程,显然释放的过程,就是使其恢复成高电平状态。第3章 软件设计3.1 监控程序流程图 3.2 键扫描子程序流程图 3.3 定时器1服务子程序流程图 3.4 键功能程序流程图 3.5 定时器0服务子程序流程图 第4章 系统调试4.1 硬件调试本次设计是通过pretues仿真软件设计电路并进行仿真,所以基本上不会出现印制电路所面对的问题,尽量注意与实际相接近,例如:应接入驱动限流电路等。设计简单的程序,看单元电路能否正常工作,经过调试,单元电路均能正常工作。4.2 软件调试软件调试是用Kail和Pretues联调的方法。首先在Ka

25、il软件上编辑程序,然后运行程序,消除语法错误,生成HEX文件,在pretues仿真环境中单步仿真看功能程序是否正确。Kail软件调试结果: P点显示仿真结果: 电子钟准备状态仿真结果: 电子钟运行状态仿真结果: 通过以上仿真结果,可以知道设计已经基本达到要求。4.3 误差现象、分析及对策4.3.1 误差现象当时钟运行较长一段时间后,与电脑时间对比,就会发现与电脑的时间有一定的时差,运行越久时差就越大。4.3.2 误差分析(1)、MCS51内部有一个高增益反相放大器,其输入引脚为芯片引脚XTAL1,其输出引脚为芯片引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路

26、构成了一个稳定的自激振荡器。振荡电路产生的振荡脉冲二分频后为系统的时钟信号。所以时钟的误差和晶振的精度以及电容的质量有很大的关系。(2)、从定时/计数器产生中断请求到响应中断需要3-8个机器周期,定时中断子程序中的数据入栈和重装定时/计数器的初值还需要占用数个机器周期,还有从中断入口转到中断子程序也要占用一定的机器周期。本设计电子钟利用内部定时/计数器溢出产生中断(12MHz晶振一般为50ms)再乘以相应的倍率来实现秒、分、时的转换。无法准确知道中断响应时间导致了电子钟计时不准。4.3.3 误差对策 通过以上误差分析,可得出以下解决对策:(1)、用高精度的晶振和质量好的陶瓷电容,对温度等自然环

27、境具有很好的抗干扰性;(2)、动态同步修正方案 :从程序入手,采用动态同步修正方法给定时/计数器赋初值。动态同步修正方法:由于定时/计数器溢出后又会从0开始自动加数,固在给定时/计数器再次赋值前将定时/计数器低位(TL0)中的值和初始值相加后一并送入定时/计数器中,此时定时/计数器中的值即为动态同步修正后的准确值。 第5章 使用说明该电子钟上电后或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;通过不同的按键,实现不同的功能。主要由五个按键:A、B、C、D、E键。现介绍每个按键的功能,即操作说明书。A键:启动/停止功能。B键:调整秒显示位。在电子钟停止运行的情况下,按键一次,秒显示位

28、加一,当秒显示位为59时,再按键秒位变为零。C键:调整分钟显示位。在电子钟停止运行的情况下,按键一次,分钟显示位加一,当分钟显示位为59时,再按键分钟位变为零。D键:调整小时显示位。在电子钟停止运行的情况下,按键一次,小时显示位加一,当小时位为23时,再按键小时显示位变为零。E键:复位键,系统自动显示提示符“P.”. 第6章单片机技术课程教学建议 通过一年的单片机课程的学习,我对单片机方面的知识也有了一定的了解,我结合老师讲授的知识,再通过自己的探索,很轻松的就掌握了很多同学觉得很为难的知识。我觉得老师在每部分内容开始时,都应该首先讲清要解决什么实际问题,引发思路,在解决这个问题时需要那些硬件

29、、指令及相关知识,列出要学的知识点,带着问题逐一讲解研讨,先讲硬件、原理图 ,再讲涉及的指令,然后讲程序流程图,对照流程图讲程序,一步一步,步步相连,有些难以理解的语句可在多媒体电脑上演示,变动某些语句,观察出现的效果,使同学从空想变成可见的现实。然后,同学动手实验,同学自己在仿真器上尝试改变某些流程、语句、指令等观察效果,实现人机交互式学习。之后开发课题,是实际操练,在开发过程中,发现问题去督促其学习、查资料,真正解决问题,这样一来,就极大的调动起了学习兴趣,不管遇到多大困难,有老师和周围同学的帮助,问题终能得到解决,解决之后吃一堑,长一智,下次同学就能解决类似的问题,等到一切调试通过后,成

30、功的喜悦更进一步调动起了学习兴趣。这样每进行一个项目,就掌握一个知识模块。 结 束 语 为期两个星期的单片机课程设计已渐近尾声,按设计要求完成了电路图和程序的设计,按说明书的格式及内容的要求完成了说明书的编写,达到了设计要求。这次设计过程中我查阅了相关资料。这些资料,开阔了我的眼界,对单片机这门课程的认识更加深刻,编写程序的时候思路更加清晰。我从这此次课程设计中学到了很多。对于任何单片机系统的开发而言,都可以分为硬件设计和软件设计两大部分其中硬件设计尤其重要,是软件设计的平台和实现前提。开发项目必须先设计出完整的适合编程的电路图,拿到项目不要急于动手,先分析清楚心中有了大概的框图,做起来就很快

31、了。因为我在准备研究生考试,时间匆忙,设计还存在着很多的不足,例如:为了实现人机界面,可以液晶来显示时间,实用的电子钟还应该具有闹铃和显示年月日功能。 参考文献1 李广第, 单片机基础M, 北京:北京航空航天大学出版社,2001.72 孙育才,MCS51系列单片微型计算机及其应用M,江苏:东南大学出版社,1990.33 李华,MCS51系列单片机实用接口技术M,北京:北京航空航天大学出版社,1993.8致 谢本课程设计是在指导老师王韧老师的悉心指导下完成的。王老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对

32、我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。本课程设计从选题到完成,每一步都是在王老师的指导下完成的,倾注了王老师大量的心血。在此,谨向王老师表示崇高的敬意和衷心的感谢!在两周的课程设计期间,得到了很多同学的关心和帮助,在此表示深深的感谢。没有他们的帮助和支持是没有办法完成我的课程设计的,同窗之间的友谊永远长存。在课程设计即将完成之际,我的心情无法平静,从开始进入课题到课程设计的顺利完成,有王老师、很多同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!附录一元器件清单名称型号数量作用单片机AT89S511块主控器八位一体数码管L

33、ED(共阴)1个显示区按键SW-PB5个按键设置区晶振12MHz有源1个用于单片机陶瓷电容22pF2个单片机晶振电路电解电容22F/25V1个用于单片机复位74HC244DIL201个P0口驱动上拉排阻10K1个PO口上拉电阻电阻10K4个按键上拉电阻2001个单片机复位限流1K1个单片机复位限流2208个P0口限流附录二程序清单/*/* Copyright (c) 2007, 湖南工学院电信系 */* All rights reserved. */* 作 者:自动化0402班黄辉 */*指导老师:王韧老师 */*/#include#define unit unsigned int#defin

34、e unchar unsigned charsbit P1_0=P10;/*启动/停止按键*/ sbit P1_1=P11;/*秒调整按键*/sbit P1_2=P12;/*分调整按键*/sbit P1_3=P13;/*时调整按键*/ unchar code dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x40,0x00,0xf3; /*根据共阴字型编码表获取09,A-P字型代码*/unchar dispbitcode=0xfe,0xfd,0xfb,0xf7,0xef,0

35、xdf,0xbf,0x7f;/*位控代码*/unchar disbuf8=16,16,16,16,16,16,16,17;/*P.显示存储区*/unchar dispbuf8=0,0,15,0,0,15,0,0;/*时钟显示存储区*/unsigned char dispbitcnt;/*变量,用于定时器1运行控制P.存储区*/unsigned char second; /*秒变量*/unsigned char minite;/*分变量*/unsigned char hour;/*时变量*/unsigned int tcnt;/*变量,用于定时器0中断次数*/unsigned char mstc

36、nt;/*变量,用于定时器1中断次数*/unsigned char count;/*变量,用于启动/停止按键次数*/ /*延时t毫秒*/void delay(unit t) unchar i; while(t-) /*对于12M晶震,大约延时1ms*/ for(i=0;i125;i+) /*时钟显示函数*/void display(void) int i; for(i=0;i8;i+)P2=dispbitcodei; P0=dispcodedispbufi; delay(4);/*延时约10ms*/ /*键扫描函数*/void keyscan(void) if(P1_0=0) delay(10

37、);/*去抖动,延时10ms*/ if(P1_0=0) count+; if(count=3) count=1; switch(count) case 1:TR0=1;break;/*定时器0运行*/ case 2:TR0=0;break;/*定时器0停止运行*/ default:break; while(P1_0=0) /*防止一次按键产生多次效果*/ display(); if(count=2)/*当count=2时,调整键才有效*/ if(P1_1=0) /*秒调整*/ delay(10); if(P1_1=0) second+; if(second=60) second=0; disp

38、buf0=second%10; dispbuf1=second/10; while(P1_1=0) /*防止一次按键产生多次效果*/ display(); if(P1_2=0)/*分调整*/ delay(10);/*去抖动,延时10ms*/ if(P1_2=0) minite+; if(minite=60) minite=0; dispbuf3=minite%10; dispbuf4=minite/10; while(P1_2=0) /*防止一次按键产生多次效果*/ display(); if(P1_3=0) delay(10);/*去抖动,延时10ms*/ if(P1_3=0) hour+;

39、 if(hour=24) hour=0; dispbuf6=hour%10; dispbuf7=hour/10; while(P1_3=0) /*防止一次按键产生多次效果*/ display(); /*主函数*/ void main(void) TMOD=0x22; /*T0,T1工作在方式2*/ /*4ms定时设置*/ TH0=0x06; TL0=0x06; TH1=0x06; TL1=0x06; EA=1; ET0=1; TR1=1; ET1=1; while(P1_0=0); TR1=0; /*关闭定时器1*/ ET1=0; while(1) display(); keyscan();

40、/*定时器1中断服务程序,定时动态扫描*/void t1(void) interrupt 3 using 0 mstcnt+; if(mstcnt=8) mstcnt=0; P2=dispbitcodedispbitcnt; P0=dispcodedisbufdispbitcnt; dispbitcnt+; if(dispbitcnt=8) dispbitcnt=0; /*定时器0中断服务程序,时钟运行*/ void t0(void) interrupt 1 using 2 tcnt+; if(tcnt=4000) tcnt=0; second+; if(second=60) second=0; minite+; if(minite=60) minite=0; hour+; if(hour=24) hour=0; dispbuf0=second%10; dispbuf1=second/10; dispbuf3=minite%10; dispbuf4=minite/10; dispbuf6=hour%10; dispbuf7=hour/10;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!