单片机电子钟 2
- 格式:doc
- 大小:161.50 KB
- 文档页数:11
《单片机原理及应用》课程设计任务书14系(部):电信系专业:指导教师:目录摘要 (3)1、设计任务与要求 (3)1.1 基本设计任务 (3)1.2 功能要求说明 (3)2、方案论证与选择 (3)2.1 单片机的型号选择 (3)2.2 控制选择方案 (3)3、总体设计 (4)3.1 主程序 (4)3.2 显示子程序 (5)3.3 定时闹钟与整点报时程序 (6)3.4 定时器T0中断服务程序 (7)3.5 按键功能设置 (8)4、系统主要元件介绍 (8)4.1 AT89C51单片机的介绍 (8)4.2 LED数码管介绍 (9)5、仿真及测试 (9)5.1 程序调试及仿真 (9)5.2 程序测试及结果分析 (10)6、程序设计体会 (10)参考文献 (11)摘要该电子时钟由AT89C51,BUTTON,七段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时重新计时。
而电路中的四个控制键拥有多种不同的功能,可以实现电子钟精确到秒的调整和闹钟的调整,应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。
该方法仿真效果真实、准确,节省了硬件资源。
关键词:数码管;单片机;电子钟;键盘控制1、设计任务与要求本任务为:数码管显示电子钟。
设计任务具体内容如下:1.1 基本设计任务依据命题题意,本设计采用AT89C51进行24小时计时并用数码管显示。
要求其显示时间范围是00:00:00~23:59:59,具备有时分秒校准功能。
电子钟上面要带有闹钟,闹钟与时钟之间能随时切换,闹钟具备时分秒设置功能。
1.2 功能要求说明设计一个具有特定功能的电子钟。
该电子钟具有设定闹钟(持续响5秒),及整点报时功能。
时间运行到正点时间时,闹钟响,几点钟就响几声(每声持续响2秒,每两声之间时间间隔2秒)。
2、方案论证与选择2.1 单片机的型号选择通过对多种单片机性能的分析,最终认为AT89C51是最理想的电子时钟开发芯片。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。
2.2 控制选择方案直接加减:使用7按键,1按键切换闹钟,6按键对时分秒分别加减,控制方式相当简单,但需要较多按键与I/O口,功能一般,成本较高。
矩阵键盘:使用16按键对时分秒直接设置,能最为灵活的对数字钟进行设置,功能强大,但控制方式相对困难,成本较高,需要较多按键与I/O口。
换位加减:使用4按键,1键切换闹钟,1键换位,另两键加减,控制方式相对简单,占用I/O口少,成本低廉,但功能一般。
经过反复比较,在3种方案中选取了第3种——换位加减,此方案成本低,功能已经足够满足电子钟的需要,而且硬件软件均比较简单。
3、总体设计3.1 主程序设计中计时采用定时器T0中断完成。
主程序循环调用显示子程序和查键,当端口有开关按下时,转入相应的功能程序。
流程图如图3-1所示。
图3-1 主程序流程/*主函数*/void main(void){TMOD=0x11; //time0为定时器,方式1TH0=0x3c; //预置计数初值,50msTL0=0xb0;TH1=(65535-50000)/256;TL1=(65535-50000)%256;EA=1; //总中断开ET0=1; //允许定时器0中断TR0=1;ET1=1;TR1=1;buzz=0; //开启定时器0while (1){keyscan(); //按键扫描dinshi(); //定时闹钟switch(temp2) //显示时间{case 0:display(hour1,minite1,seconde1);break;case 1:display(hour2,minite2,seconde2);break;}}}3.2 显示子程序显示子程序每次显示6个连续内存单元的十进制BCD码数据。
由于采用7段共阳LED 数码管动态扫描实现数据显示,显示十进制BCD码数据对应段码存放在ROM中。
显示时取内存地址中数据,然后查表得对应显示段码从P0口输出,P2口将为对应的数码管供电,于是数码管就会显示该地址单元的数据。
void display(uchar hour,uchar minite,uchar seconde) /*显示子程序*/{uchar h1,h2,m1,m2,s1,s2;s2=seconde/10;s1=seconde%10;m2=minite/10;m1=minite%10;h2=hour/10;h1=hour%10;P2=0XFE; //1111 1110if(temp1==1) //功能选项,通过点提醒来调节相应位的时间P0=dispcode[s1]|0x80; //点提醒elseP0=dispcode[s1];//秒个位delay(1);P2=0XFD;//1111 1101P0=dispcode[s2];//秒十位delay(1);P2=0XFB; //1111 1011P0=dispcode[10];//间隔符-delay(1);P2=0XF7; //1111 0111if(temp1==2)//P0=dispcode[m1]|0x80;elseP0=dispcode[m1];//分个位delay(1);P2=0XEF; //1110 1111P0=dispcode[m2];//分十位delay(1);P2=0XDF; //1101 1111P0=dispcode[10];//间隔符-delay(1);P2=0XBF; //1011 1111if(temp1==3)P0=dispcode[h1]|0x80;//时个位elseP0=dispcode[h1];delay(1);P2=0X7F; //0111 1111P0=dispcode[h2];//时十位delay(1);}3.3 定时闹钟与整点报时程序void dinshi( ) /*定时闹钟*/{ uint i;if(hour1==hour2&&minite1==minite2&&(seconde1>=seconde2&&seconde1<seconde2+5)) {for(i=0;i<20;i++){buzz=1;}buzz=0;}}void zhengdian (void)/*整点报警*/{if(seconde1==0&&minite1==0){ temp=hour1;flag=1; //标记buzz=1;}}3.4 定时器T0中断服务程序定时溢出中断周期设为50MS,中断进入后先进行定时中断初值校正,当中断累加到20次时,对秒计数单元进行加1操作。
时钟最大计时值为23时59分59秒。
#7FH存放“熄灭符”数据,用于时间调整时的闪烁功能。
在计数单元中,采用十进制BCD码计数,满十进位。
在程序中采用12MHZ晶振频率,精度为1MS,定时初值为50MS,用循环程序进行20次循环可到1S。
当1S到时调用加1程序并判断秒、分是否为60,当秒为60时,秒清零,分加1;当分为60时,分清零。
终端结束时,分时计时单元数据移入对应显示单元。
void timer0(void) interrupt 1 //定时器0方式1,50ms中断一次{TH0=0x3c; //手动加载计数脉冲次数TL0=0xb0;mstcnt++;zhengdian(); //用于计算时间,每隔50ms加1if(mstcnt==20) //mstcnt满20即为一秒{seconde1++; //秒+1time_pro( ); //时间处理mstcnt=0; //对计数单元的清零,重新开始计}}图3-4 定时器T0中断服务流程图3.5 按键功能设置电子时钟设置4个按键通过程序控制来完成电子时钟的时间调整。
调整时钟时只设计了加键、减键、模式键、闹钟键。
K1键为模式设置;k2键加一键;K3键减一键;k4键闹钟设置键。
(1)、k1键:模式设置键,直接按下模式键时可以调节时间,多次按键时,调节在秒、分、时之间变换。
(2)、k2键:进入模式后,调节位出现一个标志点,按一下k2键则该位加一。
同理,按下k3键该位减一。
(3)、k4键:按下k4键,数码管显示程序既定的闹钟时刻,按下模式键,出现标志点后按k2、k3调节闹钟。
4、系统主要元件介绍4.1 AT89C51单片机的介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU )加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图4-1所示。
XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U4AT89C51图4-1 单片机4.2 LED 数码管介绍LED 数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp 来表示。
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。
如:显示一个“2”字,那么应当是a 亮b 亮g 亮e 亮d 亮f 不亮c 不亮dp 不亮。
LED 数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。