本实验采用了普中科技的51单片机开发板
通过对单片机的编程控制LED数码管的静态显示
1.段显示(7段,米字型等)
2.点阵显示(5x5, 8x8)
3.共阴和共阳型LED数码管
数码管静态显示:必须接一个8位数据线来保持显示的字形码。
动态显示:期待下次实验。
静态显示
优点:占用CPU时间少,显示便于检测和控制
缺点:硬件电路复杂,成本高;
前提条件:
编码的前提条件不同,编出的码自然也就不同;
1.如图所示顺时针排列(a~h)八段LED
2.采用共阳型数码管
3.规定了a段是最高位,h段是最低位
unsigned char code segmentCode[23]={0xFF, //无显示
0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09, //数字0~9
,0x11,0xC1,0x63,0x85,0x61,0x71, //字母A~F
0x91,0xE3,0x13,0x31,0x83,0x13,0xD1 //其他字母H、L、N、P、U、H
};
视频地址:http://t.cn/ESbbzVS?m=4366177717178388&u=5955627170
/**********************************************************/
//晶振频率:12.0MHz
//文件名 :main.c
//功能说明 :七段LED静态数码管显示实验
//制作 :mp.csdn.net/postedit/89392804
//技术支持 :QQ:2116447359
//变更记录 :2019.04.17
//变更内容 :
//说明 :
/**********************************************************/
#include
#define u8 unsigned char
#define LED_8 P0
void DelayMS(u8 i);
//编码前提条件:
//1.共阳极数码管
//2.各段数码管按顺时针排列
//3.a是高位,h(即dp)是低位
u8 code segmentCode[22]={0xFF, //无显示
0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09, //0~9
0x11,0xC1,0x63,0x85,0x61,0x71, //A~F
0x91,0xE3,0xD5,0x31,0x83 //H,L,n,P,U
};
//加code把数组存放在Flash ROM中否则在RAM中
void main()
{
u8 i;
LED_8 = 0xFF;
while(1)
{
for(i=0;i<22;i++)
{
LED_8 = segmentCode[1]; //把1改为i将循环显示
DelayMS(1000); //大约 1s
}
}
}
void DelayMS(u8 i)
{
//延时大约 1ms
u8 j=100;
while(i--)
{
while(j--);
}
}
推荐视频:https://www.bilibili.com/video/av32132894/?p=22
静态数码管原理静态数码管编程
静态数码管实验操作演示
1.当采用共阴型LED数码管时,只需要把共阳型编码按位取反即可;
P0 = ~segmentCode[i];
P0 = ~0x03; //两者择其一
2.当规定了h段是最高位,a段是最低位,只需要采用二进制倒序算法即可;
此问题有待解决… ???
003-普中51单片机开发板教程+参考资料
链接:https://pan.baidu.com/s/1SHARpgOLFtkY0gQXOGLx7g 提取码:yqjq
复制这段内容后打开百度网盘手机App,操作更方便哦