用数码管设计的可调式电子钟概要
- 格式:doc
- 大小:157.00 KB
- 文档页数:19
中国………..电子技术课程设计总结报告题目:数字电子钟学生姓名:系别:专业年级:指导教师:年月日一、设计任务与要求1、用单片机设计一个数字电子钟,采用LED数码管来显示时间。
2、显示格式为:XX:XX:XX,即:时:分:秒。
3、时间采用24小时制显示,4、设置一个按键用于时间显示方式的切换,能进行时间的调整,可暂停时间的变动。
..二、方案设计与论证图1 系统整体框图1、单片机芯片选择方案方案一:AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器。
主要性能有:与MCS-51单片机产品兼容、全静态操作:0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符、易编程。
方案二:AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM)。
主要性能有:兼容MCS51指令系统、32个双向I/O口、256x8bit内部RAM、3个16位可编程定时/计数器中断、时钟频率0-24MHz、2个串行中断、可编程UART串行通道、2个外部中断源、6个中断源、2个读写中断口线、3级加密位、低功耗空闲和掉电模式、软件设置睡眠和唤醒功能。
从单片机芯片主要性能角度出发,本数字电子钟单片机芯片选择设计采用方案一。
2、数码管显示选择方案方案一:静态显示。
静态显示,即当显示器显示某一字符时,相应的发光二极管恒定导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小电流能获得较高的亮度,且字符不闪烁。
但因当所需显示的位数较多时,静态显示所需的I/O口数较大,造成资源的浪费。
基于单片机数码管的电子钟(郭天祥系列单片机)功能说明(D本电子钟可以显示当前时刻、年月日和闹钟时刻。
不同时间的显示可以用key4来切换。
(2)、独立键盘key—key4(左到右)调节不同功能,7段数码管显示。
(3)整点提示功能:当时间为整点时,蜂鸣器会滴滴滴响,响20秒;(4)闹铃功能:本程序有闹铃功能,当定时时间到时,闹铃会滴滴滴报警,报警30秒;(5)附加功能:当在闹铃和整点时,8个发光二极管会闪亮;(6)时、分、秒之间和年、月、日之间也是用分割。
2、键盘控制(1)key1-键移动调整单位,每按一次移动一个单位,可调整时分秒、年月日和闹钟时间。
比如:在显示时分秒时,按下keyl 键, 可通过key2和key3对'秒'加减;再按一下keyl,可对"分'加减;再按一下keyl,可对"时'加减;再按keyl,时间开始走动(2)key2-加 1 ; key3-减 1;(3)key4-键切换时分秒、年月日和闹铃时间的显示。
比如:当前为时分秒,按一下key4,则显示年月;再按一下,则显示闹铃时间;再按一下,则显示时分秒时间。
附录:C语言程序〃设计项目:带闹铃的电子钟//功能:keyV键:开始/调时分秒/调年月日/调定时// key2 ■键:加 1// key3-键:减 1// key4-键:切换页面#in clude<reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2A6;sbit wela=P2A7;sbit key1=P3A4;sbit key2=P3A5;sbit key3=P3A6;sbit key4=P3A7;sbit bear=P2A3;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar sed ,hour1 ,year1 ,mon1 ,day1,tempi ,temp2,sec2,min2,hour2; void keyscan();void display(uchar hour,uchar min,uchar sec);void delay(uint z){uint x,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}void init(){TMOD=0X02;TH0=6;TL0=6;EA=1;ET0=1;TR0=1;hour1=00;mini =00;sed =00;year1=12;mon1=03;day1=10;void display(uchar hour,uchar min,uchar sec) { uchar s1 ,s2,m15m2,h1 ,h2;s2=sec/10;s1=sec%10;m2=min/10;m1=min%10;h2=hour/10;h1=hour%10;dula=1;P0=table[h2];dula=0;P0=0XFF;wela=1;P0=0XFE;delay(1);dula=1;P0=table[h1]+0x80;dula=0;P0=0XFF;wela=1;P0=0XFd;delay(1);dula=1;P0=table[m2];dula=0;P0=0XFF;wela=1;P0=0XFb;delay(1);dula=1;P0=table[m1]+0x80;dula=0;P0=0XFF;wela=1;P0=0XF7;delay(1);dula=1;P0=table[s2];dula=0;PO=OXFf;wela=1;P0=0Xef;delay(1);dula=1; PO=table[s1J; dula=0; P0=0XFF; wela=1; PO=OXdf; delay(1);}void keyscan()if(key1 ==0)delay(10); if(key1 ==0)//TR0=0; tempi++; if(temp1 ==4){tempi=;TR0=1;while(!key1)switch(temp2){case 0:display(hour1,sec1 );break; case1:display(year1 ,mon1 ,day1 );break; case2:display(hour2,min2,sec2);break;if(key2==0){delay(10); if(key2==0){ if(temp2==0) { TR0=0;switch(templ){case 1:sed ++;if(sec1 ==60)sec1 =O;break;case 2:min1 ++;if(min1 ==60)min1 =O;break;case 3:hour1 ++;if(hour1 ==24)hour1 =O;break;while(!key2) display(hour1 ,min1 ,sec1);if(temp2==1) { TR0=1;switch(templ)case 1:day1 ++;if(day1==31 )day1=1 ;break; case 2:mon1 ++;if(mon1==13)mon1 =1 ;break;case 3:year1 ++;if(year1 ==100)year1 =0;break; } while(!key2)display(year1 ,mon1 ,day1);if(temp2==2) { TR0=1;switch(templ)case 1:sec2++;if(sec2==60)sec2=0;break;case 2:min2++;if(min2==60)min2=0;break;case 3:hour2++;if(hour2==24)hour2=0;break; }while(!key2)display(hour2,min2,sec2);if(key3==0){delay(10); if(key3==0){if(temp2==0){ TR0=0;switch(templ){case 1:if(sec1 ==0)sec1 =60;sec1 ~;break;case 2:if(min1 ==0)min1 =60;min1 -;break;case 3:if(hour1 ==0)hour1 =24;hour1 -;break; } while(!key3)display(hour1 ,min1 ,sec1);if(temp2==1){ TR0=1;switch(templ){case 1:if(day1==1 )day1=31 ;day1-;break;case 2:if(mon1==1 )mon1 =13;mon1 ・-;break;case 3:if(year1 ==0)year1 =100;year1 -;break; } while(!key3) display(year1 ,mon1,day1);}if(temp2==2){ TR0=1;switch(templ){case 1:if(sec2==0)sec2=60;sec2-;break;case 2:if(min2==0)min2=60;min2-;break;case 3:if(hour2==0)hour2=24;hour2-;break; } while(!key3)display(hour2,mi n2,sec2);if(key4==0)delay(10); if(key4==O)tempi =0;temp2++; if(temp2==3)temp2=0;while(!key4) switch(temp2){case 0:display(hour1 ,min1 ,sec1);break; case1:display(year1 ,mon1 ,day1 );break;case 2:display(hour2,min2,sec2);break;switch(temp2){case 0:display(hour1 ,min1 ,sec1 );break;case 1:display(year1 ,mon1 ,day1 );break; case2:display(hour2,min2,sec2);break;void alarm(){uint i;if((hour1==hour2&&min1==min2&&(sec1 >=sec2&&sec1 <sec2+30))||(min1==0 &&sec"l <20)) { for(i=0;i<20;i++){bear=~bear;P1=~P1;switch(temp2){case 0:display(hour1,mi,sec1 );break;case 1:display(year1 ,mon1 ,day1);break;case 2:display(hour2,min2,sec2);break;}delay(30);}bear=1;P1=Oxff;void main(){init();while(1){keyscan();{if (key 1 ==0 || key2==0 || key3==0 || key4==O )Bear=0}alarm();void time1()interrupt 1{uint m;m++;if(m==3686){m=0;sec1++;if(sec1 ==60){sec1=0;min1++;if(min1==60){min1=0; hour1++; if(hour1==24)hour1=0;day1++; if(day1==31) {day1=1;mon 1++;if(mon1==13){mon1 =1; year1++; if(year1==100) year1=0;。
2012~ 2013 学年第2 学期《单片机原理及应用》课程设计报告题目:基于数码管的电子时钟设计专业:自动化班级:电气工程系2013年5月1日1、任务书摘要随着人类科技文明的发展,人们对于时钟的要求在不断地提高。
时钟已不仅仅被看成一种用来显示时间的工具,在很多实际应用中它还需要能够实现更多其它的功能。
本设计主要基于单片机技术原理,设计制作出一个电子时钟系统。
6位LED 数码管显示,使用按键扫描进行时间校准。
这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。
最后将设计的时钟系统在Protues仿真软件上进行仿真验证所设计的时钟系统稳定可靠。
关键词: AT89C51单片机;电子时钟;数码管;按键扫描基于数码管的电子时钟设计目录摘要........................................................................................ 错误!未定义书签。
第一章绪论................................................................................ 错误!未定义书签。
1.1 单片机的应用和特点............................................................ 错误!未定义书签。
1.2 单片机的发展趋势......................................................... 错误!未定义书签。
1.3 电子时钟简介及其基本特点......................................... 错误!未定义书签。
第二章控制系统的硬件设计...................................................... 错误!未定义书签。
多功能数字式电子时钟设计说明:本设计内容是利用51单片机最小系统设计一个电子时钟,时钟采用24小时制,时、分、秒各采用2个共阳极LED数码管显示。
具体实现的的功能如下:(1)能够正常显示时钟。
六个LED数码管依次显示时钟的时、分、秒位。
(2)可以完成键盘采样,实现键值判断;(3)实现简单的键盘功能,例如运行键、暂停键处理。
(4)每当整点时,所有LED闪烁显示,显示次数等于整点数。
若为0点钟,则显示正常;(5)实现键盘功能,包括运行键、暂停键、上升键、下降键、切换健、校准健处理。
通过键盘来实现时钟的暂停、运行、调时等功能。
该电子时钟主要由硬件和软件两部分组成,其中硬件部分主要包括:六个七段LED显示器,用来显示时钟的时、分、秒、位。
集成电路74LS240(反相器)和PNP型三极管9012,用于增加驱动电流的目的.还有AT89S51单片机以及RC组成的振荡电路。
软件部分则是通过软件编程利用51单片机来控制时钟,使其正常走动及按照我们的设计想法实现上述的:暂停、运行、调时及校准等功能。
设计完成后的电子钟可实现以下功能:当通电后,时钟开始正常走动。
当按下键后,时钟暂停运行、再按键时钟开始正常走动。
按下键(六)设计思路1、显示电路51单片机与七段LED显示器的接口为动态接口,需使用2组寄存器进行控制。
其中,一组寄存器控制几个显示器的七段发光二极管,该寄存器称为段选寄存器;另一组寄存器控制这几个七段显示器的公共端,控制这几个显示器逐个循环点亮。
适当的选择循环速度,利用人眼的“视觉暂留”效应,使其看上去好像这几个显示器同时在显示一样,该寄存器称为位选寄存器。
时钟的时、分、秒各用两个共阳极的七段LED显示器来显示,因此共需外接6个七段显示器。
所有显示器相同的段并接在一起,由P1口控制。
每个显示器的公共端分别由P3口的某一位控制。
集成电路74LS240(反相器)只起到增加驱动电流的目的,PNP型三极管9012也是为了增加驱动能力。
LED数码管设计的可调式电子钟说明说可调式电子钟的设计理念是提供用户多样化的时间显示和闹钟设定选项,以满足用户不同的需求和喜好。
以下是对设计的详细说明:1.数码管显示:LED数码管采用7段共阳极连接方式,每个数码管由7个LED灯组成,通过控制各个LED灯的点亮与否,可以显示0-9的数字。
数码管的显示仿真效果要清晰、鲜明,确保用户可以轻松辨认时间。
2.时间调节功能:可调式电子钟具备时间调节的功能,用户可以通过按钮或旋钮调整时间。
其中旋钮可以实现小时和分钟的调节,而按钮可以实现小时和分钟的增加或减少。
设计时需考虑人机交互的便利性,确保时间调节操作简单明了。
3.闹钟设定:可调式电子钟还具备闹钟功能,用户可以设定一个或多个闹钟时间点。
用户可以通过按钮或旋钮设置闹钟的小时和分钟,还可以设定是否重复响铃。
闹铃可以通过声音、震动或LED灯闪烁等方式提醒用户。
为了避免误操作,设计时需要考虑设置闹钟的过程,确保用户能够轻松设置闹钟。
4.电源供应:可调式电子钟可采用外部电源或内置电池供电。
设计时需考虑到电源的稳定性和可靠性,确保时钟长时间准确运行。
当外部电源断开时,内置电池可以提供备用电源,防止时间设置的丢失。
5.背光功能:可调式电子钟还可以考虑添加背光功能,在光线不好的情况下,用户可以通过按下按钮或通过传感器自动点亮背光。
背光的亮度可以根据用户偏好进行调节。
6.美观设计:除了功能性,可调式电子钟的外观设计也很重要。
设计时可以考虑采用简约设计风格,以及时尚的外壳材料。
同时,数字显示的对齐和间距,以及按钮和旋钮的位置、大小都需要细致推敲,确保整体外观美观大方。
总之,可调式电子钟的设计需要满足用户对时间显示和闹钟功能的需求。
通过合理的控制功能,人性化的设计以及简洁好看的外观,可为用户提供一台方便、易用的电子钟。
《综合设计实训I》可调式数字时钟姓名:学号:班级:实训地点:指导教师:通信与电子学院编制年月日一、设计要求数字时钟是采用数字电路实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人,家庭,车站,码头,办公室等公共场所,成为人们日常生活中的必需品。
1,、设计时可以利用单片机内部定时器,也可以利用外部实时时钟芯片。
(I/O,I2C总线)2、有年,月,日,时,分,秒功能,而且要能够校正前面五项。
3、显示时可以用8位数码管,也可以用LCD液晶屏。
(年只需显示后2位)4、可选功能:闹钟功能。
二、设计方案1、芯片分析AT89C51引脚图管脚说明:VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
《单片机原理及应用》课程设计说明书题目LED数码管显示电子钟设计系(部)专业(班级)姓名学号指导教师起止日期课程设计任务书系(部):专业:目录目录 (3)一、摘要 (4)二、设计内容 (4)2.1、任务要求 (4)2.2、设计程序方案 (4)2.3 设计电路仿真图 (6)三、心得体会 (9)四、参考文献 (9)一、摘要单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。
从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。
单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
二、设计内容2.1、任务要求本次设计时钟电路,使用了A TC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒,还有设定闹钟,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求。
单片机应用课程设计说明书用1602LCD设计的可调式电子钟专业自动化学生姓名班级自动化142学号 14100指导教师蒋完成日期 20年1 月23 日目录1 概述 (3)2 课题研究背景与意义 (3)2.1 课题研究背景 (3)2.2 课题研究意义 (3)3 系统方案设计与主要设计工作 (3)3.1 设计任务 (3)3.2 功能要求说明 (4)4设计课题总体方案 (4)4.1硬件设计方案 (5)4.2系统软件设计 (7)5. 软件仿真及实物设计调试 (9)5.1PROTUES仿真软件介绍 (9)5.2仿真运行结果说明 (10)5.3实物设计结果与调试 (11)6课程设计实验总结 (11)参考文献 (13)附录 (14)附录1:程序清单 (14)附录2:系统电路原理图 (21)附录3:元器件清单 (22)用1602LCD设计电子钟1 概述数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。
数字钟的精度、稳定度远远超过老式机械钟。
在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。
在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。
数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
2 课题研究背景与意义2.1 课题研究背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
摘要电子式秒表从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
本设计中数字秒表的最大计时是59秒,最后计数结果用数码管显示,需要实现启动计时、暂停计时、继续计时等功能。
采用两片74LS161芯片级联构成60进制计数器来实现秒表的计数功能。
利用555定时器构成的多谐振荡器为电路提供脉冲源以驱动电路工作。
关键字:数字秒表;振荡器;74LS161;数码管ABSTRACTElectronic stopwatch principle is a typical digital circuits, including combinational logic circuits and sequential circuits. This design, digital stopwatch timing is 59 seconds, the final count results with digital display, and need to start the timer, pause time, continue to timing and other functions. Two 74LS161 chips cascaded 60 binary counter stopwatch count. Multivibrator circuit constituted by the 555 timer pulse source to drive the circuit.Keywords:Digital stopwatch; oscillator; 74LS161; digital tube目录摘要 (I)目录 ............................................................................................................................. I I 1 设计要求及方案选择.. (1)1.1 设计要求 (1)1.2 方案选择 (1)2 理论设计与分析 (2)2.1 电子时钟电路的分析及设计 (2)2.2 电路主要芯片功能 (4)3 电路设计 (5)3.1 整体电路图 (6)3.2 PCB图 (7)4 系统测试 (8)4.1 调试所用的基本仪器 (8)4.2 测试结果 (8)4.3 测试结果分析 (8)5 设计中的收获与体会 (10)参考文献 (11)1 设计要求及方案选择1.1 设计要求(1)设计秒计时(六十进制计数)电路。
目录一、设计的目标和实现的主要功能 (2)1.设计内容 (2)2.显示内容 (2)3.按键功能 (2)4.设置提示显示要求: (2)5.显示时间要求: (2)二、硬件电路设计及描述 (3)1.51单片机最小系统 (3)2.蜂鸣器模块 (4)3.LED显示电路 (4)4.按键模块 (5)三、软件设计流程及描述 (6)1.主程序 (6)2.中断程序 (7)3.复位程序 (8)4.闹钟程序 (9)5.键盘程序 (10)6.显示程序 (11)四、调试结果 (12)五、课程设计总结 (12)1.问题难点 (12)2.能力提高 (12)六、参考文献 (13)七、附录 (14)1.源程序代码 (14)2.原理图 (26)3.PCB图 (27)一、设计的目标和实现的主要功能1.设计内容1)显示内容:时-分-秒2)具有闹铃设定功能、时间调整功能3)具有按键设置功能2.显示内容显示时间:用六位7段数码管闹铃提示:用2个发光二极管设置提示:用2个发光二极管3.按键功能P1.0——功能设置键;P1.1——显示区切换键;P1.2——“+”键;P1.3——“-”键。
4.设置提示显示要求:1)正常显示状态,2个发光二极管全灭;2)时间调整状态,P1.7亮;3)闹铃设定状态,P1.7和P1.6亮。
5.显示时间要求:1)显示时-分-秒,分三个显示区。
功能设置键K1是一个多功能键:按第一次,进入时间调整状态按第二次,进入闹铃设定状态按第三次,退出设置状态,时钟正常显示。
备注:其他键在K1退出设置状态时无效。
显示区切换键K2:在设置状态,用于切换不同的显示区,每按一次,将切换一次。
“+”键K3:在设置状态,用于对相应的显示区数字进行累加,每按一次,数字加1。
“-”键K4:在设置状态,用于对相应的显示区数字进行自减,每按一次,数字减1。
二、硬件电路设计及描述1.51单片机最小系统图2-1单片机最小系统51单片机+晶振电路+复位电路,复位电路使用按键复位方式。
多功能数字钟-电子设计设计一个多功能数字钟,可以显示时间、日期、温度,并能设置闹钟和倒计时功能。
电子设计:1.采用LED数码管显示时间、日期、温度,可以选择7段数码管或者共阳共阴的数码管。
2.采用实时时钟芯片,能够准确读取时间和日期。
3.通过温度传感器读取室内温度,并在数码管上显示。
4.设计按钮控制系统,包括设置时间、日期、闹钟和倒计时功能。
5.设置闹钟功能,可以设定每天重复或只响一次,并能够自定义铃声。
6.设置倒计时功能,可以设定倒计时时间,并能够显示剩余时间。
7.设计电源接口,可以使用电池或外部电源供电。
硬件设计:1.使用微控制器作为控制中心,控制LED数码管的显示和按钮的输入。
2.将实时时钟芯片连接到微控制器,通过I2C或SPI协议读取时间和日期。
3.连接温度传感器与微控制器,通过模拟输入端口读取温度值。
4.设计按钮接口,将按钮连接到微控制器的GPIO引脚,用于接收用户的操作。
5.设计蜂鸣器接口,通过微控制器生成不同频率的信号,作为闹钟铃声。
软件设计:1.编写微控制器的固件程序,实现读取时间、日期、温度的功能。
2.实现LED数码管的驱动程序,将时间、日期、温度的数值转换成相应的LED显示。
3.编写按钮的中断服务程序,实现按钮的响应和功能切换。
4.设计闹钟功能的逻辑,根据用户的设定时间和铃声选择,启动闹钟。
5.设计倒计时功能的逻辑,根据用户设定的倒计时时间,显示剩余时间并发出提醒。
6.设计设置功能的菜单,通过按钮操作进入不同的设置界面。
7.实现电源管理功能,可以根据用户选择使用电池或外部电源供电。
8.调试和测试系统的各项功能,确保稳定性和准确性。
EDA课程设计-电子钟一、设计要求1、基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。
扩展功能要求:2、跑表功能,闹钟功能,调整数码管的亮度。
二、系统结构控制键—jian5、jian4、jian7、jian8:数码管显示段选信号输出sg:——选择6位数码管中的某一个显示数据;发光二极管控制信号输出—led(7~0)闹钟声音输出—speaker通过一个10M信号分出各种所需频率功能介绍运行后,选择模式7,8位数码管分显示时间的时、分、秒,当前为模式0:时间显示模式,按键7为模式选择键,按下按键7,系统进入模式1,第二次按下为模式2,设置时间模式,第三次按下为跑表模式,第四次为闹钟设置模式,第五次为亮度调节模式:设置时间模式,按键4控制更改数码管的位,按键5控制选中数码管的数值,时间设置完成后,按键按键8,设置时间会保存住,并在模式0中显示;系统进入模式2:秒表模式,按键4为开始/结束键,按键5为清零键;系统进入模式3:闹钟设置模式,相关设置与模式1相同,当当前时间与闹钟设置时间相同时,喇叭就会响;系统进入模式4:亮度调节模式,通过按键4设置亮度,共三种亮度;再按下按键7,系统又会进入模式0。
4、RTL图三、VHDL源程序1、library ieee; --通过10M分出所需频率use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end entity;architecture sub1 of fenpin issignal Q_1 : std_logic_vector(8 downto 0);signal Q_2 : std_logic_vector(6 downto 0);signal Q_3 : std_logic_vector(6 downto 0);signal clk10000 : std_logic;signal clk100 : std_logic;signal clk1 : std_logic;beginprocess(clk_10M)beginif clk_10M'event and clk_10M='1' thenif Q_1=500 thenQ_1 <= "000000000";clk10000 <= not clk10000;if Q_2=100 thenQ_2 <= "0000000";clk100<= not clk100;if Q_3=100 thenQ_3 <= "0000000";clk1<=not clk1;else Q_3<=Q_3+1;end if;else Q_2<=Q_2+1;end if;else Q_1<=Q_1+1;end if;end if;end process;clk_10000 <= clk10000;clk_100 <= clk100;clk_1 <= clk1;end sub1;2、library ieee; --扫描数码管use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end;architecture one of xianshi issignal cnt8 :std_logic_vector(2 downto 0);signal a :integer range 0 to 15;signal light: std_logic;signal flash:integer range 0 to 2;signal count1,count2:integer range 0 to 10;beginp1: process(cnt8,light,a0,a1,a3,a4,a6,a7)begincase cnt8 iswhen "000" => bt11<= "0000000"&(light);a<=a0;when "001" => bt11<= "000000"&(light)&'0';a<=a1; when "010" => bt11<= "00000"&(light)&"00";a<=15; when "011" => bt11<= "0000"&(light)&"000";a<=a3; when "100" => bt11<= "000"&(light)&"0000";a<=a4; when "101" => bt11<= "00"&(light)&"00000";a<=15; when "110" => bt11<= '0'&(light)&"000000";a<=a6; when "111" => bt11<= (light)&"0000000";a<=a7;when others => null;end case;end process p1;p2:process(clk_10000)beginif clk_10000'event and clk_10000 ='1' then cnt8 <= cnt8+1; end if;end process p2;p3:process(a)begincase a iswhen 0 => sg11<= "0111111";when 1 => sg11<= "0000110";when 2 => sg11<= "1011011";when 3 => sg11<= "1001111";when 4 => sg11<= "1100110";when 5 => sg11<= "1101101";when 6 => sg11<= "1111101";when 7 => sg11<= "0000111";when 8 => sg11<= "1111111";when 9 => sg11<= "1101111";when 10 => sg11<= "1110111";when 11 => sg11<= "1111100";when 12 => sg11<= "0111001";when 13 => sg11<= "1011110";when 14 => sg11<= "1111001";when 15 => sg11<= "1000000";when others => null;end case;end process p3;process(jian4,moshi)beginif moshi=4 thenif jian4'event and jian4='1' thenif flash =2 thenflash<=0;else flash<=flash+1;end if;end if;end if;end process;process(clk_10000,flash)beginif clk_10000'event and clk_10000 ='1' thencase flash iswhen 0 => light<='1';when 1 => if count1=2 thencount1<=0; light<='1';else count1<=count1+1;light<='0';end if;when 2 => if count2=4 thencount2<=0; light<='1';else count2<=count2+1;light<='0';end if;end case;end if;end process;end;3、library ieee; --跑表开始暂停use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9); end entity;architecture bhv of paobiao issignal shi:integer range 0 to 100;signal fen:integer range 0 to 100;signal miao:integer range 0 to 100;beginprocess(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)beginif jian8='1' thenshi<=shishi1*10+shige1;fen<=fenshi1*10+fenge1;miao<=miaoshi1*10+miaoge1;elsif clk_1'event and clk_1='1' thenif miao=59 thenmiao<=0;fen<=fen+1;elsif fen>59 thenfen<=0;shi<=shi+1;elsif shi>23 thenshi<=0;else miao<=miao+1;end if;end if;end process;miaoge2<=miao rem 10;miaoshi2<=miao/10;fenge2<=fen rem 10;fenshi2<=fen/10;shige2<=shi rem 10;shishi2<=shi/10;end;4、library ieee; --设置当前时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end entity;architecture bav of settime issignal a:integer range 0 to 5;signal shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1: integer range 0 to 9; beginprocess(moshi,jian4)beginif moshi=1 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=1 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;5、library ieee; --秒表功能use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao isport(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9); end entity;architecture bhv of miaobiao issignal fen,miao,xmiao:integer range 0 to 99;signal start:std_logic:='0';signal reset:std_logic:='0';beginprocess(clk_100,jian5,jian4,moshi,reset,start)beginif moshi=2 thenif reset='1' thenfen<=0;miao<=0;xmiao<=0;elsif start='1' thenelsif clk_100'event and clk_100='1' thenif xmiao=99 thenxmiao<=0;miao<=miao+1;elsif miao>59 thenmiao<=0;fen<=fen+1;elsif fen>23 thenfen<=0;else xmiao<=xmiao+1;end if;end if;end if;end process;process(jian4,start)beginif jian4'event and jian4='1' thenstart<=not start;else start<=start;end if;end process;process(jian5,reset)beginif jian5'event and jian5='1' thenreset<=not reset;else reset<= reset;end if;end process;xmiaoge<=xmiao rem 10;xmiaoshi<=xmiao/10;miaoge<=miao rem 10;miaoshi<=miao/10;fenge<=fen rem 10;fenshi<=fen/10;end;6、library ieee; --设置闹钟时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongset isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9); end entity;architecture bav of naozhongset issignal a:integer range 0 to 5;signal fenshi1,fenge1,miaoge1: integer range 0 to 9;signal shishi1: integer range 0 to 9:=1;signal shige1: integer range 0 to 9:=2;signal miaoshi1: integer range 0 to 9:=0;beginprocess(moshi,jian4)beginif moshi=3 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=3 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;7、library ieee; --闹钟喇叭输出use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongspeaker isport(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9; speaker:out std_logic);end entity;architecture bav of naozhongspeaker isbeginprocess(clk_100,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2)beginif shishi2=shishi1 and shige2=shige1 and fenshi2=fenshi1 andfenge2=fenge1 and miaoshi2=miaoshi1 thenspeaker<=clk_100;else speaker<='1';end if;end process;end;8、library ieee; --转换模式use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity moshi isport(jian7:in std_logic;moshi:out integer range 0 to 4);end;architecture one of moshi issignal moshis:integer range 0 to 4;beginprocess(jian7)beginif jian7'event and jian7='1' thenif moshis=4 thenmoshis<=0;else moshis<=moshis+1;end if;end if;end process;moshi<=moshis;end;9、library ieee; --五选一选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux5_1 isport(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9; fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end entity mux5_1;architecture bhv of mux5_1 isbeginprocess(shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2,shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3,fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge,moshi)begincase moshi iswhen 0 =>a0<=shishi1;a1<=shige1;a3<=fenshi1;a4<=fenge1;a6<=miaoshi1;a7<=miaoge1;when 1 =>a0<=shishi2;a1<=shige2;a3<=fenshi2;a4<=fenge2;a6<=miaoshi2;a7<=miaoge2;when 2 =>a0<=fenshi;a1<=fenge;a3<=miaoshi;a4<=miaoge;a6<=xmiaoshi;a7<=xmiaoge;when 3 =>a0<=shishi3;a1<=shige3;a3<=fenshi3;a4<=fenge3;a6<=miaoshi3;a7<=miaoge3;when 4 => a0<=8;a1<=8;a3<=8;a4<=8;a6<=8;a7<=8;end case;end process;end;10、library ieee; --主程序置顶use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk_10M:in std_logic;jian5,jian4,jian7,jian8:in std_logic;sg:out std_logic_vector(6 downto 0);bt:out std_logic_vector(7 downto 0);speaker:out std_logic);end entity;调用声明语句architecture bav of clock iscomponent fenpin --分频port (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end component;component paobiao --跑表port(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9);end component;component xianshi --扫描显示port(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end component;component moshi --模式转换port(jian7:in std_logic;moshi:out integer range 0 to 4);end component;component mux5_1 --五选一选择器port(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end component;component settime --设置当前时间port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component miaobiao is --秒表port(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9);end component;component naozhongset is --闹钟时间设置port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component naozhongspeaker is --闹钟喇叭输出port(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;speaker:out std_logic);end component;signal moshis:integer range 0 to 4; --信号声明signal shishi1s,shige1s,fenshi1s,fenge1s,miaoshi1s,miaoge1s:integer range 0 to 9;signal shishi2s,shige2s,fenshi2s,fenge2s,miaoshi2s,miaoge2s:integer range 0 to 9;signal shishi3s,shige3s,fenshi3s,fenge3s,miaoshi3s,miaoge3s:integer range 0 to 9;signal fenshis,fenges,miaoshis,miaoges,xmiaoshis,xmiaoges: integer range 0 to 9;signal a0s,a1s,a3s,a4s,a6s,a7s: integer range 0 to 9;signal clk_10000s,clk_100s, clk_1s: std_logic;begin --元件例化u1:paobiao port map(clk_1=>clk_1s,jian8=>jian8,shishi1=>shishi2s,shige1=>shige2s,fenshi1=>fenshi2s,fenge1=>fenge2s,miaoshi 1=>miaoshi2s,miaoge1=>miaoge2s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);u2:xianshi port map(clk_10000=>clk_10000s,jian4=>jian4,moshi=>moshis,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s,sg11=>sg,bt11=>bt);u3:settime port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi2s,shige=>shige2s,fenshi=>fenshi2s,fenge=>fenge2s,miaoshi=>miaosh i2s,miaoge=>miaoge2s);u4:moshi port map(jian7=>jian7,moshi=>moshis);u5:mux5_1 port map(moshi=>moshis,shishi1=>shishi1s,shige1=>shige1s,fenshi1=>fenshi1s,fenge1=>fenge1s,miaoshi1=>m iaoshi1s,miaoge1=>miaoge1s,shishi2=>shishi2s,shige2=>shige2s,fenshi2=>fenshi2s,fenge2=>fenge2s,miaoshi2=>m iaoshi2s,miaoge2=>miaoge2s,shishi3=>shishi3s,shige3=>shige3s,fenshi3=>fenshi3s,fenge3=>fenge3s,miaoshi3=>m iaoshi3s,miaoge3=>miaoge3s,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>x miaoshis,xmiaoge=>xmiaoges,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s);u6:miaobiao port map(clk_100=>clk_100s,moshi=>moshis,jian5=>jian5,jian4=>jian4,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>xmiao shis,xmiaoge=>xmiaoges);u7:fenpin port map(clk_10M=>clk_10m,clk_10000=>clk_10000s,clk_100=>clk_100s,clk_1 =>clk_1s);u8:naozhongset port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi3s,shige=>shige3s,fenshi=>fenshi3s,fenge=>fenge3s,miaoshi=>mi aoshi3s,miaoge=>miaoge3s);u9:naozhongspeaker port map(clk_100=>clk_100s,speaker=>speaker,shishi1=>shishi3s,shige1=>shige3s,fenshi1=>fenshi3s,fenge1=>fenge3s,miaoshi1=>m iaoshi3s,miaoge1=>miaoge3s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);end;。
《单片机原理及应用》课程设计说明书题目LED数码管显示电子钟设计系(部)专业(班级)姓名学号指导教师起止日期课程设计任务书系(部):专业:目录目录 (3)一、摘要 (4)二、设计内容 (4)2.1、任务要求 (4)2.2、设计程序方案 (4)2.3 设计电路仿真图 (6)三、心得体会 (9)四、参考文献 (9)一、摘要单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。
从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。
单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。
在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。
二、设计内容2.1、任务要求本次设计时钟电路,使用了A TC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的年、月、日、时、分、秒,还有设定闹钟,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、LED显示即可满足设计要求。
摘要AT89S52单片机是一款应用广泛、功能强大的八位单片机。
本设计是由单片机AT89S52作为核心,通过单片机使电子钟具有调节显示时分秒的功能,电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示电子钟直观、无机械传动装置等优点。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。
本设计在原来电子钟的基础上,增加了年月日显示、闹铃、整点提示等功能。
使用时S8键为控制键,控制运行的调时,S4键为翻页查看键,S5、S6、S7键为调时状态下的控制键,分别为减一、加一、移格功能。
关键词电子钟;单片机;定时;闹铃;ABSTRACTAT89S52 SCM is a eight bit microcontroller of wided applicationan and powerful. Core’s this design is by monolithic AT89S52 SCM . it has adjust display by that electric clock.electric clock is a device that use of digital circuit to display seconds, points and the timer. compare of the tradition, , display electric clock intuitive, no mechanical transmission device etc. its timing cycle be for 24 hour, the full scale is hour of 23,minutes of 59, second of 59, another reset function is also the function. The foundation of clock display year month day and other functions. S8 keys control tone. S4 keys scroll view. On the state of adjust, S5、S6、S7control functions of minus one,plus one, move lattice function.Key words :electronic clock; single-chip; timing;alarm目录。
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 【关键字】设计毕业设计(论文)(2011届)题目六位数码管电子钟系别信息电子系专业信息电子工程管理班级信电0811姓名张淑娇指导教师2011年月日目录摘要 (1)文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 4六位数码管电子钟【摘要】数字钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。
因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。
干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态送到七段显示译码器译码,通过七位LED七段显示器显示出来。
整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。
校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的。
数字钟是以不同的计数器为基本单元构成的,它的用途十分广泛,只要有计时、计数的存在,便要用到数字钟的原理及结构;同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱。
【关键词】:校时电路、报时电路、振荡器第一章数字电子钟的设计方案论证1.1数字电子钟的应用意义数字电子钟是用数字电路实现“时”、“分”、“秒”数字显示的计时装置,主要由振荡器、分频器、计数器、译码显示器、校时电路、报时电路等六部分组成。
用数码管设计的可调式电子钟可调式数码管电子钟设计引言:数码管是一种能够显示数字和一些简单字符的设备,广泛应用于电子时钟、计数器等领域。
本文将提供一种可调式的数码管电子钟设计,使用户可以根据自己的需求进行时间显示的设置。
一、设计原理:1.1时间获取使用DS1302时钟芯片来获取当前的时间,并定时更新时间。
DS1302时钟芯片具有时钟、日历和RAM功能,能够满足电子钟设计的需求。
1.2时间显示使用4位共阴数码管来显示小时和分钟。
小时共有24小时制和12小时制两种显示方式,通过按键选择输出方式,分钟采用60进制显示。
1.3时间设置通过两个按键进行时间的设置,分别为设置小时和设置分钟。
通过按住按键进行时间数字的加减操作,并在数码管显示当前设置的时间。
二、电路设计:2.1DS1302时钟芯片接口DS1302时钟芯片的接口包括VCC、GND、SCLK、RST、DAT和CE。
其中VCC和GND分别接到5V和地线上,SCLK接到单片机的时钟源上,RST接到单片机的复位端口上,DAT接到单片机的数据引脚上,CE可以悬空或接地,建议接地。
2.2数码管接口数码管接口需要连接到控制电路上,包括数码管的数值引脚和段选引脚。
根据具体使用的数码管型号,接线方式可能有所不同,需要根据数码管的数据手册来确定具体的接线方式。
2.3设置按键接口设置按键通过一个按键来进行时间的设置,按下时触发相应的设置功能。
按键需要连接到输入电路中,并通过一个GPIO口读取其状态,判断按键是否按下。
三、程序设计:3.1初始化DS1302时钟芯片通过写入相应的寄存器进行DS1302时钟芯片的初始化操作,设置时钟频率、日期和时间格式等。
3.2获取当前时间通过读取DS1302时钟芯片的时钟寄存器,获取当前的小时和分钟,保存在相应的变量中。
3.3时间显示使用4位共阴数码管进行时间的显示,将小时和分钟分别拆分为十位和个位两个数字进行显示。
可以通过按键选择显示的小时制方式。
单片机原理及应用课程设计题目:基于T89C51设计可调式的电子钟学院:信息工程学院专业:计算机科学与技术班级:专升本班姓名:张永明学号: 2013052109指导老师:杜俊1概述 (4)1.1课题研究的目的和意义 (4)2 课题方案论证 (4)2.1系统总体设计要求 (4)2.2系统模块结构论证 (5)3 系统硬件设计 (5)3.2最小单片机系统 (6)3.3按键电路 (7)3.4显示电路 (8)4软件设计 (9)4.1 主程序 (9)5软硬件联调及调试结果 (18)5.1调试步骤 (18)结束语 (18)参考文献 (18)附录 (19)附录3 proteus仿真图 (19)基于T89C51设计可调式的电子钟摘要:数字电子时钟电路设计系统,以AT89C51单片机为控制核心,由开关显示、LED 共阴极数码管和LED灯显示等功能模块组成。
基于题目基本要求,本系统对时间显示和定时报警进行了重点设计。
本系统大部分功能由软件来实现,吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。
本系统不仅成功的实现了要求的基本功能,而且有一定的创新功能。
关键字:单片机;AT89C51;数字钟1概述1.1课题研究的目的和意义此次设计是单片机内部的定时/计数器来实现电子时钟的方法以及借助键盘直接控制整时的调整,本设计根据AT89C51单片机系统扩展的基本原理和方法,由单片机AT89S51芯片,LED数码管和键盘为核心,辅以必要的电路,构成了一个单片机电子时钟。
一块单片机芯片就是一台计算机,由于单片机以其集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等特点使它应用于智能仪器仪表、机电一体化、实时程控、人类生活中。
除此之外还广泛应用办公自动化领域、商业营销领域、汽车及通信系统、计算机外部设备等各领域中,并且单片机已成为计算机发展和应用的一个重要方面。
由此可见掌握单片机的使用方法和利用单片机解决实际问题具有重要的意义。
而此次的设计刚好用到单片机相关的知识可以说这是这次设计的重要意义和目的所在。
再者,此设计的LED电子时钟主要是显时间的,是时钟用途。
在此设计的基础上人们还可根据不同的需求和不同的设计水平做出不同的设计项目。
也可以加上日期,温度的显示和闹钟的功能。
如果设计水平还更高的话还可以设计LED 电子显示屏。
因此说,LED电子时钟设计是最简单和基础的。
而且电子时钟很实用,准确性也很好,也容易调节,若有毁坏更换元器件也简单,制作原理和过程也很易懂易做,成本也不高。
在此设计间也包含了很多的知识,跟我所学专业又对口,所以,做这个LED电子时钟是个很用很好很值得做的设计。
2 课题方案论证2.1系统总体设计要求本次设计中的LED数码管电子时钟电路采用24小时制记时方式。
本次设计采用AT89C51单片机的扩展芯片和1个74LS04做驱动,由八块LED数码管构成的显示系统,与传统的基于8/16位普通单片机的LED显示系统相比较,本系统在不显著地增加系统成本的情况下,可支持更多的LED数码管稳定显示。
设计采用AT89C51单片机,配备12MHz晶振,复位电路为上电复位。
采用软件译码动态显示,考虑直接用单片机I/O口作为位选时可能驱动功率不够,可采用三极管作驱动共阳极数码管显示。
8位8段LED数码管作正常、调时显示,时间按时分秒排列,时钟误差:24小时误差3~5秒,并且在按键的作用下可以进行调时,调分,复位功能。
本电路采用直流5V电源供电。
同时为了限流保护电路也用了若干个阻值不等的电阻。
在本文一开始做了一些概述主要说明此设计的目的和意义,并会对这类设计项目发展情况做个简介。
这是对这次设计很重要的一个认识是前提和设计者必须明确和了解的。
然后本文对此设计做了一些简要分析,这对理清设计思想很重要。
然后还对设计中用到的元器件进行比较全面的介绍。
只有真正了解了元器件的特性和功能才能让这些元器件在设计中起到作用。
电子整个设计第一步是电路原理图,它直接关系着后续的工作。
紧接着就是程序了,如果只有硬件电路而没有程序,那么这个设计将一文不值,也就是说是一堆破铜烂铁。
所以这部分也是非常重要的。
最后结合整个设计总结了一些心得体会为这次的设计画上完满的句号。
也为以后更好的设计提供经验。
2.2系统模块结构论证按照系统设计功能的要求,确定系统由4个模块组成:主控制器、扫描驱动、调节电路和显示电路。
数码管电子钟电路结构框图如图2-2所示图2-2 电路结构图3 系统硬件设计电子钟的原理框图如图3-1所示。
它由以下几个部件组成:单片机AT89C51、电源、时分秒显示部件。
时分秒显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。
时分显示模块以及显示驱动都通过AT89C51的I/O口控制。
电源部分:整流稳压来得到+5V电压,维持系统的正常工作。
电子钟系统原理框图如图3-1所示:图3-1电子钟系统原理框图3.2最小单片机系统51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF ,51单片机最小系统容值越大需要的复位时间越短。
51单片机最小系统晶振Y1也可以采用6M H Z 或者12MHz ,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
51单片机最小系统起振电容C2、C3一般采用15~33pF ,并且电容离晶振越近越好,晶振离单片机越近越好4.P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k 。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N 乘以机器周期Tcy 就是定时时间t 。
设置为计数器模式时,外部事件计数脉冲由T0或T 1引脚入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。
由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周12MHz 时,最高计数频率不超过1/2MHz ,即计数脉冲的周期要大于2 ms最小系统如图3-2所示:图3-2最小系统3.3按键电路按键电路使用的是AT89C51单片机的P1和P2管脚,可调试电子中的按键总共为二个,按键功能分别为分钟,小时的加减。
通过按键电路,我们可以随意调整电子钟的时间,使单片机发挥它的作用。
按键电路图如图3-3所示:图3-3:按键电路图3.4显示电路可调试电子钟的显示电路采用8位数码管,显示出时间的时,分,秒。
使用的是AT89C51单片机的P0和P2管脚,显示电路中还将用到一块74LS245。
显示电路图如图3-4所示:图3-4显示电路4软件设计4.1 主程序Q0000: LJMP Q00DBNOPNOPNOPNOPNOPNOPNOPNOPLJMP Q0167INC R0INC R1NOPNOPCJNE R7,#00H,Q0015 Q0015: CJNE R7,#00H,Q0018 Q0018: NOPNOPNOPLJMP Q01A1Q001E: MOV P0,#0FFHMOV P3,#0FFHMOV TMOD,#11HMOV TH0,#0FCHMOV TL0,#18HMOV TH1,#0DCHCLR AMOV TL1,AMOV TCON,#01HSETB EASETB ET0SETB ET1MOV 14H,#0CHMOV 08H,AMOV 16H,AMOV 15H,AMOV A,14HMOV B,#0AHDIV ABMOV DPTR,#024DH MOVC A,@A+DPTR MOV 09H,AMOV A,14HMOV B,#0AHDIV ABMOV A,BMOVC A,@A+DPTR MOV 0AH,AMOV A,15HMOV B,#0AHDIV ABMOVC A,@A+DPTR MOV 0CH,AMOV A,15HMOV B,#0AHDIV ABMOV A,BMOVC A,@A+DPTR MOV 0DH,AMOV A,16HMOV B,#0AHDIV ABMOVC A,@A+DPTR MOV 0FH,AMOV A,16HMOV B,#0AHDIV ABMOV A,BMOVC A,@A+DPTR MOV 10H,AMOV 13H,#0FEH CLR AMOV 12H,ASETB TR0MOV 11H,#0FFHQ0091: MOV A,P1XRL A,11HJZ Q0091MOV R7,#0AHLCALL Q023BMOV A,P1XRL A,11HJZ Q0091MOV 11H,P1CLR EAMOV A,11HJB ACC.0,Q00B1LCALL Q0217SJMP Q00D7Q00B1: MOV A,11HQ00B3: JB ACC.1,Q00D7MOV A,15HINC AMOV B,#3CHDIV ABMOV 15H,BMOV A,15HMOV B,#0AHDIV ABMOV DPTR,#024DHMOVC A,@A+DPTRMOV 0CH,AMOV A,15HMOV B,#0AHDIV ABMOV A,BMOVC A,@A+DPTRMOV 0DH,AQ00D7: SETB EASJMP Q0091Q00DB: MOV R0,#7FHQ00DE: MOV @R0,ADJNZ R0,Q00DEMOV SP,#16HLJMP Q0122Q00E7: LJMP Q001EQ00EA: CLR AMOVC A,@A+DPTRINC DPTRMOV R0,AQ00EE: CLR AMOVC A,@A+DPTRINC DPTRJC Q00F6MOV @R0,ASJMP Q00F7Q00F6: MOVX @R0,AQ00F7: INC R0DJNZ R7,Q00EESJMP Q0125Q00FC: CLR AMOVC A,@A+DPTRINC DPTRMOV R0,AANL A,#07HADD A,#0CHXCH A,R0CLR CRLC ASWAP AANL A,#0FHORL A,#20HXCH A,R0MOVC A,@A+PCJC Q0114CPL AANL A,@R0SJMP Q0115Q0114: ORL A,@R0Q0115: MOV @R0,ADJNZ R7,Q00FCSJMP Q0125AJMP Q0002INC AINC R0JBC 24H.0,Q0161SJMP Q00B3NOPINC R6Q0125: CLR AMOV R6,#01HMOVC A,@A+DPTRJZ Q00E7INC DPTRMOV R7,AANL A,#3FHJNB ACC.5,Q013BANL A,#1FHMOV R6,ACLR AMOVC A,@A+DPTRINC DPTRJZ Q013BINC R6Q013B: XCH A,R7ANL A,#0C0HADD A,ACCJZ Q00EAJC Q00FCCLR AMOVC A,@A+DPTRINC DPTRMOV R2,ACLR AMOVC A,@A+DPTRINC DPTRMOV R0,AQ014C: CLR AMOVC A,@A+DPTRINC DPTRXCH A,R0XCH A,DPLXCH A,R0XCH A,R2XCH A,DPHXCH A,R2MOVX @DPTR,AINC DPTRXCH A,R0XCH A,DPLXCH A,R0XCH A,R2XCH A,DPHXCH A,R2Q0161: DJNZ R7,Q014CDJNZ R6,Q014CSJMP Q0125Q0167: PUSH ACCPUSH PSWMOV PSW,#00HPUSH 00HPUSH 07HMOV TH0,#0FCHMOV TL0,#18HMOV P3,13HMOV A,#09HADD A,12HMOV R0,AMOV A,@R0CPL AMOV P0,AMOV R7,13HMOV R0,#01HMOV A,R7INC R0SJMP Q018DQ018C: RL AQ018D: DJNZ R0,Q018CMOV 13H,AMOV A,12HINC AANL A,#07HMOV 12H,APOP 07HPOP 00HPOP PSWPOP ACCRETIQ01A1: PUSH ACCPUSH BPUSH DPHPUSH DPLPUSH PSWMOV TH1,#3CHMOV TL1,#0B0HINC 08HMOV A,08HCJNE A,#14H,Q01BEMOV 08H,#00HLCALL Q01F0Q01BE: POP PSWPOP DPLPOP DPHPOP BPOP ACCRETIQ01C9: INC 15HMOV A,15HSETB CSUBB A,#3BHJC Q01D8CLR AMOV 15H,ALCALL Q0217Q01D8: MOV A,15HMOV B,#0AHDIV ABMOV DPTR,#024DHMOVC A,@A+DPTRMOV 0CH,AMOV A,15HMOV B,#0AHDIV ABMOV A,BMOVC A,@A+DPTRMOV 0DH,ARETQ01F0: INC 16HMOV A,16HSETB CSUBB A,#3BHJC Q01FFCLR AMOV 16H,ALCALL Q01C9Q01FF: MOV A,16HMOV B,#0AHDIV ABMOV DPTR,#024DHMOVC A,@A+DPTRMOV 0FH,AMOV A,16HMOV B,#0AHDIV ABMOV A,BMOVC A,@A+DPTRMOV 10H,ARETQ0217: INC 14HMOV A,14HSETB CSUBB A,#17HJC Q0223CLR AMOV 14H,AQ0223: MOV A,14HMOV B,#0AHDIV ABMOV DPTR,#024DHMOVC A,@A+DPTRMOV 09H,AMOV A,14HMOV B,#0AHDIV ABMOV A,BMOVC A,@A+DPTRMOV 0AH,ARETQ023B: MOV R5,07HDEC R7MOV A,R5JZ Q024CCLR AMOV R6,AQ0243: MOV A,R6CLR CSUBB A,#78HJNC Q023BINC R6SJMP Q0243Q024C: RETPUSH 0F9HMUL ABANL C,/TIMOV P0.2,CMOV R0,ASJMP Q01E7MOV R7,A5软硬件联调及调试结果5.1调试步骤(1)在KEIL软件中编写程序,完成后,单击“项目”下的“编译”,产生“.hex”文件。