3.实验设备与说明
本次课设利用实验室的MPTS-1实验系统,使用红外热感应传感器和光敏电阻模块。同时会使用数码管、LCD 显示屏、8255 和8253。
3.1微机接口 I/O 地址译码电路
实验台上I/O地址选用280H-2BFH共64个,分8组输出:Y0-Y7,其地址分别为280H-287H;288H-28FH;290H-297H;298H-29FH;2A0H-2A7H;2A8H-2AFH;2B0H-2B7H;2B8H-2BFH,8 根输出线在实验台“I/O 地址”处分别由自锁紧插孔引出。
3.2时钟电路
输出1MHZ、2MHZ两种信号,供定时器/计数器、A/D 转换器、串行接口实验使用。
3.3七段数码管显示电路
实验台设有4个共阴极数码管及驱动电路,电路图如图3- 4。段码输入端:a、b、c、d、e、f、g、dp,位码输入端:S0、S1、 S2、S3。
七位数码管由 7 个 LED 灯组成,通过点亮多个 LED 灯进行适当的组合,就可以显示数字 0~9,显示原理如图2-1所示,其为数字2的显示。
其余数字编码如表2-1。段码表示每一个要显示数字对应的七段数码管的输入信号。
数码管显示原理流程图如图2-2所示。首先通过8255的D口送入方式控制字,再通过A口送出个位的段码,并通过C口送出个位的位码,显示延迟后, 送出十位的段码,位码,一直循环显示。直至有按键按下,才会熄灭数码管。
3.4红外热感应传感器 LHI958
LHI958为热释电红外传感器。热释电红外传感器通过目标与背景的温差来探测目标,其工作原理是利用热释电效应,即在钛酸钡一类晶体的上、下表面设置电极,在上表面覆以黑色膜,若有红外线间歇地照射,其表面温度上升△T, 其晶体内部的原子排列将产生变化,引起自发极化电荷,在上下电极之间产生电压△U。
热释电红外传感器内部由光学滤镜、场效应管、红外感应源(热释电元件)、 偏置电阻、EMI 电容等元器件组成,其内部电路框图如图 3- 5 所示。
人体或者体积较大的动物都有恒定的体温,一般在37度,所以会发出特定波长10μm左右的红外线,当人体进入检测区,因人体温度与环境温度有差别,人体发射的10μm左右的红外线通过菲涅耳透镜滤光片增强后聚集到红外感应源(热释电元件)上,红外感应源在接收到人体红外辐射时就会失去电荷平衡,向外释放电荷,进而产生△T 并将△T 向外围电路输出,后续电路经检测处理后就 能产生报警信号。
若人体进入检测区后不动,则温度没有变化,传感器也没有信号输出,所以这种传感器适合检测人体或者动物的活动情况。
3.5光敏电阻
半导体光敏元件是基于半导体光电效应的光电转换传感器,又称光电敏感器。 采用光、电技术能实现无接触、远距离、快速和精确测量,常用来间接测量能转 换成光量的其他物理或化学量。一般光越强,电阻阻值越小;反之越大。
3.6 128X64 字符图形液晶显示
3.6.1实验原理和内容
(1)中文字型产生ROM (CGROM) 及半宽字型ROM(HCGROM)
ST7920 的字型产生ROM通过 8192个16×16点阵的中文字型,以及126 个16×8点阵的西文字符,它用2个字节来提供编码选择,将要显示的字符的编码写到DDRAM上,硬件将依照编码自动从CGROM中选择将要显示的字型显示再屏幕上。
(2)字型产生RAM(CGRAM)
ST7920的字型产生RAM提供用户自定义字符生成(造字)功能,可提供4组16×16点阵的空间,用户可以将CGROM中没有的字符定义到CGRAM中。
(3)显示 RAM(DDRAM)
显示 RAM 提供64×2字节的空间,最多可以控制4行16字的中文字型显示当写入显示资料RAM 时,可以分别显示CGROM,HCGROM 及CGRAM的字型。 三种字型的选择:
1)显示半宽字型:将一个字节的编码写入 DDRAM 中,范围是 02~7FH。
2)显示CGRAM字型:将2个字节的编码写入DDRAM中,共有0000H,0002H,0004H及 0006H四种编码。
3) 显示中文字型:将2字节的编码写入DDRAM中,先写高8位,后写低8位范围是 0A1AOH~0F7FFH(GB)。
“北京科技大学”对应编码为: 0BIBIH,0BEA9H,0BFC6H,0BCBCH,0B4F3H,0D1A7H;
“自动化学院”对应编码为: 0D7D4H,0B6AFH,0BBAFH,0D1A7H,0D4BAH;
(4)绘图RAM提供64×32个字节的空间(由扩充指令设定绘图 RAM 地址),最多可以控制256×64 点阵的二维绘图缓冲空间,在更改绘图RAM时,由扩充指令设置GDRAM地址先垂直地址后水平地址 (连续2个字节的数据来定义垂直和水平地址),再2个字节的数据给绘图RAM (先高8位后低8位)。
(5)ST7920A 部分基本接口功能介绍
1) D/I; 寄存器选择端,H为数据寄存器,L为指令寄存器
2) RW:读写选择端,H为读,L 为写
3) E:指令集选择控制位,使能信号
(6)部分基本指令介绍
1)显示开关设置
控制整体显示开关,游标开关,游标位置显示反白开关。
D=1,整体显示开;D=0,整体显示关,但是不改变 DDRAM 内容。 C=1,游标显示开;C=0,游标显示关。 B=1,游标位置显示反白开,将游标所在地址上的内容反白显示;B=0,正常显示。格式设置如图 2- 30。
(7)汉字显示坐标
当确定汉字编码后,还需要确定汉字坐在阵列的位置,LCD中汉字字符对应地址安排如表2- 2。
(8)显示一个汉字的流程
每个汉字大小为16×16,所以 LCD 屏幕最多可以显示 8×4 个汉字,所以将LCD屏分成8列4 行,“北京科技大学自动化学院”前 8 个汉字在第2行显示,后3个汉字显示在第3行。 要成功显示汉字,首先需要确定该汉字要显示的地址,根据表2-2可知,“北” 字所在的地址是90H,“京”字所在的地址是91H……以此类推可以得到所有要显示汉字的显示地址。此后,先送汉字编码的高8位至 LCD,再送低8位至LCD, 如此便实现了一个汉字的显示。所以,显示一行汉字的流程如图 2- 31。
4.实验接线及思路
4.1实验接线介绍
根据实验要求得知,需要在红外热感应传感器输出值在不同的情况下, 数码管和LCD显示屏显示出不同的信息。其中红外热感应传感器LHI958范围内有人体温度变化时,传感器输出信号经过放大电路和比较电路后输出一高电平信号。将这一信号通过可编程并行接口8255传递到8086系统内部,配合定时器8254,从而实现实验要求的具体功能。实验原理图如图 4- 1:
接线如下:
数码管 D7~D0 <--------->8255 PB7~PB0
数码管位选 S3/S2 <--------->GND
LCD D7~D0 <--------->8255 PA7~PA0
LCD DI/RW/E <--------->8255 PC0/PC1/PC2
红外模块输出 <--------->8255 PC4
时钟输出 <--------->8255 PC5
光敏电阻输出 <--------->8255 PC6
4.2实验编程思路
根据实验基本要求以及现有代码模板可知,总共需要通过编程完成三个状态:
状态 1:红外热感应传感器输出低电平时,数码管显示“FF”且 LCD 显示 “无遮挡物”状态,对应模板程序段 aa;
状态 2:红外热感应传感器输出高电平时,数码管显示“00”且LCD显示 “有遮挡物”状态,对应模板程序段 bb;
状态 3:当LCD显示“有遮挡物”时,保持该状态十秒的状态,对应模板程序段 cc。
因此我们只需要将每一段程序进行完善补充,对8254,8255等模块正确初始化和使用,就可以实现基本要求。故程序最开始就应该配置好8255每个端口的工作方式。 根据实验原理图以及上述 8255 的端口划分,我们应将8255的PA0~PA7、PB0~PB7、PC0~PC3设置为输出,PC4~PC7 设置为输出。紧接着 aa 程序段 LCD 显示“无遮挡物”以及数码管显示“FF”,接下来 bb 程序段用来检测红外热感应 传感器是否出现有效输出,若没有则跳转至aa,继续执行状态1;反之,则执行 状态2即LCD显示“有遮挡物”,数码管显示“00”;紧接着就要使用到定时器 55 了,由于实验箱只提供 1MHZ 以上频率 的时钟,如果直接用它来进行定时10s, 计数初值为10^7,而8086允许的操作数最多16位,已经严重超出,所以不能直接定时,需要使用8254的计数器0将1MHZ的输入时钟频率进行分频,如1KHZ, 将它输出到8254定时器的计数器1的输入,这样就可以使8254的计数器 1 进行10s的定时。 而cc程序段即状态3就是在这10s没结束时,一直循环检测计数器,直到10s结束,计数器输出高电平,才会再回到初始状态 1。如此便设计完成具有完整功能的红外热感应传感器系统。
引入光敏电阻模块,同时加入了一个新的状态“黑夜有人!!!!”,即在原有状态不变的情况下,改变代码逻辑,首先先进行光源检测, 若白天的情景下(光敏电阻输出 1),输出不变,即在红外热感应传感器产生有效输出时,输出“有遮挡物”的状态,没有有效输出时,保持“无遮挡物”状态。在夜晚的情景下(光敏电阻输出0),输出发生变化,即在红外热感应传感器检测到有人经过时,输出“黑夜有人!!!!”状态,在没有检测到人的情况下,显示“无遮挡物”。
感谢北京科技大学微机原理课程组对本次课设和博客的帮助。