您的位置 首页 电源

【C51】源码 2 — 8 位共阴极数码管的根本显现

自学单片机,买了一套开发板,进入学习的第3阶段:8位共阴极数码管。刚刚接触了锁存器的用法,写在这儿用于备份……程序就是利用锁存…

自学单片机,买了一套开发板,进入学习的第 3 阶段:8 位共阴极数码管。刚刚触摸了锁存器的用法,写在这儿用于备份……

程序便是运用锁存器,动态显现数字,使 8 位数码管看起来一起显现不同的字样……

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

#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,经过“或”运算完成加上小数点……

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/268069.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部