夜班防睡控制与记录Word文档下载推荐.docx
- 文档编号:16805393
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:16
- 大小:205.56KB
夜班防睡控制与记录Word文档下载推荐.docx
《夜班防睡控制与记录Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《夜班防睡控制与记录Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
以LED显示时、分、秒。
则记录下这个时刻,以便管理者查看。
显示格式:
时、分、秒。
二、总体设计
本次课程设计采用的主要是模块化的设计思想,首先对夜间防睡控制/纪录器的每个功能模块进行详细的需求分析,需求分析完之后确定各个模块功能之后,建立各个需求的功能模块图,最后细化每个模块的功能。
根据细化后的功能模块图对每个模块编写相应的子程序,对每个功能模块进行测试,在成功测试每一个功能模块之后,然后进行整个程序的测试。
夜间防睡控制的功能模块图如下:
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)数据存储器(RAM)
片内为128B,片外最多可外扩64KB。
数据存储器来存储单片机运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等。
片内的128B的RAM,以高速RAM的形式集成在单片机内,可以加快单片机运行的速度,而且这种结构的RAM还可以降低功耗。
本次程序中主要使用的内存情况如下:
片内:
R0~R7(0区),30H以后的部分单元。
扩展的数据存储存储器:
30H~3FH作为显示单元内容的存储。
(D)特殊功能寄存器(SFR)
特殊功能寄存器共有21个,用于CPU对片内各功能部件进行管理、控制、监视。
实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
(D)控制显示的芯片介绍如下:
8155芯片使用了地址为0FF20H,0FF21,0FF22H,0FF23H地址。
主用用来驱动LED显示和扫描键盘。
扫描键盘时,各个端口的使用情况如下:
0FF20H为输出口,用来扫描字位口。
在AL中送0,使键盘所有的行线输出为0,用来检测键盘的输入。
0FF22H为输入口,用来扫描键盘输入。
使用IN指令,从端口地址中读取输入键盘列号。
在驱动LED显示的时候,各个端口的使用情况如下:
0FF22H(B口)作为输出口,主要用来控制LED显示的字型码,驱动LED显示字型(0-9)。
0FF21(A口)作为输出口,也叫字位口,用来控制第几个LED显示屏显示。
(E)8051的各个引脚介绍如下:
⑴电源引脚
电源引脚接入单片机的工作电源。
Vcc(40引脚):
接+5V电源。
Vss(20引脚):
接地。
⑵时钟引脚
2个时钟引脚XTAL1、XTAL2外接晶体与片内的反相放大器构成了1个振荡器,它为单片机提供了时钟控制信号。
2个时钟引脚也可外接独立的晶体振荡器。
XTAL1(19引脚):
接外部晶体的1个引脚。
该引脚内部是1个反相放大器的输入端。
这个反相放大器构成了片内振荡器。
如果采用外接晶体振荡器时,此引脚应接地。
XTAL2(18引脚):
接外部晶体的另一端,在该引脚内部接至内部反相放大器的输入端。
若采用外部时钟振荡器时,该引脚接收时钟振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。
⑶RST/Vpd(9引脚)
RST(RESET)是复位信号输入端,高电平有效。
当单片机运行时,在此引脚加上持续时间大于2个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
在单片机正常工作时,此引脚应为<
=0.5V低电平。
Vpd为本引脚的第二功能,即备用电源的输入端。
当主电源Vcc发生故障,降低到某一规定值的低电平时,将+5V电源自动接入RST端,为内部RAM提供备用电源,以保证片内RAM中的信息部丢失,从而使单片机在复位后能继续正常运行。
⑷ALE/PROG(AddressLatchEnable/PROGramming,30引脚)
ALE引脚输出为地址锁存允许信号,当单片机上电正常工作后,ALE引脚不断输出正脉冲信号。
当单片机访问外部存储器时,ALE输出信号的负跳沿用于单片机发出的低8位地址经外部锁存器锁存的锁存控制信号。
即使不访问外部锁存器,ALE端仍有正脉冲信号输出,此频率为时钟振荡器频率fosc的1/6。
如果想初步判断单片机芯片的好坏,可用示波器查看ALE端是否有正脉冲信号输出。
如果有脉冲信号输出,则单片机基本上是好的。
PROG为本引脚的第二功能。
在对片内EPROM型单片机编程写入时,此引脚作为编程脉冲输入端。
⑸PSEN(ProgramStrobeEnable,29引脚)
程序存储器允许输出控制端。
在单片机访问外部程序存储器时,此引脚输出脉冲负跳沿作为读外部程序存储器的选通信号。
此引脚接外部程序存储器的OE端。
PSEN端可以驱动8个LS型TTL负载。
⑹EA/Vpp(EnableAddress/VoltagePulseofProgramming,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主要用来产生发生频率的控制,在该程序中用来产生不同频率的脉冲。
当然人儿能分辨的频率范围为:
20HZ~20000HZ,所以必须保证产生的频率在这个范围之内。
比如说,当频率为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<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineSEGP0//数码管接P0
uintcount_T0,count;
//计数,定时.
ucharflag10,flag11,flag60,seconds,minutes,jishuqi;
ucharcodeTAB[]={0xc0,0xf9,0xb0,0x99,0x92,0x82,0xf8,0x98};
//5-9
uchardisp[6]={0,0,0,0,0,0};
//显示数组
sbitredled=P1^0;
//红灯接P1.0
sbityewled=P1^1;
//黄灯接P1.1
sbitspeaker=P3^7;
//音响.
sbitkey=P3^2;
//复位键
voidinit(void);
//声明初始化函数
voiddelay1ms(uchar);
//延时函数
voidscanner(uchar);
//显示函数
voidway(void);
//状态函数
main()
{
init();
for(;
;
)
scanner
(1);
//一直显示.
if(flag10)//10分到.
way();
//进入状态
}
}
voidinit(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;
voidscanner(uchary)
{
uchari,j,scan;
for(j=0;
j<
y;
j++)
scan=0x01;
for(i=0;
i<
6;
i++)
SEG=0xff;
//防闪烁.
P2=~scan;
SEG=TAB[disp[i]];
delay1ms
(1);
scan=scan<
<
1;
voidtimer0(void)interrupt1
if(++count_T0==20)//1S到.
seconds++;
if(seconds==60)
{
minutes++;
if(minutes==10)//10分钟到.
flag10=1;
if(minutes==60)
disp[0]=minutes/10;
//分离显示.
disp[1]=minutes%10;
disp[2]=seconds/10;
disp[3]=seconds%10;
disp[4]=jishuqi/10;
disp[5]=jishuqi%10;
voidtimer1(void)interrupt3
speaker=~speaker;
if(flag11)
yewled=~yewled;
//红灯闪烁.
if((minutes%10)==1)//判断是否隔10分
jishuqi++;
//是,记数器加1
if(flag60)//60分到.
redled=~redled;
//红灯闪烁.
voidway(void)
TR1=1;
//开音响.
if(key==0)//有键按下.
scanner
(2);
//延时.
if(key==0)//再次判断.
//确认按下.分清0
//秒清0
TR1=0;
//关音响.
}while(key==0)scanner
(1);
//等待退出.
}if(TR1)//无键按下.
if(minutes==11)//11分钟到.
count=956;
//急促
flag11=1;
//开黄灯闪烁标志
while(key==0)scanner
(1);
}
}
if(TR1)
if(minutes==60)//60分钟到.
count=478;
//尖锐
flag60=1;
//开红灯产闪烁标志.
while(key==0)scanner
(1);
}}}}
voiddelay1ms(uchary)
uchari,j;
120;
j++);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 夜班 控制 记录