(论文)单片机电子表 课程设计最新优秀毕业论文资料搜集呕血奉献_第1页
(论文)单片机电子表 课程设计最新优秀毕业论文资料搜集呕血奉献_第2页
(论文)单片机电子表 课程设计最新优秀毕业论文资料搜集呕血奉献_第3页
(论文)单片机电子表 课程设计最新优秀毕业论文资料搜集呕血奉献_第4页
(论文)单片机电子表 课程设计最新优秀毕业论文资料搜集呕血奉献_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学华夏学院单片机原理与接口技术课程设计单片机原理与接口技术课程设计题 目: 数字电子表设计 学院(系): 信息工程系 年级专业: 学 号: 学生姓名: 指导教师: 基于单片机数字电子表的设计 摘 要 随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。本课程设计是基单片机原理与接口技术的简单应用。运用所学的单片机原理和接口技术知识完成数字电子表的设计。电子表已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使电子表具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。尽管目前市场上已有现成的电子表集成电路芯片出售,价格便宜、使用也方便,但鉴于电子表电路的基本组成包含了数字电路的主要组成部分,因此进行电子表的设计是必要的,用C语言设计电子表显示程序,要求根据输入程序显示电子表画面。研究电子表及扩大其应用,有着非常现实的意义。关键词 LED,定时/计器数, C语言,调试,运行。 目录前言5第一章 数字电子表的设计要求与设计方案61.1 课程设计的目的61.2 要求完成的主要任务61.3 设计方案6第二章 数字电子表的硬件设计82.1 电子表的硬件框图82.2 输入、输出显示电路设计92.3 系统总电路图 9第三章 数字电子表的软件设计103.1 主程序流程图103.2 中断程序设计103.3 显示处理程序设计123.4 电子表主程序设计13第四章 数字电子表的安装与调试174.1 硬件调试17 4.2 软件调试174.3 调试过程17第五章 设计体会与小结18 5.1 总结设计体会与心得18附录19参考文献213前言单片机课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。在生活中,数字电子表的优点受到人们的欢迎,在很多场合得到了广泛的应用。单片原理及应用是一门技术性、应用性很强的学科,实践教学是它的一个极为重要的环节。不论是硬件扩展、接口应用还是编程方法、程序调试,都离不开实验教学。如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节的局面。任随书本上把单片机技术介绍得多么重要、多么实用多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会感到对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS52单片机都种资源应用并具有综合功能的数字电子表的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。该电子时钟不但具有定时作用还有温度采集作用。定时部分可以显示时、分、秒,月,日,而且用按键还可以实现时间和日期的调整。在这次单片机课程设计中,同学们完成了单片机数据采集与定时系统的硬件电路设计。本次综合实践是在此基础上,完成该系统的软件设计与调试。待仿真成功后,再将程序烧写入单片机中。第一章 数字电子表的设计要求与设计方案1.1 课程设计的目的 (1)巩固,加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力; (2)培养针对课题需要,选择和查阅有关手册,图标及文献资料的自学能力,提高组成系统,编程,调试的动手能力; (3)通过对课题设计方案的分析,选择,比较,熟悉单片机用系统开发,研制的过程,软件硬件设计的方法,内容及步骤。1.2要求完成的主要任务:(1)成数字电子表的设计和调试。 (2)要求采用四位八段数码管显示时间和日期,并且可以用按键修改时间和日期。1.3 设计方案(1)系统结构 整个电子时钟系统电路可分为五大部分:中央处理单元(CPU)、电源电路部分、显示部分、键盘输入部分。(2)显示部分显示部分是整个电子时钟最为重要的部分,它为时间的显示的显示,共需要8位LED显示器。采用动态显示方式,所谓动态显示方式是时间(或温度)数字在LED上一个一个逐个显示,它是通过位选端控制在哪个LED上显示数字,由于这些LED数字显示之间的时间非常的短,使的人眼看来它们是一起显示时间数字的,并且动态显示方式所用的接口少,节省了CPU的管脚。由于端口的问题以及动态显示方式的优越性,在此设计的连接方式上采用共阴级接法。显示器LED有段选和位选两个端口,首先说段选端,它由LED八个端口构成,通过对这八个端口输入的不同的二进制数据使得它的时间显示也不同,从而可以得到我们所要的时间显示。(3)实现数字时钟原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,没产生一次中断,存储器内相应的秒值加1:;若秒值达到60,则将其清零,并将相应的分字节值加1若分值;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。第二章 数字电子表的硬件设计2.1 电子表的硬件框图电子表电路的核心是AT89C52单片机,其内部带有4KB的Flash ROM,无需外扩程序存储器;电子表没有大量的运算和暂存数据,现有的128B片内RAM已满足要求,也不必外扩片外RAM。系统配备6位LED显示,采用单片机的并行口作为键盘,显示器接口电路。利用P0口作为8位LED显示的位选口,其中,P0.0P0.7分别对应为LED0LED7,P1口则作为段选口,P2口的低3位为键盘输入口,对应02行,P0口同时用作键盘的扫描口由于采用公阴极数码管,因此P0口输出低电平选中相应的位,而P1口输出高电平点亮相应的段。单片机晶振手动复位数码管显示时间调整按键日期调整按键2.2 输入、输出显示电路设计串行口 AT89C52P1口4位独立式键盘移位寄存器移位寄存器LED1LED22.3 系统总电路图第三章 数字电子表的软件设计3.1 主程序流程图在编程,首先进行了初始化,定义程序的入口地址以及中断的入口地址,自主程序开始定义了一组固定单元用来存储计数的时、分、秒,在显示初值之后,进入主循环。在主程序中,对不同的按键进行扫描,实现秒表,时间调整,复位清零等功能。系统总流程图如下图:/*/* 3.2 中断程序设计 */*/void time1_isr(void) interrupt 3 using 0/定时器1中断;定时器1用来动态扫描 static unsigned char num; TH1=0xF8;/重入初值 TL1=0xf0; switch (num) case 0:P2=0;P0=StrTabnum;break; /分别调用缓冲区的值进行扫描 case 1:P2=1;P0=StrTabnum;break; case 2:P2=2;P0=StrTabnum;break; case 3:P2=3;P0=StrTabnum;break; case 4:P2=4;P0=StrTabnum;break; case 5:P2=5;P0=StrTabnum;break; case 6:P2=6;P0=StrTabnum;break; case 7:P2=7;P0=StrTabnum;break; default:break;num+; /扫描8次,使用8个数码管if(num=8) num=0;void tim(void) interrupt 1 using 1/定时器0中断static unsigned char count;/定义内部静态变量TH0=0xd8; /重新赋值TL0=0xf0;count+; switch (count) case 0: case 20: case 40: case 60: case 80:Displaypro(); /隔一定时间调用显示处理 break; default:break; if (count=100) count=0; second+; /秒加1 if(second=60) second=0; minute+; /分加1 if(minute=60) minute=0; hour+; /时加1 if(hour=24) hour=0; day+; if(day=28)&(month=2) day=1;month+; if(month7) if(month%2=0) month+;day=1; /*/* 3.3 显示处理程序设计 */*/void Displaypro(void) if(!KEY2) /按键1去抖以及动作 if(!KEY2) delay(40000); t+; if(t%2=0) if(!KEY1) /按键1去抖以及动作 if(!KEY1) delay(40000); hour+;if(hour=24)hour=0; if(!KEY3) /按键1去抖以及动作 if(!KEY3) delay(40000); minute+;if(minute=60)minute=0; if(!KEY4) /按键去抖以及动作 delay(15000); if(!KEY4) if(minute=1) minute-; Displaypro(); i=hour;j=minute;k=second; if(t%2=1) i=month;j=day;k=0; StrTab0=tabi/10; /显示小时十位 StrTab1=tabi%10; /显示小时个位 StrTab2=0x40; /显示- StrTab3=tabj/10; /显示分钟十位 StrTab4=tabj%10; /显示分钟个位 StrTab5=0x40; /显示- StrTab6=tabk/10; /显示秒钟十位 StrTab7=tabk%10; /显示秒钟个位 /*/* 3.4 电子表主程序设计主函数 */*/main()/主函数 TMOD |=0x01;/定时器0 10ms in 12M crystal 用于计时 TH0=0xd8; /初值 TL0=0xf0; ET0=1; TR0=1; TMOD |=0x10; /定时器1用于动态扫描 TH1=0xF8; /初值 TL1=0xf0; ET1=1; TR1=1; EA =1; /总中断允许if(t%2=0)while(1)/主循环 if(!KEY1) /按键1去抖以及动作 if(!KEY1) delay(40000); hour+;if(hour=24)hour=0; /正常时间 小时 加1 Displaypro(); if(!KEY3) /按键去抖以及动作 delay(20000); if(!KEY3) minute+;if(minute=60)minute=0;/分加1 Displaypro(); if(!KEY4) /按键去抖以及动作 delay(15000); if(!KEY4) if(minute=1) minute-; Displaypro(); if(t%2=1)while(1)/主循环 if(!KEY1) /按键1去抖以及动作 delay(20000); if(!KEY1) month+;if(month=13)month=1; /正常时间 小时 加1 Displaypro(); if(!KEY3) /按键去抖以及动作 delay(20000); if(!KEY3) day+;if(day=29)&(month=2)day=1; if(month7) if(month%2=0) if(day=32) day=1; if(month%2=1) if(day=31) day=1; Displaypro(); 第四章 数字电子表的安装与调试4.1 硬件调试单片机基础电路包括电源,单片机,外部时钟振荡电路,复位电路和外部接口电路。调试过程注意一下几点:1 检查电源是否完好。2 单片机电源要连接正确,并且保证AT89C52的P1口输出高电平。3 如果使用P0口做I/O口,要接上拉电阻。4.2 软件调试在硬件调试完毕的基础上,需要进一步完善程序,也就是进入软件调试阶段。在本次设计中,软件调试的主要部分是时钟子程序的调试,在硬件调试阶段,已经将时钟程序调试完毕了,只需在主程序中调用即可。具体步骤:通过Keil软件编写程序,烧写AT89C52芯片中,在上电的情况下,8个LED数码管显示的是01-01-00,当按键S2有按下的时候,启动时钟,当再次检测到按键S2按下时,就会显示月日;当按键S1有按下的时候,时进行加1操作;当按键S3有按下的时候,分进行加1操作;当按键S4有按下的时候,分进行减1操作;通过S1,S2,S3,S4的配合调节,可以显示当前正确的时间和日期,达到了设计要求的目的。4.3 调试过程1 硬件调试完成后,将编写好的程序烧写在AT89C52芯片中,在上电的情况下,8个LED数码管显示的是01-01-00,然后调节S1,S2,S3,则初步达到了设计的要求,但是当调节分的时候调的超过了当前的时间,则需要重新按下60次S3,经过考虑后,添加了一段分钟减一程序,相应的增加按键S4;当时间调超过后,可以按下S4进行减操作,大大方便了时间校正的操作。2 在调试的过程中,按下按键时,LED显示都会闪烁一下,理想的应该是要调节时间或日期时,所要调节的值的LED会闪烁,这一点在调试的过程中没能实现。第五章 设计体会与小结5.1 总结设计体会与心得本次做的电子表是以单片机(AT89C52)为核心,结合相关的元器件(共阴极LED数码显示器、锁存/译码等),再配以相应的软件,达到实现时钟日期显示的功能,也具有显示和时钟、日期的校准,以及多路开关定时输出等功能,在软件调试的过程中,遇到了很多困难,第一次是只实现了时间的调试,未能实现日期的显示,后来经过调试后达到了日期显示的效果,唯一有一点遗憾的是按键按下去之后总会闪烁一下,但整体上这次单片机的课程设计自我感觉还是很完美的,经过自己的努力制作出了数字电子表,第一次做编写单片机的程序能有成功,也让自己对单片机有了更大的兴趣。通过这次的设计使我认识到我对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争。通过两周的学习,我对单片机的硬件设计,软件设计掌握,对硬件电路的工作原理有了新一层的理解。这是我第一次编写单片机的程序,通过把课本上的理论与生活中的实际问题结合起来,使我学到很多东西。把程序拆分成几部分一一进行编写、调试,在编程中出现问题时,严格谨慎,仔细分析、调试,一定会从中发现错误,克服困难。附录一部分源程序在软件设计的章节中,已经介绍了中断程序设计,显示处理程序设计,电子表主程序设计,在此附录中介绍头文件,端口定义,以及延时函数等内容;#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义sbit KEY1=P30; /定义端口参数sbit KEY2=P31;sbit KEY3=P32;sbit KEY4=P33;sbit LED=P12; /定义指示灯参数code unsigned char tab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /共阴数码管 0-9unsigned char StrTab8; /定义缓冲区unsigned char minute=00,hour=00,second=00; /定义并且初始化值 00:00:00unsigned char month=01, day=01,t=1,j,i,k; /定义变量并设置月日初

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论