基于单片机的电子表的设计与制作.docx

上传人:牧羊曲112 文档编号:3385150 上传时间:2023-03-12 格式:DOCX 页数:21 大小:43.93KB
返回 下载 相关 举报
基于单片机的电子表的设计与制作.docx_第1页
第1页 / 共21页
基于单片机的电子表的设计与制作.docx_第2页
第2页 / 共21页
基于单片机的电子表的设计与制作.docx_第3页
第3页 / 共21页
基于单片机的电子表的设计与制作.docx_第4页
第4页 / 共21页
基于单片机的电子表的设计与制作.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于单片机的电子表的设计与制作.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子表的设计与制作.docx(21页珍藏版)》请在三一办公上搜索。

1、基于单片机的电子表的设计与制作第1章 概述1 1.1 内容摘要1 1.2 实验基本原理1 第2章 设计思路及框图2 2.1 设计思路2 2.2 设计框图2 第3章 硬件的设计3 3.1 主控制部件3 3.2 显示模块4 3.3 晶振模块4 3.4 按键模块5 3.5 驱动模块5 第4章 电路设计原理图6 第5章 程序的设计7 5.1 程序流程图7 5.2 源程序9 第6章 系统验证及调试20 第7章 总结21 第8章 参考文献22 第9章 课程设计评分表23 0 第1章 概述 1.1内容摘要 本次课程设计基于单片机原理技术介绍了一款于AT89C51芯片作为核心控制器的单片机电子表的设计与制作,

2、主要有两个功能:时钟和秒表。其制作流程主要包括硬件电路原理的实现方案设计、软件程序编辑的实现、电子表正常工作的流程、原理图仿真实现、硬件实物的调试过程。该单片机数字电子表采用LED 数码管能够准确显示时间,可随时进行时间调整,时间可采用24 小时制显示,还可实现时钟与秒表的切换,暂停与调时调分调秒,可按自己的要求设置扩展其它的功能。 1.2 实验基本原理 利用AT89C51单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为0,每中断一次中断计数初值加1,当加到100时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断

3、是否1h到了。 为了将时间在6位LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。 1 第2章 设计思路及框图 2.1 设计思路 针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,第一,熟悉AT89S51单片机,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储

4、单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二,设计硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三,画图部分:设计好电路后进行画图。第四,软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,实现想要的功能。 2.2设计框图 此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块:显示电路用

5、8个共阴极数码显示管、按键模块、晶振模块。显示管分别显示:小时、分钟和秒,通过动态扫描进行显示。 电路的总体设计框架如下: 晶振模块 单 片LED显示模块 时钟模块 机模块 驱动模块 按键模块 图1 2 第3章 硬件的设计 3.1主控制部件 89C51是一个8位单片机,片内ROM全部采用FLASH ROM技术,晶振时钟为12MHz。89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。第31引脚需要接高电位使单片机选用内部程序存储器;第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS,通常在VCC和VSS引脚之间接0.1F

6、高频滤波电容。 硬件原理图如图2所示 U419XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161718XTAL29RST293031PSENALEEA12345678P1

7、.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51图2 3 3.2显示模块 方案一:静态显示。静态显示,即当显示器显示某一字符时,相应的发光二极管恒定导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小电流能获得较高的亮度,且字符不闪烁。但因当所需显示的位数较多时,静态显示所需的I/O口数较大,造成资源的浪费。 方案二:动态显示。动态显示,即各位数码管轮流点亮,对于显示器各位数码管,每隔一段延时时间循环点亮一次。利用人的视觉暂留功能可以看到整个显示,但须保证扫描速度足够快,人的视觉暂留功能才可察觉不到字符闪烁。显示器的亮度与导通电流、点亮时间及间隔时间的比

8、例有关。调整参数可实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。 从节省单片机芯片I/O口和降低能耗角度出发,本数字电子钟数码管显示选择设计采用方案二。 3.3晶振模块 单片机芯片可使用内部时钟电路和外部时钟电路两种方式产生电路所需的时钟脉冲,内部时钟电路实现可用石英晶体和微调电容外接即可达到,外部时钟电路实现需要一个外部脉冲源引入脉冲信号以保证个单片机之间时钟信号的同步。从硬件实现难易角度考虑,内部时钟电路的实现比外部时钟电路的实现更简易。既本数字电子钟设计所需的时钟源采用内部时钟电路实现。所用定时方式为工作方式1,石英晶振为12M,即最小定时时间为1us,最大定时时间约为65.

9、5ms,其电路图如下图2所示。 图3 4 3.4 按键模块 本数字电子钟设计所需按键用于进行显示时间的调整与设置扩展的小键盘。单片机芯片4个I/O口可与按键直接相连,通过编程,单片机芯片即可控制按键接口电平的高低,即按键的开与关,以达到用按键进行显示时间的调整与设置扩展的小键盘的设计要求,本电路采用P1口与按键相连。 其电路图如图4所示: 图4 3.5驱动模块 从实物制作简易程度与驱动数码管段码能力角度出发,本数字电子钟设计采用数码管段码与AT89C51P0口相连,单片机AT89C51的P2口控制数码管的片选信号,通过编程,单片机芯片即可控制段码电平的高低的方式实现数码管段码控制。 5 第4章

10、 电路设计原理图 C1U11nF191XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161723456789RP1RESPACK-8X1CRYSTAL18C21nFXTAL

11、29RST293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51图5 6 第5章 程序设计 5.1 程序流程图 在主程序的开始定义了一组固定单元用来存储计数的分、秒、时的存储单元。在主程序中,对不同的按键进行扫描,实现秒表,时间调整。系统总体流程图如图6所示。 开始 T0中断入口 通过查表方式显示数据 位选数值=0 秒计数加1 秒计数=1000 秒计数=0 Seconds加1 中断返回 图6 7 系统子程序流程图如图7所示: 开始 计数器重新加载 循环次数加1 是否满1s? 秒值加1 是否满60s? N 分值加1 N 是否满

12、60m? 小时加1 是否满24h? N Y 显示缓冲单元清0 返回 8 5.2 源程序 程序清单如下: #include #define uchar unsigned char #define uint unsigned int /七段共阴数码显示管段码表/ uchar code dispcode=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /定义初始化变量/ /秒表部分/ uchar Decisec=0;/分秒/ uchar Sec=0;/秒/ uchar Mint=0;/分/ /时钟部分/ uchar Seconds=0; ucha

13、r Minutes=0; uchar Hours=0; uchar Count=0; uchar Numb=0; /按键部分/ sbit CHANGE=P10; /切换:可实现跑表与时钟互切 / sbit START=P11; /开始/ sbit STOP=P12; sbit RST=P13; sbit rst=P14; sbit jia1=P15; 9 /暂停/ sbit jia2=P16; sbit jia3=P17; /复位/ /函数声明/ void delay(uchar ms); /延迟函数/ void time_pro1;/秒表处理函数/ void time_pro2;/时钟处理函

14、数/ void keyscan; /键盘扫描/ void display1; /数码管显示秒表/ void display2; /数码管显示时钟/ /*/ / 主函数 / /*/ void main P1=0xff; TMOD=0x11; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TH1=(65536-10000)/256; TL1=(65536-10000)%256; EA=1; ET0=1; ET1=1; TR0=1; while(1) 10 keyscan; if(Numb=1) display1; if(Numb=0) display2

15、; if(rst=0) Hours=0; Seconds=0; Minutes=0; if(jia1=0) delay(5); if(jia1=1) Hours+; if(Hours=24) Hours=0; if(jia2=0) delay(5); 11 if(jia2=1) Minutes+; if(Minutes=60) Minutes=0; if(jia3=0) delay(5); if(jia3=1) Seconds+; if(Seconds=60) Seconds=0; /*/ / 延迟函数 / /*/ void delay(uchar ms) uchar i,j; for(i=m

16、s;i0;i-) 12 for(j=500;j0;j-); /*/ / 秒表处理函数 / /*/ void time_pro1 if(Decisec=100) Decisec=0; Sec+; if(Sec=1000) Sec=0; /*/ / 时钟处理函数 / /*/ void time_pro2 if(Seconds=60) Seconds=0; Minutes+; if(Minutes=60) 13 Minutes=0; Hours+; if(Hours=24) Hours=0; /*/ / 键盘扫描函数 / /*/ void keyscan / 秒表/时钟切换 / if(CHANGE=

17、0) delay(5); if(CHANGE=0)&(Numb=0) display1; Numb=!Numb; while(!CHANGE) display1; 14 if(CHANGE=0)&(Numb=1) Numb=!Numb; while(!CHANGE) display2; / 开始计时 / if(START=0)&(Numb=1) delay(5); if(START=0) TR1=1; while(!START) display1; / 暂停计时 / if(STOP=0)&(Numb=1) delay(5); 15 if(STOP=0) TR1=0; while(!STOP)

18、display1; / 重新计时 / if(RST=0)&(Numb=1) delay(5); if(RST=0) Hours=0; Seconds=0; Minutes=0; Decisec=0; Sec=0; while(!RST) Decisec=0; Sec=0; display1; 16 /*/ / 数码管显示秒表 / /*/ void display1 P2=0x7f; P0=dispcodeDecisec/10;/ 显示分秒 / delay(1); P2=0xbf; P0=dispcode(Sec%100)%10|0x80;/显示秒个位/ delay(1); P2=0xdf; P

19、0=dispcode(Sec%100)/10;/显示秒十位/ delay(1); P2=0xef; P0=dispcodeSec/100; delay(1); /*/ / 数码管显示时钟 / /*/ void display2 P2=0x7f; P0=dispcodeSeconds%10;/显示秒个位/ 17 delay(1); P2=0xbf; P0=dispcodeSeconds/10;/显示秒十位/ delay(1); P2=0xdf; P0=dispcodeMinutes%10|0x80;/显示分个位/ delay(1); P2=0xef; P0=dispcodeMinutes/10;

20、/显示分十位/ delay(1); P2=0xf7; P0=dispcodeHours%10|0x80;/显示时个位/ delay(1); P2=0xfb; P0=dispcodeHours/10;/显示时十位/ delay(1); /*/ /定时器T1中断服务程序/ /*/ void time_T1interrupt 3 TH1=(65536-10000)/256; TL1=(65536-10000)%256; Decisec+; time_pro1;/秒表时间处理函数/ 18 /*/ /定时器T0中断服务程序/ /*/ void time_T0interrupt 1 TH0=(65536-

21、10000)/256; TL0=(65536-10000)%256; Count+; if(Count=100) Seconds+; time_pro2;/时钟时间处理函数/ Count=0; 19 第6章 系统的验证及调试 时钟调试: C1U11nF191XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T

22、0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161723456789RP1RESPACK-8X1CRYSTAL18C21nFXTAL29RST293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51秒表调试: C1U11nF191XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12

23、P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161723456789RP1RESPACK-8X1CRYSTAL18C21nFXTAL29RST293031PSENALEEA12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C5120 第7章 总结 这两周的课程设计学到了不少的东西,刚开始的时候我感觉毫无头绪,又要忙着安装软件,又要学习Prote

24、us,以前没有用过,担心忙不过来,做完之后才明白原来用单片机做一个实物也不是想象中的那样困难重重,在这整个的设计过程中,不但复习了书本上的理论知识,提高了自己的动手能力,而且还强化了自己的编程水平,总的来感觉效果还是挺不错的。 为期两星期的课程设计使我对单片机的理论知识有了具体的认识。通过这次设计,我的理论知识掌握得更扎实,动手能力明显提高。通过实践让我知道了单片机大致开发的步骤同时,通过网上搜索等多方面的查询资料,比如我们用的AT89S52芯片。通过本次课程设计我学到许多在书本上没有的知识,也认识到理论联系实践的重要。理论学得好,但如果只会纸上谈兵,一点用都没有。通过这次课程设计,我掌握了常

25、用元件的识别和测试,通过对电路的分析,并利用其它电路作为辅助,解决了在制作数字钟时经常出现的数字显示不了,显示数字模糊的问题。以及如何提高电路的性能等等。 在实验过程中,遇到了不少的问题。比如:显示不出数字,数字模糊这样的问题。在老师和同学的帮助下,把问题一一解决,那种心情别提有多高兴,很有成就感。同时,在实验中暴露出我们在理论学习中所存在的问题,有些理论知识还处于半只半解的状态,通过实验加深了我们对这些知识的理解。特别是在排查电路,程序问题时,使我们熟练掌握了一些处理电路故障程序BUG的方法。虽然两周的课程设计很短,但是充分锻炼了我们的团队合作能力以及对知识点的巩固,也培养了我们独立思考和设

26、计能力,树立了对知识点应用的信心 最后,我非常感谢同学和老师的无私帮助,由于自身对于许多的东西都了解的不够透彻,许多问题都是在同学的帮助下得以解决。 21 第8章 参考文献 1、王迎旭编.单片机原理与应用M.机械工业出版社. 2、楼然苗编.51系列单片机设计实例M.北京航空航天大学出版社. 3、黄勤编.计算机硬件技术基础实验教程M.重庆大学出版社 4、刘乐善编.微型计算机接口技术及应用M.华中科技大学出版社. 5、陈光东编.单片微型计算机原理及接口技术M.华中科技大学出版社. 22 电气与信息工程系课程设计评分表 项 目 设计方案的合理性与创造性 开发板焊接及其调试完成情况 硬件设计或软件编程完成情况* 硬件测试及软件调试结果* 设计说明书质量 设计图纸质量 答辩汇报的条理性和独特见解 答辩中对所提问题的回答情况 完成任务情况 独立工作能力 组织纪律性 综合评分 指导教师签名:_ 评 价 日 期:_ 注:表中标*号项目是硬件制作或软件编程类课题必填内容; 此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件。 23

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号