基于89C51的数字电子钟设计
- 格式:doc
- 大小:3.61 MB
- 文档页数:46
单片机原理与接口技术课程设计成绩评定表设计课题:基于89C51的数字电子钟设计学院名称:电气工程学院专业班级:自动F1106学生:学号:指导教师:设计地点:31-630设计时间:2013-12-16~2013-12-27单片机原理与接口技术课程设计课程设计名称:基于89C51的数字电子钟设计专业班级:自动F1106学生姓名:学号:指导教师:课程设计地点:课程设计时间:2013-12-16~2013-12-27单片机系统课程设计任务书目录1 概述 (6)1.1 研究背景 (6)1.2 设计思想及基本功能 (7)2 总体方案设计 (7)2.1 方案选取 (7)2.1.1显示模块选择方案和论证 (7)2.1.2时钟芯片的选择方案和论证 (8)2.2总体方案设计 (9)2.3 系统整体设计框图 (9)3 硬件电路设计 (9)3.1 电源电路设计 (9)3.2 晶振电路 (10)3.3 复位电路 (11)3.4 时钟电路 (11)3.4.1 DS1302芯片介绍 (11)3.4.2 DS1302在本设计中的应用 (15)3.5 键盘电路 (15)3.6 显示电路 (16)3.7 整点报时电路 (19)4 系统软件设计 (20)4.1 主程序软件设计 (20)4.2 键盘子程序设计 (21)4.3 日历时钟子程序设计 (22)4.4 显示子程序设计 (24)4.5 整点报时子程序的设计 (24)5 系统调试 (25)5.1软件调试 (25)5.2 硬件调试 (26)6 总结 (27)参考资料: (29)附录一:系统原理图 (30)附录二:元件清单 (30)附录二:源程序代码 (31)1 概述1.1 研究背景在日新月异的21世纪里,家用电子产品得到了迅速发展。
许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。
单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。
重庆三峡学院《单片机原理及应用》课程设计报告书题目:基于AT89C51单片机的电子钟设计:学院(系)年级专业:号:学学生姓名:指导教师:教师职称:绩:成日2月12 年2012 制作日期基于AT89C51作息时间控制器的设计摘要:以单片机设计了一个基于AT89C51的作息时间控制器系统。
我们采用的是六位数码管静态显示方案来实现的。
该电子主要由A T89C51、74L164、六位数码管等构成的。
采用晶振电路作为驱动电路,有延时程序和循环程序作为一秒定时,达到时分秒的计时。
用keil进行代码编译,用proteus的ISIS软件进行仿真。
,单片机体积小设计成本低,且抗干扰能力很强,可以实现分式各分部控制的优点,让单片机很大的发展前景。
本次设计采用的就是现在性能最好的A T89C51单片机设计而成的最小系统。
它在我们生活中有很广泛的应用。
关键词:单片机电子钟静态显示目录第一章:引言1.1设计要求 (2)1.2设计目的 (2)1.3设计思路 (2)1.4主控制系统 (2)第二章:硬件系统2.1硬件原理图 (3)2.2晶振电路 (3)2.3复位电路 (4)2.4驱动电路 (4)2.5显示电路 (5)2.6硬件原理及说明 (6)2.7主要性能及参数 (6)第三章:软件系统设计 (7)3.1主程序 (7)3.2显示子程序 (8)3.3定时中断子程序 (10)3.4软件仿真 (12)第四章:系统调试 (14)4.1硬件调试 (14)第五章:实验心得 (14)参考文献 (14)附录……………………………………………………………………………………第15页- 1 -第一章引言1.1设计要求:系统上电和复位后能自动显示时间,能根据预先设定的时间进行打铃,响铃时间为15秒。
设计一个六位数码管的额显示电路,能够显示“时、分、秒”1.2设计目的:1.2.1通过课程设计能让我们更加深入的了解单片机的基本原理,各电路的设计及其仿真调试。
科学技术学院SCIENCE & TECHNOLOGY COLLEGE OFNANCHANG UNIVERSITY《工程训练》报告REPORT ON ENGINEERING TRAINING题目基于AT89C51单片机的电子时钟设计学科部、系:专业班级:学号:学生姓名:指导教师:起讫日期:目录前言 (2)第一章基于AT89C51单片机的电子时钟设计的概述 (3)第二章各硬件介绍 (4)2.1 AT89S51的引脚说明 (4)2.2 发光二极管指示电路设计 (5)2.3 LCD1602简介 (5)2.4 DS1302 简介 (6)2.4.1 引脚功能表及内部结构图 (6)2.4.2 DS1302 的控制字节说明 (6)2.4.3 复位 (7)2.4.4 数据输入输出 (7)2.4.5 DS1302 的寄存器 (7)2.5 DS1302 简介 (8)2.5.1.温度传感器DS18B20 (8)2.5.2 DS18B20时序 (11)第三章系统原理 (12)系统设计 (12)3.1 晶体振荡器电路 (12)3.2分频器电路 (13)3.3 时间计数器电路 (13)3.4 时钟电路 (13)3.5 复位电路3.6复位电路的可靠性设计 (14)3.7 按键部分 (14)第四章PCB制作与性能测试分析 (16)第五章总结 (17)参考文献 (18)前言电子时钟是实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室,银行大厅等场所,成为人们日常生活中的必需品。
数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。
钟表的数字化给人们生产生活带来了极大的方便,在此基础上完成的电子时钟精度高,功能易于扩展。
可扩展成为诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等电路。
所有这些,都是以钟表数字化为基础的。
目录一、内容提要 (2)二、设计的基本步骤及方案 (2)三、硬件电路设计及描述 (4)四、软件设计程序框图 (6)五、硬件的调试过程 (13)六、课程设计体会 (14)七、参考资料 (15)附汇编语言一、内容提要1、设计任务利用AT89C51单片机制作,基于这种单片机自主创作一个LED显示的智能电子钟。
分析,综合考虑系统的主要功能,我们经过查阅资料、接口的设计、程序的设计、安装调试等环节。
完成一个基于MCS51系列的单片机,设计多种资源的掌握和应用,并具有综合能力的小应用系列的设计,同时学习并使用相关的仪器设备、软件进行编写和调试程序。
2、设计要求1)用六个七段LED数码管作为显示设备,设计时钟功能。
2)显示的格式应该为:日期、时间同时都能看到,并且表示的格式为:日期:YY MM DD, 时间:HH MM SS。
3)还要分别设计年、月、日、时、分、秒,在复位后的日期应该为:12 01 01,时间为:00 00 00 。
4) 秒钟复位功能,秒复位键按下后,秒回到00。
5)键盘按键个数应该万为己确定。
6)@时间、月、日自行交替显示,或按键切换显示。
7)12小时和24小时切换功能。
8)* 实现闹钟功能。
二、设计的基本方案及步骤1、主控制器1)单片机的选择与外围电路:AT89C51作为温度测试系统的核心器件。
该器件是INTEL公司生产的MCS-51系列单片机的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51的CMOS产品。
不仅结合了HMOS的高速和高密度技术及HMOS的低功耗特征,而且继承和扩展了MCS-48单片机的体系结构和指令系统。
单片机小系统的电路图如图所示。
AT89C51:AT89C51单片机的主要特征:1)与MCS-51兼容,4K字节可编程闪烁存储器;2)灵活的在线系统编程,掉电标识和快速编程特性;3)寿命为1000次写/擦周期,数据保留时间可10年以上;4)全静态工作模式:0HZ~33HZ;5)三级程序存储器锁定;128×8位内部RAM,32位可编I/O线;6)16位定时器/计数器,5个中断源,4个8位并行的I/O接口,1个全双工I/O 接口。
课程设计2:设计一个数字时钟。
要求如下:1.利用51开发板上LED数码管,LED灯,按键等设备,设计一个电子时钟。
2.电子钟使用4位数码管显示小时(24小时制)和分钟,秒可以使用LED灯或其他形式表现。
3.具有设置时钟功能,设置时间时,时间停止计时。
需要设置的位置数码管处于闪烁状态,如你想设置小时的数值时,显示小时的数码管需要处于闪烁状态,而显示分钟的数码管不可以处于闪烁状态,应处于正常显示状态。
4.按键可以选择独立键盘或矩阵键盘。
5.其他扩展功能(选做,能力强的可以做):如闹钟,时制切换等。
一.key.c#include "reg52.h"#include "key.h"extern unsigned char min_flag ;//标志位,控制分数码管闪烁extern unsigned char hour_flag ;//标志位,控制时数码管闪烁extern unsigned char shi ;extern unsigned char fen ;unsigned char key_flag = 0;//标志位,有按键被按下unsigned char key_con = 0;//控制位,控制按键(K1)被按下/*独立按键P12连接到51单片机P1端口k1对应的端口为P1.3k2对应的端口为P1.2k3对应的端口为P1.1k4对应的端口为P1.0*/code unsigned char arr[]={0xf7,0xfb,0xfd,0xfe};unsigned char read_key(unsigned char key){unsigned char i;for(i=0;i<8;i++){if(!(key & 1)){return i+1;}key>>=1; //key = key >> 1 ;}return 0;}void key_scan2(void){unsigned char temp;//键盘扫描temp = key4_scan();if(temp){if(!key_flag){if(temp==4)//K1被按下{key_con++;if(key_con==1) //第一次按下调整小时的数值{hour_flag=1;min_flag =0;}else if(key_con==2) //第二次按下调整分的数值{hour_flag=0;min_flag =1;}else //第三次按下取消调整{hour_flag=0;min_flag =0;key_con = 0;}}if(temp == 3) //增加数值{if(hour_flag){shi++;if(shi>23){shi = 0;}}else if(min_flag){fen++;if(fen>59){fen = 0;}}}if(temp == 2) //减少数值{if(hour_flag){shi--;if(shi>250){shi = 23;}}else if(min_flag){fen--;if(fen>250) //非负数,减的时候不会小于0{fen=59;}}}}key_flag = 1;}else{key_flag = 0;}}/*扫描独立键盘,输入参数:无返回值:有键按下时:返回对应的数字没有按键:返回0*/unsigned char key4_scan(void){unsigned char temp;P1 = 0xf;if(P1 != 0xf)//有按键被按下{temp = P1 & 0xf;//1110return read_key(temp);}return 0;}unsigned char sub_key_scan(unsigned char key) {unsigned char temp;P1 = key; //判断第一行temp = P1 >> 4;if(temp != 0xf){return read_key(temp);}return 0;}/*矩阵键盘硬件连接:P13连接到51单片机P1端口P1.0对应P13的1脚P1.1对应P13的2脚P1.2对应P13的3脚……P1.7对应P13的8脚输入参数:无返回值:有键按下时:返回对应的数字没有按键:返回0*/unsigned char key16_scan(void){unsigned char temp;unsigned char i=0;P1 = 0xf0;if(P1 != 0xf0)//有按键被按下{for(i=0;i<4;i++)//用函数扫描4行{temp = sub_key_scan(arr[i]);if(temp){return temp+(i*4);}}}return 0;}二.Key.h#ifndef KEY_H#define KEY_Hunsigned char key4_scan(void); unsigned char key16_scan(void);void key_scan2(void);#endif三.Led_reg.c#include "reg52.h"/*P2连接位码,P2.0连接Q4B,P2.1连接Q3B,P2.2连接Q2B,P2.3连接Q1B P0端口连接段码,P0.0连接A,。
单片机电子时钟设计报告实现功能:显示时、分、秒,刚打开电源时,显示的数据为12:00:00,然后电路会自动开始计时。
电路中有时、分、秒各自单独的调整按钮,时间调整按钮每按一次,相应的显示时间加1。
所需材料:89C51单片机,多位数码管,数码管显示译码器74LS48,3线8线译码器74LS138,3个按钮,100Ω、22KΩ电阻若干,12MHZ晶振一个,30pf无极电容2个,10uf 有极电容一个,敷铜板。
电路设计:用P1端口的P1.0~P1.3来作为数码管显示数据的输出引脚,用P1.4~P1.6引脚作为3线8线译码器的控制输入引脚,用P0端口的P0.0~P0.2来分别作为时、分、秒的时间调整按钮。
当按下按钮时,相应的输入引脚上就会有低电平输入单片机。
3线8线译码器的控制端,Y0、Y1、Y2、Y3、Y4、Y5分别控制了数码管的显示控制线。
电路如下图1-1图1-1流程图:程序设计:ORG 00H 主程序起始地址JMP START 主程序STARTORG 0BH 定时器T0中断起始地址JMP TIM0 定时器T0中断子程序TIM0 START:MOV SP,#70H 设置堆栈指针MOV 28H,#00 设置显示位数扫描指针初值为0 MOV 2AH,#12H 设置时钟显示寄存器初值为12H MOV 2BH,#00 设置分钟显示寄存器初值为00H MOV 2CH,#00 设置秒钟显示寄存器初值为00H MOV TMOD,#01H 设置定时器T0工作在方式1 MOV TH0,#0F0H 定时4ms的初值,即0F060H MOV TL0,#60H 初值的低位MOV IE,#82H 定时器T0中断允许MOV R4,#250 保证后面实现中断250次,即1秒的延时SETB TR0 启动定时器T0LOOP:JB P0.0,N2 若没有按键,就转去下一步检查分CALL DELAY 延时5ms,消除抖动MOV A,2CH 将秒寄存器的值载入累加器AADD A,#01H A的内容加1DA A 十进制调整MOV 2CH,A A的值存入秒寄存器CJNE A,#60H,N1 看是否已经是60秒,若不是就继续检查MOV 2CH,#00 已经是60秒,就清空秒寄存器的值N1:JNB P0.0,$ 秒按键还没有放开就循环等待CALL DELAY 延时5ms,消除抖动N2:JB P0.1,N4 若分没有按键,就转去下一步检查分CALL DELAY 延时5ms,消除抖动MOV A,2BH 将分寄存器的值载入累加器AADD A,#01H A的内容加1DA A 十进制调整MOV 2BH,A A的值存入寄存器CJNE A,#60H,N3 看是否已经是60分,若不是就继续检查MOV 2BH,#00H 已经是60分,就清空寄存器的值N3:JNB P0.1,$ 分按键还没有放开就循环等待CALL DELAY 延时5ms,消除抖动N4:JB P0.2,LOOP 若时没有按键,就转回去继续检查看是否有按键CALL DELAY 延时5ms,消除抖动MOV A,2AH 将时寄存器的值载入累加器AADD A,#01H A的内容加1DA A 十进制调整MOV 2AH,A A的值存入时寄存器CJNE A,#24H,N5 看是否已经是24时,若不是就继续检查MOV 2AH,#00H 已经是24时,就清空是寄存器的值N5:JNB P0.2,$ 时钟按键还没有放开就循环等待CALL DELAY 延时5ms,消除抖动JMP LOOP 返回重新检查看是否有按键******定时器T0中断子程序*******TIM0:MOV TH0,#0F0H 定时初值重设MOV TL0,#60HPUSH ACC 将累加器A的值暂存于堆栈PUSH PSW 将PSW的值暂存于堆栈DJNZ R4,X2 计时中断不满1s就退出继续中断MOV R4,#250 计时1sCALL CLOCK 调用计时器子程序CLOCKCALL DISP 调用显示子程序DISPX2:CALL SCAN 调用扫描子程序SCANPOP PSW 到堆栈取回PSW的值POP ACC 到堆栈取回累加器ACC的值RETI 返回主程序******扫描子程序*******SCAN:MOV R0,#28HINC @R0 显示位数扫描值加1CJNE @R0,#6,X3 扫描位数不为6就准备控制输出MOV @R0,#0 扫描位数为6,就令其置为0X3:MOV A,@R0 扫描位数载入AADD A,#20H A加上20H(显示寄存器地址)=各时间显示区地址MOV R1,A 各时间显示区地址存入AMOV A,@R0 扫描位数存入ASWAP A 将A的高低4位交换(其高4位为扫描的位数,低4位为显示数值)ORL A,@R1 将扫描值与显示数据组合MOV P1,A 显示输出RET******计时子程序*******CLOCK:MOV A,2CH 秒寄存器值载入AADD A,#1 加1sDA A 十进制调整MOV 2CH,A A的值存入秒寄存器CJNE A,#60H,X4 A不等于60秒,就跳出程序去显示MOV 2CH,#00H 已经是60秒,就清0MOV A,2BH 分寄存器值载入AADD A,#1 加1分DA A 十进制调整MOV 2BH,A A的值存入分寄存器CJNE A,#60H,X4 A不等于60分,就跳出程序去显示MOV 2BH,#00H 已经是60分,就清0MOV A,2AH 时寄存器值载入AADD A,#1 加1小时DA A 十进制调整MOV 2AH,A A的值存入时寄存器CJNE A,#24H,X4 A不等于24时,就跳出程序去显示MOV 2AH,#00H 已经是24时,就清0X4:RET******显示子程序*******DISP:MOV R1,#20H 20H为显示寄存器单元MOV A,2CH 将秒寄存器的内容存入AMOV B,#10H 设B累加器的值为10HDIV AB A/B,商存入A(十位数),余数存入(个位数)MOV @R1,B 将显示的个位数存入20H显示寄存器单元INC R1MOV @R1,A 将显示的十位数存入21H显示寄存器单元INC R1MOV A,2BH 将分寄存器的内容存入AMOV B,#10H 设B累加器的值为10HDIV AB A/B,商存入A(十位数),余数存入(个位数)MOV @R1,B 将显示的个位数存入22H显示寄存器单元INC R1MOV @R1,A 将显示的十位数存入23H显示寄存器单元INC R1MOV A,2AH 将时寄存器的内容存入AMOV B,#10H 设B累加器的值为10HDIV AB A/B,商存入A(十位数),余数存入(个位数)MOV @R1,B 将显示的个位数存入24H显示寄存器单元INC R1MOV @R1,A 将显示的十位数存入25H显示寄存器单元RET******延时5ms消除抖动*******DELAY:MOV R6,#60D1:MOV R7,#248DJNZ R7,$DJNZ R6,D1RETEND原理图:PCB图:。
单片机系统课程设计目录1 概述 (3)1.1 研究背景 (3)1.2 设计思想及基本功能 (4)2 总体方案设计 (4)2.1 方案选取 (4)2.1.1显示模块选择方案和论证 (4)2.1.2时钟芯片的选择方案和论证 (5)2.2总体方案设计 (6)2.3 系统整体设计框图 (6)3 硬件电路设计 (6)3.1 电源电路设计 (6)3.2 晶振电路 (7)3.3 复位电路 (7)3.4 时钟电路 (8)3.4.1 DS1302芯片介绍 (8)3.4.2 DS1302在本设计中的应用 (12)3.5 键盘电路 (12)3.6 显示电路 (13)3.7 整点报时电路 (16)4 系统软件设计 (17)4.1 主程序软件设计 (17)4.2 键盘子程序设计 (18)4.3 日历时钟子程序设计 (19)4.4 显示子程序设计 (20)4.5 整点报时子程序的设计 (21)5 系统调试 (22)5.1软件调试 (22)5.2 硬件调试 (23)6 总结 (24)参考资料:.......................................... 错误!未定义书签。
附录一:系统原理图.................................. 错误!未定义书签。
附录二:元件清单.................................... 错误!未定义书签。
附录三:源程序代码.................................. 错误!未定义书签。
1 概述1.1 研究背景在日新月异的21世纪里,家用电子产品得到了迅速发展。
许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。
单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。
并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。
学号: 班级: 姓名:基于89C51单片机的电子闹钟设计一、设计要求(1)设计并实现一个具有计时功能的电子时钟系统,电子表的时间精确到秒,并可以显示年、月、日、时、分、秒。
(2)利用液晶显示器显示定时器的日期和时间。
(3)使用键盘进行设置时间和设置闹钟。
(4)定时时间到通过蜂鸣器报警和发光二极管闪烁通知,并持续60s 。
二、硬件设计(1)系统设计框图(2)选择硬件设备单片机:选择AT89C51;液晶显示器:具有16字符显示功能的1601 键盘:选择4行*4列的矩阵键盘 LED :选择红色的发光二极管 E 2PROM :X2545基本元件:蜂鸣器,电容,晶体振荡器 ,电阻,开关 电源:使用+5v 直流稳压源 基本模块的构成①时钟信号发生单元如右图2 利用晶振和电容以及单片机内部 电路,构成晶体并联振荡器,产 生12MHz 的时钟频率 ②复位电路如右图3利用一个简单的电容和按键实现*SI SO SCK CSR/S R/W E 单片机 89C51液晶显示蜂鸣器LED E 2PROM X2545 512*8bit键盘P2口P1口图1定时器系统框图数码管显示统P0口P3.0P3.6、P3.7基本模块图2时钟信号发生单元实现对系统的复位功能由此基本模块可以实现最小的单片机系统(3)电子时钟硬件原理图图4硬件电路原理电路(4)主要器件的原理①液晶显示原理液晶显示器种类繁多,按输出样式分为,图案式,数码式,点阵式。
本设计方案利用的是点阵式液晶显示器,而液晶驱动方式又和数码管驱动截然不同,虽然比数码管需要更小的工作电压,但是其结构所需要的扫描方式较数码管来说,是比较复杂的,而且输入输出数据速度慢,市场上是常用点阵式液晶驱动器的,常用的有1601、1602……,“16”代表显示字符共有几列,“01”、“02”代表输出字符共有几行。
下面是驱动1601的驱动方法。
驱动1601的一个很重要的方面就是液晶显示器的初始化,主要是利用控制、数据复用总线来输入指令,进行初始化。
单片机原理与接口技术课程设计成绩评定表设计课题:基于89C51的数字电子钟设计学院名称:电气工程学院专业班级:自动F1106学生姓名:学号:指导教师:设计地点:31-630设计时间:2013-12-16~2013-12-27单片机原理与接口技术课程设计课程设计名称:基于89C51的数字电子钟设计专业班级:自动F1106学生姓名:学号:指导教师:课程设计地点:课程设计时间:2013-12-16~2013-12-27单片机系统课程设计任务书目录1 概述 (7)1.1 研究背景 (7)1.2 设计思想及基本功能 (8)2 总体方案设计 (9)2.1 方案选取 (9)2.1.1显示模块选择方案和论证 (9)2.1.2时钟芯片的选择方案和论证 (10)2.2总体方案设计 (10)2.3 系统整体设计框图 (10)3 硬件电路设计 (11)3.1 电源电路设计 (11)3.2 晶振电路 (11)3.3 复位电路 (12)3.4 时钟电路 (13)3.4.1 DS1302芯片介绍 (13)3.4.2 DS1302在本设计中的应用 (18)3.5 键盘电路 (18)3.6 显示电路 (19)3.7 整点报时电路 (23)4 系统软件设计 (23)4.1 主程序软件设计 (24)4.2 键盘子程序设计 (25)4.3 日历时钟子程序设计 (26)4.4 显示子程序设计 (28)4.5 整点报时子程序的设计 (29)5 系统调试 (30)5.1软件调试 (30)5.2 硬件调试 (31)6 总结 (33)参考资料: ................................................................. 错误!未定义书签。
附录一:系统原理图..................................................... 错误!未定义书签。
附录二:元件清单........................................................ 错误!未定义书签。
目录1设计要求 (2)2设计方案和论证 (2)2.1总设计原理框图 (2)2.2设计方案的选择 (2)2.2.1计时方案 (2)2.2.2显示系统的方案 (3)3硬件部分 (3)3.1主要器件 (3)3.2 IO口分配说明 (3)3.3详细器件介绍 (4)3.3.1 STC89C51单片机介绍 (4)3.3.2电源 (6)3.3.3复位电路 (7)3.3.4 ULN2003(大电流驱动阵列) (7)3.3.5储存芯片:EEPROM (AT24C02) (8)3.3.6 PL2302(USB转RS232控制器) (8)3.3.7液晶显示1602 (10)3.3.8时钟芯片DS1302 (11)4 软件部分 (13)4.1主程序流程图 (13)4.2液晶初始化流程图 (14)4.3时间与日期显示流程图 (15)4.4温度显示流程图 (16)4.5键扫描流程图 (17)5调试和结果分析 (19)5.1调试 (19)5.2问题和结果分析 (20)6心得体会 (20)1.设计要求设计产品实现一个依据时段可变显示亮度电子钟,具体如下:(1)能够实现基本时钟的走时,显示范围是00:00:00——23:59:59。
能够实现时钟的调整, 通过按键可以对“时”位和“分”位进行加1调节,并能当加至最大值时能重新归零。
(2)能够实现当前室温的测量功能,并在数码管上予以显示(3)能够实现年月日的显示与切换。
(4)能够实现温度的显示与切换。
(5)能够实现根据时段自动改变显示亮度。
2.设计方案和论证本次设计时钟电路,使用了STC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒、年、月、日、星期。
使用C 语言程序来控制整个时钟显示,主要这样通过四个模块:键盘、时钟芯片、温度传感器、1602lcd 显示即可满足设计要求。
2.1总设计原理框图 如下图所示:2.2 设计方案的选择2.2.1 计时方案方案一:采用实时时钟芯片现在市场上有很多实时时钟集成电路,如DS1287、DS12887、DS1302等。
盐城纺织职业技术学院毕业设计(论文)基于AT89C51单片机的数字钟仿真与设计陈姗班级专业所在系指导老师完成时间:2011年12月00日至2012年05月20日目录摘要 (4)Abstract (5)第一章绪论 (6)1.1、单片机的发展 (6)1.2、单片机的应用 (6)1.3、数字钟应用发展介绍 (6)第二章基于AT89C51单片机的硬件系统原理 (7)2.1、基于AT89C51数字钟设计的原理 (7)2.2、数字钟主要元件介绍 (7)2.2.1、AT89C51单片机 (7)2.2.2、数码管 (9)2.2.3、74LS245 (10)2.3、数字钟主要电路介绍 (10)2.3.1、时钟电路 (11)2.3.2、复位电路 (12)第三章基于KEIL的数字钟设计 (13)4.1、Keil uVision2集成开发环境介绍 (13)4.2、基于keil的软件数字钟设计 (13)4.3、数字钟软件介绍 (14)4.3.1、流程图 (14)4.3.2、程序 (15)第四章数字钟仿真与实现 (21)5.1、Proteus软件介绍 (21)5.2、基于Proteus软件的数字钟硬件仿真设计 (21)5.3、基于Proteus软件的数字钟硬件仿真运行 (22)5.4、基于HOT-51开发板的数字钟硬件运行 (22)第五章基于PROTEL软件的数字钟硬件设计 (24)3.1、Protel 99 SE概述 (24)3.2、基于Protel 99 SE的原理图设计 (22)3.3、基于Protel99 SE 的PCB图设计 (23)3.4、元件列表 (23)第六章小结与展望 (24)7.1、小结 (24)7.2、全文展望 (24)致谢 (25)参考文献 (26)摘要现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。
对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。
武汉大学电子信息学院电子系统综合设计课程论文基于89C51单片机的数字钟设计专业:年级:作者:指导教师:2012 年6 月6 日目录1 作品的背景与意义.................................... 错误!未定义书签。
2 功能指标设计 (2)3 作品方案设计 (2)3.1总体方案的选择 (2)3.2控制方案的选择 (2)3.3显示方案的选择 (3)4 硬件设计 (4)4.1模块设计 (4)4.1.1晶体振荡器电路 (4)4.1.2分频器电路 (4)4.1.3时间计数器电路 (4)4.1.4内部时钟电路 (5)4.1.5复位电路 (5)4.1.6按键部分 (6)4.2原理电路图 (6)4.3工作环境 (7)5 软件设计 (7)5.1主程序流程图 (7)5.2显示模块流程图 (9)6 系统测试 (11)6.1测试环境 (11)6.2测试步骤 (11)6.2.1硬件测试 (11)6.2.2软件测试 (11)7 实验总结 (11)8 发展前景 (12)参考文献 (12)附录1 系统电路图 (13)附录2 系统软件代码 (14)附录3 系统器件清单 (22)1 作品的背景及意义20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
分类号:TM711单位代码:10452本科职业生涯设计数码时钟电路的设计姓名学号年级2010级专业电气工程及其自动化系(院)指导教师2011年 12 月 20 日诚信声明\学生签名:日期:指导老师签名:日期:摘要本文通过对一个基于单片机的能实现定时,秒表,闹钟等功能的多功能电子时钟的设计学习,详细介绍了单片机应用中的数据转换显示,液晶显示原理,键盘扫描原理。
从而达到学习、了解单片机相关指令在各方面的应用。
系统由AT89C51、温度检测芯片、时钟芯片DS1302、液晶显示器LCD1602等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示和实时温度显示。
也具有时钟、日历的校准,定时时间的设定和闹铃等功能。
文章后附有电路原理图、PCB板图和程序清单,以供读者参考。
因水平有限,难免有疏落不足之处,敬请老师和同学能给与批评指正。
关键字:AT89C51;DS1302;LCD1602;时钟目录前言 (1)第1章总体方案介绍 (2)1.1系统设计思想 (2)1.2系统框架图 (2)第2章硬件仿真电路设计 (3)2.1 Proteus (3)2.1.1 Proteus简介 (3)2.2 AT89C51的电路设计 (3)2.2.1 AT89C51简介 (3)2.2.2 AT89C51的时钟电路设计 (6)2.2.3 AT89C51的复位电路设计 (6)2.3 AT89C51液晶显示模块的连接 (7)2.3.1液晶显示器LCD1602简介 (7)2.3.2 AT89C51与LCD1602的连接 (12)2.4 AT89C51与时钟芯片的连接 (12)2.4.1时钟芯片DS1302简介 (12)2.4.2 AT89C51与时钟芯片DS1302的连接 (14)2.5 AT89C51与温度芯片的连接 (15)2.5.1温度芯片DS18B20简介 (15)2.5.2AT89C51与温度芯片DS18B20的连接 (16)2.6 AT89C51与键盘的连接 (16)第3章系统软件设计 (18)3.1程序设计 (18)3.1.1主程序模块设计 (18)3.1.2液晶显示器LCD1602模块 (19)3.1.3时钟芯片DS1302操作模块 (20)3.1.4温度芯片DS18B20操作模块 (22)3.1.5键盘操作模块 (23)第4章硬件实现 (25)4.1 Protel的硬件电路设计 (25)4.1.1 原理图设计 (25)4.1.2 报表生成 (25)4.1.3 创建PCB文件 (26)第5章结论 (28)附录 (29)参考文献 (66)谢辞 (67)前言单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。
目录第一章电子时钟的总体设计 (3)1.1 设计目的 (3)1.1.1 课程设计 (3)1.1.2 AT89C51芯片的串口功能 (3)1.1.3用keil软件进行编程与调试 (3)1.2 设计任务 (3)1.3 设计思路 (4)第二章硬件系统的设计 (5)2.1 电路原理图设计 (5)2.1.1 电子钟的硬件电路框图 (5)2.2 AT89C51引脚及其功能 (5)2.2.1 AT89C51的原理及说明 (5)2.2.2 引脚功能 (6)2.3 驱动部件 (7)2.4 显示部分 (8)第三章软件系统的设计 (9)3.1 电子钟的主程序 (10)3.2 电子钟的显示子序 (11)3.3 定时器中断服务程序 (12)3.4 电子时钟设计程序清单 (14)3.5 程序进行编译仿真 (18)3.5.1 89C51程序 (18)3.5.2 用PROTEUS ISIS进行电子万年历的仿真测试 (19)第四章对89C51设计的电子时钟的总结 (21)参考文献 (22)摘要本次实训是基于AT89C51单片机电子钟的设计,对时、分、秒的显示的控制,时、分、秒用六位数码管显示LED数码管时钟电路采用24小时计时方式。
该电路采用AT89C51单片机,使用5V电池供电,只使用一个按键进行复位状态的控制以及正常显示等状态。
LED 显示采用静态扫描方式实现,采用6M晶振。
最常见的电子钟通常使用单片机模块控制,一种用单片机原理实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有硬件成本低、计时准确、更长的使用寿命特点,因此得到了广泛的使用。
本次设计通过用单片机为主控制,通过电路仿真而实现。
首先使用Proteus Professional软件进行绘制硬件电路图,用keil软件进行编程与调试,最终生成hex文件,传入单片机内部,从而实现仿真效果。
第一章电子时钟的总体设计1.1 设计目的1.1.1 课程设计使我们能够深入理解单片机系统的工作原理接口电路的设计及调试方法,培养综合运用所学理论知识分析和解决实际问题的能力。
第6章智能电子钟的设计6.1 功能要求1. 设计要求以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、天、周、月、年。
(2) 闰年自动判别。
(3) 五路定时输出,可任意关断(最大可到16路)。
(4) 时间、月、日交替显示。
(5) 自定任意时刻自动开/关屏。
(6) 计时精度:误差≤1秒/月(具有微调设置)。
(7) 键盘采用动态扫描方式查询。
所有的查询、设置功能均由功能键K1、K2完成。
2. 工作原理本设计采用市场上流行的时钟芯片DS1302进行制作。
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与计算机进行通信,使得管脚数量减少。
实时时钟/日历电路能够计算2100年之前的秒、分、时、日、星期、月、年的,具有闰年调整的能力。
DS1302时钟芯片的主要功能特性:(1) 能计算2100年之前的年、月、日、星期、时、分、秒的信息;每月的天数和闰年的天数可自动调整;时钟可设置为24或12小时格式。
(2) 31B的8位暂存数据存储RAM。
(3) 串行I/O口方式使得引脚数量最少。
(4) DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需3根线。
(5) 宽范围工作电压2.0-5.5V。
(6) 工作电流为2.0A时,小于300nA。
(7) 功耗很低,保持数据和时钟信息时功率小于1mW。
6.2 方案论证6.3 系统硬件电路的设计……6.4 系统程序的设计#include<reg51.h>#include<lcd.h>#include<ds1302.h>#define uchar unsigned char #define uint unsigned intsbit key1=P3^0;//设置键sbit key2=P3^3;//调节键加sbit key3=P3^6;//设置键减uchar second,minute,hour;uchar day,week,month,year;uchar pos_flag=0;uchar keyflag=0;//按键标志位//函数声明uchar read1302(uchar add); //读地址、数据void write1302(uchar add,uchar date); //写入地址、数据void write_com_date(uchar add,uchar date);void init_lcd();void init_ds1302();void delay(uchar time);void Disp_1602(uchar x,uchar y,uchar *p);void keyscan();void settime();void settime(){write1302(0x8e,0x00); //关闭写保护write1302(0x80,second/10*16+second%10); //秒write1302(0x82,minute/10*16+minute%10); //分write1302(0x84,hour/10*16+hour%10); //时write1302(0x86,day/10*16+day%10); //日write1302(0x88,month/10*16+month%10); //月write1302(0x8a,week/10*16+week%10); //星期write1302(0x8c,year/10*16+year%10); //年write1302(0x8e,0x80);}void display(){second=read1302(0x81);write_com_date(0xca,0x30+second%10); write_com_date(0xc9,0x30+second/10);minute=read1302(0x83);write_com_date(0xc7,0x30+minute%10); write_com_date(0xc6,0x30+minute/10);hour=read1302(0x85);write_com_date(0xc4,0x30+hour%10);write_com_date(0xc3,0x30+hour/10);day=read1302(0x87);write_com_date(0x8a,0x30+day%10);write_com_date(0x89,0x30+day/10);week=read1302(0x8b);write_com_date(0xcd,0x30+week%10);month=read1302(0x89);write_com_date(0x87,0x30+month%10);write_com_date(0x86,0x30+month/10);year=read1302(0x8d);write_com_date(0x84,0x30+year%10);write_com_date(0x83,0x30+year/10);}void keyscan() //修改调整时间日期{if(key1==0){delay(10);if(key1==0){pos_flag++;while(!key1);keyflag=1;switch(pos_flag){case 1:write_com(0x80+4); //年write_com(0x0f); //光标闪烁break;case 2:write_com(0x80+7); //月break;case 3:write_com(0x80+10); //日break;case 4:write_com(0x80+0x40+0x0d); //星期break;case 5:write_com(0x80+0x40+4); //时钟break;case 6:write_com(0x80+0x40+7); //分钟break;case 7:write_com(0x80+0x40+10); //秒钟break;default:break;}if(pos_flag==8) //pos_flag=8则退出调整{pos_flag=0;keyflag=0; //按键标识清零delay(5);settime();write_com(0x0c); // 关光标}}}if(key2==0) //调节加键,按下(低电平)就加 {delay(15);if(key2==0){while(!key2);switch(pos_flag){case 1:year++;if(year==99)year=0;write_com_date(0x84,0x30+year%10);write_com_date(0x83,0x30+year/10);break;case 2:month++;if(month==13)month=1;write_com_date(0x87,0x30+month%10);write_com_date(0x86,0x30+month/10);break;case 3:day++;if((year%4==0)&&(month==2)) //闰年二月 29天{if(day==30)day=1;}if((year%4!=0)&&(month==2)) //平年二月 28天{if(day==29)day=1;}if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) //大月31天{if(day==32)day=1;}if(month==4||month==6||month==9||month==11) //小月30天{if(day==31)day=1;}write_com_date(0x8a,0x30+day%10);write_com_date(0x89,0x30+day/10);break;case 4:week++;if(week==8)week=1;write_com_date(0xcd,0x30+week);break;case 5:hour++;if(hour==24)write_com_date(0xc4,0x30+hour%10);write_com_date(0xc3,0x30+hour/10);break;case 6:minute++;if(minute==60)minute=0;write_com_date(0xc7,0x30+minute%10);write_com_date(0xc6,0x30+minute/10);break;case 7:second++;if(second==60)second=0;write_com_date(0xca,0x30+second%10);write_com_date(0xc9,0x30+second/10);break;default:break;}}}if(key3==0){delay(15);if(key3==0){while(!key3);switch(pos_flag){case 1:year--;if(year==0)write_com_date(0x84,0x30+year%10);write_com_date(0x83,0x30+year/10);break;case 2:month--;if(month==0)month=12;write_com_date(0x87,0x30+month%10);write_com_date(0x86,0x30+month/10);break;case 3:day--;if((year%4==0)&&(month==2)) //闰年二月 29天{if(day==0)day=29;}if((year%4!=0)&&(month==2)) //平年二月 28天{if(day==0)day=28;}if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) //大月31天{if(day==0)day=31;}if(month==4||month==6||month==9||month==11) //小月30天{if(day==0)day=30;}write_com_date(0x8a,0x30+day%10);write_com_date(0x89,0x30+day/10);break;case 4:week--;if(week==0)week=7;write_com_date(0xcd,0x30+week);break;case 5:hour--;if(hour==0)hour=24;write_com_date(0xc4,0x30+hour%10);write_com_date(0xc3,0x30+hour/10);break;case 6:minute--;if(minute==0)minute=59;write_com_date(0xc7,0x30+minute%10);write_com_date(0xc6,0x30+minute/10);break;case 7:second--;if(second==0)second=59;write_com_date(0xca,0x30+second%10);write_com_date(0xc9,0x30+second/10);break;default:break;}}}}void main(){init_lcd();delay(2);init_ds1302();delay(2);Disp_1602(1,0,"20 - - week") ; Disp_1602(5,1,": :") ;while(1){if(keyflag==0){display();}keyscan();}}#ifndef _lcd_h_#define _lcd_h_#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit lcdrs=P2^0;sbit lcdrw=P2^1;sbit lcden=P2^2;void delay(uchar ms){uchar i;for(;ms>0;ms--)for(i=110;i>0;i--);}void write_com(uchar com) //写指令{lcden=0;lcdrs=0;lcdrw=0;P0=com;delay(1);lcden=1;delay(1);lcden=0;}void write_data(uchar date) //写数据{lcden=0;lcdrs=1;lcdrw=0;P0=date;delay(1);lcden=1;delay(1);lcden=0;}void write_com_date(uchar add,uchar date) {write_com(add);delay(1);write_data(date);}void Disp_1602(uchar x,uchar y,uchar *p) {while(*p){if(y==0) x|=0x80;else x|=0xc0;write_com(x);delay(5);write_data(*p);x++;p++;}}void init_lcd(){delay(15);write_com(0x38);delay(15);write_com(0x38);delay(5);write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}#endif#ifndef _ds1302_h_#define _ds1302_h_#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit sclk=P1^1;sbit io=P1^0;sbit rst=P1^2;sbit ACC_7=ACC^7;void write1302(uchar add,uchar date) //写入地址、数据{uchar i;rst=0;sclk=0;rst=1;for(i=0;i<8;i++){sclk=0;io=add&0x01;add>>=1;sclk=1;}for(i=0;i<8;i++){sclk=0;io=date&0x01;date>>=1;sclk=1;}rst=0;}uchar read1302(uchar add) //读地址、数据{uchar i,dat1,dat2;rst=0;sclk=0;rst=1;for(i=0;i<8;i++){sclk=0;io=add&0x01;add>>=1;sclk=1;}for(i=0;i<8;i++){ACC_7=io;sclk=1;ACC>>=1;sclk=0;}rst=0;sclk=1;dat1=ACC;dat2=dat1/16;dat1=dat1%16;dat1=dat2*10+dat1;return dat1;}void init_ds1302(){if(((read1302(0x81))&0x0f)==1){write1302(0x8e,0x00); //关闭写保护}}#endif……6.5调试及性能分析6.5.1 调试与测试……6.5.2 性能分析。
单片机系统课程设计目录1 概述 (3)1.1 研究背景 (3)1.2 设计思想及基本功能 (4)2 总体方案设计 (4)2.1 方案选取 (4)2.1.1显示模块选择方案和论证 (4)2.1.2时钟芯片的选择方案和论证 (5)2.2总体方案设计 (6)2.3 系统整体设计框图 (6)3 硬件电路设计 (6)3.1 电源电路设计 (6)3.2 晶振电路 (7)3.3 复位电路 (7)3.4 时钟电路 (8)3.4.1 DS1302芯片介绍 (8)3.4.2 DS1302在本设计中的应用 (12)3.5 键盘电路 (12)3.6 显示电路 (13)3.7 整点报时电路 (16)4 系统软件设计 (16)4.1 主程序软件设计 (17)4.2 键盘子程序设计 (18)4.3 日历时钟子程序设计 (19)4.4 显示子程序设计 (20)4.5 整点报时子程序的设计 (21)5 系统调试 (22)5.1软件调试 (22)5.2 硬件调试 (23)6 总结 (24)参考资料:......................................... 错误!未定义书签。
附录一:系统原理图................................. 错误!未定义书签。
附录二:元件清单................................... 错误!未定义书签。
附录三:源程序代码................................. 错误!未定义书签。
1 概述1.1 研究背景在日新月异的21世纪里,家用电子产品得到了迅速发展。
许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。
单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。
并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。
用单片机来控制的小型家电产品具有便携实用,操作简单的特点。
而时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。
怎样让时钟更好的为人民服务,这就要求人们不断设计出新型时钟。
现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED 显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
本文设计的日历和时钟的显示广泛用于小型智能家用电子产品,如电子钟。
利用单片机进行控制,实时时钟芯片DS1302进行记时,外加整点报时电路和显示电路,可实现时间的调整和显示。
电子钟既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。
因而,此设计具有相当重要的现实意义和实用价值。
1.2 设计思想及基本功能本设计在实现一般的数字电子钟的要求前提下,结合单片机知识以及电路知识,本着使电路工作稳定,降低能耗,减少器件的使用,节约成本,现实使用价值高的原则而设计。
本设计具体可以完美实现以下几个功能:(1)能准确实时显示年、月、日、时、分、秒、星期。
(2)可以对时间随时进行手动校正。
(3)采用24小时制。
(4)使用LED显示时间参数。
(5)上电后,电子钟显示“2013年12月31日23时59分59秒星期2”。
(6)当年、月、日、时、分、秒高位为0时做消隐处理,只显示单个数字以增强其可读性。
2 总体方案设计2.1 方案选取2.1.1显示模块选择方案和论证方案一:采用LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,但是价格昂贵,需要的接口线多,所以在此设计中不采用LED液晶显示屏。
方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。
方案三:LED数码管静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案四:LED数码管动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。
显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
本设计采用LED数码管动态扫描,由于LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少,所以本设计采用方案四。
2.1.2时钟芯片的选择方案和论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。
采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。
所以不采用此方案。
方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,RAM 做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA.从时间计时的精度以及提高单片机工作效率角度考虑,本设计采用方案二。
2.2总体方案设计综上各方案的论证与选取,本设计的最终方案为:以单片机AT89C51为主控制器,时间数据通过时钟芯片DS1302来读取,并通过LED数码管显示出来,并用键盘来完成对当前时间的调整。
2.3 系统整体设计框图结合以上方案选取,系统的整体设计框图方案如下:图2-3 系统整体设计框图3 硬件电路设计3.1 电源电路设计单片机正常工作电压为5V,因此设计的电源电路主要是提供单片机工作电压。
图3-1是为单片机提供电压的电源电路。
在这个电路中采用了三端集成稳压器LM7805,可以输出5V的直流电压以供给单片机,另外,用一个刀开关控制电源的断开与接通。
SW DPDT图3-1 电源电路图3.2 晶振电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。
本设计采用内部时钟方式,因此只需外接晶振源,就能产生一定频率的时钟信号送到单片机的内部的各个单元。
电路中的两个电容的作用有两个:一是帮助振荡器起振(C1 C2的值大,起振的速度慢;反之,速度快。
);二是对振荡器的频率起到微调的作用(C1 C2的值大,频率略有减少,反之,频率略有提高)。
本设计选用12MHZ的晶振,C1、C2的值采用30pF。
晶振电路如下图所示。
图3-2 单片机晶振电路图3.3 复位电路89C51单片机系统在刚通电后,必须复位。
复位电路的主要功能是使单片机进行初始化,在初始化的过程中需要在复位引脚RST上加大于2个机器周期的高电平,使单片机处于复位状态。
复位后的单片机地址初始化为0000H,然后继续从0000H单元开始执行程序。
在复位电路中提供复位信号,等到系统电源稳定后,再撤销复位信号。
但是为了在复位按键稳定的前提下,电源稳定后还要经一定的延时才撤销复位信号,以防在按键过程中引起的抖动而影响复位。
当单片机运行出错或进入死循环时,可使单片机复位后重新运行。
图3-3所示的RC复位电路可以实现上述基本功能。
图3-3 复位电路图3.4 时钟电路3.4.1 DS1302芯片介绍低功耗时钟芯片DS1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。
DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。
这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义。
采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。
在测量控制系统中,特别是长时间无人职守的测控系统中,经常需要记录某些具有特殊意义的数据及其出现的时间。
记录及分析这些特殊意义的数据,对测控系统的性能分析及正常运行具有重要的意义。
传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。
而在系统中采用DS1302则能很好地解决这个问题。
DS1302的性能特性如下:·实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;·用于高速数据暂存的31×8位RAM;·最少引脚的串行I/O;·2.5~5.5V 电压工作范围;·2.5V时耗电小于300nA;·用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式;·简单的3线接口;·可选的慢速充电(至VCC1)的能力。
DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。
它经过一个简单的串行接口与微处理器通信。
实时时钟/日历提供秒、分、时、日、周、月和年等信息。
对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。