打印

高手帮忙看一下1602显示的部分程序

[复制链接]
1755|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
h_hx918|  楼主 | 2010-7-28 14:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个程序是显示数字的部分,数字最大为999999,能否讲解一下for循环的思想。谢谢!
...
sbit bflag=ACC^7;
...

void lcd_disp(unsigned long s,unsigned char x,unsigned char y) { unsigned char i; unsigned int temp; unsigned char flag=0; setxy(x,y); for(i=6;i>0;i--) { temp=(s>>((i-1)*4))&0xf; if((temp!=0)||((temp==0)&&(flag==1))||((temp==0)&&(i==1))) { flag=1; lcd_char(48+temp); } } }

相关帖子

沙发
h_hx918|  楼主 | 2010-7-28 14:08 | 只看该作者
太乱了,重新编辑一下
void lcd_disp(unsigned long s,unsigned char x,unsigned char y)
{
        unsigned char i;
        unsigned int temp;
        unsigned char flag=0;

        setxy(x,y);
        for(i=6;i>0;i--)
        {
                temp=(s>>((i-1)*4))&0xf;
                if((temp!=0)||((temp==0)&&(flag==1))||((temp==0)&&(i==1)))
                {
                        flag=1;
                        lcd_char(48+temp);
                }
        }
}

使用特权

评论回复
板凳
古道热肠| | 2010-7-28 15:50 | 只看该作者
呵呵,想省事就用printf(ucDispBuf,"%ld",s),然后将ucDispBuf的内容送LCD屏即可。

使用特权

评论回复
地板
古道热肠| | 2010-7-28 15:50 | 只看该作者
应该是sprintf()

使用特权

评论回复
5
h_hx918|  楼主 | 2010-7-29 08:50 | 只看该作者
顶上去

使用特权

评论回复
6
zjswuyunbo| | 2010-7-29 09:16 | 只看该作者
好像是long变成了16进制显示了

使用特权

评论回复
7
doomhaha| | 2010-7-29 10:16 | 只看该作者
sprintf()能重入吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

70

帖子

0

粉丝