基于51单片机的数字钟的方案设计书

上传人:B****n 文档编号:54914272 上传时间:2022-02-16 格式:DOCX 页数:12 大小:335.18KB
返回 下载 相关 举报
基于51单片机的数字钟的方案设计书_第1页
第1页 / 共12页
基于51单片机的数字钟的方案设计书_第2页
第2页 / 共12页
基于51单片机的数字钟的方案设计书_第3页
第3页 / 共12页
点击查看更多>>
资源描述
自动化专业综合设计报告设计题目:基于 51 单片机的数字钟的设计所在实验室:单片机仿真模拟实验室指导教师:孙红霞学生姓名律迪迪班级文自 0921学号200990519114撰写时间:成绩评定:一、设计目的电子钟是一种用数字电路技术实现时、分、秒计时的装置, 与机械时钟相比具有更高的准确性和直观性, 且无机械装置, 具有更长的使用寿命。电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。本设计主要采用AT89C2051 单片机作为主控核心, LED 动态扫描显示屏显示。数字钟是一种用数字电路技术实现时、分、秒计时的装置,另外应有校时功能和闹钟等附加功能。与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。AT89C2051 是美国 Atmel 公司生产的低电压、高性能CMOS 8 位单片机,片内含2KB的可反复擦写的只读程序存储器(PEROM )和 128B 的随机数据存储器(RAM ),器件采用Atmel 公司的高密度、非易失性存储技术生产,兼容标准MCS-51 指令系统,片内置通用 8位中央处理器和Flash 存储单元,AT89C2051 单片机在电子类产品中有广泛的应用。AT89C2051 单片机电压可选用4-6V电压供电;显示器采用LED 数码管来显示,数码管成本低廉,系统不但接口设计简单、便于控制,而且具有很好的人机界面,可以对当前的时间进行调整。二、设计内容用 PROTEUS 画出原理图,并完成下列任务: 用 4 只 LED 数码管输出显示时和分。自动化专业综合设计报告可通过按键设置闹钟功能,且停闹无须手工操作。可通过按键设置分校时。(4) 写出详细的设计报告。( 5)给出电路的原理图、源程序,仿真实现。三、设计步骤利用以 AT89C2051 为核心的芯片来实现多功能的数字钟。本次设计的多功能数字钟采用按钮方式对时间进行控制设置,采用七段数码管显示当前的时间,且时间以24 小时的计时方式,在本次设计中,电路不仅具有显示时间,还可以实现对它们的调整。该系统是利用单片机最小系统再加上数码管、时钟芯片等电路组成。基于单片机作为主控芯片很容易控制操作,况且输入输出能很好的扩展,以便于修改更正。1 系统主要功能电子钟的主要功能有:整点报时; 四只 LED 数码管显示当前时分;并且具有闹钟功能。2系统的硬件构成及功能电脑钟的原理框图如图1 所示。它由以下几个部件组成:单片机89C2051、电源、时分显示部件。时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。时分显示模块以及显示驱动都通过89C2051 的 I/O 口控制。电源部分: 电源部分有二部分组成。 一部分是由 220V 的市电通过变压、 整流稳压来得到 +5V 电压,维持系统的正常工作。2 1AT89C2051 单片机及其引脚说明AT89C2051 单片机是51 系列单片机的一个成员,是8051 单片机的简化版。内部自带2K 字节可编程FLASH 存储器的低电压、高性能COMS 八位微处理器,与Intel MCS-51列单片机的指令和输出管脚相兼容。由于将多功能八位CPU 和闪速存储器结合在单个芯片中,因此, AT89C2051 构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM 、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。系AT89C2051 是一个有20 个引脚的芯片,引脚配置如图3 所示。与8051 相比, AT89C2051减少了两个对外端口(即P0、 P2 口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。自动化专业综合设计报告图 2 AT89C2051 引脚配置AT89C2051 芯片的 20 个引脚功能为:VCC电源电压。GND接地。RST复位输入。当RST 变为高电平并保持2 个机器周期时,所有I/O 引脚复位至 “ 1。”XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡放大器的输出。P1 口8 位双向 I/O 口。引脚 P1.2 P1.7 提供内部上拉, 当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0 和 P1.1 需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0 )和反向输入(AIN1 ),P1 口输出缓冲器能接收20mA电流,并能直接驱动LED 显示器; P1 口引脚写入 “1”后,可用作输入。在闪速编程与编程校验期间, P1 口也可接收编码数据。P3 口引脚 P3.0 P3.5 与比较器输出相连,不能作为通用P3.7 为 I/O7 个带内部上拉的双向I/0 引脚。 P3.6引脚访问。 P3 口的输出缓冲器能接收在内部已与片内20mA 的灌电流;P3口写入 “ 1后”,内部上拉,可用输入。P3口也可用作特殊功能口,其功能见表1。P3口同时也可为闪速存储器编程和编程校验接收控制信号。2 2时分显示部件由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。LED共阴极和共阳极两种。如图7 所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起, 接入 +5V 的电压。 一位显示器由8 个发光二极管组成,其中 7 个发光二极管构成字型“8”各个笔划(段)的a g,另一个小数点为dp 发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED 不被损坏,需外加限流电阻。有自动化专业综合设计报告图 3LED 数码管结构原理图众所周知, LED 显示数码管通常由硬件7 段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积, 降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的转换。从 LED 数码管结构原理可知,为了显示字符,要为LED 显示数码管提供显示段码,组成一个“8”形字符的字7 段,再加上1 个小数点位,共计8 段,因此提供给 LED 数码管的显示段码为 1 个字节。各段码位与显示段的对应关系如表1。表 1各段码位的对应关系段码位D7D6D5D4D3D2D1D0显示段dpgfedcba需说明的是当用数据口连接LED 数码管 a dp 引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。通常数据口的D0位与 a 段连接, D1 位与 b 段连接,D7 位与 dp 段连接 ,如表 1 所示,表2 为用于 LED数码管显示的十六进制数和空白字符与P 的显示段码。字型共阳极段码共阴极段码字型共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H注:( 1)本表所列各字符的显示段码均为小数点不亮的情况。( 2) “空白 ”字符即没有任何显示。根据 AT89C2051 单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将 AT89C2051 的 P1.0 P1.7 分别与共阳数码管的a g 及 dp 相连,高电平的位对应的LED自动化专业综合设计报告数码管的段暗, 低电平的位对应的LED 数码管的段亮,这样,当 P0 口输出不同的段码,就可以控制数码管显示不同的字符。例如:当 P0 口输出的段码为1100 0000,数码管显示的字符为 0。数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需解决多位LED数码管的 “段控 ”和 “位控 ”问题,本电路的“段控 ”(即要显示的段码的控制)通过P1 口实现;而每一位的公共端, 即 LED 数码管的 “位控 ”,则由 P3 口控制。 这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时, 只有这一位在显示,其他几位则暗。 在本系统中 ,字位线的选通与否是通过PNP 三极管的导通与截止来控制,即三极管处于“开关 ”状态。系统的时分显示部件由 4 只 7 段共阳 LED 数码管构成,前两只用于时的显示,后两只用于分的显示。 值得一提的是, 在设计中需要实现时与分之间的两个闪烁点,为此,将第三只 LED 数码管倒置摆放,这样就形成了两个很自然的闪烁点。与此同时,为了能使两点显示能够形象的表示时钟 “秒 ”的变化,设计时,将两个点由 P1.7 单独控制,每隔一秒使 P1.7 发送一个正脉冲,从而实现了两个点的闪烁显示,闪烁周期为一秒。3 系统的软件构成及功能本系统的软件系统主要可分为主程序和定时器中断程序两大模块。在程序过程中, 加入了抗干扰措施。下面对部分模块作介绍。3 1系统主程序设计主程序的功能是完成系统的初始化,程序流程如图4 所示。3 2中断程序设计中断程序 (如图 5 所示 )完成时间计数, 时间调整,误差消除等功能。 中断采用AT89C2051内部 T0 中断实现,定时时间为125ms,当时间到达125ms8,即 1 分钟时,分计数缓冲器MINBUFFER增加 1,到达 1 小时,则时计数缓冲器HOURBUFFER 增加 1,并将分、时的个位、十位放入显示缓冲器。当分计数缓冲器和时计数缓冲器分别到达60min 、 24h 时,则对它们清零,以便重新计数。在中断设计中,还通过软件实现了累计误差消除功能,使整个系统时间的精确度得到保证。图 4系统主程序流程图自动化专业综合设计报告图 5定时中断程序四、硬件图硬件连接图以及仿真现象图自动化专业综合设计报告五软件程序#define LEDS 4#include reg51.h/头文件包含#define uchar unsigned char/宏定义#define uintunsigned int#define ON1/定义 0为打开#define OFF 0/定义 1为关闭#define LEDBus P1/定义 p1 口为数码管段码口sbit MIAO =P12;/秒点sbit HOU_S=P30;/时十位位选sbit HOU_G=P31;/时个位位选sbit MIN_S=P32;/分十位位选sbit MIN_G=P33;/分个位位选sbit H_KEY=P35;/时调整键sbit M_KEY=P37;/分调整键自动化专业综合设计报告sbit BEEP=P34;bitSHAN;/闪烁标志位uchar second,minute,hour;/定义秒、分、时寄存器uchar code LEDTab=0x14,0xd7,0x4c,/数码管段码表 0-90x45,0x87,0x25,0x24,0x57,0x04,0x05;void delay(uchar t);/延时函数void init();/初始化函数void display();/显示函数void min_tiao();/分调整函数void beer();void hou_tiao();/时调整函数/*函 数 名: main功能:主函数说明:入口参数:无返回值:无*/void main()init();/调用初始化函数while(1)/主程序循环if(!H_KEY) hou_tiao();/如果时调整键按下 (为 0),调用时调整函数if(!M_KEY) min_tiao();/如果分调整键按下 (为 0),调用分调整函数if(minute=0) beer();display();/调用显示函数/*函 数 名: init功能:初始化函数说明:初始化定时器及中断入口参数:无返回值:无*/void init()TMOD=1;TH0=0X3C;TL0=0XB0; ET0=1;TR0=1;EA=1;/定时器 0 模式 1, 50 毫秒/开定时器0 中断、启动定时器0、开总中断自动化专业综合设计报告/*函 数 名: display功能:显示函数说明:入口参数:无返回值:无*/void display()LEDBus=LEDTabminute%10;/分个位送数码管显示MIAO=SHAN;/秒点闪烁MIN_G=ON;/打开分个位位选delay(1);/显示 1 毫秒MIN_G=OFF;/关闭分个位位选LEDBus=LEDTabminute/10;/分十位送数码管显示MIAO=SHAN;/秒点闪烁MIN_S=ON;/打开分十位位选delay(1);/显示 1 毫秒MIN_S=OFF;/关闭分十位位选LEDBus=LEDTabhour%10;/时个位送数码管显示HOU_G=ON;/打开时个位位选delay(1);/显示 1 毫秒HOU_G=OFF;/关闭时个位位选/if(hour/10)/如果时十位为 0,不显示十位数字/LEDBus=LEDTabhour/10;/时十位送数码管显示HOU_S=ON;/打开时十位位选delay(1);/显示 1 毫秒HOU_S=OFF;/关闭时十位位选/ /*函 数 名: min_tiao功能:分调整说明:入口参数:无返回值:无*/void min_tiao()while(!M_KEY) display();second=0;minute+;/等待分调整键松开/秒清零、分加1if(minute=60)minute=0;/ 如果分等于60,分变0自动化专业综合设计报告/*函 数 名: hou_tiao功能:时调整说明:入口参数:无返回值:无*/void hou_tiao()while(!H_KEY) display();/等待时调整键松开second=0;hour+;/秒清零,时加 1if(hour=24) hour=0;/如果时等于 24,时变 0/*函 数 名: delay功能:延时函数说明:入口参数: t:延时时间长短返回值:无*/void delay(uchar t)uchar i;/定义变量for(;t0;t-)/如果 t 大于 0,t 减 1(外层循环)for(i=124;i0;i-);/i 等于 124,如果 i 大于 0,i 减 1/*函 数 名: timer0功能:定时器 0 中断函数说明:入口参数:无返回值:无*/void timer0() interrupt 1/定时器 0(中断 1)uchar tim1,tim2;/定义临时变量TL0=TL0+0XB0;TH0=0X3C;/重装定时器初值tim1+;/每中断一次 tim1 加 1if(tim1=10)/中断 10(0.5 秒)自动化专业综合设计报告SHAN=!SHAN;tim1=0;tim2+;if(tim2=2)/闪烁标志取反/tim1 清零, tim2/到了 1 秒加1tim2=0;second+;/tim2清零,秒加1if(second=60)/如果秒到60second=0;minute+;if(minute=60)/秒变 0,分加/如果分到601minute=0;hour+;if(hour=24) hour=0;/分变 0,时加 1/如果时到24,时变0void beer() if(minute=0) BEEP=1;delay(3);BEEP=!BEEP;六仿真结果实现了用4 只 LED 数码管输出显示24 小时制的时和分。可通过按键设置分校时。有清零和整点报时的功能七心得体会这次仿真实现了电子钟设计的任务,对所学的知识进行了巩固,练习了汇编软件、 仿真软件。 感谢学院在我们即将踏入社会时,给我们这次理论联系实际的机会,通过这次课程设计,我们更好地将已经学过的知识进行巩固,也很感谢孙红霞老师对我的设计的不厌其烦的细心指点。通过这段时间对专业基础理论的学习与巩固,通过查阅一些有关专业资料的学习,使自己对专业知识有了进一步的理解。虽然在此过程中感觉有点不是太顺利,但从毕业设计过程中,我的确学到了很多东西, 在巩固专业知识的同时也让我学到了坚持和努力,让我受益匪浅。课程设计能提高我们的设计、掌握技术知识的能力。为我们踏上社会奠定扎实的基础。时光如梭, 大学四年即将结束。感谢母校对我大学四年来的照顾,也很感谢老师们的精心教导。在以后的日子里我还会利用现在已经学习的内容更深入地学习,也会用好现在的所学在以后的工作中发挥自己的能力,时刻铭记老师的教导,并在实践中不断提高完善自己。八如何扩展、深入本次课程设计的最大遗憾在于没有实现闹钟功能。虽然硬件安装了这个部分,但是软件的软肋造成了本次实验的缺陷。 其实电子种的显示时间和调时仅仅是最基本的,电子钟还可以加入掉电保护和显示日期的功能,让数字电子时钟更加完善。 即使这样, 本次实验也是让我自动化专业综合设计报告受益匪浅,为后续的课程设计墓定了良好的基础。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!