远程监控系统 0604031016韩抒.docx
- 文档编号:17168063
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:25
- 大小:68.17KB
远程监控系统 0604031016韩抒.docx
《远程监控系统 0604031016韩抒.docx》由会员分享,可在线阅读,更多相关《远程监控系统 0604031016韩抒.docx(25页珍藏版)》请在冰点文库上搜索。
远程监控系统0604031016韩抒
合肥学院
计算机科学与技术系
课程设计报告
2008~2009学年第一学期
课程
微型计算机原理与接口技术
课程设计名称
远程监控系统
学生姓名
韩抒
学号
0604031016
专业班级
网络工程
(1)班
指导教师
张向东
2009年2月
1题义分析及解决方案
1.1题义需求分析
用STARES598PCI单板开发机,设计一个远程监控系统,并编程实现其功能:
采用串口调试助手,通过串口进行控制,输入0001时,蜂鸣器鸣叫,输入0002,LED灯亮,输入0003LED灯灭,输入0004后,再输入想要在LED灯上显示的数字或字母,控制LED显示器显示输入的数据。
问题归纳:
1)接口问题,选用何种芯片。
这是关键的一步,这将直接影响到整个功能的实现;
2)如何通过串口助手控制蜂鸣器鸣叫;
3)如何通过串口助手控制继电器常开端闭合,常闭端开合;
4)如何通过串口助手控制LED显示数据;
1.2解决问题方法及思路
1.2.1硬件部分:
本程序用8251芯片提供串行接口输入和输出,采用8255芯片来提供并行接口的输入和输出,由8253芯片来提供8251的收发时钟,利用串口调试助手模拟上位机,从键盘接收命令由8251传送给上位机,经由程序体分析后将命令传给8255,即由8255相应的连接线路执行相应的命令实现功能。
在8255芯片的应用中,PC0口连接蜂鸣器,PC7口连接继电器,PA口连接LED位选,PB口用于控制LED的段选,硬件部分连接结束,其控制处理部分由程序来实现。
1.2.2软件部分:
对8253的初始化(定时器0,方式3,BCD码计数,CLK0/26),对8251初始化(波特率系数为16,8个数据位,一个停止位,偶校验),对于8255芯片,主要用于将CPU的命令输出,故PA、PB、PC三口均设置为方式0状态下工作。
由PA0~PA7来控制LED灯的位选,由PB0~PB7口来控制LED灯的段选。
当PC0口为低电平时蜂鸣器鸣叫,为高电平时蜂鸣器禁止鸣叫,PC7口对继电器的控制也同理。
从下位机的键盘键入命令字,通过命令字的判断,执行相应的功能,反复测试串口的接收,若有数据输入,判断并执行,如此反复循环下去。
2硬件设计
2.1芯片
(1)--8255A
2.1.1芯片
(1)在本设计中的作用
通过8255接收上位机处理后传来的命令,由PA0~PA7来控制LED灯的位选,由PB0~PB7口来控制LED灯的段选,PC0口控制蜂鸣器的鸣叫,PC7口控制继电器的开合工作。
2.1.2芯片
(1)的功能分析
8255A是一种通用的可编程的并行I/O接口芯片,可用与连接PCI卡与外设,实现数据的的输入输出功能,可以对输入/输出的数据进行数据锁存和数据缓冲,有中断请求信号,可以向cpu发出中断请求,能进行单向和双向通信。
8255A有三个8位端口,其中A口具有数据输入锁存和数据输出锁存和缓冲功能,B口具有数据输入缓冲和数据输入/输出锁存/缓冲功能,C口具有数据出入缓冲和数据输出锁存/缓冲功能。
各口中含有控制电路,它还具有读写控制逻辑。
共有三种工作方式,通过初始化控制字的不同设置,决定8255A的工作方式和3个端口所具有的功能。
2.1.3芯片
(1)的技术参数
达林顿驱动电流最大为4.0mA,LED工作电流为20mA,8255A的工作电流为低时,最大为0.45V,工作电流为高时,最小为2.4V,而LED为5V,因此需要一个驱动器来驱动,使工作电流和电压相匹配。
8255A技术参数表
参数名称
符号
测试条件
最大
最小
输入低电平电压
Vol
0.8
-0.5V
输入高电平电压
Vih
Vcc
2.0V
输出低电平电压
(数据端口)
Vol
Iol=2.5mA
0.45
输出低电平电压
(外部端口)
Vol
Iol=1.7mA
0.45
输出高电平电压
(数据端口)
Voh
Ioh=-400mA
2.4V
输出高电平电压
(外部端口)
Voh
Ioh=-200mA
2.4V
达林顿驱动电流
Idar
Rrxt=750v
-4.0mA
-1.0mA
电源电流
Icc
Vrxt=1.5V
120mA
输入负载电流
Ill
Vin
+10/-10mA
输出浮动电流
Iofl
Vofl
+10/-10mA
2.2芯片
(2)8253
2.2.1芯片
(2)在本设计中的作用
为了实现8251A与PC机的串行通讯,使用8253作为分频器提供8251的收发时钟。
2.2.2芯片
(2)的功能分析
8253A是一种可编程的定时器/计数器芯片,它可用于计数、分频、定时器等的方面。
它分频工作的功能:
CLK引脚获得初始频率,此时若GATE为高电平,十六位计数初值寄存器中的数据装入计数执行单元CE中,它对CLK脉冲计数,每出现一个CLK脉冲,计数对执行单元CE的值减小。
当减为0时,通过OUT输出指示信号,表明计数执行单元已为0。
这时OUT输入的信号频率是CLK频率的1/N。
这样就达到了分频的目的。
8253A有5种工作方式:
门脉冲控制时钟输入,用门脉冲重新启动计数器,用门脉冲停止计数器工作,单次计数,循环计数等8253的主要性能为:
内有三个独立的16位计数器,工作方式可编程控制,计数脉冲频率为0MHZ-2.6MHZ,可以按二进制或BCD码计数,使用单一+5电源
2.2.3芯片
(2)的技术参数
输入低电压的范围是-0.5—0.8,输出低电压的范围0.45—2.4,输入高电压的范围是2.2—Vcc+0.5。
而测试条件均为Vin=Vcc—0V,Vout=Vcc—0.45V
8253A的技术参数
参数名称
符号
测试条件
最大规范值
最小规范值
输入低电平电压
VIL
0.8
-0.5V
输入高电平电压
VIA
Vcc+0.5
2.2V
输出低电平电压
VOL
Vin=Vcc--0V
0.45
输出高电平电压
VOH
Vout=Vcc--0.45V
2.4V
输入负载电流
IIL
+/-10
输出浮动漏电流
IOFL
+/-10
电源电流
Icc
140
2.3芯片(3)8251
2.3.1芯片(3)在本设计中的作用
芯片8251A用于实现设备间的串行通信,利用串口调试助手模拟上位机,由8251来实现计算机与串口之间的通信。
2.3.2芯片(3)的功能
Intel8251是一种通用的同步异步接收/发送器,可以通过编程选用同步/异步通信方式。
8251具有独立的发送器和接收器,能够以单工、半双工或全双工方式进行通信,并提供相应的控制信号,方便的与调制解调器连接。
2.4LED显示器
七段LED显示器通过汇编语言控制,可以控制在哪几位数位上,哪几个发光二极管亮,从而现实数字。
其工作原理是:
如果发光二极管共阳极,则输入为0,则发光;当为1时,不发光。
反之,如果发光共阴极,则输入1为发光,0时为不发光。
发光二极管是一种外加电压超过额定电压时发生击穿,并因此能产生可发光的器件。
数码显示器通常有多个发光二极管来组成,七段或八段笔画来显示器。
当段组合发光时,便会显示某一个数码管或字符。
七段代码的各位用作a-g和DD输入。
技术参数:
PCW
LF
Vr
Ir
If
p
对应变量
散射颜色
BT235
70
25
5
≥1.5
≤2.5
200
SEL-10
红
BT144
100
40
5
≥0.5
≤2.5
565
绿
BT134
100
40
5
≥0.5
≤2.5
585
蓝
主要参数:
此时的驱动电流为25mA.
LED数码显示真值表:
定义的十六进制
发光二极管
显示的数字
3FH
00111111
0
06H
00000110
1
5BH
01011011
2
4FH
01001111
3
66H
01100110
4
6DH
01101101
5
7DH
01111101
6
07H
00000111
7
7FH
01111111
8
6FH
01101111
9
77H
01110111
A
7CH
01111100
B
46H
01000110
C
5EH
01011110
D
7BH
01111011
E
71H
01110001
F
LED数显
2.5蜂鸣器
蜂鸣器原理图
扬声器是将电能转化成声能,并将声能辐射到空气中去的一种电声转换器件。
当输入端输入一定频率的方波时,在RC震荡电路的作用下,蜂鸣器会发出一定频率的声音。
蜂鸣器的技术参数:
一般包括灵敏度、频率响应、额定功率、额定阻抗、指向性、失真、音质听感评价等。
本实验只关心工作电压,其工作电压为5V。
2.6继电器
继电器工作原理图
2.7硬件总逻辑图
3控制程序设计
3.1控制程序设计思路说明
程序运行时处于死循环状态。
在输入四个命令字后同步由串口输出,将命令字取出并比较:
若第一个数字为4则调用LED显示子程序;若前三个均为0,将第四个数字与1比较(相同则调用蜂鸣器鸣叫子程序,然后从头执行,不同则继续下一步),将AL与2比较(相同则调用继电器常开端闭合子程序,然后从头执行,不同则继续下一步),将AL与3比较(相同则调用调用继电器常闭端闭合子程序,然后从头执行,不同则继续下一步);若前三个有任意个非0,则调用复位子程序。
详见程序流程图。
3.2程序流程图
3.3控制程序
.MODELTINY
;使用8253的计数器0,外接2Mhz,经26分频后,送给8251,产生4800bps
PCIBAR3EQU1CH;8位I/O空间基地址(它就是实验仪的基地址,也为DMA&32BITRAM板卡上的8237提供基地址)
Vendor_IDEQU10EBH;厂商ID号
Device_IDEQU8376;设备ID号
.STACK100
.DATA
CTL_ADDRDW00F1H;控制字或状态字
DATA_ADDRDW00F0H;读写数据
W_8253_T0DW00C0H;计数器0地址
W_8253_CDW00C3H;8253控制字
COM_ADDDW00E3H;8255控制字
PA_ADDDW00E0H;PA口偏移量
PB_ADDDW00E1H;PB口偏移量
PC_ADDDW00E2H;PC口偏移量
IO_Bit8_BaseAddressDW?
msg0DB'BIOS不支持访问PCI$'
msg1DB'找不到StarPCI9052板卡$'
msg2DB'读8位I/O空间基地址时出错$'
Receive_BufferDB4DUP(0);接收;
Send_BufferEQUReceive_Buffer;发送;
SHOWDB3FH,00H,3FH,00H,3FH,00H
TIMEdb3fh,06h,5bh,4fh,66h,6dh,7dh,27h,7fh,6fh,77h,7ch,39h,5eh,79h,71h;段选码表
.CODE
-----------------------------------
START:
MOVAX,@DATA
MOVDS,AX
MOVES,AX
NOP
CALLInitPCI
CALLModifyAddress;根据PCI提供的基地址,将偏移地址转化为实地址;
CALLINIT_8253;初始8253
CALLINIT_8251;初始8251
CALLINIT_8255;初始8255
-----------------------------------
START1:
MOVCX,4;定义输入个数为4;
CALLReceive_Group;调用串口助手接收程序;
MOVCX,4
CALLSend_Group;调用串口输出子程序;
LEADI,Receive_Buffer;取接收缓冲区的地址;
MOVAL,[DI];将缓冲区的第一个字符送AL
CMPAL,4;将AL与4相比;
JZCALL5;若AL等于4,则跳转到CALL5(LED显示部分);
MOVCH,3;否则,送3到CH,为了接下来将AL与0比较;
PPP:
CMPAL,0;将AL与0比较;
JNZCALL6;若AL中的值不为0,则跳转到CALL6(复位部分);
INCDI
MOVAL,[DI]
DECCH
JNZPPP
CMPAL,1;若缓冲区前三个字符都为0,将第四个与1比较;
JZCALL1;相等(第四个字符是命令1,)则跳转到CALL1调用蜂鸣器子程序;
CMPAL,2;否则与2比较;
JZCALL2;相等(第四个命令字是2)则跳转到CALL2调用继电器常开端;
CMPAL,3;否则与3比较;
JZCALL3;相等(第四个命令字是3)则跳转到CALL3调用继电器常闭端;
JNZCALL6;不相等则调用复位子程序;
-----------------------------------
START0:
CALLIfExit
JZSTART1;OUT1输出频率为1S的方波
JMPExit
;JMPSTART1
-----------------------------------
CALL1:
CALLSTART2;蜂鸣器部分;
JMPSTART1
CALL2:
CALLSTART3;调用继电器常开端闭合子程序;
JMPSTART1
CALL3:
CALLSTART4;调用继电器常闭端闭合子程序;
JMPSTART0
CALL5:
CALLSTART5;调用LED显示子程序;
JMPSTART0
CALL6:
CALLSTART6;调用复位子程序;
JMPSTART0
-----------------------------------
INIT_8255PROCNEAR;对8255写控制字,ABC口均为输出;
MOVDX,COM_ADD
MOVAL,80H
OUTDX,AL
MOVAL,01H
OUTDX,AL
RET
INIT_8255ENDP
-----------------------------------
INIT_8253PROCNEAR;8253初始化;
MOVDX,W_8253_C
MOVAL,37H;定时器0,方式3
OUTDX,AL
MOVDX,W_8253_T0
MOVAL,26H;BCD码26(2000000/26)=16*4800
OUTDX,AL
MOVAL,0
OUTDX,AL
RET
INIT_8253ENDP
-----------------------------------
START6PROCNEAR;复位
MOVDX,COM_ADD
MOVAL,01H;PC0口置1
OUTDX,AL
RET
START6ENDP
-----------------------------------
;START2控制蜂鸣器鸣叫:
START2PROCNEAR
MOVDX,COM_ADD
MOVAL,00H;PC0口置0控制蜂鸣器鸣叫;
OUTDX,AL
CALLDLTIME;调用延时程序;
RET
START2ENDP
-----------------------------------
;START3控制继电器常开端闭和:
START3PROCNEAR
MOVDX,COM_ADD
MOVAL,0EH;PC7口置0控制继电器常开端闭合灯亮;
OUTDX,AL
RET
START3ENDP
-----------------------------------
;START4控制继电器常闭端闭合:
START4PROCNEAR
MOVDX,COM_ADD
MOVAL,0FH;PC7口置1控制继电器常闭端闭合灯灭;
OUTDX,AL
RET
START4ENDP
-----------------------------------
START5PROCNEAR
LEADI,receive_buffer;DI指向接收缓冲区首地址;
INCDI;DI指向第二个字符;
LEASI,SHOW;将SI指向显示缓冲区;
INCSI;SI指向第二个单元
MOVCH,3;设置次数;
QQQ:
MOVAL,BYTEPTR[DI];取DI中的内容入AL;
MOVBX,OFFSETTIME;取段码表地址入BX;
XLAT;查表得段码;
MOV[SI],AL;取段码保存在SI中;
INCDI;DI指向下个单元;
ADDSI,2;SI加2;
DECCH
JNZQQQ;循环取段码三次;
MOVBX,0AA0H;设置显示循环次数(即控制LED显示时间);
JJJ:
LEASI,SHOW;SI指向显示缓冲区;
movaH,11011111b;定义位选;
MOVCX,6;设置显示循环次数(显示6位);
KKK:
MOVAL,AH
MOVDX,PA_ADD
OUTDX,AL;送位选;
MOVAL,[SI]
MOVDX,PB_ADD
OUTDX,AL;送段码;
CALLDELY;调用延时子程序;
MOVal,0ffh;禁止显示;
MOVDX,PA_ADD
OUTdx,al
INCSI;SI指向下一个段码值;
RORAH,1;位选循环向右移一位;
LOOPKKK;循环显示下一字符;
DECBX
JNZJJJ
RET
START5ENDP
-----------------------------------
;延迟子程序
DELYprocNEAR;延迟子程序,实现延时的功能;
pushcx;将cx的内容保存入栈;
MOVCX,0BB8h;设置循环次数
MOVCX,3E8H
loop5:
NOP;空操作;
LOOPLOOP5;循环延时;
POPCX;出栈;
RET;返回“禁止显示”;
DELYendp
-----------------------------------
INIT_8251PROCNEAR
CALLRESET_8251
MOVDX,CTL_ADDR
MOVAL,7EH;波特率系数为16,8个数据位;
OUTDX,AL;一个停止位,偶校验;
CALLDLTIMEQ;延时;
MOVAL,37H;允许接收和发送发送数据,清错误标志;
OUTDX,AL
CALLDLTIMEQ
RET
INIT_8251ENDP
-----------------------------------
Reset_8251PROCNEAR
MOVDX,CTL_ADDR
MOVAL,0
OUTDX,AL;向控制口写入"0";
CALLDLTIME;延时,等待写操作完成;
OUTDX,AL;向控制口写入"0”;
CALLDLTIME;延时,等待写操作完成;
OUTDX,AL;向控制口写入"0;"
CALLDLTIME;延时,等待写操作完成;
MOVAL,40H;向控制口写入复位字40H;
OUTDX,AL
CALLDLTIME
RET
Reset_8251ENDP
-----------------------------------
;接收一组数据,CX--接收数目:
Receive_GroupPROCNEAR
LEADI,Receive_Buffer;DI指向接收缓冲区;
Receive_Group1:
CALLReceive_Byte;调用接收字节子程序;
STOSB;将接收的字节存入缓冲区;
LOOPReceive_Group1;循环接收;
RET
Receive_GroupENDP
-----------------------------------
;接收一个字节
Receive_BytePROCNEAR
MOVDX,CTL_ADDR
Receive_Byte1:
INAL,DX;读入状态;
ANDAL,02H
JZReceive_Byte1;有数据吗?
DECDX
INAL,DX
RET
Receive_ByteENDP
-----------------------------------
;发送一组数据,CX--发送数目:
Send_GroupPROCNEAR
LEASI,Send_Buffer;SI指向发送缓冲区;
S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 远程监控系统 0604031016韩抒 远程 监控 系统 0604031016 韩抒