新闻中心

EEPW首页>嵌入式系统>设计应用> 【C51】源码 2 -- 8 位共阴极数码管的基本显示

【C51】源码 2 -- 8 位共阴极数码管的基本显示

作者: 时间:2016-11-17 来源:网络 收藏
自学单片机,买了一套开发板,进入学习的第 3 阶段:8 位共阴极数码管。刚刚接触了锁存器的用法,写在这儿用于备份……

程序就是利用锁存器,动态显示数字,使 8 位数码管看起来同时显示不同的字样……

本文引用地址://m.amcfsurvey.com/article/201611/315358.htm

附上源码:(初出茅庐,难免有写的不好的地方,仅作备份之用,欢迎指点,喷子退散……)

#include

#defineDATA P1 // 定义 P1 为数据输入

sbitSEG = P0^0;// 定义 段锁存器
sbitBIT = P0^2;// 定义 位锁存器

unsigned char codeSEG_CODE[ ] = {0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f};// 段码 1-8
unsigned char codeBIT_CODE[ ] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};

// 位码 从 0 位至 7 位

voidDelay(unsigned intt);

voidmain (void)
{
unsigned chari = 0;

while(1) {

SEG = 1; // 关段锁存
DATA = SEG_CODE[i];// 送段码
SEG = 0;// 开段锁存,指定了某位具体显示什么数字

BIT = 1;// 关位锁存
DATA = BIT_CODE[i];// 送位码
BIT = 0;// 开位锁存,指定了哪一位显示

Delay(200); // 经测试:200 为佳,过小出现重影,过大出现闪烁
// 20 重影,300 数字抖动,2000 扫描闪烁
i++;
if(i==8) i = 0;// 循环显示
}
}

voidDelay(unsigned intt)
{
while(t--);
}

补充一个技巧:

突然某一位想显示小数点了,怎么办?

假如你正在使用temp[i]代表某一个显示字符,突然想显示小数点,可以使用temp[i] | 0x80,通过“或”运算实现加上小数点……



评论


技术专区

关闭