ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:819.17KB ,
资源ID:5990672      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5990672.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简易自动打铃系统带程序版.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

简易自动打铃系统带程序版.docx

1、简易自动打铃系统带程序版湖南科技大学课程设计报告课程名称:单片机原理及应用课程设计设计题目: 电阻测量 院 系: 通信与控制工程系 专 业: 通信工程 班 级: 学生姓名: 学 号: 08409218 08409224 起止日期: 2010年12月20日 2010年12月31日 指导教师: 教研室主任: 指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年 月 日 简易自动打铃系统设计设计要求

2、1.基本计时和显示功能(12小时制)。2.可设置当前时间(包括上下午标志,时、分的数字显示)。3.能在上午7:30(早自习)和下午10:30(晚熄灯)定点打铃,且每次打铃均为响铃5s,停2s,再响5s。1.方案论证与对比1.1方案一 采用时钟芯片和键盘实现功能方案一原理框图如图1-1所示:图 1-1 采用时钟芯片和键盘实现功能该系统用DS1302对时、分、秒计时和设置打铃时间,采用三线串行数据传输接口与STC89C52进行同步通信,用矩阵键盘来设置时间值,并通过8255芯片读入设置值,最后通过89C52单片机芯片综合控制1,把当前时间送到数码管显示,到点把信号送入蜂鸣器,实现打铃。1.2方案二

3、:采用中断定时实现功能方案二原理框图如图1-2所示:图 1-2 采用中断定时实现功能该系统以STC89C52单片机为核心控制部件。用8255做I/O拓展芯片,数码管接8255的PA、PB引脚,用动态扫描的方式显示当前时间。蜂鸣器与单片机的P2.0口相连,当打铃时间到时,由STC89C52发出打铃指令。以外部INT0和INT1中断按钮实现调时功能。1.3方案比较本设计要求能实现基本计时和打铃功能。计时和打铃时间设计,方案一中用到了DS1302时钟芯片计时和打铃时间设置;方案二中采用定时器中断来计时并结合软件设置打铃时间。上述两种方案中:方案一的外围硬件电路设计复杂,而且时钟芯片没有得到充分利用,

4、而方案二的软件计时具有硬件开销小,成本低,外围电路设计简单等优点。调时设计,方案一中用矩阵键盘实现调时功能;方案二中采用外部中断0和1的两个按钮来实现调时。上述两种方案中:方案一的软件设计比方案二的难度系数大,使程序易读性不强。综合对计时的精密程度要求不高的本系统,本设计采用方案一来实现功能。2.单元电路设计与论证本设计主要由STC89C52单片机芯片与8255芯片组成的模块为控制核心、蜂鸣器电路模块实现打铃功能、中断0、1按钮模块调整当前时间、数码管显示模块显示时间,由以上四大模块构成了本系统,详细电路图见附录一,硬件设计总框图如图2-1:图2-1硬件设计总框图2.1单片机、I/O拓展图 2

5、-2 主控电路框图STC89C52RC是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。STC89C52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级

6、2层中断嵌套中断,2个16位可编程定时/计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。其主要特性1如有:与MCS-51 兼容;8k可反复擦写(1000次)Flash ROM;全静态工作:0Hz24MHz;三级程序存储器锁定;256*8位内部RAM;32可编程I/O线;2个16位可编程定时/计数器;5个中断源;可编程串行通道;低功耗的空闲和掉电模式。I/O拓展采用8255芯片,单片机用89C52,电路框图如图2-2所示。2.2打铃电路设计采用P型三极管为蜂鸣器提供5V电源,并把STC89C52的P2.0口与三极管的基极相连接,当P2.0口有低电平输入出时,三极管导通2,蜂鸣

7、器响应,从而实现打铃功能。电路框图如图2-3所示:图2-3打铃电路框图2.3时间设置电路设计用中断0开关作为移位开关并接入SCT89C52芯片的P3.2口,设置所需调节的显示位;用中断1开关作为加一开关并接入SCT89C52芯片的P3.3口,对所选调节位进行加一操作。利用中断按键实现时间设置的电路框图如图2-4所示:图 2-4 时间设置电路框图2.4数码管电路设计8255的PA口控制数码管的位选,低电平有效;PB口做为段选输出,接1K欧姆的限流电阻3。如图2-5所示:图2-5数码管显示电路框图3系统软件工作流程图3.1主程序工作流程图 3-1 主程序流程图主程序首先设置8255模式,并打开中断

8、0,设置中断为边沿触发模式;其次在死循环中执行读秒显示子程序,当定时器满一秒时,在显示缓冲区中时间加一,等待送入数码管显示;再次按键扫描子程序,如果有中断0或中断1按钮被按下时,则转入相应功能的子程序中;最后如果当前显示时间满足预设打铃条件,通过打铃判断子程序跳入对应的打铃方式中执行4。详细主程序见附录二,主程序流程图如图3-1。3.2定时器中断显示子程序此子程序为本设计的核心之一,首先初始化定时器T0,设置T0为工作方式1,其初始值为3CB0H(既每次溢出定时50ms),并对其循环20次,然后把时间加1s,并送入显示缓冲区等待显示5。显示时,先取出内存地址中的数据,然后查得对应的显示用段码从

9、PB口输出,PA口将对应的数码管选中供电,就能显示缓冲区中的数据值。为了显示秒位和上下午标志在数码管显示上特加了“”、“A”、“P”这三个特殊字符子。程序流程图如图3-2:图 3-2定时器中断显示子程序流程图3.3中断服务子程序此子程序是为调时时服务的,首先初始化定时器T1,设置T1为工作方式1,其初始值为3CB0H(既每次溢出定时50ms)1,并对其循环8次,然后使数码管被选中的调时位闪烁,子程序流程图如图3-3所示:图 3-3 T1中断服务程序流程图3.4时间设定子程序 时间设定模块的设计要点是按键的去抖处理与“一键多态” 5的处理。即只涉及2个键完成了6位时间参数的设定。“一键多态”即多

10、种功能的实现思想史,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。图 3-4 键盘扫描子程序流程图4.系统功能实际测试4.1程序实际编译测试在Keil C51编译环境下编译过程中所产生的误差主要是在重装初值的过程中大约需要8个机器周期,本设计采用在程序开始时对定时器赋初值多加8个机器周期来消除此误差。最后在Keil C51编译环境下编译通过,0警告,0错误。4.2系统实际测试实际效果如图4-2所示,达到设计要求。图4-2实物图4.3 软件调试步骤1、打开软件后,在Project菜单中选择New Project命令,打开一个新项目。保存此项目,输入工程文件名后,并保存工程文件的目录。

11、2、为项目文件选择一个目标器件,即选择8051的类型。在Data base 列表框中选择“ATML 89C52”,确定。3、上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”。4、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。5、开始编译,对项目文件进行编译。若没有错误后进行硬件调试。4.4子程序调试步骤子程序调试应一个模块一个模块地进行,首先单独调试各功能子程序,检查程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来进行总调试。故调试步骤

12、6如下:A、蜂鸣器的调试调试方法:先把打铃程序下载到单片机,让蜂鸣器发声,看是否在正确的时间内实现打铃。B、数码管程序调试正确的显示时间是整个程序的关键之一。调试方法:先把程序下载到单片机,让数码管显示,是否正确的显示时间的变化。C、键盘调时序正确的显示所调的时间是整个程序的关键之一。调试方法:先把键盘程序和显示程序下载到单片机,让数码管显示,是否正确的所调时间的变化。4.5调试结果实现计时和显示功能(12小时制),可设置当前时间(包括上下午标志,时、分的数字显示),能在上午7:30和下午10:30定点打铃,且每次打铃均为响铃5s,停2s,再响5s。4.6系统误差及性能分析经测试该简易自动打铃

13、系统在一天内会出现时间误差,该误差主要是由于晶振自身的误差所造成的。另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累积误差很小,可以忽略。5.设计总结通过这次课程设计,我们得到了很多收获和体会,懂得了团队合作的重要性和必要性,以及工程设计的大体过程。第一,巩固和加深了对单片机基本知识和理解,提高了综合运用所学知识的能力。第二,增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。第三,通过实际方案的分析比较,设计计算,安装调试等环节,初步掌握了简单使用电路的分析方法和工程设计方法。第四,在这次课程设计过

14、程中,光有理论知识是不够的,还必须懂一些实践中的知识。所以在课程设计的实践中,我们应将实验课与课堂教学结合起来,锻炼自己的理论联系实际的能力与实际动手能力。第五,掌握了比较常用的仪器的使用方法,提高了动手能力。第六,培养了严谨的工作作风和科学态度。总之这次课程设计,培养了我们综合应用单片机原理及应用的理论知识和理论联系实际的能力;在设计的过程中还培养了我们的团队精神,同学共同协作,一齐商量讨论,解决了许多问题。这一切都令我们受益匪浅,在今后的学习工作中我们会一如既往,不断努力。6.详细仪器清单类型规格数量备注5V直流电源ZH-60031USB232converterU232-P91电阻1k13

15、个芯片82551片扩展I/O芯片STC89C521片晶振12M1个蜂鸣器无源1个数码管3位共阳极2个极性电容0.1UF1个非极性电容30pf2个LED2个工作指示灯按键开关3个单刀双掷开关1个三极管7个7. 致谢经过近几天的课程设计,我们组的成员都充分认识到理论知识和实践结合的重要性。经过两年多的理论基础的学习,我们成功的将理论运用如实践,并成功的运用单片机,以前只是在路上看见那些交通灯,但是并没有认真的研究交通灯的内部控制原理,还有单片机上那些芯片的功能和引脚图平常也不是常接触,通过这次城市道口交通灯控制系统设计让我清楚如果想做一个产品该怎样思考。此次课程设计持续的时间较长,对组员的耐心是一

16、种极大的考验,同时学校的支持力度也应该加强,而不应该对学生的提问表示不解,对有些程序的编写要及时的给予指导,当然学生也要积极的配合老师的工作,努力将自己所学的知识尽可能的运用到对方案的设计中去。感谢老师的细心指导、和伙伴之间的配合。参考文献1 张鑫.单片机原理及应用M.北京:电子工业出版社,2005.8.2 康光华.电子技术基础.模拟部分M.北京:高等教育出版社,2006.1.3 康光华.电子技术基础.数字部分M.北京:高等教育出版社,2006.1.4 祁伟, 杨亭. 单片机C51程序设计教程与实验M.北京:北京航空航天大学出版社,2006. 5 楼然苗.李光飞.单片机课程设计指导M.北京:北

17、京航空航天大学出版社,2007.46 单片机学习网附录附录1. 整体电路图附录2. 详细程序#include reg52.h#include#define PA XBYTE0xD1FF /*PA口地址*/#define PB XBYTE0xD2FF /*PB口地址*/#define PC XBYTE0xD5FF /*PC口地址*/#define CON XBYTE0xD7FF /*控制字地址*/#define uchar unsigned charCode Char dis_714=0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28,0xff,0

18、x7f,0x30,0x70;/* 共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 - A P*/ code char scan_con8=0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xBF,0x7f; / 列扫描控制字data char disdata8=0x08,0x05,0x09,0x02,0x0b,0x00,0x01,0x0d;/计时单元数据初值,共6个data char dis8=0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00;/显示单元数据,共6个数据data char con1s=0x00,con04s=0x00,c

19、on=0x00,con05s=0x00,d=0x00;/1秒定时用sbit key0=P32; /移位键sbit key1=P33; / 加一sbit BEEP=P20; /蜂鸣器接口/*/1毫秒延时程序/*/delay1ms(int t)int i,j;for(i=0;it;i+) for(j=0;j120;j+);/*/ /扫描程序/*/scan()char k;for(k=0;k=6) con=0;TR1=0;ET1=0;TR0=1;ET0=1; if(con=0) if(key1=0) delay1ms(10); while(key1=0); d=con+2; disdatad+; i

20、f(disdatad=14) disdatad=0; discon=disdatad;dis6=0x0a; EA=1; /*/ 打铃程序 /*/Play1() uchar i,t; for(i=0;i100;i+) BEEP=BEEP; delay1ms(t); BEEP=1; Play2() BEEP=1; bell()if(disdata0=0x00|disdata0=0x01|disdata0=0x02|disdata0=0x03|disdata0=0x04)&disdata1=0x00&disdata2=0x00&disdata3=0x03&disdata5=0x07&disdata6

21、=0x00&disdata7=0x0c|(disdata0=0x00|disdata0=0x01|disdata0=0x02|disdata0=0x03|disdata0=0x04)&disdata1=0x00&disdata2=0x00&disdata3=0x03&disdata5=0x00&disdata6=0x01&disdata7=0x0d) Play1();if(disdata0=0x05|disdata0=0x06)&disdata1=0x00&disdata2=0x00&disdata3=0x03&disdata5=0x07&disdata6=0x00&disdata7=0x0c

22、|(disdata0=0x05|disdata0=0x06)&disdata1=0x00&disdata2=0x00&disdata3=0x03&disdata5=0x00&disdata6=0x01&disdata7=0x0d) Play2();if(disdata0=0x07|disdata0=0x08|disdata0=0x09)&disdata1=0x00|(disdata0=0x00|disdata0=0x01)&disdata1=0x01)&disdata2=0x00&disdata3=0x03&disdata5=0x07&disdata6=0x00&disdata7=0x0c|(

23、disdata0=0x07|disdata0=0x08|disdata0=0x09)&disdata1=0x00|(disdata0=0x00|disdata0=0x01)&disdata1=0x01)&disdata2=0x00&disdata3=0x03&disdata5=0x00&disdata6=0x01&disdata7=0x0d) Play1(); /*/初始化程序/*/clearmen()int i;for(i=0;i=10) disdata0=0;disdata1+; if(disdata1=6) disdata1=0;disdata2+; if(disdata2=10) di

24、sdata2=0;disdata3+; if(disdata3=6) disdata3=0;disdata5+; if(disdata5=10) disdata5=0;disdata6+; if(disdata6=1 ) if(disdata5=2) disdata5=0;disdata6=0;disdata7+; if(disdata7=14) disdata7=12; dis0=disdata2;dis1=disdata3;dis3=disdata5;dis4=disdata6;dis2=disdata4;dis5=disdata7; ET0=1;/*/0.4秒闪烁中断程序 /*/void time_intt1(void) interrupt 3 EA=0;TR1=0;TH1=0x3C;TL1=0xB0;TR1=1; con04s+;if(con04s=8) con04s=0x00; dis7=discon;discon=dis6;dis6=dis7; EA=1;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1