c语言c52数码管,数码管(STC89C52): 第一个数码管循环显示0~F

原标题:数码管(STC89C52): 第一个数码管循环显示0~F

一. 硬件设计

4f4a7bd2d303c576b5127047671aacaa.png

说明:

选通一个分两步,

第一步是位选,即选择哪个数码管亮, 这里位选是通过锁存器U2的WE1~WE6来选择第一个数码管到第六个数码管,由于数码管为共阴极(相对于8位数码管),那么这里WE端为0代表位选选通,

第二步是段选,即选择数码管的哪位亮, 这里段选是通过锁存器U1的a~h来选择数码管的8位管子,这里DUAN端为1代表段选选通.

二. 程序设计

1. 程序功能

第一个数码管0~F

2. 程序源码

#include

#define uchar unsigned char

#define uint unsigned int

sbit duan = P2 ^ 6;

sbit wela = P2 ^ 7;

uchar code 1[] = {

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71

};

lenLed1 = sizeof(led1)/sizeof(led1[0]);

void delayms(uint xms);

void main()

{

uchar i;

wela = 1;

P0 = 0xfe;

wela = 0;

while (1)

{

for (i = 0; i < lenLed1; i++)

{

duan = 1;

P0 = led1[i];

duan = 0;

delayms(1000);

}

}

}

void delayms(uint xms)

{

uint i, j;

for (i = xms; i > 0; i--)

for (j = 110; j > 0; j--)

;

}

责任编辑:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值