高级会员
主题
回帖0
积分4137
阅读权限30
注册时间2010-8-7
最后登录1970-1-1
在线时间 小时
|
正是楼主的这种情况,我把你说的这部分程序摘出来了。
/**************************************************************************************************
******
** 函数名称: bit DispNum(uchar * N,uchar Mode)
** 功能描述: 刷新YS18-3荧光管的显示数字
** 入口参数: *N: 显示的字符数组
** Mode: 显示模式 0:crossfade 1:fade in/out
2:standard
** 出口参数: bit: 0:渐变显示未切换完成 1:渐变显示已过渡完成
** 创 建 者: 严泽远
** 创建时间: 2011-02-04 22:38
** 版 本: v1.0.0
** -----------------------------------------------------------------------------------------------------
** 修 改 者: 严泽远
** 修改时间: 2011-02-05 15:02
** 描 述: 将输入参数改为ASCII码数组形势 扩展英文字母应用
** -----------------------------------------------------------------------------------------------------
** 修 改 者: 严泽远
** 修改时间: 2011-02-05 15:59
** 描 述: 返回当前数字切换状态
***************************************************************************************************
*****/
bit DispNum(uchar * N,uchar Mode)
{
bit r=1;
uchar i;
uchar Nnow[6],Nlast[6];
for(i=0;i<6;i++)
{
if(Mode==2) LASTN=*(N+i); //如果是标准模式则
立即刷新 No Crossfade
switch(*(N+i))
{
case '0': Nnow = 0x20; break;
case '1': Nnow = 0x6E; break;
case '2': Nnow = 0x14; break;
case '3': Nnow = 0x0C; break;
case '4': Nnow = 0x4A; break;
case '5': Nnow = 0x09; break;
case '6': Nnow = 0x01; break;
case '7': Nnow = 0x6C; break;
case '8': Nnow = 0x00; break;
case '9': Nnow = 0x08; break;
case 'a': Nnow = 0x40; break;
case 'f': Nnow = 0x51; break;
case 'c': Nnow = 0xB1; break;
case 'h': Nnow = 0x42; break;
default: Nnow = 0xFF;
}
if(Mode==1 && LASTN!=*(N+i))
{
if(NUM500msloop<=300)
Nnow=0xFF;
else
LASTN=' ';
}
switch(LASTN)
{
case '0': Nlast= 0x20; break;
case '1': Nlast= 0x6E; break;
case '2': Nlast= 0x14; break;
case '3': Nlast= 0x0C; break;
case '4': Nlast= 0x4A; break;
case '5': Nlast= 0x09; break;
case '6': Nlast= 0x01; break;
case '7': Nlast= 0x6C; break;
case '8': Nlast= 0x00; break;
case '9': Nlast= 0x08; break;
case 'a': Nlast= 0x40; break;
case 'f': Nlast= 0x51; break;
case 'c': Nlast= 0xB1; break;
case 'h': Nlast= 0x42; break;
default: Nlast= 0xFF;
}
Send595(8,((NUMpwmloop%20)<=NUMcut?Nnow:Nlast));
if(NUMcut>=20) LASTN=*(N+i);
if(LASTN!=*(N+i)) r=0;
}
if((NUMpwmloop)<1000) NUMpwmloop++;else NUMpwmloop=0;
STCP = 1;//_nop_();
STCP = 0;//_nop_(); //数据锁存
return r;
} |
|