单片机课程设计报告多功能数字电子时钟

合集下载

单片机课程设计数字钟实验报告

单片机课程设计数字钟实验报告

单片机课程设计:电子钟一、实现功能1、能够实现准确计时,以数字形式显示时、分、秒的时间。

2、小时以24小时计时形式,分秒计时为60进位,能够调节时钟时间。

3、闹钟功能,一旦走时到该时间,能以声或光的形式告警提示。

4、能够实现按键启动与停止功能。

5、能够实现整点报时功能。

6、能够实现秒表功能。

二、设计思路1、芯片介绍VCC:电源。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。

当P1口的管脚第一次写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门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

单片机多功能数字电子时钟设计设计Word

单片机多功能数字电子时钟设计设计Word

单片机多功能数字电子时钟设计绪论概述时间对人们来说是非常宝贵的,准确的掌握时间和分配时间对人们来说至关重要。

因此自从时钟发明的那刻起,就成为人类的好朋友。

随着时间的流逝,科学技术的不断发展和提高人们对时间计量的精度要求越来越高,应用越来越广。

怎样让时钟更好、更方便、更精确的显示时间,这就要求人们不断设计研发。

出新型的时钟。

高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高稳定性好、使用方便、不需要经常调校。

数字式电子钟用集成电路计时时译码代替机械式传动,用LCD显示器代替指针进而显示时间、减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

时钟电路在计算机系统中起着非常重要的作用是保证系统正常工作的基础。

在单片机的应用系统中,时钟有两个方面的含义。

一是指为保障系统正常工作的基准振荡定时信号、主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢二是指系统的标准定时时钟即定时时间。

它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时器/计数器来实现,二是用专门的时钟芯实现。

2研究目的通过利用STC89C52单片机和DS1302芯片和DS18B20以及外围的按键和LCD显示器等部件显示完整的日历和温度,设计一个基于单片机的电子时钟。

通过设计可以很好的学习单片机的基础知识。

具有日历、时间、温度显示功能。

设计的电子时钟通过液晶显示器显示并能通过按键对时间进行设置。

第一章设计要求与方案论证1.1设计要求1具有年、月、日、星期、时、分、秒显示功能,2具有年、月、日、星期、时、分、秒校正功能,3具有12/24小时切换显示功能,4具有显示温度功能。

1.2系统基本方案选择和论证1.2.1 单片机芯片的选择方案和论证方案一:采用STC89C52芯片作为硬件核心。

STC89C52内部具有8KB ROM 存储空间,512字节数据存储空间、带有2K字节的EEPROM存储空间与MCS-51系列单片机完全兼容,STC89C52可以通过串口下载。

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。

本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。

51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。

本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。

本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。

接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。

将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。

软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。

本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。

通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。

2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。

它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。

51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。

51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。

其存储器分为程序存储器(ROM)和数据存储器(RAM)。

程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。

51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。

51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。

基于单片机设计的多功能数字钟设计报告[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、显示模块的选择采用数码管显示。

单片机课程设计报告单片机的电子钟设计

单片机课程设计报告单片机的电子钟设计

单片机课程设计报告---单片机的电子钟设计单片机课程设计报告---单片机的电子钟设计一、设计简介本课程设计是以单片机为核心,设计一个具有显示时间和闹钟功能的电子钟。

电子钟是人们日常生活中必备的计时工具,其精度和稳定性直接影响到人们的时间安排和生活质量。

因此,本设计的目的是通过学习和实践,掌握单片机的应用和电子钟的设计方法,提高我们的实践能力和理论知识水平。

二、硬件设计1.单片机选择本设计选用AT89C51单片机作为主控制器。

AT89C51是一种低功耗、高性能的8位单片机,具有丰富的I/O口和片内资源,适合用于各种嵌入式系统开发。

2.显示模块显示模块采用LED数码管,用于显示时间、日期和闹钟状态。

为了方便调试和编程,我们选用4位一体式数码管。

3.按键模块按键模块包括功能键和调整键,用于设置时间、日期和闹钟。

我们选用4个独立式按键,分别实现上调、下调、设置和闹钟功能。

4.蜂鸣器模块蜂鸣器模块用于发出闹钟声音。

我们选用一款常见的无源蜂鸣器,通过单片机的一个IO口控制其频率,实现声音提示功能。

三、软件设计1.时钟芯片驱动本设计选用DS1302时钟芯片,用于提供实时时间和日期的信息。

DS1302与单片机通过I2C协议进行通信,需要编写相应的驱动程序。

驱动程序包括时钟芯片的初始化、数据读写和中断处理等。

2.显示驱动显示驱动程序负责控制数码管的显示。

驱动程序包括延时函数、位选函数和段选函数等。

通过调用这些函数,我们可以实现时间、日期和闹钟状态的动态显示。

3.按键驱动按键驱动程序负责识别用户的按键操作。

驱动程序通过检测独立式按键的状态变化,识别出不同的按键操作,并执行相应的功能。

例如,当用户按下上调键时,驱动程序将调用时钟芯片的读秒函数,并将时间的小时数加1。

4.蜂鸣器驱动蜂鸣器驱动程序负责控制蜂鸣器的声音频率。

驱动程序通过设置单片机的定时器寄存器,产生一定频率的方波信号,驱动蜂鸣器发声。

为了实现不同的声音效果,我们可以通过改变方波信号的频率和持续时间来实现。

单片机课程设计报告数字时钟

单片机课程设计报告数字时钟

课程设计报告课程设计名称:数字时钟系:三学生姓名:班级:电信1_学号:成绩:_指导教师:袁静开课时间:2011-2012学年下学期一.设计题目数字时钟二.主要内容利用定时器设计一个电子钟,并定义一个启动键。

当按下该键时电子时钟从当前设定值开始走时。

按秒刷新,要求在LCD 屏上显示。

三.具体要求在课程设计时,1人一组,设计报告由学生独立完成,不得互相抄袭。

教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。

学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。

学生在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。

学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。

学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。

设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。

四.进度安排五.成绩评定考核方法:现场验收(占50%),课程设计报告(占50%)。

考核内容:学习态度(出勤情况,平时表现等)、方案合理性、程序编制质量、演示效果、设计报告质量。

成绩评定:优,良,中,及格,不及格。

特别说明:如发现抄袭,按照不及格处理。

周一 周二 周三 周四 周五 讲课设内容,安排任务查资料,确定硬件电路方案画出程序流程图,写出程序清单画出程序流程图,写出程序清单写总结报告目录第一章系统概要1.1 系统背景 (4)1.2 系统功能 (4)第二章系统硬件设计2.1 系统原理图 (5)2.2 单片机(MCU)模块2.2.1 MC9S08AW60单片机功能概述 (6)2.2.2 内部结构简图 (6)2.3 串行通信模块2.3.1 MAX232引图 (7)2.3.2 串行通信的电路原理 (7)2.4 液晶显示模块 (8)第三章系统软件设计3.1 MCU方(C)程序3.1.1主程序(mian.c) (10)3.1.2 中断子程(Isr.c) (11)3.1.3LCD子程序(LCD.c) (11)3.1.4定时器(Timer.c) (13)3.1.5串行通信子程(SCI.c) (16)第四章系统测试 (18)第五章总结展望5.1 总结 (22)5.2 展望 (23)参考文献 (23)第一章系统概要1.1 系统背景这些年,人们对数字时钟的要求也越来越高,传统的时钟已不能够满足人们的需求。

电子综合设计-基于单片机多功能数字时钟的设计(附完整程序)

课题:基于51单片机的多功能数字时钟系统设计一、概述、设计思路该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,辅以闹钟模块,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天),对闹铃方式与温度调节模块进行了重点设计实现SB0、SB1、SB2、SB3四个键实现时钟正常显示,调时,及闹钟时间设置。

本系统设计大部分功能有软件来实现,使电路简单明了,系统稳定性也得大大提高。

二、系统组成与工作原理1、工作原理:本设计采用STC89C51单片机作为本次课程设计的控制模块。

单片机可把由DS18B20、DS1302、AT24C02中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。

以LCD液晶显示器为显示模块,把单片机传来的的数据显示出来,并且显示多样化,在显示电路中,主要靠按键来实现各种显示要求的选择与切换。

2、总是设计框架图:图二:系统总体电路图三、单元电路的设计与分析整个电子时钟系统电路可分为六大部分:中央处理单元(CPU)、复位电路部分、显示部分、键盘输入部分、温度采集部分。

1、MCS-51单片机89S51各引脚功能介绍:VCC:89S51 电源正端输入,接+5V。

VSS:电源地端。

XTAL1:单芯片系统时钟的反相放大器输入端。

XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在XTAL1 和XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。

A T89S51RESET:89S51的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。

电子综合课程设计多功能数字电子时钟

电子综合课程设计多功能数字电子时钟一、简介本项目为电子综合课程设计,设计一款多功能数字电子时钟。

该时钟具有显示时间、日期、温度、闹钟等多种功能,配备有定时开关机、夜光和音量调节等功能。

此外,该时钟外观简约且美观,设计师充分考虑到用户的使用需求,实现了人性化设计,易于操作,成为一款功能强大、实用性高、适用范围广的电子产品。

二、设计思路1.硬件设计时钟采用STM32F0308T6单片机作为主控芯片,用DS1302实时时钟芯片作为时钟源。

为了实现多种功能,我们在主控出增加了一个9612音频电路芯片,用作时钟的音量控制,以及闹钟的提示铃声。

此外,为了使时钟更好地适应使用场景,设计师还添加了光敏电阻实现夜光功能,铺上黄色的背光板后又实现了多种颜色的配合,能够适应不同场合的需求。

2.软件设计在软件方面,使用了C语言编程。

主要功能包括时间、日期、温度显示、闹钟、夜光和音量控制等。

其中,时间及日期的显示为主界面,在时钟界面下按下“menu”可以进入温度、夜光、音量调节、闹钟设置等模式,按下确定键可进入对设置的编辑,方便用户按照自己需求进行调整。

三、功能介绍1.时间、日期显示时钟在主界面下,可显示当前时间和日期,使用户随时了解到时间和日期的变化。

2.温度显示在“menu”界面下,可显示当前的温度,方便用户了解室内温度的变化。

3.闹钟设置在“menu”模式下,用户可通过设置闹钟时间来实现定时提醒的功能。

4.夜光当环境光线较暗时,时钟的背光板将亮起,以便用户观看时间。

5.音量调整可通过音量调节的按键对音量进行调整,以方便用户按照自己的需要进行调节。

6.定时开关机在控制位置,实现了产品的定时开关机功能,可自动开机,实现了对环境的节约。

四、总结该多功能数字电子时钟的设计工艺精良,功能强大、易于操作、实用性高、适用性广泛。

整个设计过程、选材及工艺都体现了电子产品的优越性。

在真正的市场环境下,这款多功能电子时钟具备广泛的市场适应性,在现代家居、办公室等各个场合都具有很好的应用前景。

电子综合设计-基于单片机多功能数字时钟的设计

电子综合设计-基于单片机多功能数字时钟的设计下面是一个基于单片机的多功能数字时钟的完整程序示例:```c#include <reg51.h>sbit LED = P2^0; // 数码管选择位sbit DIO = P2^1; // 数码管数据输入sbit CLK = P2^2; // 数码管时钟unsigned char code duanma[16] =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71};//数码管段码unsigned char code weima[8] =0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//数码管位码unsigned int count = 0; // 计数//延时函数void delay(unsigned int n)unsigned int i, j;for (i = 0; i < n; i++)for (j = 0; j < 110; j++);}//数码管显示函数void display(unsigned char *nums) unsigned char i;for (i = 0; i < 8; i++) { // 逐位显示DIO = nums[i]; // 将段码赋值给DIO CLK=1;//时钟上升沿CLK=0;//时钟下降沿LED = weima[i]; // 选择位码delay(1); // 延时1msLED = 0xff; // 关闭显示}//复位时钟void resecount = 0;display(duanma);void maiwhile (1)display(duanma); // 显示数码管初始状态reset(; // 复位时钟while (1)reset(;}if (P1 == 0x0f) { // 检测P1口的按键状态delay(20); // 延时消抖if (P1 == 0x0f)delay(20); // 再次延时消抖if (P1 == 0x0f)count++; // 计数加一display(duanma); // 显示计数结果}}}}}```。

单片机课程设计报告电子时钟

单片机课程设计报告电子时钟单片机课程设计报告电子时钟随着科技的发展,电子产品已经成为人们日常生活不可或缺的一部分,电子时钟也是其中一个重要的产品。

电子时钟主要通过计算机技术来实现时间的显示和调节,而单片机是一种高速度、高可靠性的计算机芯片,通过单片机技术来设计和制作电子时钟,不仅可以提高产品的性能和稳定性,还可以实现更多的功能。

设计目的这个单片机课程设计的目的是通过使用单片机技术来设计一款电子时钟,具体实现以下功能:1. 显示时间:电子时钟能够准确地显示当前的时间,包括小时、分钟、秒钟,同时可以根据需要进行调整。

2. 显示日期:电子时钟也可以显示当前的日期,包括年、月、日。

3. 闹钟功能:电子时钟具有闹钟功能,可以设置闹铃时间,提醒用户特定时间。

4. 睡眠功能:电子时钟还具有睡眠功能,可以设置睡眠时间,使用户在睡眠中就可以关闭闹钟。

设计原理电子时钟的原理是通过单片机技术和电路设计实现。

主要包括三个部分:时钟模块、驱动模块和输入输出模块。

1. 时钟模块电子时钟的时钟模块是最核心的部分,它决定了电子时钟的准确度和稳定性。

一般使用DS1302作为时钟模块,DS1302是一块低功耗时钟芯片,能够提供祥细和稳定的计时功能。

2. 驱动模块驱动模块是电子时钟控制显示的关键部分,通过使用七段LED数字显示器,以及驱动芯片74HC595来控制LED显示器的亮度和显示。

74HC595是一种串行输入并行输出的芯片,可以通过控制引脚来输出对应的电路信号。

3. 输入输出模块输入输出模块是电子时钟中用户进行设置和操作的关键部分,它支持用户与电子时钟进行通信,包括根据用户的操作来控制时钟、日期、闹钟等功能。

例如,用户可以通过按键控制输入模块来实现时钟、日期、闹钟等的选项设置。

设计步骤设计电子时钟的步骤主要包括以下几个方面。

1. 确定电路需求:首先需要明确电子时钟具备哪些特性功能,例如显示日期、时间、使用闹钟等。

2. 电路设计:根据电子时钟设计需求,设计时钟模块、驱动模块和输入输出模块的电路,包括使用电路图工具进行和PCB设计。

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

目录第1章系统总体方案与说明01.1系统总体方案01.2 系统设计说明11.3系统设计目的21.4系统设计要求2第2章硬件电路设计32.1总原理图32.2各个模块设计32.3 器件清单6第3章软件设计73.1 硬件框图73.2 程序流程图7第4章心得体会7第5章11附录A. 源程序清单11附录B.硬件原理图30C 参考文献30电气信息学院课程设计评分表31第1章系统总体方案与说明1.1系统总体方案该课程设计是利用MCS-51单片机部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计的一个单片机电子时钟,6位LED数码显示,分别显示"小时:分钟:秒〞。

该作品主要用于24小时计时显示,能整时报时,能作为秒表使用,能定时闹铃1分钟。

使用方法:开机后时钟在00:00:00起开场计时。

1.长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。

2.按P3.3进入设定闹时状态: 12:00: ,可进展分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟完毕.在闹铃时可按P3.2停闹,不按闹铃1分钟。

〔3按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。

1.2系统设计说明1〕系统由AT89C51、LED 数码管、按键、电容、电阻等局部构成,能实现时间的调整、输出、调时间等功能。

系统中按钮BUTTON能对时间进展调整功能的按钮,采用单键控制调时功能,运用软件去抖判断按键的时间从而选择完成相对应的功能〔2〕时间调整:该设计需要校对时间,所以用三个按键来实现。

按hour来调节小时的时间,按minute来调节分针的时间,按scoend来调节秒的时间。

按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加1;如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就把时间显示出来。

(3)中断:中断技术在单片系统中有着十分重要的作用,它不仅可以提高单片机CPU的效率,也可以对突发事件处理。

所谓中断就是当CPU正在执行程序A时,发生了另一个急需处理的事件B,这是CPU暂停当前执行的程序A,立即转去执行处理事件B 的程序,处理完事件B后,再返回到程序A继续执行,这个过程被叫做中断。

关于中断的概念有以下几个名词:〔1〕程序A称为主程序,〔2〕处理事件B的程序称为中断效劳程序,〔3〕主程序中转向中断效劳程序的地方称为断点,〔4〕引起中断的原因即事件B称为中断源,〔5〕转去执行中断效劳程序称为中断响应。

关于中断的概念可以打个如下的比喻。

领导〔CPU〕在自己的房间办公〔执行主程序〕,下属〔外设〕有问题打来请示〔中断源〕。

1.3系统设计目的通过课程设计的教学实践,稳固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。

对课题设计方案的分析、选择、比拟、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、容及步骤。

提高动手实践能力、提高科学的思维能力。

1.4系统设计要求1.掌握单片机最小系统的电路原理图;2.硬件的焊接、连接;3.独立编辑、编译软件;4.调试要求:〔1〕上电以后自动进入计时状态,起始于00:00:00。

〔2〕设计键盘调整时间,完成时间设计,并设置闹钟。

〔3〕定时时间为1/20秒,采用定时器实现。

〔4〕采用LED数码管显示,时、分,秒采用数字显示。

〔5〕采用24小时制,具有方便的时间调校功能。

〔6〕具有时钟和秒表的切换功能。

第2章硬件电路设计2.1总原理图如原理图所示,硬件系统主要由单片机最小应用系统、LED 数码管显示模块、电源模块、晶振模块、按键模块等组成。

图2-1电子时钟原理图2.2各个模块设计1、单片机最小系统AT89S52概述:是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断构造,全双工串行口,片晶振及时钟电路。

另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停顿工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停顿,直到下一个中断或硬件复位为止……详述:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器。

一个6向量2级中断构造,全双工串行口及时钟电路。

另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停顿工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停顿,直到下一个中断或硬件复位为止.2、显示模块LED数码管是由发光二极管构成的,亦称半导体数码管。

将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成"8〞字,再把发光二极管另一电极作笔段电极,就构成了LED 数码管。

假设按规定使*些笔段上的发光二极管发光,就能显示从0~9的…系列数字。

同荧光数码管(VFD)、辉光数码管(NRT)相比,它具有:体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS电路兼容等的数显器件。

+、-分别表示公共阳极和公共阴极。

a~g是7个笔段电极,DP 为小数点。

另有一种字高为7.6mm的超小型LED数码管,管脚从左右两排引出,小数点则是独立的。

本系统利用6位LED数码管显示时间,共阴极构造。

LED数码管由7段发光二极管组成,当要显示*个数字时只要将数字所对应的引脚送入低电平。

3.按键模块本设计中主要有三个控制按键,按键功能为:〔1〕P3.2为调时间模式,长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。

图2-2〔2〕按P3.3进入设定闹时状态: 12:00: ,可进展分设定,按P3.4分加1,再按P3.2为时调整,按P3.4时加1,按P3.3调闹钟完毕.在闹铃时可按P3.2停闹,不按闹铃1分钟。

〔3〕按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。

4.晶振模块以下图所示为时钟电路原理图,在AT89S51芯片部有一个高增益反相放大器,其输入端为芯片引脚*TAL1,输出端为引脚*TAL2。

而在芯片部,*TAL1和*TAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。

时钟电路产生的振荡脉冲经过触发器进展二分频之后,才成为单片机的时钟脉冲信号。

图2-3晶振电路2.3 器件清单第3章 软件设计3.1 硬件框图根据以上的电子时钟的设计要求可以分为以下的几个硬件电路模块:单片机模块、数码显示模块、晶振模块、电源模块与按键模块等,模块之间的关系图如下面得方框电路图所示。

图3-13.2程序流程图〔1〕总体流程图图3-2〔2〕时钟调整模式〔3 误。

主要用到了多种芯片,程序也比拟长比拟麻烦,同时也遇到了不少困难,尤其是关于校时模块的设计实现。

关于显示模块,在以前的实验中做过,所以问题很容易解决。

随着集成电路和计算机技术的迅速开展,使电子仪器的整体水平发生巨大变化,传统的仪器逐步的被智能仪器所取代。

智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应用与开展,从而加快了智能仪器的开展。

而传感器作为测控系统中对象信息的入口,越来越受到人们的关注。

传感器好比人体"五官〞的工程模拟物,它是一种能将特定的被测量信息〔物理量、化学量、生物量等〕按一定规律转换成*种可用信号输出的器件或装置本次课设中的半桥电子秤就是在以上仪器的根底上设计而成的。

因此,只有充分了解有关智能仪器、单片机、传感器以及各局部之间的关系才能到达要求。

通过本次设计,我们系统的了解了实时时钟的设计流程,尤其是硬、软件的设计方法,掌握了键盘显示电路的根本功能及编程方法,掌握了键盘电路和显示电路的一般原理,也进一步掌握了89S52定时器的使用和中断处理器程序的编程方法。

开拓了思路,锻炼了实践动手能力,提高了分工协作能力和分析问题,解决问题的能力,到达了本次课程设计的目的。

在调试电路的过程中也积累了一些珍贵的经历,比方说,在I/O口要保证标准的高电平〞1〞的产生,一般要上拉电阻5.1k,在一些需要高电平的地方,不能用悬空来模拟,必须严格的按照"+5v〞来连接,特别是调试过程中的分局部进展很重要。

此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期里,学到了很多的东西。

同时不仅稳固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能力。

这次的课程设计还让我学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

更重要的是,我在这一设计过程中,学会了坚持不懈,不轻言放弃。

设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。

在设计的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够结实。

我们通过查阅大量有关资料,并在小组中互相讨论,交流经历和自学,假设遇到实在搞不明白的问题就会及时请教教师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。

单片机课程设计虽然完毕了,但通过设计所学到的东西将长久存在。

相关文档
最新文档