高职《单片机与接口技术》实验内容

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《单片机和接口技术》实验内容
1.实验一仿真器的使用*
2.实验二代码转换程序设计*
3.实验三算术运算类程序设计*
4.实验四逻辑运算类程序设计
5.实验五RAM扩展*
6.实验六8279显示器和键盘接口*
7.实验七定时/计数器使用*
8.实验八A/D转换器接口*
9.实验九D/A转换器接口
10.实验十串行接口通信
注:实验课内容为带*的实验项目
实验一仿真器的使用
1、实验目的
了解仿真器和用户系统的连接方法;初步学会仿真器和仿真软件的操作使用方法。

2、伟福G6W仿真器概述
⑴G6W外形示意图
⑵G6W型仿真器的主要特性
●采用ALTERA高密度大规模可编程逻辑芯片设计,体积小、功能强、可靠性高、抗
干扰能力强。

●双CPU架构,控制CPU在仿真器内,仿真CPU直接嵌入用户系统;
●全透明,全适时仿真,不占用任何资源;
●128KB仿真RAM,能仿真超大容量CPU(如W78E438),仿真频率最高达40MHz;
●串口通信COM1、COM2均可,支持鼠标操作,最高通信速率达115200bit/s;
●具有静态硬件调试功能,可设128个硬断点。

⑶G6W型仿真器可通过更换仿真头,仿真不同型号的单片机。

3、ICESlab-G2000单片机实验台概述
⑴该实验平台设计有模拟信号发生器、开关量发生器、发光二极管组、A/D转换器、D/A 转换器、4×5键盘和LED显示器等18个电路模块,经过不同搭配,可以组成各种实验电路。

⑵自由实验区,可以由用户通过跳线连线,进行各种创新性实验。

⑶实验台可以作为仿真器的用户系统使用,还可以单独使用,用自带的小键盘进行一些简单实验。

4、仿真软件
仿真软件有DOS版和WINDOWS版,将编辑、汇编、调试等功能集成在一起,使用非常方便。

5、PC机、仿真器和用户系统的连接
6、实验内容和要求
⑴仔细观察实验系统连线;
⑵打开实验台的电源,启动PC机,进入W A VE仿真系统程序,进行下列练习:
①仔细阅读W A VE仿真系统菜单项内容;
②输入ABC.ASM文件,练习编辑、汇编、单步、断点、连续运行,修改参数,查看存储器、寄存器内容等操作;
实验二代码转换程序设计
1、实验目的
熟习MCS-51指令系统;掌握软件仿真调试方法;产生常用代码转换子程序备用。

2、实验内容和要求
编写下列代码转换子程序,并用“软件模拟仿真”调试通过。

⑴将八位二进制数转换成十进制数000-500;
⑵将四位BCD码转换成二进制数;
⑶将十六进制数码0-F转换成ASCII码。

实验三算术运算类程序设计
1、实验目的
进一步熟习MCS-51指令系统;熟练掌握软件仿真调试方法;掌握常用算术运算程序的编写方法;产生常用算术运算子程序备用。

2、实验内容和要求
编写下列算术运算子程序,并用“软件模拟仿真”调试通过。

⑴双字节无符号加法运算子程序;
⑵双字节无符号减法运算子程序;
⑶双字节无符号乘法运算子程序;
⑷双字节无符号除法运算子程序。

3、思考题
如何将无符号算术运算程序用于有符号算术运算?
实验四逻辑运算类程序设计
1、实验目的
熟习MCS-51逻辑运算类指令的功能特点;掌握逻辑控制
程序的编写方法。

2、实验内容和要求
⑴在实验台上,按下图连接实验线路。

⑵编写程序,模拟下列逻辑表达式的功能:
①P1.2=P1.0 ∧P1.1
②P1.3=P1.0∨P1.1
③P1.4=P1.0 ⊕P1.1
⑶将程序在仿真器上调试通过,验证逻辑功能是否正确。

3、思考题
如何用上述电路模拟二-四译码器的逻辑功能?
实验五RAM扩展
1、实验目的
掌握外部RAM的扩展方法;初步学会硬件仿真调试方法;学会RAM芯片质量检测方法。

2、实验内容和要求
⑴在单片机实验台上,按下图连线;
⑴编写6264的质量检测程序,在仿真器上调试通过。

⑵执行程序,验证程序结果是否正确。

3、思考题
如何检查外部RAM的容量?
实验六8279显示器和键盘接口
1、实验目的
掌握8279和8031的接口方法;掌握8279的工作原理和编程方法;产生通用键盘和显示子程序备用。

2、实验内容和要求
⑴熟习8279键盘和显示器电路图。

⑵按下图编写实验程序。

⑶将程序在仿真器上联机调试通过。

执行程序,验证按键功能是否正常?
⑷将键盘和显示程序段,分别保存为子程序备用。

实验七定时/计数器使用
1、实验目的
掌握8031片内定时/计数器的使用方法;学会中断服务程序的编写方法;产生时钟程序备用。

2、实验内容和要求
⑴利用T0产生10ms定时中断,编写一个24小时制数字钟程序。

要求:从键盘输入时钟初值,并进行初值佥法性检查,如果初值正确,则自动启动时钟计时,否则重新输入初值。

⑵将程序在仿真器上调试通过。

执行程序,用自己的手表作为标准,观察10分钟,修正数字钟的定时器初值。

⑶参照下图连线,将数字钟的定时器初始化为计数器方式,
并修改计时参数,使时钟走时准确。

(选作)
实验八A/D转换器接口
1、实验目的
掌握A/D 0809 和8031的接口方法;了解0809转换器性能及编程方法;了解用单片机进行数据采集和显示的方法。

2、实验内容和要求
⑴在实验台上,按下图连线。

⑵编写程序,将A/D转换结果按0.00-5.00格式显示。

⑶将程序在仿真器上调试通过。

执行程序,调节模拟电压输出,观察数字电压值是否符合要求。

3、思考题
如何修改程序实现多路数据采集、存储和显示?
A/D 0809 实验连线图
实验九D/A转换器接口
1、实验目的
掌握D/A 0832和8031的接口方法;了解0832转换器性能及编程方法;了解用单片机产生常用波形的方法。

2、实验内容和要求
⑴在实验台上,按下图连线。

⑵编写程序产生下列波形:
①锯齿波
②方波
③阶梯波
④三角波
⑤正弦波(选作)
⑶将程序在仿真器上调试通过,并用示波器观察对应波形。

3、思考题
①如何改变输出波形的频率和幅度?
②如何产生任意波形?
实验十串行接口通信
1、实验目的
熟习8031片内串行口的性能,掌握串行通信程序的编写方法和调试方法。

2、实验内容和要求
⑴相邻两组同学按下图连接通信电缆。

⑵编写双机通信程序,将键盘输入的字符在本机显示,
同时发向对方;接收方将收到的信息显示在LED显示器上。

⑶将程序在仿真器上调试通过,检查接收和发送的数据是
否一致。

3、思考题
①如何提高通信速率?
②如何实现多机通信?
附录1Wave单片机实验平台
1.6 键值表
1.7 硬件空间分配
2 实验参考程序
2.1 6264质量检测程序
程序执行后,如果6264有质量问题,则片内RAM 30H,31H单元保存第一个出错单元的地址,32H单元保存该单元的值;如果6264没有质量问题,则片内RAM 30H,31H单元的内容为6264末地址+1(即A000H),32H单元的内容为AAH。

org 0000h
sjmp main
org 0030h
main: mov dptr,#8000h ;6264首地址
clr a
mov 30h,a
mov 31h,a
mov 32h,a
rp: mov a,#55h
movx @dptr,a
nop
movx a,@dptr
mov 32h,a
cjne a,#55h,er
inc dptr
mov a,dph
cjne a,#0a0h,rp
mov dptr,#8000h
rp1: mov a,#0aah
movx @dptr,a
nop
movx a,@dptr
mov 32h,a
cjne a,#0aah,er
inc dptr
mov a,dph
cjne a,#0a0h,rp1
er: mov 30h,dph
mov 31h,dpl
sjmp $
end
2.2 8279显示器和键盘接口参考程序
⑴在数码管上显示键盘值
ORG 0000H
sjmp MAIN
org 0030h
MAIN: MOV SP,#60H
MOV P2,#0A0H
MOV R6,#0FFH
NOP
L0014: DJNZ R6,L0014
MOV R0,#01H
MOV A,#00H ;8279初始化
MOVX @R0,A
MOV A,#32H
MOVX @R0,A
MOV A,#0DFH
MOV R0,#01H
MOVX @R0,A
L013A: MOVX A,@R0
JB ACC.7,L013A
MOV R0,#00H
MOV A,#0CH ;显示“P.“
MOVX @R0,A
INC R0
MOV A,#80H
MOVX @R0,A
L0027: MOV 30H,#80H
MOV 31H,#40H
L002D: MOV R0,#01H
MOVX A,@R0
ANL A,#07H
CJNE A,#00H,L0037 ;有键按下吗?
AJMP L002D
L0037: MOV R0,#00H
MOVX A,@R0
MOV R1,#00H
MOV DPTR,#JIAN ;查键位L0041: MOV A,#00H
MOVC A,@A+DPTR
CJNE A,B,L0049
AJMP L0066
L0049: INC DPTR
INC R1
MOV A,R1
JB ACC.4,L0027
AJMP L0041
L0066: MOV A,30H
MOV R0,#01H
MOVX @R0,A
MOV A,R1
MOV R0,31H
MOV @R0,A
INC 31H
MOV DPTR,#ZHI
MOVC A,@A+DPTR ;查字形
MOV R0,#00H
MOVX @R0,A
INC 30H
MOV A,30H
CJNE A,#86H,L0081
AJMP L0027
L0081: AJMP L002D
ZHI: DB 0C0H,0F9H,0A4H,0B0H,99H,92H
DB 82H,0F8H,80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH,0CH,0BFH JIAN: DB 01H,08H,09H,10H,18H,00H
DB 02H,0AH,11H,19H,1AH,03H,0BH
DB 12H,13H,1BH,23H,22H,21H
⑵键盘子程序
KEYSUB:MOV DPTR,#0A000H ;键盘子程序
MOVX A,@DPTR
MOV B,A
MOV R5,#00H
MOV DPTR,#JIAN ;查键位
KEY1: MOV A,#00H
MOVC A,@A+DPTR
CJNE A,B,KEY2
CLR PSW.5
AJMP KEYRET
KEY2: INC DPTR
INC R5
MOV A,R5
JNB ACC.4,KEY1
MOV R5,#00H
SETB PSW.5
KEYRET: RET
JIAN: DB 01H,08H,09H,10H,18H,00H
DB 02H,0AH,11H,19H,1AH,03H
DB 0BH,12H,13H,1BH,23H,22H,21H
⑶显示子程序
Display:mov 30h,#80h
mov 31h,#40h
mov r7,#06h
loop4: mov dptr,#0A001h
mov a,30h
movx @dptr,a
mov r0,31h
mov a,@r0
mov dptr,#sedz
movc a,@a+dptr
mov dptr,#0A000h
movx @dptr,a
inc 31h
inc 30h
djnz r7,loop4
ret
sedz: DB 0c0h,0f9h,0a4h,0b0h,99h,92h
; 显示字符0 1 2 3 4 5
DB 82h,0f8h,80h,90h,88h,83h
; 6 7 8 9 A B
DB 0c6h,0a1h,86h,8eh,40H,79H
; C D E F 0. 1.
DB 24H,30H,19H,12H,02H,78H
; 2. 3. 4. 5. 6. 7.
DB 00H,10H,0FFH
;8. 9. 不显示
2.3 定时/计数器使用参考程序
24小时制时钟
org 0000h
ajmp main
org 000bh
ljmp t0int
ORG 0030H
main: mov sp,#60h
mov dptr,#0A001h ;8279初始化
mov a,#00h
movx @dptr,a
nop
mov a,#0dfh
movx @dptr,a
mov a,#22h
nop
movx @dptr,a
rest: mov a,#00h ;显示缓冲区初值mov r0,#40h
clr00: mov @r0,a
inc r0
cjne r0,#46h,clr00
mov tmod,#02h
mov th0,#06h
mov tl0,#06h
mov 57h,#20
mov 58h,#100
mov 59h,#40h
jmpx: acall display ;显示
Keyin: mov dptr,#0a001h
movx a,@dptr
anl a,#07h
cjne a,#00h,daini1
sjmp jmpx
daini1: lcall keysub
mov a,r5 ;键号在r5中
cjne a,#0ah,ccon
ccon: jnc jmpx
mov r0,59h
mov @r0,a
inc 59h
cjne r0,#45h,jmpx
mov 59h,#40h
acall chktime
jb psw.5,rest ;时间初值不合法(f0=1),重新输入
setb 8ch
setb 0afh
nop
setb 0a9h
dir: acall display ;显示
sjmp dir
chktime: mov r1,#40h ;检查时钟初值acall hb
subb a,#24h
jnc chker
acall hb
subb a,#60h
jnc chker
acall hb
subb a,#60h
jnc chker
clr psw.5
ret
chker: setb psw.5
ret
hb: mov a,@r1
swap a
inc r1
orl a,@r1
inc r1
clr c
ret
toint: push psw
push acc
push dph
push dpl
setb psw.4
mov a,58h
dec a
mov 58h,a
jnz ret0
mov 58h,#100
mov a,57h
dec a
mov 57h,a
jnz ret0
mov 57h,#20
mov r0,#44h
acall daad1
mov a,r2
jnz ret0
acall clr0
mov r0,#42h
acall daad1
mov a,r2
xrl a,#60h
jnz ret0
acall clr0
mov r0,#40h
acall daad1
mov a,r2
xrl a,#24h
jnz ret0
acall clr0
ret0: pop dpl
pop dph
pop acc
pop psw
reti
daad1: mov a,@r0
inc r0
swap a
orl a,@r0
add a,#01h
da a
mov r2,a
anl a,#0fh
mov @r0,a
mov a,r2
dec r0
anl a,#0f0h
swap a
mov @r0,a
ret
clr0: clr a
mov @r0,a
inc r0
mov @r0,a
ret
2.4 A/D转换器接口参考程序
把ADC0809通道0输入的模拟电压,转换后送8279显示org 0000h
sjmp main
Main: mov sp,#60h
mov dptr,#0a001h ;8279初始化
mov a,#00h
movx @dptr,a
mov a,#0dfh
movx @dptr,a
mov a,#22h
movx @dptr,a
loop0: movx a,@dptr
jb acc.7,loop0
mov 40h,#0Ah ;显示缓冲器初始化
mov 41h,#0Dh
mov 42h,#1Ah
loop1: lcall display ;调显示子程序
mov a,#00h
mov dptr,#0B000h ;0809AD开始转换
movx @dptr,a
mov r7,#0fh
loop2: djnz r7,loop2
movx a,@dptr
lcall BRY_5V
SJM LOOP1
BRY_5V: MOV B,#51
DIV AB
ADD A,#10H ;加小数点
MOV 43H,A
MOV A,B
MOV B,#5
DIV AB
CJNE A,#0AH,BRY
MOV A,#09H
MOV B,#04H
BRY:MOV 44H,A
MOV A,B
RL A
MOV 45H,A
RET。

相关文档
最新文档