版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE21基于AT89s52的多功能数字钟引言单片机(Single—ChipMicrocomputer),是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器.它体积小,成本低,功能强,广泛应用于工业自动化上和智能产品。时钟,自从它被发明的那天起,就成为了人类的好朋友,但随着时间的推移,科学技术的不断发展,时钟的应用越来越广范,人们对时间计量的精度要求也越来越高。怎样让时钟更好的为人民服务,怎样让我们的老朋友再次焕发青春呢?这就要求我们不断设计出新型的时钟,来不断满足人们的日常生活需要。然而市场上的时钟便宜的比较笨重,简单实用的又比较昂贵。那么,有没有一款既简单实用价格又便宜的时钟呢?我们设计小组设想:可不可以利用单片机功能集成化高,价格又便宜的特点设计一款结构既简单,价格又便宜,功能又强大的单片机电子时钟呢?基于这种情况,我们课程设计小组成员多方查阅资料,反复论证设计出了这款集时钟显示、闹铃提醒和秒表功能于一体的单片机数字时钟。【摘要】本设计由数码管显示模块、单片机处理模块、闹铃提醒模块、按键控制模块和电源模块等组成。通过单片机软件运算方式进行时钟计时,外部获得的按键信息进行模式切换和控制,输出到信号数码管显示模块,从而控制数码管显示内容,实现时钟显示、闹铃提醒和秒表等功能。【关键词】数字钟;AT89s52;PNP9012;数码管【Abstract】Thedesignconsistsofthedigitaldisplaymodule,MCUprocessingmodule,alarmremindingmodule,keycontrolmoduleandpowermoduleandothercomponents。ThroughthewayMCU’ssoftwareoperationtotime,externalinformationonaccesstokeydataprocessingtomodechangingandcontrol,outputsignaltodigitaldisplaymoduletocontrolthedigitaldisplaycontent,andthen,realizingtheclockdisplayandalarmremindingandstopwatch,andotherfunctions.【Keywords】Dgitalclock;AT89s52;PNP9012;nixietube目录TOC\o"1—3"\h\z\u30296目录317063一、课程选题及设计目的4102801。1课程选题及相关设计要求4312461.1.1课程题目461571。1。2设计要求4292261。1。3本设计功能完成情况4148391。2课程设计目的5186481。3课程设计所用软件528490二、硬件设计与实现6125152。1课题分析67002。1。1元件选择6268692。1.2工作原理710072.1。3系统的硬件构成及功能8264322。2由原理设计实际电路1023022.2.1抢答器实际电路图10182722.2。2PCB图设计11198023。1软件功能需求12133683。2系统主程序设计1283634.1仿真电路设计1955994。2功能仿真结果19280434。2。1时间显示19194204。2。2闹铃设定2080284.2。3时间设定20159264.2。4秒表使用20附录课程选题及设计目的1课程选题及相关设计要求1。1。1课程题目基于AT89s52的多功能数字钟1。1。2设计要求1.显示时间:用数码管显示时:分,时间可用硬件调整。2。定时功能,可硬件调整(时分)定时,定时到驱动蜂鸣器(或LED)提示。3.计时功能:精确到0。1秒,结果在数码管显示.4。设计出相应电路并用protel出图。5。给出完整的汇编语言(或C语言)源程序。1。1。3本设计功能完成情况1。显示时间:完整实现并自由发挥。用数码管显示,按照时-分—秒的格式显示,时间可用硬件调整,比照设计要求增加了秒显示功能。2.定时功能,完整实现.可硬件调整(时分)定时,定时到驱动蜂鸣器(或LED)提示,本设计采用了LED提示(亮1min).3。计时功能:完整实现并自由发挥。精确到0。01秒,结果在数码管显示,比照设计要求秒表精度提高了10倍。4。设计出相应电路并用protel出图,完整实现.。5。给出完整的汇编语言(或C语言)源程序,完整实现.6。仿真,此步骤为自行添加,用于验证了设计的可行性。1。2课程设计目的(1)学习使用protel设计电子线路原理图和PCB图的方法.(2)学习使用protues仿真并调试电路及程序的方法。(3)学习使用以AT89s52为核心设计外围电路及实现预期功能的思想和方法。(4)学习查找电路所用元件封装方式的查找和自行制作的方法。(5)学习使用KeilC设计相应程序实现硬件控制和功能的方法。1。3课程设计所用软件软件工具:AltiumDesignerSummer09、Protel99用于设计电路原理图和PCB图。KeiluVision4用于软件的编写、编译以及hex文件的生成.Protues7。5用于软件的仿真。硬件设计与实现2。1课题分析2.1。1元件选择本设计使用到的元器件包括:AT89s52芯片、数码管、PNP9012、电容、电阻、晶振、按键开关、。AT89s52芯片是系统的核心,它主要负责控制各个部分的协调工作.选择该芯片的原因主要有以下几点:(1)该芯片在以前的电子设计中使用过一次,手头恰好有,便于节省课程设计资金。(2)内部资源丰富,功能强大,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。(3)能工作在3。5~5。5V,其工作电压范围宽泛,便于使用.在AT89s52芯片外围接上复位电路,外部时序电路、上拉电阻,数码管,按钮等外部设备,通过数码管、PNP9012搭配实现功能的显示.P3.3为蜂鸣器(用LED代替)输出口,P0为数码管段选显示输出,P2为数码管位选显示输出,P3。0—P3。2为按键控制接口。原件列表:AT89s521片四位共阳极数码管2片PNP9012三极管8个22μF电容1个30pF电容2个1KΏ电阻12个4。7KΏ电阻8个12M晶振1个导线、焊锡若干2。1.2工作原理基于上述设计要求,根据功能要求,设计中除了必要的单片机复位和时序电路外,还需要有闹铃提醒电路、显示电路、按键控制电路等部分.各个电路都有其自己的功能。电路进入就绪状态后,开始计时。然后由按键控制进行模式切换和控制状态.在电路中P3。0-P3.2为按键控制部分的3个按键,P3。0对应模式切换功能,P3。1在时钟显示和闹铃模式下起到加1功能,P3.2在时钟显示和闹铃模式下起到减1功能,在秒表模式下起到控制秒表开始和暂停的功能.P3。3为闹铃输出口,闹铃时间到,则该输出口置高,保持1min,使LED保持高亮达到闹铃提醒功能.P0为数码管段选显示输出,同个8个口电平高低不同,控制单个数码管的显示,;P2为数码管位选显示输出,通过8个口的输出电平高低不同,控制相连的PNP9012的导通状态,从而控制共阳数码管的显示。AT89s52的针脚定义如下:2。1。3系统的硬件构成及功能(1)抢答器的电路框图P3.0-3.2P0口P3.0-3.2P0口单片机P2口数码管显示模块外围驱动电路电源模块按键控制模块闹铃提醒模块复位电路及时序电路抢答器电路功能框图2.2由原理设计实际电路2。2.1抢答器实际电路图抢答器工作电路原理图2。2。2PCB图设计(注明:因为沟通的原因,实际作出的PCB图未按照此图制作,而是制作了第一版设计的一个PCB,其中有错误,故在实际应用时,自行焊接了设计电路。)三、电子线路软件设计与实现3。1软件功能需求为了能够计时准确,显示无闪烁,按键响应及时无抖动等功能需求,根据设计要求,可以得出相应的软件功能可分为以下部分:(1)初始化部分(2)显示部分(3)键盘扫描判断部分(4)数码管驱动部分(5)主程序(6)定时器计时设计3.2系统主程序设计基于以上软件需求,以及ATMega16L指令集特点,编写了如附录程序来实现逾期功能。初始化部分.#include〈reg52。h〉sbitKEY1=P3^0;sbitKEY2=P3^1;sbitKEY3=P3^2;sbitled=P3^3;codeunsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阴数码管0-9unsignedcharStrTab[8];//定义缓冲区Unsignedcharminute=30,hour=12,second,msecond,miao,key1flag=0,key2flag=0;//定义并且初始化值12:30:00unsignedcharkeytemp1=0,keytemp2=0,clockhor=0,clockmin=0,clocksec=0,clockflag,keycount,keyflag1,t;显示部分。voidDisplaypro(void){StrTab[0]=tab[hour/10];//显示正常时间StrTab[1]=tab[hour%10];StrTab[2]=0xbf;StrTab[3]=tab[minute/10];StrTab[4]=tab[minute%10];StrTab[5]=0xbf;StrTab[6]=tab[second/10];StrTab[7]=tab[second%10];}voiddisplaymiao(){StrTab[6]=tab[msecond/10];//显示秒表时间StrTab[7]=tab[msecond%10];StrTab[2]=0xbf;StrTab[3]=tab[miao/10];StrTab[4]=tab[miao%10];StrTab[5]=0xbf;StrTab[0]=tab[0];StrTab[1]=tab[0];}voidtiming(void){StrTab[0]=tab[hour/10];//显示正常时间StrTab[1]=tab[hour%10];StrTab[2]=0xff;StrTab[3]=tab[minute/10];StrTab[4]=tab[minute%10];StrTab[5]=0xff;StrTab[6]=tab[second/10];StrTab[7]=tab[second%10];}voidclock(void){StrTab[0]=tab[clockhor/10];//显示闹铃时间StrTab[1]=tab[clockhor%10];StrTab[2]=0x7f;StrTab[3]=tab[clockmin/10];StrTab[4]=tab[clockmin%10];StrTab[5]=0x7f;StrTab[6]=tab[clocksec/10];StrTab[7]=tab[clocksec%10];}voidzero(void){StrTab[0]=tab[0];//显示零时间StrTab[1]=tab[0];StrTab[2]=0xbf;StrTab[3]=tab[0];StrTab[4]=tab[0];StrTab[5]=0xbf;StrTab[6]=tab[0];StrTab[7]=tab[0];}键盘扫描判断部分。voidkeyjudge()//模式切换键扫描{keyflag1=0;delay(1000);if(keyflag1=1){if(key1flag<=4){key1flag++;}if(key1flag>=4){key1flag=0;}}keyflag1=0;}数码管驱动部分.voidtime1_isr(void)interrupt3using0//定时器1用来动态扫描{staticunsignedcharnum;TH1=0xf8;//重入初值TL1=0xf0;switch(num){case0:P2=0xfe;P0=StrTab[num];break;//分别调用缓冲区的值进行扫描case1:P2=0xfd;P0=StrTab[num];break;case2:P2=0xfb;P0=StrTab[num];break;case3:P2=0xf7;P0=StrTab[num];break;case4:P2=0xef;P0=StrTab[num];break;case5:P2=0xdf;P0=StrTab[num];break;case6:P2=0xbf;P0=StrTab[num];break;case7:P2=0x7f;P0=StrTab[num];break;default:break;}num++;//扫描8次,使用8个数码管if(num==8)num=0;}延时程序。voiddelay(unsignedintcnt)//延时函数{while(-—cnt);}主程序。main()//主函数{TMOD|=0x01;//定时器0用于计时TH0=0xd8;TL0=0xf0;ET0=1;TR0=1;TMOD|=0x10;//定时器1用于动态扫描TH1=0xF8;TL1=0xf0;ET1=1;TR1=1;EA=1;EX0=1;IT0=1;t=0;Displaypro();while(1)//主循环{while((key1flag==0)){Displaypro();}while((key1flag==1)){zero();if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){msecond=0;miao=0;}while((key1flag==1)){displaymiao();}}}while((key1flag==2)){timing();if(key2flag==0){if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){minute++;if(minute==59)minute=0;//分加1timing();}}}if(key2flag==1){if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){hour++;if(hour==24)hour=0;//分减1timing();}}}timing();}while((key1flag==3)){clock();if(key2flag==0){if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){clockmin++;if(clockmin==59)clockmin=0;//分加1clock();}}}if(key2flag==1){if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){clockhor++;if(clockhor==24)clockhor=0;//分减1clock();}}}clock();}}}////////////////////////////////////////////////////////////////voidinter()interrupt0{if(key1flag==1){if(t==0){t=1;}elset=0;}}闹铃响应设计if((hour==clockhor)&&(minute==clockmin)){clockflag=1;}else{clockflag=0;}if(clockflag==1){led=1;}else{led=0;}秒表设计voidtim(void)interrupt1using1{staticunsignedintcount;//定义内部静态变量TH0=0xf8;//重新赋值TL0=0x30;count++;keycount++;if(!KEY1){keyflag1=1;keyjudge();}if(!KEY2){if(key2flag〈=2){key2flag++;}if(key2flag〉=2){key2flag=0;}}if((count%5)==0){if(t==1)msecond++;if(msecond==100){msecond=0;miao++;//秒加1if(miao==100)miao=0;}}(9)走时设计if(count==500){count=0;second++;//秒加1if(second==60){second=0;minute++;//分加1if(minute==60){minute=0;hour++;//时加1if(hour==24)hour=0;}}}}四、系统功能仿真4。1仿真电路设计因为使用Protues7。5进行电路仿真时,默认单片机正常工作同时电路驱动能力无限大,因此可以省略掉复位和时序电路以及三极管驱动部分,仿真电路图设计如下:4。2功能仿真结果4。2.1时间显示4。2.2闹铃设定4.2。3时间设定4.2。4秒表使用附录:完整程序设计#include〈reg52.h>sbitKEY1=P3^0;sbitKEY2=P3^1;sbitKEY3=P3^2;sbitled=P3^3;codeunsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阴数码管0-9unsignedcharStrTab[8];//定义缓冲区unsignedcharminute=30,hour=12,second,msecond,miao,key1flag=0,key2flag=0;//定义并且初始化值12:30:00unsignedcharkeytemp1=0,keytemp2=0,clockhor=0,clockmin=0,clocksec=0,clockflag,keycount,keyflag1,t;voiddelay(unsignedintcnt)//延时函数{while(—-cnt);}voidDisplaypro(void){StrTab[0]=tab[hour/10];//显示正常时间StrTab[1]=tab[hour%10];StrTab[2]=0xbf;StrTab[3]=tab[minute/10];StrTab[4]=tab[minute%10];StrTab[5]=0xbf;StrTab[6]=tab[second/10];StrTab[7]=tab[second%10];}voiddisplaymiao(){StrTab[6]=tab[msecond/10];//显示秒表时间StrTab[7]=tab[msecond%10];StrTab[2]=0xbf;StrTab[3]=tab[miao/10];StrTab[4]=tab[miao%10];StrTab[5]=0xbf;StrTab[0]=tab[0];StrTab[1]=tab[0];}voidtiming(void){StrTab[0]=tab[hour/10];//显示正常时间StrTab[1]=tab[hour%10];StrTab[2]=0xff;StrTab[3]=tab[minute/10];StrTab[4]=tab[minute%10];StrTab[5]=0xff;StrTab[6]=tab[second/10];StrTab[7]=tab[second%10];}voidclock(void){StrTab[0]=tab[clockhor/10];//显示闹铃时间StrTab[1]=tab[clockhor%10];StrTab[2]=0x7f;StrTab[3]=tab[clockmin/10];StrTab[4]=tab[clockmin%10];StrTab[5]=0x7f;StrTab[6]=tab[clocksec/10];StrTab[7]=tab[clocksec%10];}voidzero(void){StrTab[0]=tab[0];//显示零时间StrTab[1]=tab[0];StrTab[2]=0xbf;StrTab[3]=tab[0];StrTab[4]=tab[0];StrTab[5]=0xbf;StrTab[6]=tab[0];StrTab[7]=tab[0];}voidkeyjudge(){keyflag1=0;delay(1000);if(keyflag1=1){if(key1flag〈=4){key1flag++;}if(key1flag〉=4){key1flag=0;}}keyflag1=0;}main()//主函数{TMOD|=0x01;//定时器0用于计时TH0=0xd8;TL0=0xf0;ET0=1;TR0=1;TMOD|=0x10;//定时器1用于动态扫描TH1=0xF8;TL1=0xf0;ET1=1;TR1=1;EA=1;EX0=1;IT0=1;t=0;Displaypro();while(1)//主循环{while((key1flag==0)){Displaypro();}while((key1flag==1)){zero();if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){msecond=0;miao=0;}while((key1flag==1)){displaymiao();}}}while((key1flag==2)){timing();if(key2flag==0){if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){minute++;if(minute==59)minute=0;//分加1timing();}}}if(key2flag==1){if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){hour++;if(hour==24)hour=0;//分减1timing();}}}timing();}while((key1flag==3)){clock();if(key2flag==0){if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){clockmin++;if(clockmin==59)clockmin=0;//分加1clock();}}}if(key2flag==1){if(!KEY3)//按键去抖以及动作{delay(10000);if(!KEY3){clockhor++;if(clockhor==24)clockhor=0;//分减1clock();}}}clock();}}}////////////////////////////////////////////////////////////////voidinter()interrupt0{if(key1flag==1){if(t==0){t=1;}elset=0;}}/********************************//*定时中断1*//********************************/voidtime1_isr(void)interrupt3using0//定时器1用来动态扫描{staticunsignedcharnum;TH1=0xf8;//重入初值TL1=0xf0;if((ho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025装饰公司购销合同范文
- 2025年度米厂水稻种植与生物质能发电合作合同4篇
- 2024石材进口与国内分销一体化买卖运输合同3篇
- 二零二五年度刘黎虹伏玉文化艺术品收藏与拍卖合同4篇
- 2025版外贸企业间货物检验合同范本英文版3篇
- 2025年度测绘项目安全管理与责任协议4篇
- 石家庄市婴幼儿游泳场所卫生现状调查及干预效果研究
- 2025加盟店铺的合同范本
- 二手房买卖居间服务合同2024版
- 黄河流域粮食绿色生产效率评价及影响因素研究
- 开展课外读物负面清单管理的具体实施举措方案
- 2025年云南中烟工业限责任公司招聘420人高频重点提升(共500题)附带答案详解
- 2025-2030年中国洗衣液市场未来发展趋势及前景调研分析报告
- 2024解析:第三章物态变化-基础练(解析版)
- 2023年江苏省南京市中考化学真题
- 供电副所长述职报告
- 校园欺凌问题成因及对策分析研究论文
- 技术支持资料投标书
- 老年人意外事件与与预防
- 预防艾滋病、梅毒和乙肝母婴传播转介服务制度
- 《高速铁路客运安全与应急处理》课程标准
评论
0/150
提交评论