smgconve数码管转换,显示

//*************数码管转换
void SmgConvert(void)
{
	  u8 i=0;
	   u8 j=0;
//*****************数据转换成数码管的段码,相当于数码管翻译			
		  while(SmgBuffer[i]!=0x00)
				{
					switch(SmgBuffer[i])
					{
						case '0':SmgTemp =t_display[0];break;
						case '1':SmgTemp =t_display[1];break;
						case '2':SmgTemp =t_display[2];break;
						case '3':SmgTemp =t_display[3];break;
						case '4':SmgTemp =t_display[4];break;
						case '5':SmgTemp =t_display[5];break;
						case '6':SmgTemp =t_display[6];break;
						case '7':SmgTemp =t_display[7];break;
						case '8':SmgTemp =t_display[8];break;
						case '9':SmgTemp =t_display[9];break;
						case 'U':SmgTemp =0x3E;break;
						case '-':SmgTemp =0x40;break;
						case 'C':SmgTemp =0x39;break;
						default:SmgTemp=0x00;break;		
					}
					if(SmgBuffer[i+1]=='.') //将段的最高位置1,点亮对应小数点的数据
					{
					  SmgTemp =SmgTemp | 0x80;
						i=i+2;      //注意,这里是加2,因为多个小数点
					}
					else 
						i=i+1;  //如果没有小数点,那么就是+1,下个元素。
				
					SmgData[j]=SmgTemp; //将数据翻译成功,放到对应的数据区
					j++;//数据区位置+1。
				}
	
}


void SmgDisp()
{
	static u8 index=0;
	//**************消隐,为什么要消隐呢,因为前后两个显示,变化太快,会存在残影,影响显示效果。
	//如何消隐?将对应的数码管熄灭,就可以了。
		//选择位选
		P0=0x00;
		Choose573(SMGCOMY);
		Delay5us();
		Choose573(LOCKY);
		//选择段码
		P0=~0xff;
		Choose573(SMGDATY);
		Delay5us();
		Choose573(LOCKY);
		//******************************************消隐

	
		//选择位选
		P0=T_COM[index];
		Choose573(SMGCOMY);
		Delay5us();
		Choose573(LOCKY);
		//选择段码
		P0=~SmgData[index];
		Choose573(SMGDATY);
		Delay5us();
		Choose573(LOCKY);
		
	  index++;
		if(index==8)index=0;
		
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值