




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程论文首页院、系(部)电信系专业电信班级092学号910706201姓名董文杰课程教师林志雄课程名称科研专题与论文写作论文题目基于多位LED数码管的数字钟设计成绩评语 签字: 年 月 日复核人意见 签字: 年 月 日基于多位LED数码管的数字钟设计 董文杰 【中文摘要】设计的主要内容就是结合软件Keil和Proteus来仿真一个由单片机AT89C51芯片和多位LED数码管为核心的单片机数字时钟,从而锻炼出学习、设计、开发软、硬件的能力。设计已完成的数宇钟的基本功能:正常走时(年、月、日、时、分、秒)、校正时间和秒表功能。且操作简单、运行稳定。【关键词】AT89C51单片机 LED数码管 Proteus C语言1前言 数字钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。虽然现在市场上已有现成的电子钟集成电路芯片,价格便宜、使用也方便。但是,人们对电子产品的应用要求越来越高,数字钟不但可以显示当前的时问,而且可以显示期、农历、以及星期等,给人们的生活带来了方便。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢。二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法。本文主要介绍用单片机内部的定时/计数器来实现多功能时钟的方法,设计由单片机AT89C51芯片和和多位LED数码管为核心,辅以必要的电路等,构成的一个单片机数字时钟。2设计方案2.1设计思路 数字钟的功能就是显示秒、分和小时,其算法是60秒为1分钟,60分钟为1小时,一天为24小时。因此需要秒计数器到59秒的时候,再加1秒时,秒计数器清0,分钟计数器加1;秒计数器加到59秒,分钟计数器到59分时,再加1秒时,秒计数器和分计数器同时清0,小时计数器加1;当小时计数器为23小时,分计数器为59分,秒为59秒的时候,再加1秒时,秒计数器、分计数器和小时计数器同时清零。数字钟的核心就是要产生秒信号,这里利用单片机的定时器TO产生。定时器TO有4种工作方式,可以采用中断方式和查询方式编程。此数字时钟由主模块(AT89C51)、显示模块(多位LED数码管)、控制模块和计时运算模块四大部分组成。其中控制模块和计时运算模块主要对年月日、时分秒的数值显示和调整进行操作,并且秒计算到60时,自动清零并向分进1;分计算到60时,自动清零并向时进1;时计算到24时,自动清零。这样,就形成了循环计时,显示模块主要用来显示当前计数值。AT89C51是整个设计的核心,主要用来产生定时中断,传输数据和控制各个部件工作。 数字钟格式:XX.XX.XX ,从左向右分别为时/年、分/月、秒/日。时分秒完成由秒01一直加1至59,再恢复00;分加1,由00至01,一直加1至59,再恢复00;时加1,时由00加至23后秒分时全部清零;该钟使用TO做定时中断。时钟校正:走时过程中直接调整且不影响走时准确性。按下相应次数功能键S1进入相应数位的调整;按下S2按键加,相应数位加1;按下S3按键减,相应数位减1。秒表功能:按下功能键S1对应次数,进入秒表计时功能;按下S2按键加,开始计时;按下S3按键减,暂停计时;暂停计时时,按下S2按键加,继续计时;按下S4按键,退出。年月显示:按住S4按键不放,显示年月日。2.2模块功能说明(1)单片机AT89C51简介,如下图1 图1 AT89C51引脚图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)这是由于上拉的缘故。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 TMOD定时器/计数器方式寄存器 定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。 TCON定时器/计数器控制寄存器 TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H-8FH,由于有位地址,十分便于进行位操作。 定时器/计数器的初始化 由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作.初始货的步骤一般如下:1、 确定工作方式(即对TMOD赋值),预置定时或计数的初值。2、根据需要开放定时器/计数器的中断(直接对IE位赋值)。3、启动定时器/计数器。(2)多位LED数码管7SEG-MPX6-CA简介如下图2 图2 7SEG-MPX6-CA数码管模型图 7SEG-MPX6-CA是7段6位共阳级数码管,DP为小数点,位码(1-6)应轮流通高电位,段码控制数码管的显示:0-e,1-d,2-p,3-c,4-g,5-b,6-f,7-a.共阳极LED数码管,它是将发光二极管的阳极(正极)短接后作为公共阳极.当驱动信号为低电平才能发光。本实验采用动态显示,即节省了I/O口,又能降低能耗。显示过程注意消影。(3)其余元件如下图3 BUTTON PNP POWER GROUND RES 图3 所需用到的其余元件 2.3系统总体原理图如下图4 图4 基于多位LED数码管的数字钟总图2.4电路图的接法设计鉴于仿真的单片机数字时钟的美观性,取消各模块间的可见连线,利用Proteus中的Edit Wire Style 按钮来连接各个端口。单片机P1端口接按键S输入;单片机P0端口接段码驱动到数码管;单片机P2端口接位码驱动到数码管。2.5按键功能说明 1、功能键-根据按下的次数,分别调节时间和年月,按位调节,同时调整位闪烁,按下11次后进入秒表,期间可以按退出键退出功能调节或秒表。 2、数字加-进入时间或年月调节时,按此键闪烁位数字加一,秒表模式下为秒表开始键。 3、数字减-进入时间或年月调节时,按此键闪烁位数字减一,秒表模式下为秒表暂停键。 4、退出键-进入时间或年月调节时,按此键保存调节并退出,没进入时间或年月调节时按此键显示年月。3 程序流程图3.1时钟显示程序流程图如下图5 图5 时钟显示程序流程图3.2外部中断处理流程图如下图6 图6 外部中断处理流程图3.3函数模块及功能(1)Void Time0() interrupt 1 定时器0中断服务程序,供时钟主程序使用(2)Void Time1() interrupt 3 定时器1中断服务程序,供秒表使用(3)Void yanshi(uint z) 延时程序,供动态扫描与按键去抖(4)Void xianshi() 动态扫描程序(5)Void shizhong() 时钟主程序(6)Void key1() 按键1检测,按的次数不同进入不同调节功能(7)Void key2() 按键2检测,数字加或秒表计时(8)Void key3() 按键3检测,数字减或秒表暂停(9)Void key4() 按键4检测,按住不放显示年月,退出功能(10)Void nyr() 年月日调节(11)Void miaobiao() 秒表,精确到1%秒(12)Void init() 初始化设置中断4 设计总结这次对数字钟的设计,经过认真地查找资料、编写程序以及调试程序,结果达到验证无误。从开始设计到仿真实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战。从单片机模块数字钟的设计过程中我找到了一些单片机开发的规律:先了解所有元件的具体内容,从而画出其电路图,使数字钟从简易变成多功能的方式,虽没有做闹铃功能的多功能数字钟,却知晓了其方法。从而更好地让自己踏入单片机应用领域的第一步。【参考文献】1赵文博,刘文涛.单片机语言C51程序设计M.人民邮电出版社,20062石从刚.MCS-51单片机原理与应用实验实训教程M.北京航空航天大学出版社,20073张靖武.单片机系统的PROTEUS设计与仿真M.电子工业出版社,20094李精华.基于数字钟设计的单片机课程项目开发J.桂林航天工业高等专科学校学报,2010附录:程序代码及说明#include #define uint unsigned int#define uchar unsigned char/*定义变量和数码表*/uchar code shuma=0x14,0xd7,0x4c,0x45,0x87,0x25,0x24,0x57,0x04,0x05;/数码表uchar code fenge=0x10,0xD3,0x48,0x41,0x83,0x21,0x20,0x53,0x00,0x01;/带点的数码表uchar code weixuan =0x7f,0xBf,0xDf,0xEf,0xf7,0xfb,0xff;/位选控制表uchar t,tt,a,b,c,d,e,f,x,y,id,fen,miao,hm,mm,ff,shi,ri,yue,nian;sbit s1=P10;/菜单键,按下的次数进入不同的调节功能sbit s2=P11;/数字加键、秒表开始键sbit s3=P12;/数字减键、秒表暂停键sbit s4=P13;/显示年月日,菜单退出键/*定时器0中断服务程序供时钟主程序使用*/void Time0()interrupt 1 TH0=(65536-49990)/256;/装初值,使定时器0每50毫秒产生一次中断 TL0=(65536-49990)%256;/装初值,使定时器0每50毫秒产生一次中断t+;/中断次数if(t=21)/在调节时间或年月时把t控制在20以内/避免中断次数不受控 t=0; /*定时器1中断服务程序供秒表使用*/void Time1() interrupt 3 TH1=(65536-1001)/256;/装初值,使定时器1每1毫秒产生一次中断 TL1=(65536-1001)%256;/装初值,使定时器1每1毫秒产生一次中断 tt+; if(tt=11) tt=0; /* 延时程序供动态扫描和按键去抖用 如果是实物的话,x的值设为3就可以了*/void yanshi(uint z) for (x=25;x0;x-) for (y=z;y0;y-); /* 动态扫描程序*/void xianshi () P0=0xff;/消影 P2=weixuan0;/第一位数码管 if(t=10)/数码管闪烁 if(id=1)/调节小时十位时闪烁 P2=weixuan6; if(id=5)/调节年十位时闪烁 P2=weixuan6; P0=shumaa;/显示数码yanshi(5);/提高亮度,使每一位数码管一样亮P0=0xff;/消影P2=weixuan1;/第二位数码管if(t=10)/数码管闪烁 if(id=2)/调节小时个位时闪烁 P2=weixuan6; if(id=6)/调节年十位时闪烁 P2=weixuan6; P0=fengeb;/显示数码yanshi(5);/提高亮度,使每一位数码管一样亮P0=0xff;/消影P2=weixuan2;/第三位数码管if(t=10)/数码管闪烁if(id=3)/调节分十位时闪烁 P2=weixuan6; if(id=7)/调节月十位时闪烁 P2=weixuan6; P0=shumac;/显示数码yanshi(5);/提高亮度,使每一位数码管一样亮P0=0xff;/消影P2=weixuan3;/第四位数码管if(t=10)/数码管闪烁 if(id=4)/调节分个位时闪烁 P2=weixuan6; if(id=8)/调节月个位时闪烁 P2=weixuan6; P0=fenged;/显示数码yanshi(5);/提高亮度,使每一位数码管一样亮P0=0xff;/消影P2=weixuan4;/第五位数码管if(t=10)if(id=9)/调节日十位时闪烁 P2=weixuan6; P0=shumae;/显示数码yanshi(5);/提高亮度,使每一位数码管一样亮P0=0xff;/消影P2=weixuan5;/第六位数码管if(t=10) if(id=10)/调节日的个位时闪烁 P2=weixuan6; P0=shumaf;/显示数码yanshi(5);/提高亮度,使每一位数码管一样亮/*时钟主程序*/void shizhong() if(t=20)/进入20次中断后秒加1,50ms*20=1s t=0; miao+; if(miao=60)/秒够60清零,分加1 miao=0; fen+; if(fen=60)/分够60清零,时加1 fen=0; shi+; if(shi=24)/时够24清零,日加1 ri+;shi=0; /* 按键1检测按键检测,按的次数不同进入不同调节功能*/void key1() while(s1=0) yanshi(300);/延时去抖 while(s1=0) id+;/根据ID值的不同进入各种功能while(s1=0);/等待松开菜单键yanshi(350);while(s1=0); /* 按键2检测 按键检测,数字加或秒表开始*/void key2() while(s2=0) yanshi(300);/延时去抖 while(s2=0) if(id=11)/只允许在秒表模式下开始 TR1=1;/秒表开始 switch(id)/根据ID值调整不同的位 case 1:a+;break; case 2:b+;break; case 3:c+;break; case 4:d+;break; case 5:a+;break; case 6:b+;break; case 7:c+;break; case 8:d+;break; case 9:e+;break; case 10:f+;break; if(id4) b=0; if(b=10)b=0; if(c=6)c=0; if(d=10)d=0;shi=a*10+b;fen=c*10+d; if(id=5,id12) d=0; if(e=4) e=0; if(e*10+f31) f=0; nian=a*10+b; yue=c*10+d; ri=e*10+f; miao=0; while(s2=0);/等待放开数字加键 yanshi(350); while(s2=0); /*按键3检测按键检测,数字减键、秒表暂停键*/void key3() while(s3=0) yanshi(300);/延时去抖 while(s3=0) if(id=11)/只允许在秒表模式下暂停 TR1=0;/秒表暂停 switch(id) case 1:a-;break; case 2:b-;break; case 3:c-;break; case 4:d-;break; case 5:a-;break; case 6:b-;break; case 7:c-;break; case 8:d-;break; case 9:e-;break; case 10:f-;break; if(id=5) b=0; if(b=-1) b=9; if(c=-1) c=5; if(d=-1) d=9; shi=a*10+b; fen=c*10+d; if(id4,id12) d=0; if(e=-1) e=3; if(f=-1) f=9; if(e*10+f31) f=0; nian=a*10+b; yue=c*10+d; ri=e*10+f; miao=0; while(s3=0);/等待放开数字减键 yanshi(350); while(s3=0); /*按键4检测-退出菜单按键检测,按住S4不放时显示年月日 退出功能键*/void key4() while(s4=0) yanshi(300);/延时去抖while(s4=0) id=12;/退出菜单TR1=0;/关闭定时器1hm=0;/退出秒表时初始化秒表mm=0;/退出秒表时初始化秒表ff=0;/退出秒表时初始化秒表shizhong();/显示年月时让时钟继续走a=nian/10;b=nian%10;c=yue/10;d=yue%10;e=ri/10;f=ri%10;xianshi(); /*年月日调节*/void nyr() while(id=5)/按下菜单键5次时进入年月日调节 while(id11) key1();/调节位检测key2();/数值加检测key3();/数值减检测 a=nian/10;b=nian%10;c=yue/10;d=yue%10;e=ri/10;f=ri%10;xianshi();miao=0;key4();/退出检测 /*秒表精确到1%秒*/void miaobiao() while(id=11)/按下菜单键11次时进入秒表 shizhong();/进入秒表功能时让时钟继续走 key2();/秒表开始检测 if(tt=10) tt=0;hm+; if(hm=100) mm+;hm=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年设计标准试题及答案
- 安全知识必考试题及答案
- 税务筹划合规性研究-洞察及研究
- 安徽会计考试试题及答案
- 阿坝电大管理学基础试题及答案
- 2025河南成人高考试题及答案
- 工业园区用地地契租赁合同解析
- 跨境电商企业股权合作与品牌运营合同
- 耕种土地承包与农业环保合作协议
- 车规级芯片短缺-洞察及研究
- 2025年柳州市城中区人民法院招录聘用人员考试试题
- 2024年危险化学品典型事故案例反思
- MOOC 电工电子实验基础-东南大学 中国大学慕课答案
- 现场踏勘情况记录表
- 道亨铁塔长短腿基础配置系统-操作说明
- 秋冬季呼吸道传染病预防知识讲座课件
- 小学科学苏教四年级上册1单元动物大家族2《鱼类》教案
- 团队协作的五大障碍课件
- 一氧化碳中毒急救PPT课件(PPT 43页)
- JIS G4305-2021 冷轧不锈钢板材、薄板材和带材
- 计算机专业英语(第二版)整本书课件完整版电子教案(最新)
评论
0/150
提交评论