基于单片机的数字钟设计-(1)

合集下载

基于单片机设计的多功能数字钟设计报告[1]

基于单片机设计的多功能数字钟设计报告[1]

多功能数字钟设计报告指导老师:龙光利队员:霍宝龙(物理与电信工程学院)王阳阳(电气工程学院,电气李伟涛(电气工程学院,电气101)101)目录1. 设计任务与要求2. 设计原理及方案3. 主要元器件清单4. 电路原理图5. 原理说明6. 系统软件部分7. 整机调整过程8. 总结六位多功能数字钟制作报告•设计任务与要求。

1.任务。

设计制作一个24小时制多功能数字钟。

示意图如下(仅供参考):布转开闹铃关/□口口谡査时间设査闹请」、时分神7□。

口口2要求.基本要求(1)具有时间设置(小时和分钟)、闹钟时间设置、闹钟开、闹钟关功能。

(2)数字显示小时、分钟,有AM、PM指示器,闹钟就绪灯,蜂鸣器。

(3)220V 供电。

发挥部分(1 )键盘切换现场环境温度显示。

(0〜60 °C 1°C)(2)键盘切换电网频率、电压显示。

(3)电压欠压、过压报警(〜220V 10 %)功能。

二,设计原理及方案1,计数原理数字计中是一个对标准频率进行校准的计数电路。

它的计时周期是24小时,由于计数器的起始时间不可能与标准时间一致,所以采用校准功能和报时功能。

数字钟电路主要由译码显示器、校准电路、报时电路、时计数、分计数、秒计数器,振荡器和单脉冲产生组成。

其中电路系统由秒信号产生器是整个系统基本信号,它直接决定计数器的精度,用石英振荡器加分频器来实现,将标准秒信号送入秒计数器。

分、秒计数器采用60进制,时计数器采用24进制,。

译码器显示电路将时、分、秒计数器的输出状态通过三个两位共阳数码管显示出来。

整点报时电路根据计时系统的输出状态产生一个脉冲信号,用蜂鸣器输出。

二、模块电路设计与比较1、时钟方案选择采用带RAM的时钟芯片AT89C2051。

该芯片可以进行时分秒的计数,可编程接口,还具有报警功能和掉电保存功能,并且可以对其方便的进行程序控制,完全能满足题目的要求。

C程序:#include<REG2051.H>code senen_seg[10]={0x81,0xe7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,0x80,0xa0}; //P1.7(冒号)口高电平bitkey1_enter=0,key2_enter=0,key3_enter=0,countdown_mark=0,stopwatch_mark=0,count_mark=0,bell_mark=0; // 状态标志unsigned char program=0,program_variable=0,count_bit=0,count=0;unsigned char hour=10,minute=10,second=0;// 时间变量unsigned char delayed_hour=22,delayed_minute=10,delayed_second=0;// 定时变量unsigned char count_hour=0,count_minute=0,count_second=0;// 计时计数变量unsigned char count_time=0,count_count=0;void delay(unsigned int t) {unsigned int i,j;for(i=0;i<t;i++) for(j=0;j<10;j++) }void time0_init(void){ 始化EA=0;TR0=0;TMOD=0x01;TH0=0xec;TL0=0x73;ET0=1;// 延时子程序// 定时计数0器初TR0=1;EA=1;}static void timer0_isr(void) interrupt TF0_VECTOR using 1 // 定时计数0器中断函数{TR0=0;TH0=0xec;TL0=0x73;TR0=1;count_time++; // 时钟计时程序if(count_time>=199){count_time=0;second++;if(second>=60){second=0;minute++; if(minute>=60){minute=0;hour++;if(hour>=24)hour=0;}}}if(delayed_hour==hour && delayed_minute==minute && second<4) P3_7=0; else P3_7=1; if(countdown_mark==1){ // 倒计时程序count_count++;if(count_count>=199 &&(count_second!=0|count_minute!=0|count_hour!=0)){ count_count=0;count_second--; if(count_second>=60){ count_second=59;count_minute--; if(count_minute>=60){ count_minute=59; count_hour--;if(count_hour>=100) count_hour=99;}}}} if(count_second==0&&count_minute==0&&count_hour==0&&count_count<=12000)P3_7=0;else P3_7=1;if(count_count>=15000) count_count=14000;}if(stopwatch_mark==1){ // 秒表程序count_count++;if(count_count>=2){count_count=0;count_second++; if(count_second>=100){count_second=0;count_minute++; if(count_minute>=60){ count_minute=0; count_hour++;if(count_hour>=60) count_hour=0;unsigned char show_key (void){unsigned char x=0,y=0;switch (program){case 0: P1&=senen_seg[second%10];//break;case 1: if(count_time>=90) P1&=senen_seg[second%10]; //break;case 2: if(delayed_hour==24) P1=0xfe; //else P1&=senen_seg[delayed_second%10];break;case 3: if(count_bit>=0) P1&=senen_seg[count_second%10];//else P1=0xff;break;case 4: P1&=senen_seg[count_second%10];break;// 秒表秒的个位case 5: P1&=senen_seg[count_second%10];break;//P3_3=0;delay(10);// 计数器百位if(P3_5==0){ key1_enter=1;if(count<=254)count++; } if(P3_4==0) key2_enter=1; if(P3_2==0) key3_enter=1; // P3_3=1; P1|=0xff;switch (program){case 0: P1&=senen_seg[second/10]; // break;case 1: if(count_time>=90) P1&=senen_seg[second/10]; // break; case 2: if(delayed_hour==24) P1=0xfe; // elseP1&=senen_seg[delayed_second/10];break;case 3: if(count_bit>=1) P1&=senen_seg[count_second/10];//else P1=0xff; break;case 4: P1&=senen_seg[count_second/10];break;case 5: P1&=senen_seg[count_second/10];break;}P3_1=0; delay(10); P3_1=1; P1|=0xff; switch (program){case 0: P1&=senen_seg[minute%10]; // break;case 1: if(count_time>=90) P1&=senen_seg[minute%10]; // break; case 2: if(delayed_hour==24) P1=0xfe;else P1&=senen_seg[delayed_minute%10]; break; case 3: if(count_bit>=2) P1&=senen_seg[count_minute%10];//else P1=0xff; break;case 4: P1&=senen_seg[count_minute%10];break;case 5: P1&=senen_seg[count_minute%10];// 功能键 1识别// 功能键 2识别 功能键 3识别时钟秒的十位 校正秒的十位 闹钟秒的十位倒计时秒的十位// 秒表秒的十位 // 计数器十位时钟分的个位 校正分的个位 // 闹钟分的个位倒计时分的个位// 秒表分的个位// 计数器万位}break;}P3_2=0; delay(10); P3_2=1; P1|=0xff; switch (program){ case 0: P1&=senen_seg[minute/10]; // 时钟秒的个位 break; case 1: if(count_time>=90) P1&=senen_seg[minute/10]; // break; case 2: if(delayed_hour==24) P1=0xfe; else P1&=senen_seg[delayed_minute/10];break;case 3: if(count_bit>=3) P1&=senen_seg[count_minute/10];// else P1=0xff; break; case 4: P1&=senen_seg[count_minute/10]; break;case 5: P1&=senen_seg[count_minute/10]; break; } P3_5=0; delay(10); P3_5=1; P1|=0xff;校正秒的个位 // 闹钟秒的个位倒计时秒的个位// 秒表秒的个位 // 计数器千位switch (program){ case 0: P1&=senen_seg[hour%10]; // 时钟时的个位 break; case 1: if(count_time>=90) P1&=senen_seg[hour%10]; // 校正时的个位 break; case 2: if(delayed_hour==24) P1=0xfe; // 闹钟时的个位else P1&=senen_seg[delayed_hour%10]; break; case 3: if(count_bit>=4) P1&=senen_seg[count_hour%10];// 倒计时时的个位else P1=0xff; break; case 4: P1&=senen_seg[count_hour%10]; break; case 5: P1&=senen_seg[count_hour%10];// 秒表时的个位 break;// 闹钟菜单P3_0=0; delay(10);if(P3_4==1 &&key2_enter==1){ x=3; // key2_enter=0; } P3_0=1; 确认功能键 2识别,返回 3P1|=0xff;switch (program){ case 0: P1&=senen_seg[hour/10]; break; case 1: if(count_time>=90) P1&=senen_seg[hour/10]; // break;case 2: if(delayed_hour==24) P1=0xfe; else P1&=senen_seg[delayed_hour/10]; break; case 3: if(count_bit>=5)P1&=senen_seg[count_hour/10]; // else P1=0xff; break;case 4: P1&=senen_seg[count_hour/10]; break; case 5: P1&=senen_seg[count_hour/10]; break;// 时钟时的个位 校正时的个位 // // // 闹钟时的个位倒计时时的个位秒表时的个位 计数器万位} P3_4=0; delay(10); if(P3_5==1 && key1_enter==1){ 个功能 if(count>=127) x=1; else x=2; key1_enter=0; count=0; } if(P3_2==1 && key3_enter==1){ x=4; // key3_enter=0; } P3_4=1; P1|=0xff;if(program<=1 && count_time>=100) P1&=0xff; 号闪烁 // 确认功能键 1识别,执行退出或进入下一 //// 确认功能键 1为长按,返回 1 确认功能键 1为短按,返回 2 确认功能键 3识别,返回 4 // 校时和显示功能时钟时冒 if(program<=1 && count_time<=100) P1&=0x7f; if(program==2) P1&=0x7f; // 设置闹钟功能时冒号长亮if(program==3) P1&=0xff; if(program==4) P1&=0x7f; if(program==5) P1&=0xff; y=x; x=0;// 设置倒计时功能时冒号长灭// 设置秒表功能时冒号长亮// 设置计数时冒号长灭return y;void main(){ // 主程序P1=0xff;P3=0xff;time0_init();while(1){ switch(program){ case 0:while(program==0){ switch(show_key()){ case 0: break;case 1: program=0;break;case 2: program=1;break;}}break;case 1: while(program==1){ switch(show_key()){ case 0: break;case 1: program=0; break;case 2: program=2;break;case 3: hour++;if(hour>=24)hour=0; break;case 4: minute++; if(minute>=60)minute=0;break;}}break;case 2: while(program==2){ switch(show_key()){ case 0: break; // 时钟菜单// 校时菜单case 1: program=0;break;case 2: program=3;break;case 3: delayed_hour++;if(delayed_hour>=25)delayed_hour=0;break;case 4: delayed_minute++;if(delayed_minute>=60)delayed_minute=0;break;}}break;case 3: while(program==3){switch(show_key()){case 0: break;case 1: program=0;break;case 2: program=4;break;case 3: count_bit++; if(count_bit>=7)count_bit=0;break;case 4: switch(count_bit){case 0: count_second+=1;break;case 1: count_second+=10;break;case 2: count_minute+=1;break;case 3: count_minute+=10;break;case 4: count_hour+=1;break;case 5: count_hour+=10;break;case 6: break;}if(count_hour>=100) count_hour-=100;if(count_minute>=60) count_minute-=60;if(count_second>=60) count_second-=60;break;}if(count_bit==6) countdown_mark=1;// 倒计时菜单// 闹钟菜单else countdown_mark=0; } break; case 4: count_hour=0;count_minute=0; count_second=0;while(program==4){ switch(show_key()){ case 0: break; case 1: program=0; break; case 2: program=5;break;case 3: stopwatch_mark=~stopwatch_mark;break;case 4: if(stopwatch_mark==0){count_hour=0; count_minute=0; count_second=0;}break;} }break;case 5: count_hour=0;count_minute=0;count_second=0;while(program==5){ switch(show_key()){ case 0: break;case 1: program=0;break; case 2: program=0;break;case 3: count_second++;if(count_second>=100){ count_second=0; count_minute++; if(count_minute>=100){ count_minute=0; count_hour++; if(count_hour>=100)count_hour=0;break;case 4: coun t_hour=0;count_minu te=0; coun t_sec on d=0;break;} if(P3_7==0){ while(P3_7==0) show_key();coun t_sec on d++;if(cou nt_seco nd>=100){ coun t_sec on d=0;count_minu te++;if(cou nt_mi nu te>=100){ count_minu te=0; coun t_hour++; if(co un t_hour>=100)co un t_hour=0; } }}// 秒表菜单// 计数器菜单}break;}if(program!=3) coun tdow n_mark=0; if(program!=4) stopwatch_mark=0;}}2、电压有效值方案选择采用7805五伏稳压电源,电路图如下:T肚卫血3、显示模块的选择采用数码管显示。

基于单片机的数字电子钟

基于单片机的数字电子钟

基于单片机的数字电子钟摘要:数字电子钟是以数字信号为基础显示时间的电子设备,目前已有多种实现方式。

本文介绍了基于单片机实现数字电子钟的原理、方法和实现步骤,包括单片机的选择、时钟模块、驱动模块、电源等硬件电路设计,以及软件程序实现部分。

此外,文章还对数字电子钟进行了功能扩展,实现了闹钟、备忘录、开关灯等实用功能,提高了使用体验。

关键词:数字电子钟,单片机,时钟模块,驱动模块,扩展功能一、引言随着科技的发展,数字电子钟越来越普及,其取代机械钟的趋势也越来越明显。

数字电子钟具有精度高、操作方便、造型美观等优点。

本文将介绍一种基于单片机的数字电子钟实现方法,包括硬件电路设计和软件程序实现。

二、硬件电路设计2.1 单片机的选择在数字电子钟的实现过程中,单片机是必不可少的控制核心。

常见的单片机有AT89C52、STC89C52等,可以根据自己的需求选择相应的芯片。

2.2 时钟模块时钟模块是数字电子钟的核心部分,它能够提供系统所需的时间信息。

常见的时钟模块有DS1302、DS3231等,它们都可以提供精确的时间信息。

2.3 驱动模块驱动模块是数字电子钟的重要组成部分。

在数码管的驱动中,常用的方法有直接驱动和扫描驱动两种方式。

直接驱动即将单个数码管的8段LED直接连接到单片机的8个I/O口上,扫描驱动则是将多个数码管按照一定的顺序扫描,并用单片机的一组I/O口控制。

在本文中,我们采用扫描驱动。

2.4 电源数字电子钟的电源一般采取AC/DC电源适配器输出DC9V稳压电源,或使用5号电池供电。

三、软件程序实现3.1 初始化在程序开头,需要将各个I/O口和时钟模块进行初始化,同时设定系统初始时间。

3.2 显示时间显示时间是本文设计的重点。

在程序中,将采用定时器来精确控制时间,并将当前时间显示在LED上。

同时,为了使得LED的亮度更好,还可以在程序中加入占空比的调节函数。

3.3 闹钟功能的实现闹钟功能是实现数字电子钟的一个重要功能。

基于单片机的数字电子时钟设计

基于单片机的数字电子时钟设计

基于单片机的数字电子时钟设计数字电子时钟是一种非常常见的电子产品,它可以帮助我们实现精确的时间显示,让我们的生活更加方便。

随着科技的不断发展,数字电子时钟也在不断更新和发展,基于单片机的数字电子时钟已经成为当前最先进的技术之一。

本文将介绍基于单片机的数字电子时钟的设计原理和实现方法。

一、数字电子时钟的设计原理数字电子时钟的实现原理就是把时间信号转换成数字信号,再通过计算机芯片来显示时间。

其中,时间信号可以是电缆信号或者无线信号,并且也可以通过外部的控制电路进行调节。

而计算机芯片可以采用单片机、PLC控制器等方案进行设计。

基于单片机的数字电子时钟,可以使用数字时钟芯片和定时器芯片来完成。

数字时钟芯片是一种能够实现数据的统计、时钟显示等功能的IC芯片,通过将其与定时器芯片相连,就能够实现精确的时间统计和显示。

此外,在设计时还需要进行软硬件电路的优化和调试。

二、基于单片机的数字电子时钟的实现方法1、硬件设计基于单片机的数字电子时钟的硬件设计,主要包含单片机控制电路、显示电路、外设接口电路、供电电路、时钟芯片和定时器芯片等部分。

其中,时钟芯片用于提供精准的时间信号,定时器芯片则用于进行计时,而单片机和外设接口电路则用于控制整个数字电子时钟的功能。

另外,数字电子时钟还需要进行外观设计,通常采用的是数码管或液晶屏幕显示时间。

通过优化电路布局和参数匹配,可以有效地提高整个数字电子时钟的稳定性和精度。

2、软件设计在数字电子时钟的软件设计中,主要包含固件设计和操作系统设计两部分。

固件设计是指对单片机系统进行程序编写、调试和优化,以实现时钟的各种功能;而操作系统设计,则是对固件进行封装,建立起一套完整的操作环境,方便用户进行操作。

在固件设计中,需要考虑到时钟的显示、调节、闹钟、定时等多种功能的实现。

通常,这些功能都会涉及到多个模块和数据结构的设计,需要通过循序渐进的方式逐步实现。

在操作系统设计中,需要对时钟的各种操作进行封装,形成一套完整的操作界面。

基于C51单片机的数字时钟课程设计(C语言带闹钟)

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

基于单片机的数字钟毕业设计(附程序全)

基于单片机的数字钟毕业设计(附程序全)

基于单片机的数字钟毕业设计(附程序全) 电子时钟设计随着现代人类生活节奏的加快,人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。

对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。

数码管显示的时间简单明了而且读数快、时间准确性更高~数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。

数字钟的精度、稳定度远远超过老式机械钟。

在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,并且由单片机的定时器计数。

在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。

数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。

关键词:数字钟;单片机;数码管;时间;准确性1目录第一章绪论1. 数字电子钟的意义和应用…………………………………………………………………… 3 第二章整体设计方案2.1 单片机的选择…………………………………………………………………………… 3 2.2 单片机的基本结构……………………………………………………………………… 5 第三章数字钟的硬件设计3.1 最小系统设计…………………………………………………………………………… 9 3.2 LED显示电路…………………………………………………………………………… 12 3.3 键盘控制电路…………………………………………………………………………… 14 第四章数字钟的软件设计4.1 系统软件设计流程图…………………………………………………………………… 15 4.2 数字电子钟的原理图…………………………………………………………………… 18 4.3 主程序…………………………………………………………………………………… 19 4.4 时钟设置子程序………………………………………………………………………… 20 4.5 定时器中断子程序……………………………………………………………………… 20 4.6 LED显示子程序………………………………………………………………………… 21 4.7 按键控制子程序………………………………………………………………………… 23 第五章系统仿真5.1 PROTUES软件介绍................................................................................. 24 5.2 电子钟系统PROTUES仿真........................................................................ 24 结束语. (2)5 参考文献 (26)2第一章绪论1.数字电子钟的意义和应用数字钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

基于单片机的数字钟的设计--毕业设计(论文)

基于单片机的数字钟的设计--毕业设计(论文)

毕业设计(论文)题目:基于单片机的数字钟的设计学院:自动化学院专业:自动化起止时间:2010年 3月 21日至2010年 6月 25日摘要这次毕业设计通过对单片机的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它主要通过DP-51PROC单片机综合仿真实验仪实现,通过数码管能够准确显示时间,调整时间,它的计时周期为24小时,从而到达学习、设计、开发软、硬件的能力。

主要实现功能为显示时间,时间校准调时(采用手动按键调时),闹铃功能(设置定时时间,到点后闹铃发出响声)。

通过键盘可以进行校时、定时。

闹铃功能使用I/O 口定时翻转电平驱动的无源蜂鸣器。

本文主要介绍了工作原理及调试过程。

关键词:单片机电子时钟单片机综合仿真实验仪AbstractThe MCU through graduation learning applications to AT89S51 chip as the core, supplemented by the necessary circuitry to design a simple electronic clock, it is mainly through the DP-51PROC Single Chip Experimental Device to achieve, through the digital control can be accurately show time, adjustment time, it's time period is 24 hours, so get to learn, design, development hardware and software capabilities. Main achieved function to show time, the time when calibration transfer (using the manual button adjustment time), alarm clock (set the regular time, the point to issue after the alarm sound). When the keyboard can be school, regularly. Alarm clock using the I / O port level drivers regularly turn passive buzzer.This paper describes the working principle and the debugging process.Keywords:MCU electronics clock DP-51PROC目录摘要 (2)Abstract (3)第一章概述 (5)第二章方案论证与比较 (6)2.1数字时钟方案 (6)2.2数码管显示方案 (6)2.3闹铃方案 (6)2.4校准方案 (7)第三章系统设计 (7)3.1总体设计 (7)3.1.1系统说明 (7)3.2模块设计 (7)3.2.1电源部分 (8)3.2.2复位电路 (8)3.2.3程序下载接口 (8)3.2.4位选部分 (9)3.2.5数码管的连接电路 (9)3.2.6控制部分 (10)3.2.7蜂鸣器驱动电路 (11)第四章原理 (12)4.1系统总体方案选择与说明 (12)4.2工作原理 (13)4.3各单元硬件设计说明及计算方法 (14)4.4软件设计与说明 (14)第五章软件设计 (15)5.1主程序流程 (15)5.2闹铃程序..................................................................................................... 错误!未定义书签。

基于单片机的数字时钟

基于单片机的数字时钟

目录1 设计任务与要求 (1)2 设计方案 (2)3 硬件设计 (3)3.1单片机型号的选择 (3)3.2数码管显示工作原理 (3)3.3键盘电路设计 (4)3.4整个电路原理图 (5)4 软件设计 (6)4.1程序流程图 (6)4.2程序设计 (8)4.3仿真结果 (12)4.4仿真结果分析 (13)5 小结 (14)6 附录 (15)7参考文献 (24)1 设计任务与要求1. 设计一个基于单片机的电子时钟,并且能够实现时分秒的现实和调节。

2. 设计出硬件电路。

3. 设计出软件编程方法,并写出源代码。

4. 用PROTEUS进行仿真。

5.用汇方式实现目的。

7.系统的各各功能模块要编语言编实现程序设计。

6.利用查表,中断等清楚,有序。

8.程序运行时有友好的用户界面。

本设计主要设计了一个基于AT89C51单片机的电子时钟。

并在数码管上显示相应的时间。

并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。

应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。

该方法仿真效果真实、准确,节省了硬件资源。

该设计的硬件部分主要包括89C51多功能接口芯片用于开发电子时钟芯片、LED 七段数码显示器用于显示时间、8031集成定时器用于定时、0.125W、8欧姆的扬声器用于定时发声。

软件部分包括主程序、定时计数中断程序、时间调整程序、延时程序四大模块。

通过中断程序进行定时器计数,时间调整程序是当键按下时间小于1秒,关闭显示(省电)进入调节时间状态,延时程序用于时间的延迟。

先设计个秒钟程序,在秒钟程序中先不设计按钮,直接通电运行,使用40H存放计数值,从00—59,一直循环,把40H中的数值拆分成个位和十位,分别存在30H与31H中,要求动态扫描时,使用21H当标志位,用指令JB控制显示个位与十位,程序中使用中间寄存器R0与R1用于存放拆分后的字型,再传到30H与31H中去,再设计时钟程序。

3.1 单片机型号的选择通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。

开题报告-基于单片机的数字钟设计

开题报告-基于单片机的数字钟设计

一、选题的依据及意义(一)选题依据随着人类生活水平的提高,身边的电子产品越来越多,例如无人不知无人不晓的手机,电脑,家电等,而且我们对这些电子产品也是越来越依赖。

与此同时,人们的生活变得越来越忙碌,俗话说的好,时间就是金钱。

在竞争如此激烈的世界,合理安排好自己的工作和休息时间也就变得非常重要,所以我们需要有个自动计时的电子产品—数字时钟。

随着科技的不断提升,数字时钟不仅仅是应用在我们日常接触到的手表、手机、计算机当中,其实它还渗透在各个领域,诸如每个学校都需要用到的全自动响铃器、定时自动报警器、乘车唤醒器、以及娱乐场所经常用到的定时开关等。

另外,在制作方面,电子钟从原始的纯硬件电路转变为了软硬件结合。

而单片机开发工具具有很强的软硬件调试功能,加上它现场运行环境的可靠性,改变了最早机械钟的笨重,成为体积小、功耗小、功能多、精度高、性价比高的电子时钟。

不过,为了我国国防、航空、工业、医学等科技领域的快速发展,数字时钟作为这些科技不可缺少的一部分,就必须对数字钟进行改造,使现代的时钟不仅体积小,携带方便;还需要在款式方面和功能对其进行改进,让其不仅是受广大群众欢迎的产品,同时也是壮大我国科技好帮手。

所以,随着电子行业的不断更新,现代数字钟的计时部分是数字电路的一个典型应用,其原理是电信号经过分频器得到相应的秒脉冲,时计数器为24进制,分秒计数器都是60进制。

三个计数器的输出则经过译码器传送到数码管中,最终显示出精准的结果。

所以,美观、多功能化、寿命长的产品都很容易让大家所接受。

之所以选择用单片基的原理来完成此次毕业设计是因为单片机具有较高的性价比、体积小、可靠性高、控制功能强、使用也比较方便,容易产品化等特点。

同时,随着当今世界微控制技术的不断完善和发展,以及自动化程度的日益提高,单片机的应用正在导致传统的人工控制技术发生天翻地覆的变化。

在单片机模块中,最常见的就是数字钟,本次的毕业设计就是为了研究数字时钟的原理,利用所学过的单片机的的最小应用系统及其强大的系统扩展能力,设计出多功能数字钟的电路结构,利用protues软件绘制出原理图进行仿真,成功之后再在protel软件平台上画出原理图并进行PCB板块的制作,最后制作出实物,进行调试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的数字时钟摘要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

本课题主要研究的是基于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。

通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。

关键词:数字钟,单片机,数码管AbstractAuthor:cheng dongTutor:wang xin Electronic technology has been developed rapidly in the 20 century,with its modern electronic products, pushed by almost permeated every area of society has vigorously promoted social productive forces development and improvement of social informatization level, also make modern electronic product performance further improved, and the rhythm of upgrade its products is becoming more and more quickly.The most common SCM module is a digital clock, a digital clock is a kind of digital circuit technology implementation, minutes and seconds, the timing device with mechanical clock compared with higher accuracy and intuitive and no mechanical device, has more longer service life, so it has been widely used.This topic research is the digital clock design based on SCM, AT89C51 SCM as the main control chip system, external LED display circuit, key circuits, crystals circuit, reset circuit module constitute a simple digital clock. Through the key circuits can respectively the diffculties, minutes and seconds setting and real-time adjustment, and the result showed that in the digital tube.Key words:digital clock SCM ; digital目录1 引言 (3)2 单片机介绍 (4)3 数字钟硬件设计 (5)3.1 系统方案的确定 (5)3.2功能分析 (5)3.3数字钟设计原理 (5)3.3.1晶振电路 (6)3.3.2复位电路 (7)3.3.3数码显示电路 (7)4.数字钟的软件设计 (9)4.1程序设计容 (9)4.2 系统设计流程图 (9)4.2.1主程序流程 (9)4.2.2定时器中断流程 (10)4.2.3时间显示流程图 (11)5.系统调试 (12)5.1 Keil C51软件环境简介 (12)5.2 Proteus软件环境简介 (12)5.3 数字钟系统PROTEUS仿真调试结果 (13)参考文献 (15)致 (15)附录 (16)元件列表 (17)源程序 (17)1 引言在单片机技术日趋成熟的今天,其灵活的硬件电路和软件电路的设计,让单片机得到广泛的应用,几乎是从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。

单片机小的系统结构几乎是所有具有可编程硬件的一个缩影,可谓是“麻雀虽小,肝胆俱全”,单片机的学习和研究是对微机系统学习和研究的简捷途径。

基于单片机的定时和控制装置在许多行业有着广泛的应用,而数字钟是其中最基本的,也是最具有代表性的一个例子,用数字电路实现对时、分、秒数字显示的计时装置。

因为机具有体积小、功耗低、功能强、性价比高、易于推广应用的优点,在自动化装置、智能仪器表、过程控制、通信、家用电器等许多领域得到日益广泛的应用,因此具有很大的研究价值。

2 单片机介绍单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

由于单片机的这种结构形式及它所采取的半导体工艺,使其具有很多显著的特点,因而在各个领域都得到了迅猛的发展。

单片机主要有如下特点:(1)性价比高;(2)集成度高、体积小、可靠性强。

机把各功能部件集成在一块芯片上,部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力。

另外,其体积小,对于强磁场环境易于采取屏蔽措施,适合在恶劣环境下工作;(3)控制功能强;(4)功耗小、电压低、便于生产的携式产品。

;(5)外部总线采用串行总线连接,以此缩小了体积;(6)单片机的系统扩展和系统配置典型、规,容易构成各种规模的应用系统。

3 数字钟硬件设计3.1 系统方案的确定硬件电路是一个系统的重要部分,在本次设计中主要是以AT89C51为核心控制器,外加一些控制电路来实现数字钟的基本功能。

单片机芯片作为控制系统的核心部件,它除了具备微机CPU 的数值计算功能外,还具有灵活强大的控制功能,以便实时检测系统的输入量、控制系统的输出量,实现自动控制,外围控制电路主要包括晶振电路模块、复位电路模块、按键电路模块以及数码管显示电路模块,通过这些控制电路的连接构成完整的电路,其结构框图如图3.1所示。

图3.1 数字钟系统结构图 3.2功能分析1.准确计时,以数字形式显示时、分的时间;2. 小时的计时为24小时制,分和秒的计时要求为60进位;3.四位数码管 显示HH-MM(时分), 4.晶振电路起到减小误差,提高精确度的作用;5.复位电路是对单片机的初始化操作。

3.3数字钟设计原理数字钟的实现一般有两种方法:其一是直接用单片机的定时计数器产生固定时间,这种方法的优点是可以省去一些外围的芯片,其缺点是只能适用于一些要求不是十分精确、不作长期保留的场合;而对于要求较高的场合,则必须选用专用的芯片,本设计采用的是第一种方法。

直接用单片机的定时计数器产生固定时间,这种方法的工作原理是利用单片机芯片的定时器产生固定时间,模拟时钟的时、分、秒。

基于这一原理构成的数字钟系统主要由以下几部分组成:89C51单片机控制器电路, 4位数码管显示电路,复位电路,晶振电路四部分构成。

其工作原理电路图如图3.3所示。

图3.3 数字钟设计原理图3.3.1晶振电路晶振的全称叫晶体振荡器,它在单片机系统里作用非常大,主要作用是产生单片机所需的时钟频率,单片机执行程序所需的时间完全取决于单片机晶振所提供的时钟频率,时钟频率越高,那么单片机运行速度就越快。

在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。

高级的精度更高。

有些晶振还可以由外加电压在一定围调整频率,称为压控振荡器(VCO)。

晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

晶振电路如图3.3.1所示。

图3.3.1 晶振电路3.3.2复位电路复位是单片机的初始化操作。

单片机启动运行时,都需要先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。

因而,复位是一个很重要的操作方式。

当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作:07H写入堆栈指针SP,P0口—P3口均置1,程序计数器PC和其他特殊功能寄存器SFR全部清零。

只要RST持续为高电平,单片机就处于循环复位状态。

单片机的复位方式有上电自动复位和手工复位两种,本设计采用的是手动复位方式,其电路图如图3.3.2所示。

图3.3.2 复位电路3.3.3数码显示电路发光二极管显示器驱动(点亮)的方法有两种。

一种是静态驱动法,即给欲点亮的LED通以恒定的定流。

这种驱动方法要有寄存器,译码器,驱动电路等逻辑部件。

当需要显示的位数增加时,所需的逻辑部件及连线也相应增加,成本也增加。

另一种是动态驱动方法,这种方法是给欲点亮的LED通过通以电流,此时LED的亮度是通断的平均亮度。

为保证亮度,通过LED的脉冲电流应数倍于其额定电流值。

利用动态驱动法可以减少需要的逻辑部件和连线,单片机应用系统中常采用动态驱动法。

数码管有两种接法即共阳极接法和共阴极接法。

所谓共阳共阴,是针对数码管的公共脚而言的。

一个1位典型的数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。

共阳指的是公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合形成我们看到的数字或字母。

共阴刚好相反,也就是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮,本次设计选择共阴极数码管,其中有4位显示“时”,“分”,,数码管A~DP 接单片机P0端口用于段选,1~4接单片机P2端口用于位选。

4位共阴极LED数码显示电路如图3.3.3所示。

图3.3.3 八位8段共阴极LED数码显示4.数字钟的软件设计4.1程序设计容单片机软件设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。

设计步骤如下所示。

1. 采用模块化程序结构设计软件,首先将整个软件分成若干功能模块;2. 根据流程图,编写源程序;3. 上机调试各模块程序;4. 与硬件一起联调,最后完成全部调试工作。

相关文档
最新文档