广工计算机接口实验报告.docx
《广工计算机接口实验报告.docx》由会员分享,可在线阅读,更多相关《广工计算机接口实验报告.docx(25页珍藏版)》请在冰豆网上搜索。
广工计算机接口实验报告
接口与通讯实验报告
1、8253定时/计数器实验
2、8255并行接口实验
3、数字式时钟(电子钟)
4、D/A(数/模)转换实验
5、A/D(模/数)转换实验
学生学院__计算机学院_____
专业班级10级计科(8)班
学号3110006202
学生姓名莫增升
指导教师曾碧
2012年12月13日
计算机学院10级计算机科学与技术专业8班、学号3110006202
姓名莫增升教师评定_________________
实验题目8253定时/计数器实验
一.实验目的与要求
1.学习8253可编程定时/计数器定时方法。
2.学习8253多级串联实现大时间常数的定时方法。
3.学习8088/86控制8253可编程定时器的方法。
2.实验内容
用8253对标准脉冲信号进行计数,就可以实现定时功能。
用板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高/1秒钟低的脉冲信号。
因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。
1.实验连线
连接孔1连接孔2
连接孔1连接孔2
连接孔1连接孔2
CS48253_CS
VCC8253_GATE0
L08253_OUT0
8253_OUT18253_CLK0
VCC8253_GATE1
1MHz8253_CLK1
2.实验原理
8253既可作定时器又可做计数器:
(1)计数:
GATE为高电平,输入脉冲对计数值进行减一计数
(2)定时:
由CLK脉冲触发开始自动计数,到零时发计数结束定时信号
3.实验程序和注释
CONTROLequ0c003h;控制端口地址
COUNT0equ0c000h;计数器0的地址
COUNT1equ0c001h;计数器1的地址
COUNT2equ0c002h;计数器2的地址
codesegment
assumecs:
code
startprocnear
moval,36h;00110100B;计数器0,16位,方式2,二进制
movdx,CONTROL
outdx,al
movax,1000;计数器0的时间常数
movdx,COUNT0
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
moval,76h;01110100B;计数器1,16位,方式2,二进制
movdx,CONTROL
outdx,al
movax,1001;计数器1的时间常数
movdx,COUNT1
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
jmp$
startendp
codeends
endstart
4.思考题
改用方式2,并改时间常数。
解:
修改工作方式为方式2,计数器1的时间常数改为1001
实验题目8255并行接口实验
一.实验目的与要求
1、了解8255芯片结构及编程方法。
2、了解8255输入/输出实验方法。
二.实验内容
利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输出,PB口作输入。
1.实验连线
连接孔1连接孔2
连接孔1连接孔2
连接孔1连接孔2
CS08255_CS
L08255-PA0
L18255-PA1
L28255-PA2
L38255-PA3
L48255-PA4
L58255-PA5
L68255-PA6
L78255-PA7
K08255-PB0
K18255-PB1
K28255-PB2
K38255-PB3
K48255-PB4
K58255-PB5
K68255-PB6
K78255-PB7
3.实验原理
可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。
本实验采用的是方式0:
PA,PC口输出,PB口输入。
很多I/O实验都可以通过8255来实现。
3.实验程序和注释
modeequ082h;方式0,PA,PC输出,PB输入
PortAequ8000h;PortA
PortBequ8001h;PortB
PortCequ8002h;PortC
CAddrequ8003h;控制字地址
codesegment
assumecs:
code
startprocnear
Start:
moval,mode
movdx,CAddr
outdx,al;输出控制字
;实验2:
PortB输入PortA输出
movdx,PortB
inal,dx;读入PortB
movdx,PortC
outdx,al
movdx,PortA
outdx,al;输出到PortA
movah,200
calldelay;调用延时子程序
jmpStart
endp
delayprocnear
pushax
moval,0;设置延时低位为0
pushcx
movcx,ax;设置延时CX的为0C800H
loop$
popcx
popax
ret
delayendp
codeends
endstart
四.思考题
1.将B口与C口的功能对调(连线对调),如何编写程序。
解:
因为工作方式控制字为10001001B=89H,并且B的连线换到C去。
改后的代码:
modeequ089h;方式0,PA,PB输出,PC输入
PortAequ8000h;PortA
PortBequ8001h;PortB
PortCequ8002h;PortC
CAddrequ8003h;控制字地址
codesegment
assumecs:
code
startprocnear
Start:
moval,mode
movdx,CAddr
outdx,al;输出控制字
;实验2:
PortC输入,PortA和PortB输出
movdx,PortC
inal,dx;读入PortC
movdx,PortB
outdx,al
movdx,PortA
outdx,al;输出到PortA
movah,200
calldelay;调用延时子程序
jmpStart
endp
delayprocnear
pushax
moval,0;设置延时低位为0
pushcx
movcx,ax;设置延时CX的为0C800H
loop$
popcx
popax
ret
delayendp
codeends
endstart
实验题目数字式时钟(电子钟)
1.实验目的与要求
1、进一步掌握定时器的使用和编程方法。
2、进一步掌握中断处理程序的编程方法。
3、进一步掌握数码显示电路的驱动方法。
二.实验内容
利用CPU的定时器和实验仪上提供的数码显示电路,设计一个电子时钟。
格式如下:
XXXXXX由左向右分别为:
时、分、秒
1.实验电路(略)
2.实验连线
连接孔1连接孔2
连接孔1连接孔1
CS48253_CS
VCC8253_GATE1
1MHz8253_CLK1
CS0KEY/LED_CS
CS58259CS
8253_OUT18259_INT0
3.实验原理
定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒。
然后再对秒计数得到分和小时值,并送入显示缓冲区。
显示子程序模块可参照硬件实验十六和硬件实验十七。
4.实验程序框图
3.实验程序和注释
本实验利用8253做定时器,用定时器输出的脉冲控制8259产生中断
在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循
环中用LED显示时间。
8253用定时器/计数器1,8253片选接CS4,地址为0C000H。
8253时钟
源CLK1接分频电路的F/64输出。
分频器的Fin接4MHz时钟。
8253的
GATE1接VCC。
8259中断INT0接8253的OUT1,片选接CS5,地址为0D000H。
显示电路的KEY/LEDCS接CS0,地址为08000H。
CONTROLequ0c003h
COUNT0equ0c000h
COUNT1equ0c001h
COUNT2equ0c002h
md8255equ82h;8255工作方式
PA8255equ8000h;8255PA口输出地址
CTL8255equ8003h;8255控制口地址
OUTBITequ08002h;位控制口
OUTSEGequ08004h;段控制口
ICW1equ00010011b;单片8259,上升沿中断,要写ICW4
ICW2equ00100000b;中断号为20H
ICW4equ00000001b;工作在8086/88方式
OCW1equ11111110b;只响应INT0中断
CS8259Aequ0d000h;8259地址的基地址和偶地址
CS8259Bequ0d001hd
datasegment
CNTdb0
LEDBufdb6dup(?
);显示缓冲
Numdb1dup(?
);显示的数据
DelayTdb1dup(?
)
Hourdb0
Minutedb0
Seconddb0
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
dataends
codesegment
assumecs:
code,ds:
data
Delayprocnear
pushax;延时子程序
pushcx
moval,0
movcx,ax
loop$
popcx
popax
ret
Delayendp
DisplayLEDprocnear
movbx,offsetLEDBuf
movcl,6;共6个八段管
movah,00100000b;从左边开始显示
DLoop:
movdx,OUTBIT
moval,0
outdx,al;关所有八段管
moval,[bx]
movdx,OUTSEG
outdx,al
movdx,OUTBIT
moval,ah
outdx,al;显示一位八段管
pushax
movah,1
callDelay
popax
shrah,1
incbx
deccl
jnzDLoop
movdx,OUTBIT
moval,0
outdx,al;关所有八段管
ret
DisplayLEDendp
IEnterprocnear
pushax
pushdx
incSecond
moval,Second
cmpal,60
jneExit
movSecond,0
incMinute
moval,Minute
cmpal,60
jneExit
movMinute,0
incHour
moval,Hour
cmpal,24
jneExit
movHour,0
Exit:
movdx,CS8259A
moval,20h;中断服务程序结束指令
outdx,al
popdx
popax
iret
IEnterendp
IInitproc;初始化8259,中断号为20H,只响应INT0中断
movdx,CS8259A
moval,ICW1
outdx,al
movdx,CS8259B
moval,ICW2
outdx,al
moval,ICW4
outdx,al
moval,OCW1
outdx,al
ret
IInitendp
startprocnear
movax,data
movds,ax
movHour,0
movMinute,0
movSecond,0
cli
movax,0
movds,ax
moval,76h;01110110B;计数器1,16位,方式3,二进制
movdx,CONTROL
outdx,al
movax,62500;设定计数值
movdx,COUNT1
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
moval,MD8255;设定8255工作方式
movdx,CTL8255
outdx,al
movbx,4*ICW2;中断号
movax,code
shlax,4;x16
addax,offsetIEnter;中断入口地址(段地址为0)
mov[bx],ax;以段地址加上中断处理程序偏移地址注册中断向量表
movax,0
incbx
incbx
mov[bx],ax;代码段地址为0
callIInit
movax,data
movds,ax
movCNT,0;计数值初始为0
moval,CNT
movdx,PA8255
outdx,al
sti
LP:
;等待中断,并计数。
moval,Hour
movah,0
movcl,10
divcl
movch,ah
movah,0
movbx,offsetLEDMAP
addbx,ax
moval,[bx]
movLEDBuf,al
movbx,offsetLEDMAP
moval,ch
movah,0
addbx,ax
moval,[bx]
oral,80h
movLEDBuf+1,al
moval,Minute
movah,0
movcl,10
divcl
movch,ah
movah,0
movbx,offsetLEDMAP
addbx,ax
moval,[bx]
movLEDBuf+2,al
movbx,offsetLEDMAP
moval,ch
movah,0
addbx,ax
moval,[bx]
oral,80h
movLEDBuf+3,al
moval,Second
movah,0
movcl,10
divcl
movch,ah
movah,0
movbx,offsetLEDMAP
addbx,ax
moval,[bx]
movLEDBuf+4,al
movbx,offsetLEDMAP
moval,ch
movah,0
addbx,ax
moval,[bx]
oral,80h
movLEDBuf+5,al
callDisplayLED
jmpLP
startendp
codeends
endstart
4.实验心得
电子时钟实验是一个综合性实验,其中不仅要掌握好定时器的使用和编程方法,其次又要掌握好中断处理程序的编程方法,并且还要掌握好数码显示电路的驱动方法等等。
其中我觉得设置好中断周期是本次实验一个至关重要的环节。
实验题目D/A(数/模)转换实验
1.实验目的
1、了解D/A转换的基本原理。
2、了解D/A转换芯片0832的性能及编程方法。
3、了解单片机系统中扩展D/A转换的基本方法。
二.实验内容
D/A转换是把数字量转换成模拟量的变换,实验台上D/A电路输出的是模拟电压信号。
要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过查表来实现波形显示。
1.实验连线
连接孔1连接孔2
CS2DA_CS
-5V-+5V逻辑波形L3
2.实验原理
产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。
要产生正弦波,较简单的方法是造一张正弦数字量表。
即查函数表得到的值转换成十六进制数填表。
D/A转换取值范围为一个周期,采样点越多,精度越高些。
本例采用的采样点为256点/周期。
8位D/A转换器的输入数据与输出电压的关系为
U(0∽-5V)=Uref/256×N
U(-5V∽+5V)=2·Uref/256×N-5V(这里Uref为+5V)
3、实验程序,要求写注释。
CS0832equ8000h;DAC寄存器地址
datasegment
assumeds:
data
SinData:
;正弦波描点
DB0C0H,0C3H,0C6H,0C9H,0CCH,0CFH,0D2H,0D5H
DB0D8H,0DBH,0DEH,0E0H,0E3H,0E6H,0E8H,0EAH
DB0EDH,0EFH,0F1H,0F3H,0F5H,0F6H,0F8H,0F9H
DB0FBH,0FCH,0FDH,0FEH,0FEH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FEH,0FEH,0FDH,0FCH
DB0FBH,0F9H,0F8H,0F6H,0F5H,0F3H,0F1H,0EFH
DB0EDH,0EAH,0E8H,0E6H,0E3H,0E0H,0DEH,0DBH
DB0D8H,0D5H,0D2H,0CFH,0CCH,0C9H,0C6H,0C3H
DB0C0H,0BCH,0B9H,0B6H,0B3H,0B0H,0ADH,0AAH
DB0A7H,0A4H,0A1H,9FH,9CH,99H,97H,95H
DB92H,90H,8EH,8CH,8AH,89H,87H,86H
DB84H,83H,82H,81H,81H,80H,80H,80H
DB80H,80H,80H,80H,81H,81H,82H,83H
DB84H,86H,87H,89H,8AH,8CH,8EH,90H
DB92H,95H,97H,99H,9CH,9FH,0A1H,0A4H
DB0A7H,0AAH,0ADH,0B0H,0B3H,0B6H,0B9H,0BCH
ends
codesegment
assumecs:
code
procDelaynear
pushcx
movcx,ax
DelayLoop:
;延迟循环
nop
nop
nop
nop
nop
nop
loopDelayLoop
popcx
ret
endp
procOutputDAnear;输出一个点的子程序,点在al里面
movdx,CS0832
outdx,al
ret
endp
procShowSinnear;输出正弦波子程序
pushcx
movbx,400H+offsetSinData
movcx,80h;就8*16个点
ShowSinLoop:
;在这个循环中换SinData点,输出
moval,[bx]
callOutputDA
incbx
movax,40;延迟控制
callDelay
loopShowSinLoop
popcx
ret
endp
procShowTrinear;
pushcx
movbx,80h
movcx,80h
ShowTriLoop:
moval,bl
callOutputDA
incbx
movax,40
callDelay
loopShowTriLoop
popcx
ret
endp
procShowSqnear;输出方波,200次延迟高点,200次延迟不打点
pushcx
moval,80h
callOutputDA
movcx,10
D1:
movax,200
callDelay
loopD1
moval,0ffh
callOutputDA
movcx,10
D2:
movax,200
callDelay
loopD2
popcx
ret
endp
startprocnear;三种波形轮流输出
movax,0
movds,ax
moves,ax
MLoop:
movcx,100
MD1:
callShowSin
loopMD1
movcx,100
MD2:
callShowTri
loopMD2
movcx,100
MD3:
callShowSq
loopMD3
jmpMLoop
startendp
codeends
endstart
实验题目A/D(模/数)转换实验
1.实验目的和要求
1、掌握A/D转换与单片机的接口方法。
2、了解A/D芯片ADC0809转换性能及编程。
3、通过实验了解单片机如何进行数据采集。
2.实验内容
A/D转换器大致有三类:
一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,