24h自动打铃系统设计_第1页
24h自动打铃系统设计_第2页
24h自动打铃系统设计_第3页
24h自动打铃系统设计_第4页
24h自动打铃系统设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、常熟理工学院电气与自动化工程学院单片机技术课程设计题目:自动打铃系统设计姓名:学号:班级:指导教师:起止日期:课程设计答辩记录系专业班级答辩人课程设计题目记录内容记录人_说明:主要记录答辩时所提的问题及答辩人对所提问题的回答课程设计(论文)题目名称自动打铃系统2013年4月11日单片机课程设计一 ii第一章目录TOC o 1-5 h z第一章.目录1第二章.课程设计任务书2 HYPERLINK l bookmark16 o Current Document 第三章.总体设计方案3 HYPERLINK l bookmark30 o Current Document 第四章.操作及使用说明6第五章

2、.硬件原理图8第六章.程序流程9 HYPERLINK l bookmark34 o Current Document 第七章.调试.运行及其结果10 HYPERLINK l bookmark36 o Current Document 第八章.收获及体会10 HYPERLINK l bookmark38 o Current Document 第九章.参考文献11第十章.代码及元件清单12单片机课程设计 第二章.单片机技术课程设计任务书题目:自动打铃系统设计、课程设计任务本课题要求应用以51单片机为核心设计一自动打铃系统,能完成基本计时和显示功能,用LCD显示时间、铃声可用蜂鸣器发出。二、课程设计

3、目的通过本次课程设计使学生掌握:1)掌握以单片机为核心的控制系统的分析和设计的基本方法;2)控制程序的设计及实现方法;3)提高学生对单片机实时控制系统的设计和调试能力。三、课程设计要求基本计时和显示功能(用24小时制显示)。包括上下午标志,时、分的数字显示,秒信号指示,并能设置当前时间(含上、下午,时,分)。能实现基本打铃功能,规定:上午8:00上课铃:打铃10秒、停2秒、再打铃10秒。下午5:30下课铃:打铃10秒、停2秒、再打铃10秒。四、课程设计内容1、人机对话“界面”的设计;2、内存端口及外设的设置;3、硬件电路原理图、软件清单。第三章总体设计方案设计方案选择方案一:数字电路设计的自动

4、打铃系统利用函数信号发生器来进行脉冲信号输出,利用74160N来设置十进制和六进制的进位输出。利用数码显示器来显示时间,利用或门、与门、非门、与非门、等电路元件进行组合实现打铃的控制。方案二:基于单片机的自动打铃系统设计单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。建立完一个实时时钟后接下来进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间与信息时间表上的

5、作息时间是否相同,相同者,贝y进行报时处理并控制打铃,不相同则返回主程序。-4万案确疋方案一的设计只能事先设定打铃时间不能完全自动打铃,且在修改打铃时间上存在一定的困难。而方案二中的设计能完全实现自动化,诠释了我们这次毕业设计的主题。并在修改打铃时间上有了很大的方便,只需修改一部分程序便能实现不同的需要。因此我选择方案二进行设计。基本方案1.设计课题简要概述自动打铃装置用于工厂、学校等地的时间控制,本设计是按照学校作息时问设定的,模拟了电了钟显示时、分、秒。还根据学校的作息时间按时打铃,本系统有4个按钮,分别用来调时、调分、秒和强制打铃及强制关铃,以保证始终与标准时间相吻合。首先设计出本系统的

6、硬件基本框图,根据框图设计电气原理图,简要概述基本原理,按照设计技术参数设计出各部分程序。2.系统软硬件划分由于需要最小系统设计,因此,极大地介于系统的硬件成本,所有能用软件实现的功能都用软件完成,如按键的去抖,采用延时,显示部分用动态显示等,这样硬件部分的设计可以采用单片机最小系统,所谓最小系统时仅有程序存储器和时钟及复位电路的单片机系统。3.单片机选型根据课题的具体内容,任务要求,计时、校时、定时、键盘显示等功能,经多方面考虑,所选系统选项用.与MSC-51单片机完全兼容的AT89C51低功耗单片机。AT89C51单片机性能介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电

7、压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚说明:VCC:供电电压。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必

8、须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写T”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1

9、”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INTO(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)

10、P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。89C51各部分引脚图如下:P1.0Fl.1P1.2P1.3P1.4M0SI/P1.|MlSO/P1.6SCK/F1.7RSTEXD/P3.0TXD/P3,1INT0/F3.2im?p3.3T0/P3.4T1/P3.5歴坯3E-SS/P3.7XTAL2KTAL1FDIFGNU匚匚匚匸匚匚匚匚匚匸匸匸匚匚匸E匚匚匚匚O12345S789O12345&T891111111111203876543210984333333333322鬆雷益/F-P

11、O12345G7V/C?EcoooooooO-ALVPPPPPFPpEAFESNP2.7/A15F2.6/A14P2.5/A13P2.4/A12P2.3/AUF2.2/A10P2*1/A9P2.0/A8引脚图第四章操作及使用说明按钮控制模块三个按钮的一端分别接地,另一端接单片机一个端口的三个引脚,当某一个按钮按下的时候,其对应的引脚就由高电平变成低电平,然后通过单片机扫描读取引脚的电平来判断按钮是否按下。采用动态扫描方式,通过一组单片机端口驱动并联在一起的LCD发光管的一端(共阴或共阳端),LCD发光管的另一脚接通用I/O口,控制其亮灭。该方法能驱动较多的LCD,控制方式较灵活,而且节省单片机

12、的资源蜂鸣器驱动模块采用无源式蜂鸣器,器又分为有源蜂鸣器和无源蜂鸣器,本设计只是通过简单延时达到驱动蜂鸣器的效果。按钮S1:设置时间及日期按钮。按钮S2:增加。按钮S3:减少。使用过程中注意按钮的使用,及反应时间。显示器模块种将液晶显示器件,连第五章硬件原理图第六章.程序流程及代码清单N第七章调试运行及其结果实现计时和显示功能(24小时制),可设置当前时间(包括上下午标志,时、分的数字显示),能在上午8:00和下午5:30定点打铃,且每次打铃均为响铃10s,停2s,再响10s。系统误差及性能分析经测试该简易自动打铃系统在一天内会出现时间误差,该误差主要是由于晶振自身的误差所造成的。另外在中断的

13、过程中,只会在第一次计时时产生时间的偏移,而它所产生累积误差很大。第八章收获体会通过这次课程设计,我得到了很多收获和体会,懂得了团队合作的重要性和必要性,以及工程设计的大体过程。第一,巩固和加深了对单片机基本知识和理解,提高了综合运用所学知识的能力。第二,增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。第三,通过实际方案的分析比较,设计计算,安装调试等环节,初步掌握了简单使用电路的分析方法和工程设计方法。第四,在这次课程设计过程中,光有理论知识是不够的,还必须懂一些实践中的知识。所以在课程设计的实践中,我们应将实验

14、课与课堂教学结合起来,锻炼自己的理论联系实际的能力与实际动手能力。第五,掌握了比较常用的仪器的使用方法,提高了动手能力。第六,培养了严谨的工作作风和科学态度。总之这次课程设计,培养了我们综合应用单片机原理及应用的理论知识和理论联系实际的能力;在设计的过程中还培养了我们的团队精神,同学共同协作,一齐商量讨论,解决了许多问题。这一切都令我们受益匪浅,在今后的学习工作中我们会一如既往,不断努力。经过近几天的课程设计,我充分认识到理论知识和实践结合的重要性。经过半年多的理论基础的学习,我成功的将理论运用如实践,并成功的运用单片机,以前只是在路上看见那些交通灯,但是并没有认真的研究交通灯的内部控制原理,

15、还有单片机上那些芯片的功能和引脚图平常也不是常接触,通过这次系统设计让我清楚如果想做一个产品该怎样思考。此次课程设计持续的时间较长,对我的耐心是一种极大的考验,同时学校的支持力度也应该加强,而不应该对学生的提问表示不解,对有些程序的编写要及时的给予指导,当然学生也要积极的配合老师的工作,努力将自己所学的知识尽可能的运用到对方案的设计中去。感谢王小英老师的细心指导、和伙伴之间的配合。第九章参考文献张鑫单片机原理及应用M.北京:电子工业出版社,2005.8.康光华电子技术基础模拟部分M.北京:高等教育出版社,2006.1.康光华电子技术基础数字部分M.北京:高等教育出版社,2006.1.祁伟,杨亭

16、.单片机C51程序设计教程与实验M.北京:北京航空航天大学出版社,2006.楼然苗李光飞单片机课程设计指导M.北京:北京航空航天大学出版社,2007.4单片机学习网 HYPERLINK 第十章代码及元件清单代码:#includevreg52.h#defineucharunsignedchar#defineuintunsignedint#definedatasendP0sbitlcden=P3A4;sbitlcdrs=P3A5;sbits1=P1a。;sbits2=P1A1;sbits3=P1A2;sbitknock=P2A。;/LCD使能端/LCD数据/指令(H/L)选择端定义功能按键定义时分

17、秒+1按键定义时分秒-1按键ucharmytableO=Hello;ucharmytablel=Goodmoring;ucharcodeline0=2013-04-10;初始化显示ucharcodeline1=AM00:00:00;ucharcodemonth0=31,28,31,30,31,30,31,31,30,31,30,31;/平年月ucharcodemonth1=31,29,31,30,31,30,31,31,30,31,30,31;闰年月ucharcount,hour,minute,second,year=1,month=1,date=1;uchars1num;/s1num:定义功

18、能键按下次数变量voiddelay_ms(intms)inti,j;for(i=ms;i0;i-)for(j=0;jv110;j+);voiddelay(unsignedintz)延时子函数z*1msunsignedintx,y;for(x=z;x0;x_)for(y=110;y0;y-);voidwrite_com(unsignedcharc)写命令子函数lcdrs=0;lcden=0;datasend=c;delay(5);lcden=1;delay(5);lcden=0;低电平选择为写指令把指令写入P1口参考时序图开使能读取指令关闭使能voidwrite_data(unsignedcha

19、rd)写数据子函数lcdrs=l;高电平选择为写数据datasend=d;把数据写入P0口delay(5);参考时序图lcden=1;开使能delay(5);读取数据lcden=0;关闭使能voidwrite_hms(ucharadd,uchardat)时分秒写函数add:输入位置设置变量秒数据ucharsw,gw;定义十位,个位变量sw=dat/10;gw=dat%10;write_com(0 x80+0 x40+add);从第二行(add)位开始写数据write_data(0 x30+sw);写入十位write_data(0 x30+gw);写入个位dat:输入时分dat:输入时voidw

20、rite_ymd(ucharadd,uchardat)年月日写函数add:输入位置设置变量分秒数据ucharsw,gw;sw=dat/10;gw=dat%10;write_com(0 x80+add);write_data(0 x30+sw);write_data(0 x30+gw);voidt0()interrupt1TH0=(65536-50000)/256;TL0=(65536-50000)%256;count+;voidgethms()inti;定义十位,个位变量从第一行(add)位开始写数据写入十位写入个位定时器0中断子程序时分秒处理子程序second+;if(hour=8)&(mi

21、nute=0)ll(hour=17)&(minute=30)if(second=0)&(secondv=10)|(second=12)&(secondv=22)for(i=0;iv50;i+)P2=P2;delay_ms(1);单片机课程设计单片机课程设计 if(second=60)second=0;minute+;if(minute=60)minute=0;hour+;if(hour=24)hour=0;date+;write_hms(2,hour);时输出显示write_hms(5,minute);write_hms(8,second);voidgetymd()if(year%4=0)if

22、(date=monthlmonth-l+l)date=1;month+;if(month=13)month=1;分输出显示秒输出显示年月日处理子程序year+;if(year=100)year=1;write_ymd(4,year);write_ymd(7,month);write_ymd(10,date);elseif(date=monthOmonth-l+l)date=1;month+;if(month=13)month=1;year+;if(year=100)year=1;write_ymd(4,year);write_ymd(7,month);write_ymd(10,date);按键

23、扫描子程序功能键S1功能设置voidkeyscan()if(s1=0)delay(5);if(s1=0)功能键按下while(s1=0);松手检测s1num+;功能键按下计数TR0=0;/TO定时停止,进入时间调整switch(s1num)case1:write_com(0 x80+0 x40+0 x09);break;光标闪烁位定为秒个位case2:write_com(0 x80+0 x40+0 x06);break;光标闪烁位定为分个位case3:write_com(0 x80+0 x40+0 x03);break;光标闪烁位定为时个位case4:write_com(0 x80+0 x0b

24、);break;光标闪烁位定为日个位case5:write_com(0 x80+0 x08);break;光标闪烁位定为月个位case6:write_com(0 x80+0 x05);break;光标闪烁位定为年个位write_com(0 x0f);if(s1num=7)s1num=0;光标闪烁按键计数复位write_com(OxOc);TRO=1;if(s2=0)delay(5);if(s2=0)while(s2=0);switch(slnum)case1:second+;光标停止闪烁重新启动定时器/S2键时分秒+1模块if(second=60)second=0;write_hms(8,se

25、cond);write_com(0 x80+0 x40+0 x09);break;秒+复位秒输出显示光标闪烁位定为秒个位case2:minute+;if(minute=60)minute=0;write_hms(5,minute);write_com(0 x80+0 x40+0 x06);break;case3:hour+;if(hour=24)hour=0;write_hms(2,hour);write_com(0 x80+0 x40+0 x03);break;case4:date+;if(year%4=0)if(date=month1month-1+1)date=1;else复位分输出显示

26、光标闪烁位定为分个位复位时输出显示光标闪烁位定为时个位日+平闰年判断if(date=monthOmonth-1+1)date=1;write_ymd(10,date);write_com(0 x80+0 x0b);break;case5:month+;if(month=13)month=1;if(year%4=0)日输出显示光标闪烁位定为日个位月+判断日和月的配对关系if(datemonth1month-1)date=month1month-1;elseif(datemonthOmonth-1)date=monthOmonth-1;write_ymd(10,date);write_ymd(7,

27、month);write_com(0 x80+0 x08);break;case6:year+;if(year=100)year=1;write_ymd(4,year);write_com(0 x80+0 x05);break;日输出显示月输出显示光标闪烁位定为月个位年+复位年输出显示光标闪烁位定为年个位if(s3=0)delay(5);if(s3=0)while(s3=0);switch(s1num)case1:second-;时分秒-1模块秒-if(second=255)second=59;write_hms(8,second);write_com(0 x80+0 x40+0 x09);复

28、位秒输出显示光标闪烁位定为秒个位break;case2:minute-;if(minute=255)minute=59;write_hms(5,minute);write_com(0 x80+0 x40+0 x06);break;复位分输出显示光标闪烁位定为分个位case3:hour-;if(hour=255)hour=23;write_hms(2,hour);write_com(0 x80+0 x40+0 x03);break;case4:date-;if(year%4=0)if(date=0)date=monthlmonth-l;elseif(date=0)date=month0month

29、-1;write_ymd(10,date);write_com(0 x80+0 x0b);break;case5:month-;复位时输出显示光标闪烁位定为时个位日-日输出显示光标闪烁位定为日个位月-if(month=0)month=12;if(year%4=0)判断日和月的配对关系if(datemonth1month-1)date=month1month-1;elseif(datemonth0month-1)date=month0month-1;write_ymd(10,date);write_ymd(7,month);write_com(0 x80+0 x08);break;case6:year-;if(year=0)year=99;write_ymd(4,year);write_com(0 x80+0 x05);break;日输出显示月输出显示光标闪烁位定为月个位年-复位年输出显示光标闪烁位定为年个位voidinitialize()/LCD

温馨提示

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

评论

0/150

提交评论