发新帖我要提问
12
返回列表
打印
[AVR单片机]

AVR ATMEGA16写 1602液晶问题

[复制链接]
楼主: selfstudy
手机看帖
扫描二维码
随时随地手机跟帖
21
selfstudy|  楼主 | 2011-7-21 10:53 | 只看该作者 回帖奖励 |倒序浏览
我估计还是 十进制转字符数组函数出错了。我直接采用:
  num=1234;
        for (i=0;i<4;i++)
        {
                data=(uchar)(num %10);
                num=num/10;
                LCD_Char_Write(3-i,0,data+48);

        }
是可行的,不知道原因。

使用特权

评论回复
22
selfstudy|  楼主 | 2011-7-21 10:55 | 只看该作者
这个函数错在哪里呢??实在迷惑;猜想应该是对字符数组p操作出了问题。
//转换的AD数
//n为几位数
uchar num_to_str(int num,uchar *p,uchar n)
{
        uchar i=0;
        uchar yushu=0;
         clearstr(p,n);//清空
        do
        {
                yushu=(uchar)(num %10);//取余数,则第一次取到了个位数
                *(p+i)=  yushu  ;//字符串赋值
         
                num=num/10;//去掉个位数
                i++;
         
        } while (num != 0);
        return i;//返回位数
}

使用特权

评论回复
23
上树宝宝| | 2012-5-4 17:08 | 只看该作者
en  ~~~~~~~~~~~~~

使用特权

评论回复
24
joyme| | 2012-5-5 10:41 | 只看该作者
返回值比你想象的大1,return的是4,而你实际处理应该按3做,你可以return (i-1)
或用do 。。。 while(1),在i++;全加语句if(num==0)break;

使用特权

评论回复
25
joyme| | 2012-5-5 10:51 | 只看该作者
嗯,详细看来下,这个返回值只会影响现实的x坐标
没看到adc是怎么定义的?最好定义为固定大小的数组便于编译器分配空间

使用特权

评论回复
26
冰雅轩| | 2014-4-9 15:15 | 只看该作者
5#的程序 非常好,收藏了

使用特权

评论回复
27
凌凌7| | 2018-6-24 11:07 | 只看该作者
学习了

使用特权

评论回复
28
一路向北lm| | 2018-6-24 17:44 | 只看该作者
那些命令都是固定死的,写命令和写数据底层封装好就OK了,把延时调对基本没什么问题。

使用特权

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

本版积分规则