电容器组投切控制系统模拟设计课设报告大学论文.docx
《电容器组投切控制系统模拟设计课设报告大学论文.docx》由会员分享,可在线阅读,更多相关《电容器组投切控制系统模拟设计课设报告大学论文.docx(53页珍藏版)》请在冰豆网上搜索。
![电容器组投切控制系统模拟设计课设报告大学论文.docx](https://file1.bdocx.com/fileroot1/2023-2/11/1259bd72-f4ac-4380-84a5-48384701a1ff/1259bd72-f4ac-4380-84a5-48384701a1ff1.gif)
电容器组投切控制系统模拟设计课设报告大学论文
成绩
南京工程学院
课程设计说明书(论文)
题目电容器组投切控制系统模拟设计
课程名称计算机接口技术A
院系电力工程学院
专业智能电网信息工程
班级智网121
学生姓名唐卉
学号206120905
设计地点工程实验中心8-216
指导教师李升副教授
设计起止时间:
2015年5月18日至2015年5月22日
2.1.1硬件接线图……………………………………………………………32.1.2引脚连线说明……………………………………………………………4
2.2.1硬件接线图……………………………………………………………62.2.2引脚连线说明……………………………………………………………8
3.1.1系统流程图……………………………………………………………10
3.1.2程序代码………………………………………………………………12
3.2.1系统流程图……………………………………………………………21
3.2.2程序代码………………………………………………………………23
南京工程学院
课程设计任务书
课程名称计算机接口技术B
院(系、部、中心)电力工程学院
专业智能电网信息工程
班级智网121
起止日期2015年5月18日-5月22日
指导教师李升副教授
1.课程设计应达到的目的
1)通过课程设计加深理解课堂教学内容,掌握计算机接口技术的基本应用方法。
2)掌握常用接口电路的设计,掌握8255A、8253、8259A、8251A、ADC0809等接口芯片的应用和编程方法,做到理论联系实际。
2.课程设计题目及要求
一、课题名称:
电容器组投切控制系统模拟设计
二、课题要求
设计一个双机串行通信系统,以模拟电容器组投切控制系统,在星研实验系统上实现。
具体要求:
1)通过8251A实现甲、乙两台实验装置之间异步串行数据的收发。
甲机用ADC0809采集0~5V直流电压并送乙机数码管显示,乙机根据甲机发送来的电压值(数字量)进行判断并发控制信号给甲机的发光二极管显示。
发光二极管有关显示规律如下:
如果采集到的电压值低于2V,则从最低位开始按顺序使LEDi(i=1~8)亮(即模拟低压投电容操作);如果采集到的电压值高于3V,则从最先亮的LED开始按顺序使其灭(即模拟过压切电容操作)。
即先亮的先灭,后亮的后灭(即模拟电容器组的循环投切)。
如果采集到的电压值高于等于2V且低于等于3V,则维持LED现状。
如果无LED可亮(8个LED已全亮)或无LED可灭(8个LED已全灭),则维持。
2)8251A的发送/接收时钟信号由8253分频提供,波特率可选择9600b/s(供参考)或其他;数码管和LED分别通过8255A接入。
3)采用查询法和中断法(需使用8259A)两套方案实现(均要求)。
提示:
ADC0809电压采样问题。
电压采集时存在着抖动现象,从而使采集到的电压值不准。
为避免此现象,可连续采样200次电压值,取平均值后与上一次连续采样200次的平均值比较,直到相等,则可确定采样的电压值。
三、分组情况
需双机联合调试,因此2人1组(自由搭配)。
3.课程设计任务及工作量的要求〔包括课程设计计算说明书、图纸、实物样品等要求〕
本次课程设计进行双机串行通信系统的设计。
预习要求:
1)热身实验:
ADC0809、8251A实验等。
2)预习本任务书,根据设计任务,预先画出电路原理图、程序流程图,初步编写实验程序。
设计报告要求:
1)画出接口部分电路原理图,并阐述系统工作原理。
2)绘制程序流程图(Visio绘制),给出源程序清单。
3)调试过程和结果分析。
4)心得体会。
5)要求用WORD撰写报告,上交打印版和电子稿(电子稿全班统一刻盘)。
4.主要参考文献
1、星研公司.StarES8688使用说明书.
2、李干林,李升.微机原理及接口技术实验指导书.北京:
北京大学出版社,2010.
3、李继灿.新编16/32位微型计算机原理及应用(第3版).北京:
清华大学出版社,2004.
4、周荷琴,吴秀清.微型计算机原理与接口技术(第三版).合肥:
中国科学技术大学出版社,2004.
5.课程设计进度安排
起止日期
工作内容
2015年5月18日前
5月18日~22日
5月22日
准备阶段(编写程序、复习实验内容等)
上机调试
验收答辩
6.成绩考核办法
上机调试表现占30%,验收答辩表现占30%,设计报告占40%。
教研室审查意见:
同意。
教研室主任签字:
鞠阳
2015年5月11日
院(系、部、中心)意见:
同意。
主管领导签字:
郝思鹏
2015年5月11日
一方案说明
1.1功能描述
本双机串行通信系统由甲、乙两台主机组成。
甲机将所采集到的模拟电压经模数转换后发送到乙机,并在乙机的数码管上显示出电压大小。
同时乙机在收到电压信号后发送一个反馈控制信号给甲机,在甲机LED上显示在某一电压范围内调整电压的次数。
如果电压小于2伏,则LED依次点亮,直到无灯可亮就保持全亮状态不变。
如果电压大于2伏小于3伏,则LED保持当前状态不变。
如果电压大于3伏,则LED从最先点亮的开始一次熄灭,直到无灯可灭就保持全灭状态。
1.2工作原理
各芯片功能分配如下:
8251:
串行异步通信
8253:
分频提供8251的发送/接收时钟信号
8255:
控制数码管或LED显示
ADC0809:
将模拟电压量转化为数字量
8259:
发送、接收中断控制(中断法使用)
为避免电压波动产生的干扰,系统采用多次采样(采样200次或100次)并求平均值的方法加以控制。
同时,为了消除电压调整过程中的中间变化量,程序将当前采样值与上一次发送的数字电压值(LastAD)比较,若不同说明电压发生了调整,这时将采样值送给LastAD,将发送标志FLAG置0,说明准备发送,但若采样值不是一个稳定值,则暂缓发送。
继续采样并求平均值,将平均值与LastAD比较,这时如果相同,则将发送标志FLAG置1,并发送结果。
甲机将发送的电压模拟量经AD0809转换成数字量后发送给乙机,乙机接收到甲机发来的数字量后,将其转化为BCD码,因为转换电路对输入模拟电压的分辨率为5V/255=19.5mV,所以数码管采用四位小数的精确度。
通过分别查表找出个位和小数点后各位对应的字型码,存入显示字符缓存,同时送给8255,采用动态扫描技术在数码管上显示对应的模拟电压电压大小。
乙机收到数字电压信号显示后,将发送一个反馈控制信号控制甲机LED(1-8)的显示,显示规律在功能概述部分已给出。
因为要循环显示,电压调整次数过多时会出现LED显示不规律的问题,解决方法如下:
建查询表TAB,其内容为01H,02H,04H,08H,10H,20H,40H,80H。
因为初始化时LED全灭则,所以控制信号为全1,当要点亮或熄灭LED只要依次减去或加上相应位的查表结果。
建立两个互不影响的指针FROUNT和REAR,当电压小于2伏时,判断FROUNT是否大于7,若大于则将FROUNT置0(表示第8个LED已经点亮,需要从第一个开始循环点亮),若小于7则判断LED是否已全亮,若全亮则不操作,若不是则点亮FROUNT所指的LED,FROUNT加1。
当电压大于3伏时,判断REAR是否大于7,若小于7则判断LED是否全部熄灭,若熄灭则不操作。
如果REAR大于7则将REAR置0(表示第8个LED已经熄灭,需要从第一个开始循环熄灭),并判断REAR是否与FROUNT相同,若相同则不操作,若不同则熄灭REAR所指位置的LED,REAR加1。
这样就保证了LED能按照要求的规律显示电压在一定范围内调整的情况。
本系统在控制串行通信方面,采用了查询法与中断法两套方案。
当采用查询法时,发送前先查TxRDY的值是否为1,若等于1则开始发送;接受前查RxRDY的值是否等于1,若等于1则开始接收。
采用中断法时,分别将TxRDY、RxRDY作为发送和接收的中断请求信号,通过8259向CPU申请中断,进而进入发送或中断服务子程序进行数据的发送接收。
二硬件设计
2.1双机串行通信系统(查询法)
2.1.1硬件接线图
①甲机连线图
②乙机连线图
2.1.2引脚连线说明
①甲机连线说明
C5区(8251):
CS
——
A3区:
CS2
C5区(8253):
CS
——
A3区:
CS1
C5区:
A0/A1/C/D
——
A3区:
A0/A1/A0
C5区:
OUT0
——
C5区(8251):
TxC/RxC
C5区:
GATE0
——
C1区:
VCC
C5区:
CLK0(8253)/CLK(8251)
——
B2区:
2MHz/4MHz
C5区:
RxRDY/TxRDY
——
B3区:
IR1/IR0
C5区:
RXD/TXD
——
乙机C5区:
TXD/RXD
B4区:
CS/A0/A1
——
A3区:
CS3/A0/A1
B4区:
GND
——
C1区:
GND
B4区:
PA口
——
G6区:
LED(1-8)
G4区:
CS/ADDA/ADDB/ADDC
——
A3区:
CS5/A0/A1/A2
G4区:
CLK
——
B2区:
500KHz
G4区:
IN0
——
D2区:
0-5V
甲机C1区:
GND
——
乙机C1区:
GND
②乙机连线说明
C5区(8251):
CS
——
A3区:
CS2
C5区(8253):
CS
——
A3区:
CS1
C5区:
A0/A1/C/D
——
A3区:
A0/A1/A0
C5区:
OUT0
——
C5区(8251):
TxC/RxC
C5区:
GATE0
——
C1区:
VCC
C5区:
CLK0(8253)/CLK(8251)
——
B2区:
2MHz/4MHz
C5区:
RxRDY/TxRDY
——
B3区:
IR1/IR0
C5区:
RXD/TXD
——
甲机C5区:
TXD/RXD
B4区:
CS/A0/A1
——
A3区:
CS3/A0/A1
B4区:
GND
——
C1区:
GND
B4区:
PA口
——
G6区:
LED(1-8)
B4区:
PA口/PB口
——
G5区:
C/B
2.2双机串行通信系统(中断法)
2.2.1硬件接线图
①甲机接线图
②乙机连线图
2.2.2引脚连线说明
①甲机连线说明
C5区(8251):
CS
——
A3区:
CS2
C5区(8253):
CS
——
A3区:
CS1
C5区:
A0/A1/C/D
——
A3区:
A0/A1/A0
C5区:
OUT0
——
C5区(8251):
TxC/RxC
C5区:
GATE0
——
C1区:
VCC
C5区:
CLK0(8253)/CLK(8251)
——
B2区:
2MHz/4MHz
C5区:
RxRDY/TxRDY
——
B3区:
IR1/IR0
C5区:
RXD/TXD
——
甲机C5区:
TXD/RXD
B4区:
CS/A0/A1
——
A3区:
CS3/A0/A1
B4区:
GND
——
C1区:
GND
B4区:
PA口
——
G6区:
LED(1-8)
G4区:
CS/ADDA/ADDB/ADDC
——
A3区:
CS5/A0/A1/A2
G4区:
CLK
——
B2区:
500KHz
G4区:
IN0
——
D2区:
0-5V
B3区:
CS/A0/A1
——
A3区:
CS4/A0/A1
B3区:
INT
——
ES8086:
INTR
B3区:
INTA
——
ES8086:
INTA
②乙机连线说明
C5区(8251):
CS
——
A3区:
CS2
C5区(8253):
CS
——
A3区:
CS1
C5区:
A0/A1/C/D
——
A3区:
A0/A1/A0
C5区:
OUT0
——
C5区(8251):
TxC/RxC
C5区:
GATE0
——
C1区:
VCC
C5区:
CLK0(8253)/CLK(8251)
——
B2区:
2MHz/4MHz
C5区:
RxRDY/TxRDY
——
B3区:
IR1/IR0
C5区:
RXD/TXD
——
甲机C5区:
TXD/RXD
B4区:
CS/A0/A1
——
A3区:
CS3/A0/A1
B4区:
GND
——
C1区:
GND
B4区:
PA口
——
G6区:
LED(1-8)
B4区:
PA/PB
——
G5区:
C/B
B3区:
CS/A0/A1
——
A3区:
CS4/A0/A1
B3区:
INT
——
ES8086:
INTR
B3区:
INTA
——
ES8086:
INTA
三软件设计
3.1双机串行通信系统(查询法)
3.1.1系统流程图
①甲机流程图
②乙机流程图
3.1.2系统程序清单
①甲机代码
;片选地址分布
;CS10F000H~0FFFFHCS50B000H~0BFFFH
;CS20E000H~0EFFFHCS60A000H~0AFFFH
;CS30D000H~0DFFFHCS709000H~09FFFH
;CS40C000H~0CFFFHCS808000H~08FFFH
DATASEGMENT
;8253
C_8253EQU0F003H
T0_8253EQU0F000H
;8251
C_8251EQU0E001H
D_8251EQU0E000H
;8255
C_8255EQU0D003H
PA_8255EQU0D000H
PB_8255EQU0D001H
;ADC0809
ADD_0809EQU0B000H
LastADDB0
FLAGDB0
DATAENDS
STASEGMENTSTACK
ST1DB100DUP(?
)
STAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STA
START:
MOVAX,DATA
MOVDS,AX
CALLINIT_8253
CALLINIT_8251
CALLINIT_8255
XORAL,AL
AD1:
MOVCX,200;采样200次
MOVBX,0;累计200次的采样值
AD2:
CALLDO_AD0809
XORAH,AH
ADDBX,AX
LOOPAD2
MOVAX,200
XCHGAX,BX
DIVBL;200次的平均值
CMPAL,LastAD
JZAD3
AD4:
MOVLastAD,AL
MOVFLAG,0
PUSHCX
MOVCX,0FFFH
AD5:
CALLDLTime;采样间隔延时
LOOPAD5
JMPAD1
AD3:
CMPFLAG,1
JZGOON
MOVFLAG,1
CALLSEND
GOON:
JMPAD1
DO_AD0809PROCNEAR
PUSHCX
MOVAL,0
MOVDX,ADD_0809
OUTDX,AL
MOVCX,200
LOOP$;延时,等待AD转换完成
MOVDX,ADD_0809
INAL,DX
POPCX
RET
DO_AD0809ENDP
SENDPROCNEAR
MOVDX,C_8251
WAIT2:
INAL,DX
ANDAL,01H;判断TxRDY是否为1
JZWAIT2
MOVAL,LastAD
MOVDX,D_8251
OUTDX,AL
CALLDLTIME
MOVDX,C_8251
WAIT1:
INAL,DX
ANDAL,02H;判断RxRDY是否为1
JZWAIT1
MOVDX,D_8251
INAL,DX
MOVDX,PA_8255
OUTDX,AL;将收到的控制量送8255显示
RET
SENDENDP
INIT_8253PROCNEAR
MOVDX,C_8253
MOVAL,37H;00110111B计数器0方式3BCD计数
OUTDX,AL
MOVDX,T0_8253
MOVAL,26H
OUTDX,AL
MOVAL,0
OUTDX,AL
RET
INIT_8253ENDP
INIT_8251PROCNEAR
CALLRESET_8251
MOVDX,C_8251
MOVAL,7EH;波特率系数168位数据一位停止偶校验
OUTDX,AL
CALLDLTIME
MOVAL,15H;允许接收和发送清除错误
OUTDX,AL
CALLDLTIME
RET
INIT_8251ENDP
RESET_8251PROCNEAR;复位8251
MOVDX,C_8251
MOVAL,0
OUTDX,AL
CALLDLTIME
OUTDX,AL
CALLDLTIME
OUTDX,AL
CALLDLTIME
MOVAL,40H
OUTDX,AL
CALLDLTIME
RET
RESET_8251ENDP
DLTIMEPROCNEAR
MOVBX,1
LP:
SUBBX,1
JNZLP
RET
DLTIMEENDP
INIT_8255PROCNEAR
MOVDX,C_8255
MOVAL,80H
OUTDX,AL;初始化8255均为基本输出方式0
RET
INIT_8255ENDP
CODEENDS
ENDSTART
②乙机代码
;片选地址分布
;CS10F000H~0FFFFHCS50B000H~0BFFFH
;CS20E000H~0EFFFHCS60A000H~0AFFFH
;CS30D000H~0DFFFHCS709000H~09FFFH
;CS40C000H~0CFFFHCS808000H~08FFFH
DATASEGMENT
;8253
C_8253EQU0F003H
T0_8253EQU0F000H
;8251
C_8251EQU0E001H
D_8251EQU0E000H
;8255
C_8255EQU0D003H
PA_8255EQU0D000H
PB_8255EQU0D001H
LastADDB0;接收缓存
LastCONDB0FFH;发送缓存
FROUNTDB0;队首指针
REARDB0;队尾指针
FLAGDB0
TABDB01H,02H,04H,08H,10H,20H,40H,80H
LEDMAPDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;LED字型码
BUFFERDB5DUP(?
)
DATAENDS
STASEGMENTSTACK
ST1DB100DUP(?
)
STAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STA
START:
MOVAX,DATA
MOVDS,AX
CALLINIT_8253
CALLINIT_8251
CALLINIT_8255
GOON:
MOVDX,C_8251
INAL,DX
ANDAL,02H;判断RxRDY是否为1
JZNEXT2
CALLRECV
NEXT2:
CALLDISLED
JMPGOON
CHANGE_CONPROCNEAR;修改控制信号
LP0:
MOVFLAG,0
CMPLastAD,66H;将接收的电压与2V门限比较
JANEXT0
CMPFROUNT,7
JBENEXT3
MOVFROUNT,0
NEXT3:
CMPLastCON,00H;判断当前8个LED是否为全亮
JZENND
LEABX,TAB
MOVAL,FROUNT
XLAT
SUBLastCON,AL
INCFROUNT
JMPENND
NEXT0:
CMPLastAD,99H;将接收的电压与3V门限比较
JANEXT1
JMPENND
NEXT1:
CMPREAR,7
JBENEXT4
MOVREAR,0
MOVAL,FROUNT
CMPREAR,AL;判断队首指针是否与队尾指针相同
JBENEXT4
JMPENND
NEXT4:
CMPLastCON,0FFH;判断当前8个LED是否为全灭
JZENND
LEABX,TAB
MOVAL,REAR
XLAT
ORLastCON,AL
INCREAR
ENND:
NOP
RET
CHANGE_CONENDP
DISLEDPROCNEAR;8255控制显示数码管
MOVBX,OFFSETBUFFER
MOVCL,5
STC
MOVAH,11101111B
DLOOP:
MOVDX,PA_8255
MOVAL,0FFH
OUTDX,AL
MOVAL,[BX]
MOVDX,PB_8255;输出字型码
OUTDX,AL
MOVAL,AH
MOVDX,PA_8255;输出位选码
OUTDX,AL
PUSHAX
MOVAH,1
CALLDEALY;显示延时
POPAX
RCRAX,1
INCBX
DECCL
JNZDLOOP
MOVDX,PA_8255
MOVAL,0FFH
OUTDX,AL
RET
DISLEDENDP
DEALYPROCNARE
PUSHAX
PUSHCX
MOVAL,0
MOVCX,AX
LOOP$
POPCX
POPAX
RET
DEALYENDP
RECVPROCNEAR
MOVDX,D_8251
INAL,DX
MOVLastAD,AL
CALLCHANGE_AD;修改字型码缓存区数据
CALLCHANGE_CON;修改控制码缓存区数据
MOVFLAG,1
MOVDX,C_8251
WAIT