关注【电子开发圈】微信公众号,一起学习吧!
电子DIY、Arduino、51单片机、STM32单片机、FPGA……
电子百科、开发技术、职业经验、趣味知识、科技头条、设备拆机……
点击链接,免费下载100G+电子设计学习资料!
设计要求:
在8位8端的数码管上动态显示76543210,快速显示时人眼看到的效果为同时亮起
————————————————————————————————————————————
实现目标:
————————————————————————————————————————————
数码管编码计算:
#include <reg52.h>
typedef unsigned char uchar;
uchar table[] =
{
//Proteus图上数码管下引脚显示对应的断码,从前往后分别是0123456789AbCdEF
0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6, 0xEE, 0x3E, 0x9C, 0x7A, 0x9E, 0x8E
};
uchar address[] =
{
0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F
};
void Delay(uchar m)
{
unsigned char a, b;
for(; m > 0; m--)
for(b = 142; b > 0; b--)
for(a = 2; a > 0; a--);
}
int main()
{
uchar i = 0;
while(1)
{
if (i == 8) //一轮循环亮起后从头开始
i = 0;
P2 = address[i]; //通过P2控制要亮的灯的位置
P1 = table[i]; //通过P1控制要显示的数
++i;
Delay(1); //快速动态显示
// Delay(1000); //慢速动态显示
}
}