51单片机动态数码管显示程序分享

在编写动态数码管的时候,重要的是需要参考开发手册中的74hc138编码器的“真值表”.

新手,请各位大佬多多指点,谢谢啦!抱拳

编程一

/*

* 动态数码管编程

*/

/*

#include <reg51.h>

typedef unsigned char u8; //定义别名变量

sbit LSA = P2^0; //定义 位选 管脚

sbit LSB = P2^1;

sbit LSC = P2^2;

u8 s[8] = {0xfd, 0x61, 0xdb, 0xf3, 0x67, 0xb7, 0xbf, 0xe1};

// 0XFF, 0XF7, 0XEF,0XBF, 0X9D, 0X7B, 0X9F,0X8F};

//定义数码管段选数组

void delay(u8 a)

{

while(a--); //定义循环函数 unsigned char范围是0~255

}

void main (void)

{

while(1)

{

u8 i = 0;

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

{

switch(i) // 定义位选循环与选择 8种位选

{

case 0: LSC=0; LSB=0; LSA=0; break;

case 1: LSC=0; LSB=0; LSA=1; break;

case 2: LSC=0; LSB=1; LSA=0; break;

case 3: LSC=0; LSB=1; LSA=1; break;

case 4: LSC=1; LSB=0; LSA=0; break;

case 5: LSC=1; LSB=0; LSA=1; break;

case 6: LSC=1; LSB=1; LSA=0; break;

case 7: LSC=1; LSB=1; LSA=1; break;

}

P0 = s[i]; //定义数码管段选函数

delay(100);

P0 = 0x00; //消隐

}

}

}

*/

编程二

/*

* 利用数组实现动态数码管程序编译

*/

#include <reg51.h>

typedef unsigned char u8; //定义别名变量char类型变量 //定义循环函数 unsigned char范围是0~255

u8 dx[8] = {0xfd, 0x61, 0xdb, 0xf3, 0x67, 0xb7, 0xbf, 0xe1}; //定义数码管段选数组0-7

u8 wx[8] = {0, 1, 2, 3, 4, 5, 6, 7}; //定义数码管位选数组1-8

// {0x00, 0x01, 0x02, ox03, 0x04, 0x05, 0x06, 0x07}

void delay(u8 a)

{

while(a--); //定义延时函数

}

//位选关键在于原理图中的真值表!!!

void main (void)

{

while(1)

{

u8 i = 0;

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

{

P2 = wx[i]; //P2管脚为位选管脚

P0 = dx[i]; //P0管脚为段选管脚

delay(100);

P0 = 0x00; //消隐

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值