数码管静态显示实验
一.
实验目的
1.熟悉数码管的功能和使用。
2.熟悉延时子程序的编写和使用。
3.初步熟悉单片机软硬件设计方法。
二.实验仪器
计算机、Keil 编程环境、普中下载软件、单片机开发实验仪。
三 .实验原理与内容
P0 口做输出口,接一个共阳极数码管,要求循环显示。共阳极数码管字形表 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,-共 17 个字形码)
0C0H,0FCH,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH。
四 . 实验线路及原理
五 . 注意事项
1.安装实验仪时,先接通讯串口线,再开电源开关。
2.实验过程中,在进行接插线操作时,必须先关闭电源。
六 . 实验步骤
1、主机连线说明:
JP10
单片机 0 P0 口(8 8 位)
JP3
共阳极数码管
七 . 实验步骤
2.打开 Keil 编程软件编写程序,并进行汇编产生 HEX 文件。
(1)流程图
(2)汇编源程序
ORG
00H LJMP
MAIN
;初始位置直接跳转 MAIN 主程序 START;
MOV
R2,#0 ;赋值 R2=0
MOV
R5,#17;赋值 R5=17
MAIN:
MOV DPTR,#TAB;将 TAB 地址传送给数据指针
MOV A,R2
;赋值累加器 A=0
MOVC A,@A+DPTR;将数组第 A+1 的数据赋值 A
MOV
P0,A
;赋值 P0 数据的数据
INC
R2
;R2 加一
LCALL
DELAY
;调用延时子程序
DJNZ
R5,MAIN
;R5 减一不为 0 跳转主程序 MAIN
JMP
START
;跳转 START RET DELAY:
MOV R0,#5
;延时子程序
DL2:
MOV R7,#200
DL1:
MOV R6,#250
DJNZ R6,$
DJNZ R7,DL1
DJNZ R0,DL2 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,
END
(1)
C 语言源程序 #include <reg52.h> #define uint unsigned int
Uint table [ ]= (0xC0,0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xBF )
Void
delay (int z)
{
int x,y;
for (x=z;x>0;x--)
for (y=100;y>0;i++)
} Void main ( ) {
int i ;
While (1) {
for (i=0;i<17;i++) {
P0=table [i];
delay (1000)
// 延时 }
}
}
3. 点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。
4. 运行程序看结果。反复修改和下载。
八.实验结果及总结
程序编译无误,生成 hex 文件通过普中下载软件,将程序下载到实验 仪 的 单 片 机 中 , 观 察 到 单 片 机 中 数 码 管 依 次 显 示1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。
总结:本次实验首先应测试静态数码管是共阴极还是共阳极,要注意区分这两种不同类型,为了显示数字与字符,必须对数字或字符进行编码。