1、 单片机技术课程设计说明书 数字电子钟 院 、 部: 电气与信息工程学院学生姓名: * 指导教师: 王韧 职称 副教授专 业: 通信工程 班 级: * 完成时间: 2013年12月20日 湖南工学院课程设计任务书课 程: 单片机技术 课程设计题目: 数字电子钟 数字频率计 数字电压表 交通灯 抢答器 密码锁 波形发生器 数字温度计 计算器 数字式秒表 适 用 班 级: 电子11012、通信11023 通信1101电子1103 时 间: 20132014学年第一学期 指 导 教 师: 王 韧 单片机技术课程设计任务书一、设计题目:数字电子钟、数字频率计、数字电压表、交通灯、抢答器、密码锁、波形发
2、生器、数字温度计、计算器、数字式秒表。二、适用班级:电子11012、通信11023、通信1101电子1103三、指导教师:王韧四、设计目的与任务:学生通过理论设计和实物制作解决相应的实际问题,巩固和运用在单片机技术中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。五、设计内容与要求 设计内容1、数字电子钟设计一个具有特定功能的电子钟。该电子钟上电或按键复位后能自动显示系统提示符“P.”, 进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整
3、键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。2、数字频率计设计一个能够测量周期性矩形波信号的频率、周期、脉宽、占空比的频率计。该频率计上电或按键复位后能自动显示系统提示符“P.”, 进入测量准备状态。按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测量键则测量占空比。3、数字电压表设计一个能够测量直流电压的数字电压表。测量电压范围05V,测量精度小数点后两位。该电压表上电或按键复位后能自动显示系统提示符“P.”, 进入测量准备状态,按测量开始键则开始测量,并将测量值显示在显示器上,按测量结束键则自动返
4、回“P.”状态。4、交通灯设计一个具有特定功能的十字路口交通灯。该交通灯上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。按开始键则开始工作,按结束键则返回“P.”状态。要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。5、抢答器设计一个具有特定功能的抢答器。该抢答器上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。主持人按下开始按钮后,抢答开始并限定时间30S;10S内无人抢答,蜂
5、鸣器发出音响;主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,显示器显示违规台号。蜂鸣器发出音响;各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮。6、密码锁设计一个具有特定功能的密码锁。该密码锁上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入
6、正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。7、波形发生器设计一个具有特定功能的波形发生器。该波形发生器上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。该波形发生器可以分别产生幅值05V、频率100Hz100KHz范围内的三角波、锯齿波、方波、梯形波和正弦波。8、数字温度计设计一个具有特定功能的数字温度计。该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。测量温度范围099,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。9、计算器设计一个具有特定功能的计算器。该计算器上电或按键复位后能自动显示系统提示符“P
7、.”,进入准备工作状态。能实现(1)基本的加、减、乘、除、平方、开方;(2)三角函数运算;(3)十进制、十六进制转换运算;(4)其他功能。10、数字式秒表设计一个具有特定功能的数字式秒表。该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。该数字式秒表应具有开始、暂停、连续、清零和停止功能。设计要求1、以上课题可以任选其一或多选,学生也可以自拟课题;2、编程语言:汇编或C51;3、计算机打印单片机技术课程设计说明书一份;4、设计时间:一周;5、实物制作;6、人员分组:一人一组一实物。六、单片机技术课程设计说明书正文主要内容参照“单片机技术课程设计说明书正文主要内容”文件
8、。七、单片机技术课程设计说明书书写规范格式 参照“单片机技术课程设计说明书书写规范格式”文件。八、参考资料1、马忠梅,单片机的C语言Windows环境编程宝典M, 北京:北京航空航天大学出版社,2003.6; 2、李光飞,单片机C程序设计指导M,北京:北京航空航天大学出版社,2003.01 ;3、李光飞,单片机课程设计实例指导M,北京:北京航空航天大学出版社,2004.9。电气自动化教研室 2013年9月10日摘 要当今社会,人们对时间的要求越来越高,而传统的机械式手表和电子钟,对距离和视力有一定的要求,不能准确直观地读出时间,本设计的数字电子钟是为了满足所有群体的时间的要求,适应于各种年龄段
9、的人和各种恶劣情况,能直观明了的读出时间,其设计新颖,成本低廉,走时准确、显示直观,具有很好的开发和生产价值。本设计围绕数字电子钟系统的设计与开发工作进行研究和实践,详细介绍了电子钟系统的整体结构、硬件设计、软件设计,系统方案。介绍一种基于ATMEL公司的AT89S52单片机为核心,以及电源电路,复位电路,晶振电路,下载电路,输入设备,输出设备构成的数字电子钟系统。软件上用汇编程序进行设计,达到显示时、分、秒和校时、定时、复位等功能。本设计到达了设计要求,具有走时准确、显示直观、精度、稳定等优点适用于家庭、办公大楼、公共场所等。关键词 电子钟;单片机;硬件设计;软件设计 ABSTRACT In
10、 todays society, people more and more high to the requirement of time, and the traditional mechanical watches and clocks, the distance has certain requirements, and vision cant intuitively read correct time, the design of digital electronic clock is in order to meet the requirements of the time all
11、the groups, suitable for various age groups and all kinds of bad situation, can read time of straightforward, its novel design, low cost, as accurate, direct display, has great value in development and production.This design around the digital electronic clock system design and development of work s
12、tudy and practice, electronic clock system are introduced in detail the whole structure, hardware design, software design, system solutions. Introduces a kind of based on ATMEL company AT89S52 single chip microcomputer as the core, and power supply circuit, reset circuit, crystal oscillation circuit
13、, circuit, input devices, output devices composed of digital electronic clock system. Software in assembly procedures designed to show when, minutes, seconds, and the school when, timing, and reset, and other functions.This design to reach the design requirements, with travel time accurately, direct
14、 display and the advantages of precision, stability, suitable for families, office buildings, public places, etc.Key words electronic clock; SCM; hardware design; software design目 录1 电子钟功能及总体方案的介绍1 1.1 设计课题任务1 1.2 功能要求说明1 1.3 设计课题总体方案介绍12 设计课题硬件系统的设计3 2.1 设计课题硬件系统各模块功能简要介绍3 2.2 设计课题电路原理图、PCB图、元器件布局图
15、4 2.3 设计课题元件清单43 设计课题软件系统的设计5 3.1 设计课题使用单片机资源的情况5 3.2 设计课题软件系统各模块功能简要介绍6 3.3 设计课题软件系统程序流程框图7 3.4 设计课题软件系统程序清单124 设计总结20 4.1 设计课题结论及使用设计说明20 4.2 设计课题的仿真结果20 4.3 设计课题的误差分析21 4.4 设计体会21 4.5 教学建议22结束语23参考文献24致 谢25附录A26附录B27附录C28附录D29附录E301 电子钟功能及总体方案的介绍1.1 设计课题任务设计一个具有特定功能的电子钟。1.2 功能要求说明本设计中的电子钟具有以下功能:(
16、1) 上电或按键复位自动显示系统提示符“P.”,进入始终准备状态。(2) 第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态。(3) 第二次按电子钟启动/调整键,电子钟进入时钟调整状态,此时按下调时键,时加1,满24自动清零;按下调分键,分加1,满60自动清零;按下调秒键秒加1,满60自动清零。(4) 第三次按下电子钟启动/调整键,电子钟从当前显示开始继续运行。调整功能键只允许在自己控制的位上操作,不允许出现进位;所有键操作均需等到案件释放后做出响应功能反映,负责状态不变。1.3 设计课题总体方案介绍1.3.1 设计课题硬件系统方案图1 电子钟原理框图如图1所示,电子钟
17、硬件系统由单片机、电源电路,时钟电路,复位电路,下载电路,输入设备和输出设备构成。其中电源电路提供给单片机+5V的直流电源,8个独立式键盘接在单片机的P1口,2个四位一体数码管有外接在单片机上的74HC573驱动,其位控接在74HC573上,段控经470的电阻挂在单片机的P0口。硬件的输入和输出设备,加上相应的程序,实现显示时间和调整时间的功能。1.3.2 设计课题软件系统方案利用基于AT89S52单片机的相关程序和硬件电路,首先实现,单片机上电或者复位时,数码管显示电路显示“P.”,利用AT89S52单片机内部的定时/计数器进行中断定时,配合程序延时实现时、分、秒的计时。利用单片机的外部中断
18、源,加上相关的程序设计,用按键相应做中断源,对电子钟的时间进行相应的调时、调分、调秒。详细程序设计思想、程序流程图,和相关程序见后文。2 设计课题硬件系统的设计 2.1 设计课题硬件系统各模块功能简要介绍2.1.1 单片机最小系统 单片机最小系统由电源电路、时钟电路和复位电路构成。在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一能量来源,本设计的设计思路是根据我模拟电子技术知识,由其USB插口提供一个+5V的电源,并有1个发光二极管来显示其开启关闭状态。本设计的时钟电路由振荡电路和分频电路组成。其中振荡电路由反相器以及并联外接的12M晶振和33PF的电容构成,用于产生振荡脉
19、冲。而分频电路则用于把振荡脉冲分频,已得到所需要的时钟信号。本设计中的单片机AT89S52的高增益反相放大器,其输入端为引脚XTAL1,输出引脚为XTAL2。通过这两个引脚在单片机外并接12M晶振和33PF电容C1和C2构成振荡回路,为片内放大器提供正反馈和振荡所需的相移条件,从而构成一个稳定的自激振荡。复位电路通常采用上电自动复位和按键复位两种方式,所谓加电复位是指通过专用的电路产生复位信号,它是系统得原始复位方式,发生在开机加电时是系统自动完成的。按键复位也是通过专用的复位电路实现的,本设计采用的是上电与按键复位电路,按键复位采用S1键控制,AT89S52有复位信号引脚RST,用于从外界引
20、入复位信号。2.1.2 LED显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一。发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式LED显示器件(半导体显示器)。分段式显示器(LED数码管)由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。LED数码管有共阳、共阴之分。本设计采用是共阳式LE
21、D数码管显示。显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,另需两个数码管来显示横。采用动态显示方式显示时间,时的十位和个位分别显示在第一个和第二个数码管,分的十位和个位分别显示在第四个和第五个数码管,秒的十位和个位分别显示在第七个和第八个数码管,其余数码管显示横线。LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。本设计采用动态扫描的方法进行显示。 2.1.3 键盘控制电路本设计开发板中共有10个独立式键盘,其中S1为手动复位按键,S2-S9共8个独立式按键并接在一起,一端接地,一端挂在单片机的P1口上,结合相应的程序,实现的单片机的相关控
22、制。该设计需要校对时间,所以用三个按键来实现。S2做启动/调整键,第一次按,做时钟启动键,电子钟从0时0分0秒开始运行。第二次按,做时钟调整键,以此类推,每奇数次按下做启动键,偶数次按下做调整键。S2、S3、S4分别做电子钟的调时、调分、调秒功能键,但是使用这三个功能键的时候,按下的S1必须工作在调整键的状态下。当用手按下一个键时,往往按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况,在释放一个键时,也回会出现类似的情况。这就是抖动,抖动问题不解决就会引起对闭合键的识别出错。所以本设计中采用了相应的延时程序进行去斗,再读入键盘码。2.1.4 下载电路在单片机电路设计中,下载电路也是必不
23、可少的,本设计采用的下载口主要用于将Keil软件里面的程序下载到单片机中进行相应的调试。2.2 设计课题电路原理图、PCB图、元器件布局图2.2.1 设计课题电路原理图见附录A2.2.2 设计课题电路PCB图见附录B2.2.3 设计课题电路元件布局图见附录C2.2.4 设计课题电路实物图见附录D2.3 设计课题元件清单见附录E3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况3.1.1 堆栈堆栈栈底开辟在60H3.1.2 数据存储器变量及常量单元定义78H字节单元:十进制数秒个位,非压缩BCD码;79H字节单元:十进制数秒十位,非压缩BCD码;7BH字节单元:十进制数分个位,非压缩
24、BCD码;7CH字节单元:十进制数分十位,非压缩BCD码;7EH字节单元:十进制数时个位,非压缩BCD码;7FH字节单元:十进制数时十位,非压缩BCD码;20H.0位单元:布尔量,S2键键值,S2键按下为1,S2键未按下为0;20H.1位单元:布尔量,S3键键值,S3键按下为1,S3键未按下为0;20H.2位单元:布尔量,S4键键值,S4键按下为1,S4键未按下为0;20H.3位单元:布尔量,S5键键值,S5键按下为1,S5键未按下为0;3.1.3 定时器/计数器资源T/C0:工作方式1;定时50ms,循环20次,实现1s定时;中断法。3.1.4 键功能程序KEY2:S2键键功能程序;KEY3
25、:S3键键功能程序;KEY4:S4键键功能程序;KEY5: S5键键功能程序;3.1.5 子程序DELAY: 800us延时子程序;DIR: 数码管显示子程序;DIR1: P.显示子程序;KEY: 键扫描子程序;KEYCHULI:P1口数据处理子程序;3.1.6 常数表格DB: 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,0CH,0FFH 09,-,P.,灭3.2 设计课题软件系统各模块功能简要介绍3.2.1 按键部分本设计中按键部分,采用的是独立式键盘,因此采取独立式键盘接口的编程模式, 此键盘接口程序的功能实际上就是驱动键盘工作, 根
26、据相关的程序,完成键盘的识别,根据所识别按键的键值, 完成子程序的正确调用, 从而完成单片机应用系统对用户按键动作的预定义的响应。采取独立式键盘的原因是每一个按键只占用一个I /O 口, 同时每个按键的工作不影响其他按键, 可直接依据每个I/O口线的状态进行子程序的调用, 因此编制的程序较简练。因为单片机设计者规定,上电时,单片机I/O口线为高电平,所以硬件设计上将键盘并接,且一端接地,所以在程序设计中,识别是否有键按下的时候,0表示有键按下,1表示没有键按下。本程序中利用查询方式对按键进行判断, 若有键按下, 则进行软件延时消抖, 避免了抖动引起的干扰, 同时只有当按键松开后, 才判断其有效
27、并进行识别, 最后根据识别的按键转子程序处理。3.2.2 显示部分本设计显示部分采取单片机应用系统中最常用的动态扫描显示法,所谓动态显示,就是同一时刻点亮不同的数码管,因此LED显示程序都是作为一个子程序供主程序调用, 各位显示器都扫过一遍后, 就返回主程序,进行一些其他操作, 再调用显示扫描程序。程序中主要通过反复调用来实现LED 数码显示器的动态扫描。由于本设计硬件方案中显示部分采用2个共阳极四位一体数码管,所以要点亮相对应的数码管,只需要的需要的时候通过软件、硬件相结合的方式,将正确的位控码和段控码送到显示部分,加上相应的延时程序,即可实现数码管的动态显示。3.2.3 计时方案利用AT8
28、9S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。先设置定时器的工作方式,加上相应的循环程序即可实现定时功能,如:利用定时器1工作方式1,每次定时50ms,循环20次,加上相应的中断程序,就可以实现定时1s的功能,以此类推。3.3 设计课题软件系统程序流程框图3.3.1 主程序流程框图图2 主程序流程框图3.3.2 键扫子程序流程框图图3 键扫子程序流程框图3.3.3 中断服务程序流程框图图4 中断服务程序流程框图3.3.4 调整键功能程序流程框图 图5 调整键功能程序流程框图3.3.5 显示子程序流程框图 图6 显示子程序流程图3.4 设计课题软件系统程序清单电
29、子钟完整程序清单如下:;*;项目名称:数字电子钟;设 计 者:何智慧;设计日期: 2013年12月20日;项目功能:上电或按键复位自动显示系统提示符“P.”,进入始终准备状态。; 第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进;入时钟运行状态。; 第二次按电子钟启动/调整键,电子钟进入时钟调整状态,此时按下;调时键,时加1,满24自动清零;按下调分键,分加1,满60自动;清零;按下调秒键秒加1,满60自动清零。; 第三次按下电子钟启动/调整键,,电子钟从当前显示开始继续运行。;调整功能键只允许在自己控制的位上操作,不允许出现进位;所有;键操作均需等到案件释放后做出响应功能反映,负
30、责状态不变。;*;起始程序 ORG 0000HSTART: LJMP MAIN ORG 000BH LJMP TTC0;断0服务程序入口地址;*;监控程序 ORG 0100H MAIN: CLR RS1 CLR RS0 ;使用寄存器组0 MOV SP, #60H;堆栈初始化 MOV 78H, #00H;初始化各位清零 MOV 79H, #00H MOV 7BH, #00H MOV 7CH, #00H MOV 7EH, #00H MOV 7FH, #00H LOOP: LCALL DIR ;调显示 LCALL KEY;调键扫 MOV 7AH, #10 MOV 7DH, #10 ;显示-,通过查表
31、 JB 20H.0, KEY2A; ;判键值,S2键按下,转键S2功能程序 LJMP LOOP ;其中无键按下,转回循环;*;键S2功能程序KEY2A: SETB EA SETB ET0 ;开中断 MOV TMOD,#01H ;定时器初始化 MOV TH0, #3CH MOV TL0, #0B0H ;定时50ms MOV 50H, #20 ;设定循环次数KEY2C: SETB TR0 ;开启定时器HERE: LCALL DIR1 ;调显示 LCALL KEY ;调键扫 JB 20H.0, KEY2B ;此时唯有键S2再次按下有所变化 LJMP HEREKEY2B: CLR TR0 ;键S2再次
32、按下,关闭定时器 LCALL DIR1 ;调显示 LCALL KEY ;调键扫 JB 20H.0, KEY2C ;键S2按下,转回执行键2C功能 JB 20H.1, KEY3 ;键S3按下,时加1 JB 20H.2, KEY4 ;键S4按下,分加1 JB 20H.3, KEY5 ;键S5按下,秒加1 LJMP KEY2B;*;键S3功能程序:时加1KEY3: MOV R5, 7FH; ;时十位送R5 MOV R4, 7EH; ;时个位送R4KEY3C: CJNE R5, #02, KEY3B;时十位是否为2,不为2转3B CJNE R4, #03, KEY3D;十位为2时,个位为3否,为3清零
33、 MOV 7EH, #00H MOV 7FH, #00H; LJMP KEY2B ;转回继续显示扫描KEY3B: INC 7EH ;时个位加1 MOV R4, 7EH CJNE R4, #10, KEY2B;个位是否加到10,不为十转2B MOV 7EH, #00H ;个位为10进一清零 INC 7FH LJMP KEY2BKEY3D: INC 7EH LJMP KEY2B;*;键S4功能程序,分加1KEY4: MOV R3, 7CH ;分十位送R3 MOV R2, 7BH ;分个位送R2 INC R2 ;个位加1 CJNE R2, #10, KEY4A;个位加到10否,不为10回显示扫描 M
34、OV R2, #00H ;为10清零 INC R3 ;十位加1 CJNE R3, #06, KEY4A;十位为6否,不为6转会显示扫描 MOV R3, #00H ;为6清零 MOV7BH, R2 ;赋值回缓冲区 MOV7CH, R3 LJMPKEY2B ;转回扫描KEY4A: MOV7BH, R2; MOV7CH, R3; LJMPKEY2B;*;键S5功能程序,秒加1KEY5: MOVR1, 79H ;秒十位送R1 MOVR0, 78H ;秒个位送R0 INCR0 ;个位加1 CJNE R0, #10, KEY5A;个位加到10否,不为10转显示扫描 MOV R0, #00H ;为10清零
35、INC R1 ;十位加1 CJNE R1, #06, KEY5A;十位为6否,不为6转会显示扫描 MOV R1, #00H ;为6清零 MOV 78H, R0 ;赋值回缓冲区 MOV 79H, R1 LJMP KEY2B ;转回扫描KEY5A: MOV 78H, R0 MOV 79H, R1 LJMP KEY2B;*;*;中断服务程序TTC0: PUSH PSW ;入栈保护 PUSH ACC MOV TH1, #3CH MOV TL1, #0B0H ;重装初值 MOV A, 50H DEC A MOV 50H, A JNZ EXT MOV 50H, #20 ;重新赋值;*;秒个位 INC 78H ;秒个位加1 MOV A, 78H CJNE A, #10, EXT;不为10跳出中断服务程序显示 MOV 78H, #00H ;秒个位清零,十位加1;*;秒十位 INC 79H ;秒十位加1 MOV A, 79H CJNE A, #06, EXT;不为6跳出中断服务程序显示 MOV 79H, #00H ;秒十位清零,分个位加1;*;分个位 INC 7BH ;分个位加1 MOV A, 7BH CJNE A,