数码管静态显示实验
实验目的
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、主机连线说明:
JP10
单片机P0口(8位)
JP3
共阳极数码管
七. 实验步骤
打开Keil编程软件编写程序,并进行汇编产生HEX文件。
(1)流程图
(2)汇编源程序
ORG??00HLJMP??MAIN???;初始位置直接跳转MAIN主程序START;???MOV??R2,#0?;赋值R2=0???MOV??R5,#17;赋值R5=17MAIN:???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?????;跳转STARTRETDELAY:???MOV?R0,#5????;延时子程序?DL2:????MOV?R7,#200?DL1:????MOV?R6,#250?????????DJNZ?R6,$????????????????DJNZ?R7,DL1????????????????DJNZ?R0,DL2TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,?????????END
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;x0;x--)
for (y=100;y0;i++)
}
Void main ( )
{
int i ;
While (1)
{
for (i=0;i17;i++)
{
P0=table [i];
delay (1000) //延时
}
}
}
点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。
运行程序看结果。反复修改和下载。
八.实验结果及总结
程序编译无误,生成hex文件通过普中下载软件,将程序下载到实验仪的单片机中,观察到单片机中数码管依次显示1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。
总结:本次实验首先应测试静态数码管是共阴极还是共阳极,要注意区分这两种不同类型,为了显示数字与字符,必须对数字或字符进行编码。
原创力文档

文档评论(0)