夜班防睡控制与记录_第1页
夜班防睡控制与记录_第2页
夜班防睡控制与记录_第3页
夜班防睡控制与记录_第4页
夜班防睡控制与记录_第5页
免费预览已结束,剩余15页可下载查看

付费下载

下载本文档

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

文档简介

1、14/刀也,浮笈综合实验报告实验题目:夜班防睡控制与记录学生班级:学生姓名:学生学号:指导教师:实验时间:2016.9.18目录一、设计要求31、环境需求错误!未定义书签。2、功能需求3二、软件设计3三、硬件设计错误!未定义书签。1、各芯片使用及说明82、硬件设计原理133、实验线路连接14四、程序调试与运行14五、课设小结15附A:参考资料15附B:源程序15附C:硬件原理图.错误!未定义书签。夜班防睡控制、记录器的设计与功能实现、引言1、设计内容用单片机实现对值夜班人员的防睡控制和记录睡着时间与次数的功能。2、功能需求基本功能需求如下:1)每10min用较柔和的声音提醒一次值班者,值班者按

2、某一键后复位,计时重新开始。2)若计到11min时无人按复位键,则以较急促的声音报警,黄灯闪烁,并每隔10min计数器加1。3)当到60min时红灯闪烁,并夫尖锐的声音持续报警。以LED显示时、分、秒。则记录下这个时刻,以便管理者查看。显示格式:时、分、秒。、总体设计/纪本次课程设计采用的主要是模块化的设计思想,首先对夜间防睡控制录器的每个功能模块进行详细的需求分析,需求分析完之后确定各个模块功能之后,建立各个需求的功能模块图,最后细化每个模块的功能。根据细化后的功能模块图对每个模块编写相应的子程序,对每个功能模块进行测试,在成功测试每一个功能模块之后,然后进行整个程序的测试。夜间防睡控制的功

3、能模块图如下:时问记录和查看时问1、各芯片使用及说明本次夜间防睡系统主要使用了的芯片为:80C51(CPU),8155。MCS-51CPU中的位处理器,是一个完整的1位微计算机,它有自己的CPU位寄存器、I/O口和指令集。这个1位机在开关决策、逻辑电路仿真、工业控制方面很有效;而8位机在数据采集、运算处理有优势。二者相辅相成,是单片机技术上的1个突破。本次实验中主要使用了该CPU的主要使用情况及介绍如下:(A)单片机中主要的端口主要使用情况如下:1) P0口:双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可带8个LSTTL负载。2) P1口:8位准双向I/O口,可带4个L

4、STTTL负载。3) P2口:8位准双向I/O口,与地址总线(高8位)复用。4) P3口:8位准双向I/O口,双功能复用口。本次实验中主要用到了P0口的情况如下:P0.4作为复位键,提醒值班人员P0.5查看值班人员睡眠次数P0.6查看夜班人员开始睡眠时间P0.0控制黄灯信号P0.1控制红灯信号P0.7作为喇叭发声的脉冲频率输出(B)定时器(T0/T1)定时器/计数器简称定时器,8051单片机内部有2个16位的可编程定时/计数器:定时器0(T0)和定时器1(T1)。可编程是指其功能(如工作方式、定时时间、启动方式等)可以由指令来确定和改变。在定日器/计数器中除了有两个16位的计数器之外,还有2个

5、特殊功能寄存器(控制寄存器TCO解口方式寄存器TMOD。该硬件图如下:口;口*口5D*口*DiDqranTK,TRiTH.TfiiElIT.EflITofchfctt6P:£而SA就明miikiofP3,J)(P32JTITIS)TWM定时器n定时讲口启动后动人部总蚁7海出T作方式中断TMOEXV9H)见中断亘看f0:仔T”汁上11:目L计登J0:无T口中断(猊件复怔Jh:有几滋出中断p:等L计数11,启。计蚣JDi无一中斯,:硬件复位)1.有L说出中猾(C)数据存储器(RAM片内为128B,片外最多可外扩64KR数据存储器来存储单片机运行期间的工作变量、运算的中间结果、数据暂存和缓

6、冲、标志位等。片内的128B的RAM以高速RAM勺形式集成在单片机内,可以加快单片机运行的速度,而且这种结构的RAM还可以降低功耗。本次程序中主要使用的内存情况如下:片内:R0R7(0区),30H以后的部分单元。扩展的数据存储存储器:30H3FH作为显示单元内容的存储。(D)特殊功能寄存器(SFR特殊功能寄存器共有21个,用于CPU寸片内各功能部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAMXo(D)控制显示的芯片介绍如下:8155芯片使用了地址为0FF20H,0FF21,0FF22H,0FF23H地址。主用用来驱动LED显示和扫描键盘。扫描键盘时,各个

7、端口的使用情况如下:0FF20H为输出口,用来扫描字位口。在AL中送0,使键盘所有的行线输出为0,用来检测键盘的输入。0FF22H为输入口,用来扫描键盘输入。使用IN指令,从端口地址中读取输入键盘列号。在驱动LED显示的时候,各个端口的使用情况如下:0FF22H(B口)作为输出口,主要用来控制LED显示的字型码,驱动LED显示字型(09)。0FF21(A口)作为输出口,也叫字位口,用来控制第几个LED显示屏显示。(E)8051的各个引脚介绍如下:电源引脚电源引脚接入单片机的工作电源。Vcc(40引脚):接+5V电源。Vss(20引脚):接地。时钟引脚2个时钟引脚XTAL1、XTAL2外接晶体与

8、片内的反相放大器构成了1个振荡器,它为单片机提供了时钟控制信号。2个时钟引脚也可外接独立的晶体振荡器。XTAL1(19引脚):接外部晶体的1个引脚。该引脚内部是1个反相放大器的输入端。这个反相放大器构成了片内振荡器。如果采用外接晶体振荡器时,此引脚应接地。XTAL2(18弓I脚):接外部晶体的另一端,在该引脚内部接至内部反相放大器的输入端。若采用外部时钟振荡器时,该引脚接收时钟振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。RST/Vpd(9引脚)RST(RESET是复位信号输入端,高电平有效。当单片机运行时,在此引脚加上持续时间大于2个机器周期(24个时钟振荡周期)的高电平时,就可以

9、完成复位操作。在单片机正常工作时,此引脚应为<=0.5V低电平。Vpd为本引脚的第二功能,即备用电源的输入端。当主电源Vcc发生故障,降低到某一规定值的低电平时,将+5V电源自动接入RST端,为内部RAM提供备用电源,以保证片内RAW的信息部丢失,从而使单片机在复位后能继续正常运行。(4) ALE/PROG(AddressLatchEnable/PROGramming,30弓I脚)ALE引脚输出为地址锁存允许信号,当单片机上电正常工作后,ALE引脚不断输出正脉冲信号。当单片机访问外部存储器时,ALE输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器锁存的锁存控制信号。即使不访问外部锁

10、存器,ALE端仍有正脉冲信号输出,此频率为时钟振荡器频率fosc的1/6。如果想初步判断单片机芯片的好坏,可用示波器查看ALE端是否有正脉冲信号输出。如果有脉冲信号输出,则单片机基本上是好的。PROG为本引脚的第二功能。在对片内EPROM1单片机编程写入时,此引脚作为编程脉冲输入端。1) PSENI(ProgramStrobeEnable,29引脚)程序存储器允许输出控制端。在单片机访问外部程序存储器时,此引脚输出脉冲负跳沿作为读外部程序存储器的选通信号。此引脚接外部程序存储器的。咖。PSEN可以驱动8个LS型TTL负载。2) EA/Vpp(EnableAddress/VoltagePulse

11、ofProgramming,31引脚)EA功能为内外程序存储器选择控制端。当EA引脚为高电平时,单片机访问片内程序存储器,但在PC(程序计数器)值超过0FFFH时,即超出片内程序存储器的4KB地址范围时,将自动转向执行外部程序存储器内的程序。当EA引脚为低电平时,单片机则只访问外部程序存储器,不论是否有内部程序存储器。对于8031来说,因其无内部程序存储器,所以该引脚必须接地,这样只能选择外部程序存储器。Vpp为本引脚的第二功能。在对EPROM1单片机8751片内EPRO腼化编程时,用于施加较高的编程电压。对于89C51,则加在Vpp引脚的编程电压为+12V或+5V。2、硬件设计原理本次夜间防

12、睡控制/记录的课程设计主要是利用了8031这块微处理器做为控制器来控制整个程序的执行。本次课程设计除了控制程序执行的运算器和控制器之外,主要使用了该芯片的两个定时器。其中定时器T0主要用来做为计时的控制,在该程序中用来产生100ms频率的脉冲,每次计数10次时为1s中。采用的定时器T0的方式一。装入的计数初值为:3CB7H每次计数完成之后执行中断程序时要重新装入计数初值。而定时器T1主要用来产生发生频率的控制,在该程序中用来产生不同频率的脉冲。当然人儿能分辨的频率范围为:20HZ20000HZ所以必须保证产生的频率在这个范围之内。比如说,当频率为500Hz时,该频率范围的声音比较柔和。我采用的

13、该定时器T1的工作方式二,该方式能够自动重新装入计数初值。喇叭的发声是在计时30s值班人员还没有按键的情况下,开始发声的,如果有人按复位键的话,喇叭发声停止,并且重新开始计数。显示部分主要使用8155芯片来控制显示。显示的LED采用的是动态扫描的显示方式动态显示。各个端口的使用见硬件介绍部分。3、实验线路连接本次课程设计的连线比较简单,采用的连线如下:3) P0.0连接开关SW14) P0.1连接开关SW25) P0.2连接开关SW36) P0.7连接开关SW47) P0.4连接开关SW58) P0.5连接开关SW6三、程序调试与仿真本次实时时钟设计主要采用的是模块化的设计思想。所以首先必须对

14、每一个模块进行单独的测试连接。程序中测试的过程如下所述。首先对计时单元进行测试。首先编好计时单元模块之后进行调试。看计时的脉冲是否准确,通过P1.3引脚输出的脉冲;连接示波器,观察屏幕上显示的脉冲频率,看是否为100ms的脉冲,结果频率为100ms,说明该频率通过了测试阶段。接下来观察时钟的计时是否准确。对秒中进行测试,观察秒钟的显示是否正确;如果9加1是为10秒;如果59加1秒,则应为1分钟;如果59分,59秒加1秒中,则为1小时;通过观察所有的测试均能够通过测试。所有计时均能够通过测试的则整个计时功能模块均通过了测试。然后继续测试。测试发声模块。当10s中如果能够听到发出柔和的声音,则通过

15、了测试;按下键喇叭停止了发声。当发生之后没有按下复位键且到了20s的话,说明值班人员还在睡觉,则发出急促的声音,并且黄灯同时闪烁;如果到了30s中还没有按键的话,则发出尖锐的声音,同时红灯开始闪烁,黄灯停止计时,直到值班人员醒来之后,在按复位键为止,同时值班人员可以查看红灯开始闪烁的时间。如果这些都通过了测试,则整个程序就通过了测试,否则的话逐个测试各个功能模块的程序。四、设计心的及体会通过本次单片机课程设计的实践环节,我学会了不少东西。本次课设让我对单片机原理及应用这一门课程有了更深刻的了解和认识。这是一门综合性很强的课程,要能够顺利的实现实时时钟的全部功能,不仅要把这一门课程的基本理论学好

16、,还要有良好的编程基础,尤其是C语言程序的编写。如果没有这些基石作为铺垫,我想要夜间防睡控制的功能,将会寸步难行。当然理论基础固然重要,但是如果没有较强的实践能力的话,我想要能够实现这些基本功能也会很困难的。实验的过程中不可能是一帆风顺的。在遇到问题的时候我们总是要去不断的思考,不断的探索。如果没有刻苦钻研的精神,半途而费,那么我们将会没有收获,问题将不能得到解决。我想这次课程设计不仅让我学到了更多的知识,更重要的是学会了如何去思考问题,解决问题。实践出真知。通过本次课程设计我想在以后的学习和工作过程中我会受益匪浅。最后,我想感谢老师的指导及帮助过我的同学。五、参考文献1单片机原理及应用(第二

17、版)人民邮电出版社2 电子电路Protel98实用教程邓胡滨中国水利水电出版社附录:源程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint#defineSEGP0数码管接P0uintcount_T0,count;/计数,定时.ucharflag10,flag11,flag60,seconds,minutes,jishuqi;ucharcodeTAB=0xc0,0xf9,0xb0,0x99,0x92,0x82,0xf8,0x98;/5-9uchardisp6=0,0,0,0,0,0;/显示数组sbitred

18、led=P1A0;/红灯接P1.0sbityewled=P1A1;/黄灯接P1.1sbitspeaker=P3A7;/音响.sbitkey=P3A2;/复位键voidinit(void);/声明初始化函数voiddelay1ms(uchar);/延时函数voidscanner(uchar);/显示函数voidway(void);/状态函数main()init();for(;)scanner(1);/一直显示.if(flag10)/10分至kway();/进入状态voidinit(void)EA=1;ET0=1;ET1=1;TMOD=0x11;TH0=(65536-50000)/256;TL0=

19、(65536-50000)%256;TH1=(65536-count)/256;TL1=(65536-count)%256;TR0=1;speaker=1;key=1;count_T0=0;count=1980;/声响音调.柔和.seconds=0;minutes=0;flag10=0;/提醒标志.flag11=0;/黄灯闪烁标志.flag60=0;/红灯闪烁标jishuqi=0;voidscanner(uchary)uchari,j,scan;for(j=0;j<y;j+)(scan=0x01;for(i=0;i<6;i+)(SEG=0xff;/防闪烁.P2=scan;SEG=T

20、ABdispi;delay1ms(1);scan=scan<<1;voidtimer0(void)interrupt1(TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(+count_T0=20)1S至U.(count_T0=0;seconds+;if(seconds=60)(seconds=0;minutes+;if(minutes=10)/10分钟到.flag10=1;if(minutes=60)minutes=0;disp0=minutes/10;分离显示.disp1=minutes%10;disp2=seconds/10;disp3=seconds%10;disp4=jishuqi/10;disp5=jishuqi%10;voidtimer1(void)interrupt3(TH1=(65536-count)/256;TL1=(65536-count)%256;speaker=-speaker;if(flag11)yewled=yewled;/红灯闪烁.if(minutes%10)=1)判断是否隔10分jishuqi+;

温馨提示

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

最新文档

评论

0/150

提交评论