




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程名称: 单片机课程设计 题 目: 多功能电子表 学 院: 环境与化学工程 系:过程装备与测控工程 专 业: 测控技术与仪器 班 级: 测仪103 学 号: 5801210114 学生姓名: 汪 超 起讫日期: 2012-12-282013-1-7 指导教师: 杨大勇、杨俊清、熊剑 摘要单片机就是微控制器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计就是应用单片机制作多功能电子表,该电子表包含四个部分:电子时钟、电子日历、电子秒表、闹
2、钟。本设计采用的是STC89S52单片机,该单片机采用的MCU51内核,具有很好的兼容性,内部带有8KB的ROM,能够存储大量的程序,采用STC_ISP软件给单片机烧写程序。除单片机外其他主要部件有12MHz的晶振、3×3矩阵键盘、四位八段共阳极数码管、无源蜂鸣器。根据晶振的频率设置单片机定时器的特殊功能寄存器TH0/TH1和TL0/TL1从而实现高精度的定时,本设计定时器T0用作时钟计时,T1用作秒表及蜂鸣器的频率发生器;矩阵键盘则是用来实现功能的切换及时间、日期、闹钟的设置等操作,所有需要显示的内容均在数码管上显示。关键词:电子表 日历 闹钟 秒表 多功能第 1 页 共 48 页
3、目录一、设计任务、要求11.1、设计任务:11.2、设计要求:1二、方案总体设计22.1、显示模块22.2、实时时间计算模块22.3、按键控制模块22.4、声音报警模块22.5、总体设计:2三、硬件设计43.1、单片机最小系统43.1.1、时钟信号的产生43.1.2、复位电路43.2、数码管显示模块53.2.1、数码管引脚图53.2.2、数码管连线电路53.3、矩阵键盘63.4、蜂鸣器电路63.5、整体电路原理图63.6、Lochmaster硬件电路7四、程序流程图9五、 系统仿真与调试115.1、Proteus仿真原理图115.2、实物图135.3、使用说明14六、设计总结及心得体会15附录
4、一:源程序代码16附录二:主要参考资料45第 1 页 共 48 页一、设计任务、要求1.1、设计任务:利用单片机、3×3矩阵键盘、数码管、无源蜂鸣器实现具有日期、时间、秒表、闹钟功能的多功能电子表。1.2、设计要求:1、准确计时,以数字形式显示月、日、时、分、秒。2、小时以24小时计时形式,分秒计时为60进位,日期按平年计算 3、采用3×3矩阵键盘对电子表进行控制,可进行功能切换、控制及时间日期的设定。4、闹钟功能,可任意设定闹钟时间,一旦走时到该时间,能以声或光的形式告警提示。5、日历功能,可任意设定日期,通过按键可进入日期显示界面。 6、秒表功能,计时精度为0.01s,
5、可任意时刻暂停、继续,同时应具有秒表清零功能。7、复位电路采用按键复位电路。二、方案总体设计本次设计多功能电子表,使用了STC89C52单片机芯片控制电路,单片机控制电路简单,电路简明易懂,使用键盘键上的按键来调整电子表的月、日、时、分及秒表的开始、暂停、继续、清零,用一蜂鸣器来进行定时提醒,编程采用Keil C,编程简单便捷且调试方便,这样通过四个模块:键盘、芯片、蜂鸣器、数码管即可满足设计要求。2.1、显示模块数码管是利用发光二极管的特性组合而成数字显示器件,通过控制相应的二极管的状态显示相应的数字。要使数码管正常显示就得有驱动电路驱动相应的段码,数码管的现实方式可分为静态显示和动态显示,
6、静态显示方式只适合显示单个的数字。本设计采用的数码管为四位八段共阳极数码管,故此采用动态显示。2.2、实时时间计算模块AT89S52单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,使用12MHz的晶振就能实现高精度的计时,因此可以利用此功能实现计时。2.3、按键控制模块本设计用到的键盘有9个按键,由于按键数目较多,若采用独立按键的连接方式需要用到一个以上的I/O口,故此将键盘连接成3×3矩阵键盘,由P3口控制,共占六个端口。2.4、声音报警模块此模块采用无源蜂鸣器实现,通过编写相应的程序,当满足一要求时,给蜂鸣器提供不同频率的方波,使其发出不
7、同频率的声音,把不同频率的声音按一定的时序输出,从而发出音乐。2.5、总体设计:总体框架如图2-1所示:图2-1总体硬件框架图总体构思如图2-2所示:图2-2总体构思框架图三、硬件设计3.1、单片机最小系统3.1.1、时钟信号的产生89C52芯片内部有一个高增益法相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自己振荡器,电路如图3-1所示。图3-1晶振电路3.1.2、复位电路复位操作有上电自动复位和按键手动复位两种方式,本设计采用按键电平复位,结构如图3-2所示。图3-2复位电路3.2、数码管显示模块3.2.1、数码管引
8、脚图图3-3四维八段共阳极数码管3.2.2、数码管连线电路本设计中是用P1口控制数码管的段选,用P2口的高四位控制数码管的位选。连线电路图:图3-4数码管连线电路图3.3、矩阵键盘本设计采用3×3矩阵键盘,通过对行列扫描来确定那个按键按下,按键序号及接线图如下图所示:图3-5矩阵键盘连线电路图3.4、蜂鸣器电路本课程设计使用的蜂鸣器是无源蜂鸣器,通过对给蜂鸣器一定频率的方波,驱动蜂鸣器蜂鸣器发出相应频率的声音,其中方波可对端口进行连续取反实现,取反频率由定时器控制,驱动电路如下图所示:图3-6蜂鸣器连线电路图3.5、整体电路原理图整体电路原理图如图3-7所示:图3-7总体电路原理图3
9、.6、Lochmaster硬件电路图3-8硬件电路正面视图图3-9硬件电路背面视图四、程序流程图程序主要流程如图4-1所示,时间、日期设置部分流程如图4-2所示。图4-1程序流程图图4-2程序流程图时间、日期设置部分5、 系统仿真与调试5.1、Proteus仿真原理图Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现
10、了从概念到产品的完整设计。它是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。以下是用Proteus仿真调试图:图5-1实时时间显示图5-2日期显示图5-3秒表界面图5-4闹钟设置5.2、实物图图5-5实物正面视图图5-6实物图简介5.3、使用说明图5-7按键功能映射图按键序号及对应功能如图5-7所示所示,具体功能为:按键1:秒表进入与退出键按键2、8:上下调整功能键按键3:闹钟时间设定界面进入退出键按键4、6:左右项目切换功能键按键5:设置界面为确定返回,秒表界面为运行与暂停功能键按键7:时间及日期设置界面进入及切换键按键9:日历显示与退出功能键六、设计总结及
11、心得体会通过此次课程设计,第一次将理论用于实际应用,第一次脱离书本自己动手设计并制作一个实物,这使得自己对过去所学知识有了更加深刻的掌握。当理论应用于实际时,总会有一系列的问题需要解决,而这些问题的解决过程中,自己的动手能力得到的非常好的锻炼,与此同时也深化自身对许多相关知识的掌握,知识的广度也得到一定程度的扩充。本次课程设计对自己即使一次检验,同时也是一次锻炼。从最开始的选题,到之后电路设计、电路焊接、编程、调试等等,一步步走过来,从一开始的知之甚少,到后来制作完成,如果用一句来概括,那就是自己一直在实践中成长。经过这次系统性的课程设计,让自己得到一次综合性的锻炼,对设计的流程有了大体的掌握
12、,为今后自身的发展提供了宝贵的经验。设计的每一个过程对自己都有很大的启发,以往自己几乎不曾接触过硬件电路,对硬件电路设计的一些意识几乎为零,而在电路设计及焊接的过程中,自己的硬件知识得到了扩充,设计意识也得到了一定的训练。在软件编程方面,可以说这次编写的程序是自己到目前为止写过的最长的程序了,不得不说编程是一项累人的活,需要细心和耐心,简单的结构错误容易发现,而一些其他各种各样的错误可能极为隐晦,有时一个小错误花上一天也难以找到。在本次编程及调试过程中,自己对编程和调试有了较为深刻的认识,通过不断地发现问题解决问题,感觉到基本上所有不合理都是可以优化的,所有的错误都是可以理解的,编程和调试的时
13、候切记不能急躁,出现问题时,应认真分析问题产生的原因,而当你真正发现问题的根源时,就会发现问题和原因之间的联系时非常有逻辑,而认真分析问题的出现的前因后果是解决问题最有效的途径。此次编程也让自己对自身编程水平有了一定的了解,认识到自己在编程上存在非常多的欠缺,以前学的C语言的知识有很大一部分不熟练甚至陌生,在整体上自己不能对编程有很规范的整体把握,编写的程序存在诸多不够合理。总而言之,本次课程设计对自己而言是一次非常有意义的经历,希望自己能吸取经验,在以后逐步完善自己目前的不足。附录一:源程序代码#include <reg52.h>#define uchar unsigned ch
14、ar#define uint unsigned intuchar num=50,numb=100,numf=0,stnum=100;tnum=0,keyhold1=0x00,keyhold2=0x00,works=0,stworks=0,knum,wnum,knum1=0,knum2,mnum1,mnum2=0,mnum3=3,t1works,mtime,timer1h,timer1l; /worksituation工作状态:0时钟显示,1设置uchar mon1=0,mon2=1,day1=0,day2=1,hour1=1,hour2=2,min1=0,min2=0,alhour1=0,al
15、hour2=6,almin1=0,almin2=0,sec1=0,sec2=0,sts1=0,sts2=0,stms1=0,stms2=0;/定义全局变量uchar code table1=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/P1口 点灭uchar code table2=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/P1口 点亮code unsigned char skycity=6,1,4, 7,1,4, 1,2,12, 7,1,4, 1,2,8, 3,2,8, 7,1
16、,20, 3,1,4, 3,1,4, 6,1,12, 5,1,4, 6,1,8, 1,2,8, 5,1,20, 3,1,4, 3,1,4, 4,1,12, 3,1,4, 4,1,4, 1,2,12, 3,1,20, 1,2,4, 1,2,4, 1,2,4, 7,1,12, 4,1,4, 4,1,8, 7,1,8, 7,1,20, 6,1,4, 7,1,4, 1,2,12, 7,1,4, 1,2,8, 3,2,8, 7,1,20, 3,1,4, 3,1,4, 6,1,12, 5,1,4, 6,1,8, 1,2,8, 5,1,32, 3,1,4, 4,1,8, 1,2,4, 7,1,6, 1,2,
17、8, 2,2,4, 2,2,4, 3,2,4, 1,2,16, 1,2,4, 7,1,4, 6,1,4, 6,1,4, 7,1,6, 5,1,8, 6,1,24, 1,2,4, 2,2,4, 3,2,12, 2,2,4, 3,2,8, 5,2,8, 2,2,24, 5,1,4, 5,1,4, 1,2,4, 7,1,4, 1,2,8, 3,2,8, 3,2,32, 6,1,4, 7,1,4, 1,2,8, 7,1,8, 2,2,6, 1,2,12, 5,1,4, 5,1,16, 4,2,8, 3,2,8, 2,2,8, 1,2,8, 3,2,30, 3,1,20, 3,2,8, 6,2,16,
18、5,2,8, 5,2,8, 3,2,4, 2,2,4, 1,2,8, 1,2,4, 2,2,16, 2,2,8, 1,2,4, 2,2,4, 2,2,8, 5,2,8, 3,2,20, 3,2,8, 6,2,16, 5,2,16, 3,2,4, 2,2,20, 1,2,8, 2,2,8, 1,2,4, 2,2,4, 2,2,4, 7,1,8, 6,1,20, 6,1,4, 7,1,4, 6,1,32, ;code unsigned char freqh= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, / 音阶频率表 高八位 0xF9,0xF9,0xFA,0xFA,0x
19、FB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; code unsigned char freql= / 音阶频率表 低八位 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0x
20、FA,0x16, ; sbit P2_0 = 0xA0;sbit P2_1 = 0xA1;sbit P2_2 =0xA2;sbit P2_3 = 0xA3;sbit P2_4 = 0xA4;sbit P2_5 = 0xA5;sbit P2_6 = 0xA6;sbit P2_7 = 0xA7;void time(); void sec(); /秒void timem1(); /分加void timem2(); /分减void timeh1(); /时加void timeh2(); /时减void timeday1(); /日加 void timeday2();/日减void timemon1()
21、;/月加void timemon2();/月减void stsec();/计时器void stmsec();void display(); /显示void stopwatch(); /秒表显示void calendar(); /日历void set(); void setcal(); void alarm(); /闹钟void alarmm1();void alarmm2();void alarmh1();void alarmh2();void buzzer(); /蜂鸣器服务子程序uchar keycheck(); /按键检测uchar line(uchar x); /按键检测 行扫描voi
22、d delay(); /扫描延时void delay1(); /稳定显示延时void song(); /闹铃void mdelay();/闹铃延时子程序 void main ()TMOD=0x11; /设置定时器t0,t1工作模式1TH0=(65536-20000)/256;TL0=(65536-20000)%256; /t0计时器初值EA=1;ET0=1;ET1=1;TR0=1;P2=0x00;display();void display() works=0; /时钟运行while(1) if(num>=25) /时钟显示状态P2_7=0;delay1();P1=table1hour1
23、;P2_4=1;delay();P2_4=0;delay1();P1=table2hour2;P2_5=1;delay();P2_5=0;delay1();P1=table1min1;P2_6=1;delay();P2_6=0;delay1();P1=table1min2;P2_7=1;/后keycheck 出现delay() 故此不用elseP2_7=0;delay1();P1=table1hour1;P2_4=1;delay();P2_4=0;delay1();P1=table1hour2;P2_5=1;delay();P2_5=0;delay1();P1=table1min1;P2_6=1;delay();P2_6=0;delay1();P1=table1min2;P2_7=1;/后keycheck 出现delay() 故此不用if(mnum1!=min2) mnum2=0;/min2改变 开放闹铃if(knum1>0) knum1-;/防止回跳keycheck();if(knum2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告牌场地租赁合同
- 后勤劳务服务承包合同书
- 数控机床购买合同
- 产品研发与研发人员效率表
- 债务债权转让协议书
- 铺设压沙土施工方案
- 公路护栏加高施工方案
- 汉兰达四门隔音施工方案
- (一模)赣州市2025年高三年级摸底考试物理试卷(含标准答案)
- 桥墩钢筋成品保护方案
- 九年级物理上册22内燃机省公开课一等奖新课获奖课件
- 2025年个人向企业借款合同协议样本
- (二调)武汉市2025届高中毕业生二月调研考试 英语试卷(含标准答案)+听力音频
- 数学-湖北省武汉市2025届高中毕业生二月调研考试(武汉二调)试题和解析
- 中学家长学校工作方案(10篇)
- 高考地理二轮复习【知识精研】大气运动规律-大气受热过程与气温
- 2025年湖南环境生物职业技术学院单招职业倾向性测试题库完整版
- 日内交易策略(TBQ版)
- 煤矿常用机电设备的日常管理-培训课件
- 2025年新执业医师定期考核真题库附参考答案
- 部编版九年级道德与法治上册《第二课创新驱动发展》同步测试题(附答案)
评论
0/150
提交评论