河北工程大学课程设计厨房提醒器_第1页
河北工程大学课程设计厨房提醒器_第2页
河北工程大学课程设计厨房提醒器_第3页
河北工程大学课程设计厨房提醒器_第4页
河北工程大学课程设计厨房提醒器_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、信息与电气工程学院课程设计说明书(2010/2011学年第 二学期)课程名称 : 单片机应用 题 目 :数字钟设计专业班级 : 电气08级3班 学生姓名 : 李海忠 学 号: 080060303 指导教师 : 岑毅南等 设计周数 : 两周 设计成绩 : 2011年7月8日目 录 一、课程设计目的.1 二、课程设计正文.2 1.任务要求说明.21.1、主要任务.21.2、技术要求.21.3、设计思路.21.4、所需器件.31.5、硬件设计.3 1.5.1.STC90C52AD说明.3 1.5.2.数码管说明.4 1.5.3.74LS245说明.5 2.单元模块设计.5 2.1时间显示模块.5 2

2、.2 按键调时模块.6 2.3 显示驱动模块.7 3.原理简介.7 3.1电路原理图.7 3.2、原理介绍.8 4.参数计算.8 5.系统软件设计.8 5.1开发软件Keil C51 uVision3简介.8 5.2单片机程序烧写软件.9 5.3参考程序 .10 6、软硬件调试.18 三、课程设计总结.18 四、参考文献.19 附录一、系统原理图 附录二、PCB图1、 课程设计目的1进一步熟悉和掌握单片机的结构及工作原理。2掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的 计算方法。4通过实际程序设计和调试,逐

3、步掌握模块化程序设计方法和调试技术。5通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。2、 课程设计正文1任务及要求说明1.1主要任务用STC90C52AD作为控制单元,实现数字钟的设计。1) 设计键盘输入电路2) 设计显示电路3) 合理分配地址,编写系统程序4) 利用Protel设计硬件电路原理图并进行软硬件联机调试1.2 技术要求技术要求1、 用P1口控制4只段码管,用2位数码管进行分针时间显示,用2位数码管进行秒针时间显示。2、 可以调整时间,且调整位闪烁提示。3、 设置调节切换键、确认键、加1键和减1键。1.3设计思路1、时

4、间的显示:单片机P0.0P0.3控制位选,可分别选通四只共阴数码管。P2.6控制段选,可点亮选通的数码管。P1.0P1.6控制段码管,将数据送给74LS245驱动数码管显示时间。2、时间的调整:设置4个按钮,分别由P2.0P2.3控制,其编号分别是1到4。1为调节切换键,2为加1键,3为减1键,4为确认开始键。1.4 设计所需器材电阻: 1K (4个) 10K(8个) 3.3k(4个) 300(8个)按键开关:4个瓷石电容:22pF (2个)独石电容:0.22F(5个)电解电容:10F(3个) 1.0F(2个) 47F(4个)晶振:12MHZ(1个)三极管:NPN(3个)共阴极数码管:4个底座

5、:DIP40(1个)DIP16(1个)万能电路板:1个芯片:STC90C52(1片) MAX232(1片) 发光二极管:3个接线端子:1个1.5 硬件设计1.5.1.STC90C52AD说明AT89C51的引说明和功能说明如下:XTAL1 :接外部晶振的一个引脚。在单片机内部,它是一反相放大器输入端,这个放大器构成了片内振荡器。它采用外部振荡器时,些引脚应接地。 XTAL2 :接外部晶振的一个引脚。在片内接至振荡器的反相放大器输出端和内部时钟发生器输入端。当采用外部振荡器时,则此引脚接外部振荡信号的输入。 RST :STC90C52AD的复位信号输入引脚,高电位工作,当要对芯片又时,只要将此引

6、脚电位提升到高电位,并持续两个机器周期以上的时间,AT89C51便能完成系统复位的各项工作,使得内部特殊功能寄存器的内容均被设成已知状态。 P0口(P0.0P0.7)是一个8位漏极开路双向输入输出端口,当访问外部数据时,它是地址总线(低8位)和数据总线复用。外部不扩展而单片应用时,则作一般双向IO口用。P0口每一个引脚可以推动8个LSTTL负载。 P2口(P2.0P2.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),当访问外部程序存储器时,它是高8位地址。外部不扩展而单片应用时,则作一般双向IO口用。每一个引脚可以推动4个LSTL负载。 P1口(P1.0P1.7)口是具有内部提

7、升电路的双向I/0端口(准双向并行I/O口),其输出可以推动4个LSTTL负载。仅供用户作为输入输出用的端口。 P3口(P3.0P3.7)口是具有内部提升电路的双向I/0端口(准双向并行I/O口),它还提供特殊功能,包括串行通信、外部中断控制、计时计数控制及外部随机存储器内容的读取或写入控制等功能。1.5.2 74LS245说明74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。 74LS245还具有双向三态功能,既可以输出,也可以输入数据。 当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动

8、器。 当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收) DIR=“1”,信号由 A 向 B 传输;(发送)当CE为高电平时,A、B均为高阻态。 由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。P0口与74LS245输入端相连,E端接地,保证数据线畅通。8051的/RD和/PSEN相与后接DIR,使得RD且PSEN有效时,74LS245输入(P0.1D1),其它时间处于输出(P0.1D1)。1.5.3数码管LED显示器由8段发光二极管组成,排列成8字形状,称为8段LED显示器,器件内部接线图如图所示:为了

9、显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字09的共阴极字形代码如下表:显示字符0123456789段码0x7b0x110x670x570x1d0x5e0x7e0x130x7f0x5f共阴数码管段码表2.单元模块设计2.1、时间显示模块时间显示模块2.2 按键调时模块按键调时模块2.3 显示驱动模块 显示驱动模块3 .原理简介3.1电路原理图电路原理图3.2、原理介绍(1) 初始时,4个数码管显示全为0,并且秒显示数码管最后一位每秒钟加1.此时,单片机内部定时器0计时,每100m

10、s溢出一次,十次中断秒显加一。单片机P1口不断向245送数据驱动数码管显示。(2) 按下S1时,系统进入调节切换模式,定时器0关闭,计时停止。按S1一下调分,按S1两下条秒。S2、S3分别为加数和减数。S4为确认开始键,按下后系统计时开始。(3) 进入调整时间模式时,数码管闪烁显示提示。4.参数计算1、定时器初值计算定时器0设为16位定时器。外部为6兆的晶体振荡器,故而可知一个机器周期是2微秒。定时器0高八位和第八位分别装入初值TH0=(65536-50000)/256; TL0=(65536-50000)%256。每100ms定时器溢出一次,中断十次刚好1s,秒显示加1.5.系统软件设计5.

11、1开发软件Keil C51 uVision3简介Keil uVISION2 是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS-51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持、PLM、汇编和C语言的程序设计,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。Keil C51集成开发环境主要由菜单栏、工具栏、源文件编辑窗口、工程窗口和输出窗口五部分组成。工具栏为一组快捷工具图标,主要包括基本文件工具栏、建造工具栏和调试工具栏,基本文件工具栏包括新建、打开、拷贝、粘贴等基本操作。建造工具栏主要包括文件编译、目标文件编译连接、所有目标文件编译连接、目标选项和

12、一个目标选择窗口。调试工具栏位于最后,主要包括一些仿真调试源程序的基本操作,如单步、复位、全速运行等。在工具栏下面,默认有三个窗口。左边的工程窗口包含一个工程的目标(target)、组(group)和项目文件。右边为源文件编辑窗口,编辑窗口实质上就是一个文件编辑器,我们可在这里对源文件进行编辑、修改、粘贴等。下边的为输出窗口,源文件编译之后的结果显示在输出窗口中,会出现通过或错误(包括错误类型及行号)的提示。如果通过则会生成“HEX”格式的目标文件,用于仿真或烧录芯片。基本环境如图2-1所示:MCS-51单片机软件Keil C51开发过程为:建立一个工程项目,选择芯片,确定选项。建立汇编源文件

13、或C源文件。用项目管理器生成各种应用文件。检查并修改源文件中的错误。编译连接通过后进行软件模拟仿真或硬件在线仿真。 Keil C51软件的运行界面5.2单片机程序烧写软件STC90C52AD系列单片机大部分具有在系统可编程特性,单片机在用户系统上即可在线烧录用户程序,而无需将单片机从已经生产好的产品上拆下,在用通用编程器进行烧写程序。大部分STC90C50AD系列单片机在销售给用户之前已经在单片机系统内部固化了ISP系统引导程序配合PC端得控制程序即可将用户的程序代码下载进单片机内部,故无需编程器烧写程序。 5.3参考程序 #include<reg52.h>#define uint

14、 unsigned int#define uchar unsigned charsbit S1=P20;sbit S2=P21; sbit S3=P22;sbit S4=P23;sbit DULA=P26;void delay(uint t);void display(uint k,m,n,p,q);void fenjia(); void miaojia();void fenjian();void miaojian();void tiaozheng();void tiaobiao();void init_t0(); uint NUM; uint SEC;uint flag1=0;uint i=

15、0;uchar code seg_table1=0x7b,0x11,0x67,0x57,0x1d,0x5e,0x7e,0x13,0x7f,0x5f; void main()NUM=0; SEC=0;init_t0();while(1)while(!flag1)display(SEC,0x01,0X02,0X04,0X08); if(S4=0)delay(30);if(S4=0) flag1=1;if(S1=0) delay(30); if(S1=0)TR0=1; if(flag1)while(flag1)tiaobiao();void delay(uint t)uint x,y;for(x=t

16、;x>0;x-)for(y=120;y>0;y-)void display(uint k,m,n,p,q) /秒显示最低位0x01,第二位0x02,第三位0x04,第四位0x08uchar miao,shimiao,fen,shifen;shifen=k/600; fen=k%600/60;shimiao=k%60/10;miao=k%10;P0=m; /把最低为数码管选中DULA=1;P1=seg_table1miao;DULA=0;delay(1);P0=n; /选中第二个数码管DULA=1;P1=seg_table1shimiao;DULA=0;delay(1);P0=p;

17、/选中第三个数码管DULA=1;P1=seg_table1fen; DULA=0;delay(1);P0=q; /选中第四个数码管DULA=1;P1=seg_table1shifen;DULA=0;delay(1);void init_t0()TMOD=0x01; /0000 0001 T0设为16为定时器TH0=(65536-50000)/256; /100ms溢出TL0=(65536-50000)%256;EA=1; /开总中断ET0=1; TR0=1; void t0() interrupt 1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;NU

18、M+; /每100ms加1if(NUM=10)NUM=0;SEC+;if(SEC=3600)SEC=0;/*调时函数*/void fenjia()if(S3=0)&&(SEC/600<=5)&&(SEC%600/60<=9) SEC=SEC+60;if(SEC/600=6)SEC=0;void miaojia()if(S3=0)&&(SEC%60/10<=5)&&(SEC%10<=9) SEC+;if(SEC%60/10=6)SEC=0;void fenjian() if(S2=0)&&(S

19、EC%600/60>0)|(SEC/600>0) SEC=SEC-60;void miaojian() if(S2=0)&&(SEC%10>0)|(SEC%60/10>0) SEC-;/*按键调时*/void tiaozheng()if(S4=0)if(i<=4)i+;if(i=4) i=0;while(!S4); void tiaobiao() if(S4=0)delay(30);if(S4=0)TR0=0; tiaozheng();while(!S4); if(i=1)if(S3=0)delay(30); if(S3=0)fenjia();wh

20、ile(!S3); if(S2=0)delay(30); if(S2=0)fenjian();while(!S2); display(SEC,0,0,0X04,0X08); delay(5);display(SEC,0,0,0,0);delay(10);display(SEC,0,0,0X04,0X08); if(i=2) if(S3=0)delay(30); if(S3=0)miaojia();while(!S3); if(S2=0)delay(30); if(S2=0)miaojian();while(!S2); display(SEC,0X01,0X02,0,0); delay(5);d

21、isplay(SEC,0,0,0,0);delay(10);display(SEC,0X01,0X02,0,0); if(i=3) flag1=0; 6.软硬件调试系统调试:根据系统设计方案,本系统的调试共分为两大部分:硬件调试,软件调试。(1)硬件调试 对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。首先用数字万用表对实物板上的各元器件进行测试,在测试过程中,检验出一些错误,如数码管的两个引脚短接了,导致数码管显示不正确,将两引脚分开后,数码管正常工作。(2)软件调试软件调试采用单片机仿真器keil uVision及protus,将编好的程序进行调试,主要是检查语法错误。再进行仿

22、真,检验各个子程序是否正确执行,和硬件模块的协调性。三、课程设计总结 课设心得时间飞快,两个星期的课程设计已接近尾声。两个星期的课程设计让我学到了很多。学到的不仅仅是如何查找资料,画原理图、pcb,写程序及调试电路板,更有贯穿课程设计始终的团队精神。一项工程一个人很难完成,而必须依靠团队的力量。有了团结的队伍才能做出完美的设计,才能完成伟大的工程。在设计之前,我翻阅了上课时做的笔记,看了下老师上课时用的课件,又去图书馆查阅了一些资料。这样对单片机应用课程设计有了大体思路:首先,研读课程设计任务书,定制设计方案。其次,根据定制的方案绘制原理图并生成pcb。再次,根据原理图及pcb焊制电路板,写程

23、序并进行软硬件调试。最后,撰写报告。课程设计第一天,班长把各组的设计题目发到各组手中,我们的课设的题目是“数字钟设计”。看到题目后我很高兴,因为在创新实验室我曾经做过比这个复杂得多的数字钟。看完设计要求后,我就开始着手绘制原理图。不过绘图的时候问题出现了。我不知到老师那到底有什么器件,单片机最小系统好说,数码管驱动用什么器件就要看老师那有什么了。当时考虑了下驱动数码管用74HC245可以,用573可以,用三极管也行。于是我就大概画了个原理图。当时用的是两片74HC573,因为看到课设任务书上的要求是用P1口控制4只段码管。有了两片573单用P1口就能驱动数码管显示。天气很热,我们的工作也很累,汗水打湿了我们的衣衫,但我们却很开心。因为我们收获的不仅仅是一张原理图还有团队合作精神。实验课上我把画好的原理图给老师审查了一下,后来得知实验室没有573,于是我快速回实验室把两片573改成了一片245和四个三极管。等我再到老师办公室的时候得知器件领没了,得等下一批了。唉,

温馨提示

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

评论

0/150

提交评论