南昌大学2014年单片机实验报告 下载本文

TORET: MOV KEYVAL,R1

RET

NOKEY: MOV KEYVAL,#0FFH ;返回无键标志 RET DISPLAY:

MOV R7,#8 ;8个数码管 MOV R5,#0 MOV R0,#LEDBUF DLOOP:

MOV A,R5 RL A RL A

RL A

ANL A,#11111011B INC R5

MOV DPTR,#D8255C

MOVX @DPTR,A ;点亮对应的LED MOV A,@R0

MOV DPTR,#LEDSEG MOVC A,@A+DPTR INC R0

MOV DPTR,#D8255B

MOVX @DPTR,A ;显示数据

LCALL DELAY DJNZ R7,DLOOP RET

DELAY: PUSH R7 MOV R7,#200 DELAYLOOP:

NOP DJNZ R7,DELAYLOOP POP R7

RET

LEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5 DB 7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B DB 39H,5EH,79H,71H,00H,40H;C,D,E,F, ,- END

六、实验结果

程序运行后,E7区数码管的前七位依次显示“8 2 5 5 - - - 0”,当按下E7区的按键时,数码管的前七位不变,依然显示“8 2 5 5 - - -”,而第八位将显示按下的键码值,从0~F。

七、结果分析

本实验通过8255I/O扩展芯片以及8279键盘/显示接口芯片为硬件基础,实现了键盘输入到数码管输出显示的功能。程序中通过对键盘按下与否进行循环扫描,当有按键按下时,通过程序对键值进行计算,并将结果送到数码管进行显示。当无按键按下时,程序保持上一状态继续扫描,直到有不同的按键按下时状态改变。由于矩阵按键及数码显示会用到较多的I/O口,而单片机的I/O口数量有限,所以利用8255对其进行扩展,再利用专门的键盘/显示芯片8279实现键盘扫描和键值显示的功能。

实验七 并行A/D 转换实验

一、实验目的

1.掌握ADC0809 模/数转换芯片与单片机的连接方法及ADC0809 的典型应用。 2.掌握用查询方式、中断方式完成模/数转换程序的编写方法。

二、实验内容

利用系统提供的ADC0809 接口电路,实现单片机模数转换。模拟信号为0~5V 电位器分压输出,单片机控制ADC0809 读取模拟信号,并在数码管上用十六进制形式显示出来。

三、实验要求

根据实验内容编写一个程序,并在实验仪上调试和验证。

四、实验步骤

1)系统各跳线器处在初始设置状态。用导线对应连接并行模数转换模块的CS_0809、EOC 到CPU 模块的8000、P32;电位器模块的输出端接并行模数转换模块的IN-0;并行模数转换模块的Vref 接+5V 电源;CPU 模块的P10、P11 接串行静态数码显示模块DIN、CLK。 2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。编译无误后,下载程序运行。

3)数码管以十六进制形式显示模拟量,手动调节输入电位器,改变输入模拟量电压的大小,数码管显示将随之变化。

五、实验参考程序

;//******************************************************************* ;文件名: AD0809 FOR 51MCU ;功能:并行A/D转换实验

;接线:用导线对应连接并行模数转换模块的CS_0809、EOC到CPU模块的8000、P32; ;电位器模块的输出端接并行模数转换模块的IN-0; ;并行模数转换模块的VREF接+5V电源;

;CPU模块的P10、P11接串行静态数码显示模块DIN、CLK。

;//******************************************************************* DBUF TEMP

EQU 30H

EQU 40H

D0809 EQU 8000H ;通道0地址 DIN BIT P1.0 CLK BIT P1.1 ORG 0000H JMP START

ORG 0080H

START: MOV DBUF+3,#0AH MOV DBUF+2,#0DH MOV DPTR,#D0809 MOV A,#0 MOVX @DPTR,A

JNB P3.2,$ MOVX A,@DPTR ; 读入结果 MOV B,A SWAP A ANL A,#0FH

MOV DBUF+1,A

INC R0

MOV A,B ANL A,#0FH MOV DBUF,A ACALL DISP1 ACALL DELAY

AJMP START

DISP1: ; MOV R0,#DBUF MOV R1,#TEMP MOV R2,#4

DP10: MOV DPTR,#SEGTAB MOV A,@R0

MOVC A,@A+DPTR

MOV @R1,A INC R0

INC R1 DJNZ R2,DP10

MOV R0,#TEMP MOV R1,#4 DP12: MOV R2,#8 MOV A,@R0 DP13: RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R2,DP13

INC R0

DJNZ R1,DP12 RET

SEGTAB: DB 3FH,6,5BH,4FH,66H,6DH ;0串行数码显示 ,1,2,3,4,5