七段数码管显示实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验报告
实验九七段数码管显示实验
一、实验目的
1.学习七段数码管的工作原理;
2.学习数码管与8051单片机的接口方法;
3.掌握动态扫描显示技术。
二、实验原理
如图4.9-1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七段发光二极管亮
共阴极接法共阳极接法
图4.9-1
暗的不同组合,可以显示多种数字、字母以及其它符号。LED数码管中的发光二极管共有两种连接方法:
1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。实验中使用的LED显示器为共阴极接法
2)共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。
为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED显示器的字形代码正好一个字节。若a、b、c、d、e、f、g、dp 8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。
表4.9-1 共阴极LED 数码管字形代码 字型 共阴极字形代码 字型 共阴极字形代码
字型
共阴极字形
代码
0 3FH 6 7DH C 39H 1 06H 7 07H d 5EH 2 5BH 8 7FH E 79H 3 4FH 9 6FH F 71H 4 66H A 77H 灭 00H 5
6DH
b
7CH
*实际上试验中使用的是共阳极数码管,这里就不一一列出。
2、动态显示
按图4.9-2(b )连接线路,通过交替选中LED1和LED0循环显示两位十进制数。七段数码管段码连接不变,位码驱动输入端S1、S0接8255A C 口的PC1、PC0,通过C 口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。请编程实现在两个LED 数码管上循环显示00 99,程序流程图如图4.9-3(b)所示。
(a) 静态显示程序流程图 (b) 动态显示程序流程图 图4.9-3 十位数的段码至A 口 个位数的段码至A 口 开始 开始
返回DOS 返回DOS 延时并修改要显示的数字
三、实验电路图第一部分电路图:
第二部分电路图:
四、实验设备
微型计算机、单片机仿真器、实验仪、示波器(各一台);
实验连线(若干)。
五、实验内容
*由于汇编语言程序中已经做了相应的注释,C语言的编程原理与之相同处不再做重复注释,仅作个别注释,请见谅。
1.编程在8位数码管上面显示“12345678”8个数字,每经过1秒8个数字循环左移一位显示。依次为:1234578、23456781、34567812.......
汇编语言程序代码:
O RG 0000H
START:
M OV R4,#00H
FLASH:
M OV R2,#01H
M OV R0,#30H
M OV DPTR,#TABFLA ;把字形表首地址给外部寻址寄存器
LOPFLA:
M OV A,R2 ;输出位型
M OV P2,A
M OV A,@R0
M OVC A,@A+DPTR ;在程序段中查表得到字形
M OV P1,A ;输出字形
M OV R3,#0
D JNZ R3,$ ;循环等待延时
M OV P1,#0FFH ;关显示
M OV A,R2 ;位型左移一位
R L A
M OV R2,A
I NC R0 ;下一个字形
C JNE R0,#38H,GOON
M OV R0,#30H
GOON:
C JNE A,#01H,LOPFLA ;若已经显示一遍则初始化
I NC R4
C JNE R4,#7FH,GOON1
M OV A,30H ;显示表左移更新
M OV 30H,31H
M OV 31H,32H
M OV 32H,33H
M OV 33H,34H
M OV 34H,35H
M OV 35H,36H
M OV 36H,37H
M OV 37H,A
M OV R4,#00H
GOON1:
A JMP FLASH
TABFLA: ;字形表
D B 0C0H,0F9H,0A4H,0B0H,99H
D B 92H,82H,0F8H,80H,90H,88H
D B 83H,0C6H,0A1H,86H,8EH
END
C语言程序代码:
#include
data unsigned char disadd _at_ 0x30;
const unsigned char LED_TAB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E};
data unsigned char j;
void delay()
{
u nsigned char i=0xFF;
w hile(i--)
{
;
}
}
void change_s()