基于DS1302的数码管显示数字钟
- 格式:doc
- 大小:387.00 KB
- 文档页数:15
学习情境2-可调式数字钟之基于DS1302和LCD1602的可调数字钟☆点名,复习1、DS1302的引脚及其功能,以及DS1302与单片机的硬件连接?2、如何对DS1302读写数据,如何得到DS1302的时钟?☆新课讲授2.3 基于DS1302与LCD1602设计的可调数字钟上堂课程我们学会了使用DS1302,知道了如何在单片机系统中的连接,也详细的学习了如何得到DS1302的时钟,并且我们使用了16个数码管把年月日和时分秒实时地显示出来。
但数码管的显示毕竟有其自身的缺陷,现在在工业控制的各个环节,都使用液晶进行人机联系。
在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通用器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED 数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单,在单片机系统中应用液晶显示器作为输出器件有以下几个优点:(1)显示质量高,由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
(2)数字式接口,液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
(3)体积小、重量轻,液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
(4)功耗低,相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
2.3.1 LCD1602技术资料2.3.1.1 液晶显示简介1、液晶显示原理:液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
基于DS1302设计的数字钟任务一电路原理图的设计1、最小系统电路步骤一:新建设计。
双击桌面PROTEUS软件图标,打开软件,单击工具栏“File”,出现如下图所示下拉菜单。
单击“New Design”菜单,弹出如下对话框。
选择绘图模板,我们选择DEFAULT模板,单击DEFAULT图标,单击“OK”按钮。
进入原理图编辑界面,如下图所示。
步骤二:文件命名和保存。
在绘制电路原理图应当先对文件进行命名,然后保存。
单击保存图标,弹出对话框,选择文件存储路径。
如下图所示:我们把文件保存在桌面的“电路原理图”这个文件夹内。
单击“保存”按钮弹出对话框,在“文件名”编辑框中填写电路原理图名称,“基于DS1302设计的数字钟”。
如下图所示。
单击“保存”按钮,回到原理图编辑页面。
同时在文件夹“电路原理图”中出现电路原理图标,如下图所示。
步骤三:选择主控元器件。
在编辑框最左边的工具栏中选择图标,进入器件模式,然后单击图标,弹出“Pick Device”对话框,如下图所示:在Category下拉框中选择Microprocessor ICs,然后选择芯片AT89C51或AT89C51单片机,如下图所示:单击OK按钮,单片机芯片选择完成,这时在对象选择器和预览窗口中均出现了所选择的芯片AT89C52,在对象选择器单击芯片名称,如AT89C52,再把鼠标移至编辑窗口区(工作区),右击鼠标,主控芯片AT89C52就拖入了工作区。
单片机芯片选择完毕。
如下图所示:步骤四:时钟振荡电路的设计。
51单片机的18和19引脚外接2个皮法级的电容和晶振就可以构成时钟振荡电路。
按照上一步骤选择AT89C52芯片的方法一一从元器件库中选择2个30pf的电容、12M的晶振,还有一个地。
如下图所示:步骤五:复位电路设计。
单片机的9引脚外接复位电路,本系统中用按键k1、2个电阻R1、R2和电容组成,具体电路结构如下图所示:此外,还有电源电路,单片机的20引脚、40引脚分别接电源的地和电。
DS1302应用刚学单片机,好多好奇,所以想做个简单的时钟。
下面是PROTEUS仿真电路和电路图,简单易懂。
文笔不好,说了多余。
下面是程序。
#include<reg52.h>#include<intrins.h>#include<ds1302.h>#define uint unsigned int#define uchar unsigned char#define BCDTUAN(str) (str/10*16+str%10) //定义宏,将要写入DS1302的时间转化为BCD码#define Write_Sec 0x80#define Write_Min 0x82#define Write_Hou 0x84#define Write_Dat 0x86#define Write_Mon 0x88#define Write_day 0x8a#define Write_Yea 0x8c#define Write_WP 0x8e //写保护位#define Write_TCR 0x90#define Read_Sec 0x81#define Read_Min 0x83#define Read_Hou 0x85#define Read_Dat0x87#define Read_Mon 0x89#define Read_Day 0x8b#define Read_Yea 0x8d#define CLK_BurstW 0xbf //时钟突发模式写#define CLK_BurstR 0xbf //时钟突发模式读#define Write_RAM_Begin 0xc0 //RAM第一个字节写指令#define Read_RAM_Begin 0xc1 //RAM第一个字节读指令#define RAM_BurstW 0xfe //突发模式写RAM#define RAM_BurstR 0xff //突发模式读RAMsbit _74hc154_A = P1^0;sbit _74hc154_B = P1^1;sbit _74hc154_C = P1^2;sbit _74hc154_D = P1^3;sbit CE =P1^6;sbit SCLK=P1^5;sbit IO =P1^4;uchar code scan[][4]={{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1},{1,0,0,0},{1,0,0,1},{1,0,1,0},{1,0,1,1},{1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}};uchar scanbuff[]={0,0,0,0,0,0,0,0,0,0,0,0};uchar code dispdate[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void WriteDS1302(void); //向DS1302写入时间。
常熟理工学院电气与自动化工程学院《微机原理与接口技术》课程设计题目:基于DS1302的电子钟设计*名:***学号:*********班级:测控122班指导教师:***起止日期:2015年7月摘要 .......................................................................................................................... - 1 -一、《微机原理与接口技术》课程设计任务书 .................................................. - 2 -二、总体设计方案 (2)2.1 设计框图..................................................................................................... - 2 -2.2 模块说明..................................................................................................... - 3 -2.2.1 DS1302模块 (3)三、硬件电路设计 (4)3.1 单片机最小系统......................................................................................... - 4 -3.1.1 系统结构 (4)3.1.2 系统特点............................................................................................................ - 5 -3.2 时钟电路设计............................................................................................. - 5 -3.3 数码管显示设计 (5)3.4 键盘电路 (5)四、软件设计 .......................................................................................................... - 6 -4.1 主程序流程................................................................................................. - 6 -4.2 时钟电路设计 (8)五、程序调试与运行结果 ............................................................ 错误!未定义书签。
实现功能:以DS1302数字时钟芯片为基础的时钟程序,用LED1602显示当前时间,功能键能显示年月日和星期。
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit SCK=P3^6; //时钟端口sbit SDA=P3^4; //数据端口sbit RST=P3^5; //复位端口sbit LCD_RS = P2^6;sbit LCD_RW = P2^5;sbit LCD_EP = P2^7;sbit key=P2^0;uchar code write_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分时日月周年uchar code read_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};uchar code a[]={" The time is:"};uchar code w1[]={" Monday"};uchar code w2[]={" Tuesday"};uchar code w3[]={" Wednesday"};uchar code w4[]={" Thursday"};uchar code w5[]={" Friday"};uchar code w6[]={" Saturday"};uchar code w7[]={" Sunday"};uchar init_time[] = {10,10,22,19,7,2,11}; //秒分时日月周年11-07-19 22:10:10uchar buff[7];uchar buff1[8];uchar buff2[13];uchar buff3;delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=120;y>0;y--);}/******DS1302部分*****/void write_byte(uchar n){uint i;for(i=0;i<8;i++){SCK=0;SDA=n&0x01;n=n>>1;SCK=1;}}uchar read_byte(){uint i;uchar n;for(i=0;i<8;i++){if(SDA)n=n|0x80;SCK=0;n=n>>1;_nop_();_nop_();SCK=1;}return n;}void write_DS1302(uchar address,uchar n) {RST=0;_nop_();SCK=0;_nop_();RST=1;_nop_();write_byte(address);write_byte(n);SCK=1;RST=0;}uchar read_DS1302(uchar address){uchar n;RST=0;_nop_();_nop_();SCK=0;_nop_();RST=1;write_byte(address);n=read_byte();_nop_();RST=0;_nop_();_nop_();_nop_();RST=0;SCK=0;_nop_();_nop_();_nop_();_nop_();SCK=1;_nop_();_nop_();SDA=0;_nop_();_nop_();SDA=1;_nop_();_nop_();return n;}void get_data(){unsigned char i,*p;p=read_address;for(i=0;i<7;i++){buff[i]=read_DS1302(*p);p++;}}void set_DS1302(){unsigned char i,*p,n;for(i=0;i<7;i++) //转换成BCD码{n=init_time[i]/10;init_time[i]=init_time[i]%10;init_time[i]=init_time[i]+n*16;}write_DS1302(0x8E,0X00);p=write_address;for(i=0;i<7;i++){write_DS1302(*p,init_time[i]);p++;}write_DS1302(0x8E,0x80);}bit lcd_bz(){ // 测试LCD忙碌状态bit result;LCD_RS = 0;LCD_RW = 1;LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();result=(bit)(P0 & 0x80);LCD_EP=0;return result;}lcd_wcmd(uchar cmd){ // 写入指令数据到LCD while(lcd_bz());LCD_RS = 0;LCD_RW = 0;LCD_EP = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;}lcd_pos(uchar pos){ //设定显示位置lcd_wcmd(pos|0x80);}lcd_wdat(uchar dat){ //写入字符显示数据到LCD while(lcd_bz());LCD_RS = 1;LCD_RW = 0;LCD_EP = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EP = 1;_nop_();_nop_();_nop_();_nop_();LCD_EP = 0;}lcd_init(){ //LCD初始化设定lcd_wcmd(0x38); //16*2显示,5*7点阵,8位数据delay(1);lcd_wcmd(0x0c); //显示开,关光标delay(1);lcd_wcmd(0x06); //移动光标delay(1);lcd_wcmd(0x01); //清除LCD的显示内容delay(1);}void dispaly(){uint i;if(0==key)delay(5);if(0==key){lcd_wcmd(0x01);while(0==key){buff2[0]=0x20;buff2[1]=0x20;buff2[2]=0x20;buff2[3]=0x32;buff2[4]=0x30;buff2[5]=buff[6]/16+0x30;buff2[6]=(buff[6]&0x0f)+0x30;buff2[7]=0x2d;buff2[8]=buff[4]/16+0x30;buff2[9]=(buff[4]&0x0f)+0x30;buff2[10]=0x2d;buff2[11]=buff[3]/16+0x30;buff2[12]=(buff[3]&0x0f)+0x30;lcd_pos(0);for(i=0;i<13;i++){lcd_wdat(buff2[i]);delay(5);}buff3=buff[5]&0x0f;lcd_pos(0x40);if(buff3==1){i = 0;while(w1[i]!= '\0'){lcd_wdat(w1[i]);i++;delay(5);}}else if(buff3==2){i = 0;while(w2[i]!= '\0'){lcd_wdat(w2[i]);i++;delay(5);}}else if(buff3==3){i = 0;while(w3[i]!= '\0'){lcd_wdat(w3[i]);i++;delay(5);}}else if(buff3==4){i = 0;while(w4[i]!= '\0'){lcd_wdat(w4[i]);i++;delay(5);}}else if(buff3==5){i = 0;while(w5[i]!= '\0'){lcd_wdat(w5[i]);i++;delay(5);}}else if(buff3==6){i = 0;while(w6[i]!= '\0'){lcd_wdat(w6[i]);i++;delay(5);}}else if(buff3==7){i = 0;while(w7[i]!= '\0'){lcd_wdat(w7[i]);i++;delay(5);}}}lcd_wcmd(0x01);}else{lcd_pos(0);i = 0;while(a[i]!= '\0'){lcd_wdat(a[i]);i++;delay(5);}buff1[0]=buff[2]/16;buff1[1]=buff[2]&0x0f;buff1[2]=0x0a;buff1[3]=buff[1]/16;buff1[4]=buff[1]&0x0f;buff1[5]=0x0a;buff1[6]=buff[0]/16;buff1[7]=buff[0]&0x0f;lcd_pos(0x44);for(i=0;i<8;i++){lcd_wdat(buff1[i]+0x30);delay(5);}}}void main(){lcd_init();set_DS1302();while(1){get_data();dispaly();}}。
基于单片机及时钟芯片DS1302的电子时钟设计一、概述二、电子时钟的基本原理电子时钟是一种以单片机为核心的智能电子产品,采用数字电路来显示时间。
电子时钟的核心部件是一个定时器,通过周期性的计数来确定时间,然后再将计数器的结果通过数码管等显示装置进行显示。
除此之外,电子时钟还需要一个能够准确计时的时钟芯片,如本文所使用的时钟芯片DS1302。
三、电子时钟的设计方法本文设计的电子时钟采用AT89C52单片机和时钟芯片DS1302,并通过外围的驱动电路和数码管来实现时间的显示。
该电子时钟具有以下特点:1.可进行24小时制和12小时制的切换:电子时钟可以通过按键实现24小时制和12小时制的切换,可按需选择。
2.自动夏令时判断:电子时钟可自动识别夏令时,并根据设定值进行切换,方便易用。
3.温度显示:电子时钟的DS1302时钟芯片自带温度探测器,可实现温度的实时显示。
本文所设计的电子时钟的硬件设计方案如下:1.主控芯片:采用AT89C52单片机2.显示装置:采用数码管进行时分秒的显示,共4位数码管。
3.时钟芯片:采用DS1302时钟芯片,保证时间的准确性。
5.电源:采用开关电源或锂电池供电。
锂电池供电时,电子时钟可实现断电后不重置的功能。
1.初始化:在电子时钟启动时,需要对各个模块进行初始化,如DS1302时钟芯片的读写口、数码管和按键都需要进行初始化。
2.频率切换:按下切换按键后,电子时钟的频率从24小时制切换到12小时制。
3.设定夏令时:按下设定按键后,可以进行夏令时设定。
设定值以秒为单位存储,在夏季过渡期改变时,只需修改设定值即可。
5.时间的显示:通过程序将DS1302时钟芯片中的时间读出并在数码管上显示,实现实时显示的功能。
五、总结本文设计的基于单片机及时钟芯片DS1302的电子时钟,可通过按键实现24小时制和12小时制的切换、自动夏令时判断、温度显示等多种功能,实现了电子时钟的多种要求和需求。
该设计方案具有简单实用、成本低廉、易于维护等优点,可广泛应用于各个领域。
物理与电子科学学院电子电工实验基于DS1302多功能数字时钟--万年历实验报告实验名称:基于DS1302多功能数字钟实验日期: 2014年 01 月 05 日专业:电子信息工程*名:**班级:物电 1105 班学号: *************一、设计理念:电子万年历是一个应用非常广泛地实用日常计时工具,带有显示温度,显示世纪,年,月,日,星期,时,分,秒和按键可调时间及其按键设置闹钟地功能,同时具有月末自动更新,闰年补偿功能,整点报时等多种功能.环境温度检测系统在日常生活和工业应用非常广泛,能实时采集周围地温度信息进行显示.此系统是基于STC89C52单片机设计地,包含液晶显示模块,DS1302实时时钟模块,DS18B20温度采集模块,键盘扫描模块,蜂鸣器报警模块.STC89C52作为控制核心,具有功耗低,功能强等特点,电压可选3到5V电源供电.显示模块采用1602液晶动态显示,相对数码管而言经济实用,占用空间小,对于显示数字、字母最为合适,而且与单片机连线简单,占用IO口相对较少.实时时钟芯片DS1302是一款经济实惠功能强大地较新型产品,该器件提供RTC/日历,可外加器件实现定时闹钟等功能,如果检测到主电源故障,该器件可自动切换到备用电源供电,可以保证在断电情况下精准走时,计时.温度检测显示模块采用数字式温度传感器DS18B20,该芯片具有精度高,测量范围广等优点,易与单片机连接,模块电路组成简单并同时具有温度报警功能.关键词:STC89C52,DS1302,DS18B20,1602液晶显示,电子万年历,采集设备周围环境温度、整点报时,闹钟时分通过按键设置,时、分、秒、年、月、日、星期通过按键进行调节校准……二、设计思路:核心控制体:STC89C52单片机实时时钟芯片:DS1302数字式温度传感器:DS18B20总共设有四个按键,为节约资源考虑,每个按键都有多种功能.四个按键分别标号为key1,key2,key3,key4.第一次按下key2,key3,key4都没有反应,首先按下key1键可选择指针位置,key2键为加键,key3为减键,key4键为闹钟设置清零键.操作简单,按键灵活.整点报时功能,可以按下key4键终止报警.系统设计框图:系统硬件需求介绍:STC89C52单片机一片,DS1302实时时钟芯片一个,DS18B20数字式温度传感器一个,+5V无源蜂鸣器一个,12MHZ、32KHZ晶振各一个,多个按键和开关,常用电容电阻,连接线,三极管,二极管若干,滑动变阻器一个,+3V纽扣电池一个.三、实施方案:1、单片机核心控制模块:核心控制器件选用STC89C52单片机.STC89C52单片机为40管脚双列直插芯片,它是一种高性能,低功耗地8位CMOS微处理器芯片,市场应用最多.而且价格便宜,控制方便,便于应用有4个I/O口分别为P1,P2,P3,P4.其中每一个管脚都能做独立地输入输出管脚,它地第9脚位复位管脚,接上电容和上拉电阻再带个开关构成复位电路.18,19管脚接外部晶振和两个微调电容构成外部晶振电路.单片机,复位电路,晶振,5V电源构成单片机最小系统.其中与AT89C52单片机管脚连接如下图:2、实时时钟电路模块:DS1302引脚排列:如下图引脚说明:1)1脚,Vcc2:后备电源,此设计中接+3V纽扣电池;8脚,VCC1:主电源,接+5V.在主电源关闭地情况下,也能保持时钟地连续运行.DS1302由Vcc1或Vcc2两者中地较大者供电.当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电.当Vcc2小于Vcc1时,DS1302由Vcc1供电.2)X1、X2即2脚3脚:振荡源,外接32.768kHz晶振.3)4脚END,接地端.4)5脚RST:复位/片选线,通过把RST输入驱动置高电平来启动所有地数据传送.RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据地传送手段.当RST为高电平时,所有地数据传送被初始化,允许对DS1302进行操作.如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态.上电运行时,在Vcc>2.0V之前,RST必须保持低电平.只有在SCLK为低电平时,才能将RST置为高电平.5)I/O为串行数据输入输出端(双向).6)SCLK为时钟输入端.**特别注意:5,6,7脚在硬件电路实现中,必须接上拉电阻,接+5V.3、DS18B20 工作模块: DS18B20 地温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强.其一个工作周期可分为两个部分,即温度检测和数据处理.DS18B20 地主要特征:全数字温度转换及输出.先进地单总线数据通信.最高 12 位分辨率,精度可达土 0.5摄氏度.12 位分辨率时地最大工作周期为 750 毫秒.可选择寄生工作方式.检测温度范围为–55°C ~+125°C (–67°F ~+257°F)内置 EEPROM,限温报警功能.64 位光刻 ROM,内置产品序列号,方便多机挂接.多样封装形式,适应不同硬件系统.4、液晶显示模块:1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用16列*2行地字符型LCD1602带背光地液晶显示屏.引脚接口说明:第1脚:VSS为地电源.第2脚:VDD接5V正电源.第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K地电位器调整对比度.第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器.第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作.当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据.第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令.第7~14脚:D0~D7为8位双向数据线.第15脚:背光源正极.第16脚:背光源负极.5、蜂鸣器电路模块本实验设计中蜂鸣器用CS8050三极管驱动,蜂鸣器用5V地无源蜂鸣器,并接一个发光二极管作为指示灯,同时在负极串接一个限流电阻,数据端口接P3^7.四、Proteus仿真原理总框图:五、硬件电路实现:六、源程序:Shuzizhong.c#include <reg51.h>#include"ds18b20.h"#define uchar unsigned char#define uint unsigned intuchar shi,fen,miao,ringshi,ringfen,nian,yue,ri,week,temp,count,m。
基于DS1302的多功能实时数字钟控制摘要:本系统采用STC89C52 单片机和DS1302 配合,实现实时时间日期和星期的保存和显示。
系统中还有一块1602显示屏,用以显示系统中所需的符号和时间日期。
另外系统中还装有4个独立式键盘,用于系统操作与控制。
并接一个直流蜂呜器和一个交流蜂呜器,用以进行音响提示。
DS1302可以实现对系统是的时、分、秒,日期和星期等信息的保存,使系统在掉电的情况下仍然能够准确的保存并运行时间信息。
利用单片机的定时器,实现了倒计时和秒表功能的设计。
关键字:单片机;DS1302;数字钟Based on DS1302 control of multi-purpose real-time digitalclockAbstract:The system uses the microcontroller and the DS1302 with STC89C52, real-time time date and week of preservation and display. There is also a 1602 display system to display the system date and time required for the symbol. Another system is also equipped with 4 separate keyboard for the system operation and control. And then a DC and an AC buzzer buzzer, used for audio prompts. DS1302 can be achieved on the system is the hours, minutes, seconds, date, and save information such as a week, the system in case of power-down will still be able to save and run-time and accurate information. Use of microcomputer timer, countdown and stopwatch functions to achieve the design.Key words:Single Chip Microcomputer; DS1302; digital clock目录1 绪论 (1)2 系统方案选择和论证 (1)2.1 设计要求 (1)2.2 各模块方案选择和论证 (2)2.2.1 主控模块的选择说明 (2)2.2.2 时钟芯片的选择和说明 (3)2.2.3 显示模块的选择和说明 (5)2.3 最终选择方案 (7)3 系统硬件设计及实现 (7)3.1 单片机外围电路设计 (7)3.2 DS1302与单片机的接口设计 (8)3.3 LCD1602与单片机的接口设计 (8)3.4 按键电路设计 (9)3.5 闹铃电路设计 (9)3.6 电源设计 (10)4 软件设计 (11)4.1 主程序设计 (11)4.2 DS1302子程序的设计 (11)4.4 键盘扫描子程序的设计 (14)4.5 闹钟子程序的设计 (14)5 系统调试 (14)5.1 软件调试 (15)5.2 硬件调试 (15)5.2.1 显示电路调试 (16)5.2.2 DS1302电路调试 (16)5.2.3 按键电路的调试 (16)6 总结 (16)致谢 (18)参考文献 (19)附录 (20)附录一:电路板实物图 (20)附录二:设计总电路图 (22)附录三:仿真图 (23)基于DS1302的多功能实时数字钟控制***班 ***指导教师 ***1 绪论在实时监控系统的设计中,要对各个控制信号进行实时监控,更重要的是在发生事故的情况下准确记录下故障数据,以便准确分析排除错误。
单片机与可编程器件LED数码管时钟电路采用24h计时方式,时、分、秒用六位数码管显示,其中小时、分、秒之间用小数点分开。
该电路采用AT89C52单片机和DS1302实时时钟芯片,使用5V电源进行供电,使用两个按键进行调时,调整过程中被调节的分钟或时钟将进入闪亮状态,看上去非常直观,另外,本设计还具有快速调时功能,当按键一直被按下时,便进入快速调时状态。
由于本时钟电路的计时是由芯片DS1302来完成的,计时准确 ,单片机通过串行通信来控制DS1302工作,同时进行键盘和显示的控制。
DS1302芯片介绍1.DS1302的功能及其结构DS1302芯片是美国DALLAS公司推出的低功耗实时时钟芯片,它采用串行通信方式,只需3条线便可以和单片机通信,并且其片内均含RAM,可增加系统的RAM,DS1302的时钟校准比较容易,若采用专用的晶体振荡器,几乎无须调整即可以达到国家要求的时钟误差标准。
DS1302有两个电源输入端,其中的一个用来做备用电源,这样避免了由于突然停电而造成时钟停止,因此它非常适合于长时间无人职守的监测控制系统或需经常记录某些具有特殊意义的数据及对应时间的场合。
DS1302提供秒、分、时、日、星期、月、年的信息,每月的天数和闰年的天数可自动调整,并可通过AM/PM 指示决定采用24 或12 小时格式。
DS1302串行时钟芯片主要由移位寄存器、控制逻辑、振荡器、实时时钟及31B的RAM组成。
在数据传送前,必须把RST置为高电平,且把提供地址和命令信息的8位装入到移位寄存器。
在进行单字节传送或多字节传送时,开始的8位命令字节用于指定40B(前31B RAM和9B时钟寄存器)中哪个将被访问。
在开始的8个时钟周期把命令装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据。
DS1302的封装引脚示意图和内部结构图分别见图1和图2。
其中,X1、X2接32.768kHz 晶振,GND为地,复位线驱动至高电平,启动所有的数据传送。
单片机原理课程设计课题名称:基于DS1302的数码管显示数字钟专业班级:电子信息工程学生学号:学生姓名:指导教师:设计时间:2010年6月21日--2010年6月25日目录摘要........................................................................................................................................................................1 设计任务和要求............................................................................................................................................2 方案论证........................................................................................................................................................3 系统硬件设计................................................................................................................................................3.1 系统总原理图 ................................................................................................................................3.2 元器件清单......................................................................................................................................3.3 PCB板图.......................................................................................................................................3.4 Proteus仿真图 ...............................................................................................................................3.5 分电路图及原理说明...................................................................................................................3.5.1 主控部分(单片机MCS-51)..............................................................................3.5.2 计时部分(实时时钟芯片DS1302)..................................................................3.5.3 显示部分(共阳极数码管)................................................................................3.5.4 调时部分(按键)................................................................................................4系统软件设计................................................................................................................................................4.1 程序流程图.....................................................................................................................................4.2 程序源代码........................................................................................................................................ 5心得体会........................................................................................................................................................ 6参考文献........................................................................................................................................................ 7结束语............................................................................................................................................................基于DS1302的数码管显示数字钟设计摘要本次课程设计的是使用专门的时钟芯片DS1302在数码管上显示的数字电子钟,并能通过按键对其进行调时和校准。
DS1302是一种高性能、低功耗、带RAM的实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机的接口使用同步串行通信,仅用3条线与之相连接,就可以实现MCS-51单片机对其进行读写操作,把读出的时间数据送到数码管上显示。
程序运行时,数码管将从当前时间开始显示,通过调节K1键和K2键可以分别对小时和分钟进行调整,调整后,时钟以新的时间为起点继续刷新显示。
关键字:MCS-51单片机、DS1302,数码管,按键,动态扫描,调时,校准;1设计任务和要求1. 应用MCS-51单片机设计单片机实现数字钟(LED显示小时:分:秒)电路;2. 选用八位LED数码显示,实时显示时、分、秒,采用按键式实现时钟对表和快慢调整;3. 硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。
设计的单元电路必须有工作原理,器件的作用,分析和计算过程;4. 软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;5.原理图设计部分,根据所确定的设计电路,利用Protel工具软件绘制电路原理图、PCB板图、提供元器件清单。
2方案论证实现数字电子钟的设计有以下两种基本方案,现就两种基本方案的优劣进行具体论证,从而说明选择方案二的理由。
方案一:直接用单片机的内部定时器来实现时间。
该方案以MCS-51单片机为主控芯片,以MCS-51的内部定时器产生的1s中断作为时钟的驱动,然后再通过8个74LS245缓冲器驱动8个独立的数码管来组成数字钟电路。
该电路由于数码管和缓冲器的数目较多,所以在连线方面比较复杂,而且用到的分压电阻也比较多。
但是此方案最大的缺点在于单片机89C51产生的1s中断存在误差,如果工作时间长的话,数字时钟显示的时间将会出现严重的偏差,不够精确。
方案二:使用串行接口时钟芯片DS1302设计时钟电路。
该设计方案以MCS-51单片机为主控芯片,以串行时钟芯片DS1302为核心计时芯片,然后再通过一个74LS245缓冲器驱动两组数码管组(每个数码管组由四个数码管连在一起组成)组成数字时钟电路。
更重要的是,DS1302时钟芯片的加入大大提高了数字钟时间的准确性,而且该电路在断电后不丢失时间和数据信息时也使得该方案的研究与提升更具有开发的意义。
3 系统硬件设计3.1系统总原理图图1 数字钟总原理图3.2 元件清单元件序号型号或主要参数数量封装元件序号型号或主要参数数量封装R1100Ω 1 AXIAL0.3 U1AT89C51 1 DIP40 R21kΩ 1 AXIAL0.3 U274S15 1 DIP14 RP1 1KΩ 1 SIP9 U4DS1302 1 DIP8 C1 22pF 3 RAD2.54 U374LS245 1 DIP20 C4 104uF 1 RAD2.54 Y1 CRYSTAL 1 STAL3 DS SM41C564 2 数码管*4 Y2 CRYSTAL 1 STAL2 K 按键 4 按键4.5*6.53.3PCB板图图2 总电路PCD板图3.4Proteus仿真图图3 proteus仿真图3.5分电路图及原理说明本次设计的硬件电路由主控部分(单片机MCS-51)、计时部分(实时时钟芯片DS1302)、显示部分(数码管)、调时部分(按键)4个部分组成。
各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的计时功能。
现就各部分的硬件电路设计作出如下论述:3.5.1 主控部分(单片机MCS-51)MCS-51单片机作为主控芯片,控制整个电路的运行。
其外围电路主要有两部分:复位电路和晶体振荡器。
复位电路的功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。