夜班防睡控制与记录.doc_第1页
夜班防睡控制与记录.doc_第2页
夜班防睡控制与记录.doc_第3页
夜班防睡控制与记录.doc_第4页
夜班防睡控制与记录.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

夜班防睡控制与记录 综合实验题目学生班级学生姓名学生学号指导教实验时实验目夜班级:名:号教师时间:xx6验报防睡控制66.9.18报告制与记录告告目录目录 夜班防睡控制、记录器的设计与功能实现夜班防睡控制、记录器的设计与功能实现 一、引言 1、设计内容用单片机实现对值夜班人员的防睡控制和记录睡着时间与次数的功能。 2、功能需求基本功能需求如下1)每10min用较柔和的声音提醒一次值班者,值班者按某一键后复位,计时重新开始。 2)若计到11min时无人按复位键,则以较急促的声音报警,黄灯闪烁,并每隔10min计数器加1。 3)当到60min时红灯闪烁,并仧尖锐的声音持续报警。 以LED显示时、分、秒。 则记录下这个时刻,以便管理者查看。 显示格式时、分、秒。 二、总体设计本次课程设计采用的主要是模块化的设计思想,首先对夜间防睡控制/纪录器的每个功能模块进行详细的需求分析,需求分析完之后确定各个模块功能之后,建立各个需求的功能模块图,最后细化每个模块的功能。 根据细化后的功能模块图对每个模块编写相应的子程序,对每个功能模块进行测试,在成功测试每一个功能模块之后,然后进行整个程序的测试。 夜间防睡控制的功能模块图如下夜班防睡控制/记录器计计时时模模块发声控制发声控制记录控制记录控制时间查询时间查询关中断保存现场信息SECOND60分钟MINUTE加1MINUTE60秒钟SECOND=0小时HOUR加1分钟MINUTE=0显示时间小时HOUR=11-TR0(开定时器T0)产生柔和发声脉冲COUNT=2产生急促发声脉冲,黄灯亮按下复位COUNT=3按下复位Y N Y N Y继续计时COUNT=0Y N Y时间记录和查看时间时间记录和查看时间COUNT=30S,记录该时刻的时间存放在记录该时刻的时间存放在50H,51H,52H中判断是否按下查看记录时间键1-F0(标记查看键按下)继续计时NY查看计时/次数F0=1显示记录时间/次数F0=0显示当前时间NYNY 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个LSTTTL负载。 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个特殊功能寄存器(控制寄存器TCON和方式寄存器TMOD)。 该硬件图如下(C)数期1速况数据存储器片内为期间的工作变28B的RAM速度,而且这况如下(RAM)128B,片外变量、运算的,以高速RA这种结构的RA外最多可外扩的中间结果、AM的形式集成AM还可以降扩64KB。 数据数据暂存和成在单片机内低功耗。 本次据存储器来存和缓冲、标志内,可以加快次程序中主要存储单片机运志位等。 片内快单片机运行要使用的内存运行内的行的存情片内R0R7(0区),30H以后的部分单元。 扩展的数据存储存储器30H3FH作为显示单元内容的存储。 (D)特殊功能寄存器(SFR)特殊功能寄存器共有21个,用于CPU对片内各功能部件进行管理、控制、监视。 实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。 (D)控制显示的芯片介绍如下8155芯片使用了地址为0FF20H,0FF21,0FF22H,0FF23H地址。 主用用来驱动LED显示和扫描键盘。 扫描键盘时,各个端口的使用情况如下0FF20H为输出口,用来扫描字位口。 在AL中送0,使键盘所有的行线输出为0,用来检测键盘的输入。 0FF22H为输入口,用来扫描键盘输入。 使用IN指令,从端口地址中读取输入键盘列号。 在驱动LED显示的时候,各个端口的使用情况如下0FF22H(B口)作为输出口,主要用来控制LED显示的字型码,驱动LED显示字型(09)。 0FF21(A口)作为输出口,也叫字位口,用来控制第几个LED显示屏显示。 (E)8051的各个引脚介绍如下电源引脚电源引脚接入单片机的工作电源。 V(40引脚)接+5V电源。 Vss(20引脚)接地。 时钟引脚2个时钟引脚XTAL 1、XTAL2外接晶体与片内的反相放大器构成了1个振荡器,它为单片机提供了时钟控制信号。 2个时钟引脚也可外接独立的晶体振荡器。 XTAL1(19引脚)接外部晶体的1个引脚。 该引脚内部是1个反相放大器的输入端。 这个反相放大器构成了片内振荡器。 如果采用外接晶体振荡器时,此引脚应接地。 XTAL2(18引脚)接外部晶体的另一端,在该引脚内部接至内部反相放大器的输入端。 若采用外部时钟振荡器时,该引脚接收时钟振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。 RST/Vpd(9引脚)RST(RESET)是复位信号输入端,高电平有效。 当单片机运行时,在此引脚加上持续时间大于2个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。 在单片机正常工作时,此引脚应为=0.5V低电平。 Vpd为本引脚的第二功能,即备用电源的输入端。 当主电源V发生故障,降低到某一规定值的低电平时,将+5V电源自动接入RST端,为内部RAM提供备用电源,以保证片内RAM中的信息部丢失,从而使单片机在复位后能继续正常运行。 ALE/PROG(Address LatchEnable/PROGramming,30引脚)ALE引脚输出为地址锁存允许信号,当单片机上电正常工作后,ALE引脚不断输出正脉冲信号。 当单片机访问外部存储器时,ALE输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器锁存的锁存控制信号。 即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率为时钟振荡器频率fosc的1/6。 如果想初步判断单片机芯片的好坏,可用示波器查看ALE端是否有正脉冲信号输出。 如果有脉冲信号输出,则单片机基本上是好的。 PROG为本引脚的第二功能。 在对片内EPROM型单片机编程写入时,此引脚作为编程脉冲输入端。 PSEN(Program StrobeEnable,29引脚)程序存储器允许输出控制端。 在单片机访问外部程序存储器时,此引脚输出脉冲负跳沿作为读外部程序存储器的选通信号。 此引脚接外部程序存储器的OE端。 PSEN端可以驱动8个LS型TTL负载。 EA/Vpp(Enable Address/Voltage Pulseof Programming,31引脚)EA功能为内外程序存储器选择控制端。 当EA引脚为高电平时,单片机访问片内程序存储器,但在PC(程序计数器)值超过0FFFH时,即超出片内程序存储器的4KB地址范围时,将自动转向执行外部程序存储器内的程序。 当EA引脚为低电平时,单片机则只访问外部程序存储器,不论是否有内部程序存储器。 对于8031来说,因其无内部程序存储器,所以该引脚必须接地,这样只能选择外部程序存储器。 Vpp为本引脚的第二功能。 在对EPROM型单片机8751片内EPROM固化编程时,用于施加较高的编程电压。 对于89C51,则加在Vpp引脚的编程电压为+12V或+5V。 2、硬件设计原理本次夜间防睡控制/记录的课程设计主要是利用了8031这块微处理器做为控制器来控制整个程序的执行。 本次课程设计除了控制程序执行的运算器和控制器之外,主要使用了该芯片的两个定时器。 其中定时器T0主要用来做为计时的控制,在该程序中用来产生100ms频率的脉冲,每次计数10次时为1s中。 采用的定时器T0的方式一。 装入的计数初值为3CB7H。 每次计数完成之后执行中断程序时要重新装入计数初值。 而定时器T1主要用来产生发生频率的控制,在该程序中用来产生不同频率的脉冲。 当然人儿能分辨的频率范围为20HZ20000HZ,所以必须保证产生的频率在这个范围之内。 比如说,当频率为500HZ时,该频率范围的声音比较柔和。 我采用的该定时器T1的工作方式二,该方式能够自动重新装入计数初值。 喇叭的发声是在计时30s值班人员还没有按键的情况下,开始发声的,如果有人按复位键的话,喇叭发声停止,并且重新开始计数。 显示部分主要使用8155芯片来控制显示。 显示的LED采用的是动态扫描的显示方式动态显示。 各个端口的使用见硬件介绍部分。 3、实验线路连接本次课程设计的连线比较简单,采用的连线如下1)P0.0连接开关SW1;2)P0.1连接开关SW2;3)P0.2连接开关SW3;4)P0.7连接开关SW4;5)P0.4连接开关SW5;6)P0.5连接开关SW6。 三、程序调试与仿真本次实时时钟设计主要采用的是模块化的设计思想。 所以首先必须对每一个模块进行单独的测试连接。 程序中测试的过程如下所述。 首先对计时单元进行测试。 首先编好计时单元模块之后进行调试。 看计时的脉冲是否准确,通过P1.3引脚输出的脉冲;连接示波器,观察屏幕上显示的脉冲频率,看是否为100ms的脉冲,结果频率为100ms,说明该频率通过了测试阶段。 接下来观察时钟的计时是否准确。 对秒中进行测试,观察秒钟的显示是否正确;如果9加1是为10秒;如果59加1秒,则应为1分钟;如果59分,59秒加1秒中,则为1小时;通过观察所有的测试均能够通过测试。 所有计时均能够通过测试的则整个计时功能模块均通过了测试。 然后继续测试。 测试发声模块。 当10s中如果能够听到发出柔和的声音,则通过了测试;按下键喇叭停止了发声。 当发生之后没有按下复位键且到了20s的话,说明值班人员还在睡觉,则发出急促的声音,并且黄灯同时闪烁;如果到了30s中还没有按键的话,则发出尖锐的声音,同时红灯开始闪烁,黄灯停止计时,直到值班人员醒来之后,在按复位键为止,同时值班人员可以查看红灯开始闪烁的时间。 如果这些都通过了测试,则整个程序就通过了测试,否则的话逐个测试各个功能模块的程序。 四、设计心的及体会通过本次单片机课程设计的实践环节,我学会了不少东西。 本次课设让我对单片机原理及应用这一门课程有了更深刻的了解和认识。 这是一门综合性很强的课程,要能够顺利的实现实时时钟的全部功能,不仅要把这一门课程的基本理论学好,还要有良好的编程基础,尤其是C语言程序的编写。 如果没有这些基石作为铺垫,我想要夜间防睡控制的功能,将会寸步难行。 当然理论基础固然重要,但是如果没有较强的实践能力的话,我想要能够实现这些基本功能也会很困难的。 实验的过程中不可能是一帆风顺的。 在遇到问题的时候我们总是要去不断的思考,不断的探索。 如果没有刻苦钻研的精神,半途而费,那么我们将会没有收获,问题将不能得到解决。 我想这次课程设计不仅让我学到了更多的知识,更重要的是学会了如何去思考问题,解决问题。 实践出真知。 通过本次课程设计我想在以后的学习和工作过程中我会受益匪浅。 最后,我想感谢老师的指导及帮助过我的同学。 五、参考文献1单片机原理及应用(第二版)人民邮电出版社2电子电路Protel98实用教程邓胡滨中国水利水电出版社附录源程序#include#define ucharunsigned char#define uintunsigned int#define SEGP0/数码管接P0uint count_T0,count;/计数,定时.uchar flag10,flag11,flag60,seconds,minutes,jishuqi;uchar codeTAB=0xc0,0xf9,0xb0,0x99,0x92,0x82,0xf8,0x98;/5-9uchar disp6=0,0,0,0,0,0;/显示数组sbit redled=P10;/红灯接P1.0sbit yewled=P11;/黄灯接P1.1sbit speaker=P37;/音响.sbit key=P32;/复位键void init(void);/声明初始化函数void delay1ms(uchar);/延时函数void scanner(uchar);/显示函数void way(void);/状态函数main()init();for(;)scanner (1);/一直显示.if(flag10)/10分到.way();/进入状态void init(void)EA=1;ET0=1;ET1=1;TMOD=0x11;TH0=(65536-50000)/256;TL0=(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;void scanner(uchar y)uchar i,j,scan;for(j=0;j (1);scan=scan1;void timer0(void)interrupt1TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(+count_T0=20)/1S到.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;void timer1(void)interrupt3TH1=(65536-count)/256;TL1=(65536-count)%256;speaker=speaker;if(flag11)yewled=yewled;/红灯闪烁.if(minutes%10)=1)/判断是

温馨提示

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

评论

0/150

提交评论