农民讲习所建立通用程序 9 通用数码LED显示模块

通用数码LED显示模块

移植到 nu-lb-nuc140

struct DigitTube{
	unsigned char aDispBuffer[8];		//显示缓冲区开始指针
};

aDispBuffer数组每个字节 对应一个数码管

DigitTest_Loop 负责 把数组aDispBuffer[] 每个字节,填入对应的 数字

在这里插入图片描述

在这里插入图片描述

关键函数 解析:

//-------------------------------------------------------------
//循环
//演示:0000 0000计数到FFFF FFFF,每0.3秒加1
//输出结果存放在OutBuffer[8]中
//20ms进入一次
//-------------------------------------------------------------
void DigitTest_Loop(void)
{
	unsigned char i;

	if( ++sInDigitTest.mCount > (300/20) ){

        sInDigitTest.mCount = 0;

		i = 0;
        
		do{
			if( i>7 )break;  // 到达8位数字

			if( sDigitTube.aDispBuffer[i] == 0x09 ){
				sDigitTube.aDispBuffer[i] = 0;	
			}
			else {
				sDigitTube.aDispBuffer[i]++;
			}
		}
		while( sDigitTube.aDispBuffer[i++] == 0);
	}
}

其中的i =7 表示 8位数码管 ,计数到达8位整数的时候

aDispBuffer[0] ----- 个位数字 ----- 一个数码管位
aDispBuffer[1] ----- 十位数字 ----- 一个数码管位
aDispBuffer[2] ----- 百位数字 ----- 一个数码管位
aDispBuffer[3] ----- 千位数字 ----- 一个数码管位

需要注意的地方: 需要加上__packed ( 下面的参考代码中没有加上)

__packed struct QueueBuffer
  {
  unsigned char  *aBufferStart;    //缓冲区起始点
  unsigned char  *aBufferEnd;    //缓冲区结束点
  unsigned char  *pIn;        //写指针
  unsigned char  *pOut;        //读指针
  unsigned char mCount;          //缓冲区数据个数
};

参考代码:

https://download.csdn.net/download/wowocpp/10774083

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值