搜索
bottom↓
回复: 14

马老师:放入固定数还是会出现问题,可能是显示函数出问题了,帮我看看问题出在哪?

[复制链接]

出0入0汤圆

发表于 2005-4-21 14:26:04 | 显示全部楼层 |阅读模式
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)

{

    LCD_set_xy( X, Y );

     

    while (*s)  

    {

        LCD_write_char( 0, *s );

   s ++;

    }

}



void LCD_write_uchar(unsigned char X,unsigned char Y,unsigned char tmp)  

{  

    LCD_set_xy( X, Y );  

      

    LCD_write_char( 0, tmp);  

}  



void show()

{

    LCD_write_uchar(0,0,var[3]);

   

    LCD_write_uchar(1,0,var[2]);

   

    LCD_write_string(2,0,".");

   

    LCD_write_uchar(3,0,var[1]);



    LCD_write_uchar(4,0,var[0]);

   

  }






-----此内容被swordshe于2005-04-28,10:59:19编辑过

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2005-4-21 15:52:14 | 显示全部楼层
先不做转换,将unsigned char var[4]中放入固定的数,如{5,4,3,2,1} ,看你的显示是否正确。如果正确,说明你的转换函数有问题。

出0入0汤圆

 楼主| 发表于 2005-4-21 16:23:21 | 显示全部楼层
有时显示还是乱码



转换程序如下:

void BCD(int temp)

{

    unsigned char i;

    for(i=0;i<4;i++)

    {

        var = (unsigned char)(temp%10)+0x30;

        temp = temp/10;

    }

}



转换函数该如何写,才不会出现乱码呢?

出0入0汤圆

发表于 2005-4-24 00:21:58 | 显示全部楼层
for(i=0;i<4;i++)

    {  

        var = (unsigned char)(temp%10)+0x30;

        temp = temp/10;

    }



循环了几次?var[4]=??!



   是否你的乱码总是出现在最高位呢?如果是的话问题就是它了。



    如果你是初学者的话,你的学习方法不好。我已经将思路讲清楚了,你应该自己学习如何找出你程序的问题。



    在我的“综合实践一”中,已经叫大家学习使用AVR STUDIO进行软件的模拟调试,你应该仔细的学习,在AVR STUDIO中调试一下你的程序,看看问题出现在什么地方。这样一个简单的程序自己不学习如何调试,老是问别人什么行呢。

出0入0汤圆

 楼主| 发表于 2005-4-25 09:41:14 | 显示全部楼层
temp 是0~1023之间的unsigned int数,所以没定义var[4]



还有,我在AVR STUDIO设置断点查看时,var中的变量在watch窗口中显示的是0-9之间的ASCII字符,但在LCD上显示时,有的就出现其它非0-9的ASCII字符

出0入0汤圆

 楼主| 发表于 2005-4-25 09:42:44 | 显示全部楼层
不好意思,我是前不久才开始学的

出0入0汤圆

发表于 2005-4-25 12:09:09 | 显示全部楼层
那就可能不是转换函数的问题了,应该查你的显示函数。



   在你的整个程序中,先不改变var中的数,即保持var中的数据不改变,一直不断循环显示var中的数,显示出问题吗?





   如改动如下进行调试,然后再将增加的语句去掉。

void BCD(int temp)

{

    unsigned char i;

    for(i=0;i<4;i++)

    {  

        var = (unsigned char)(temp%10)+0x30;

        temp = temp/10;

    }

    var[0] = 0x30;

    var[1] = 0x31;

    var[2] = 0x32;

    var[4] = 0x33;

    var[5] = 0x30;

}

出0入0汤圆

 楼主| 发表于 2005-4-28 10:52:16 | 显示全部楼层
还是出问题,显示函数如下:

void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)

{

    LCD_set_xy( X, Y );

   

    while (*s)

    {

        LCD_write_char( 0, *s );

        s ++;

    }

}



void LCD_write_uchar(unsigned char X,unsigned char Y,unsigned char tmp)

{

    LCD_set_xy( X, Y );

     

    LCD_write_char( 0, tmp);

}



void show()

{

    LCD_write_uchar(0,0,var[3]);

   

    LCD_write_uchar(1,0,var[2]);

   

    LCD_write_string(2,0,".");

   

    LCD_write_uchar(3,0,var[1]);



    LCD_write_uchar(4,0,var[0]);

   

  }




-----此内容被swordshe于2005-04-28,10:55:44编辑过

出0入0汤圆

发表于 2005-4-28 11:57:37 | 显示全部楼层


    LCD_write_string(2,0,".");

改成

    LCD_write_uchar(2,0,".");   试一下

出0入0汤圆

 楼主| 发表于 2005-4-28 16:40:32 | 显示全部楼层
参数类型不一致,编译出错。

"."是字符型指针变量,而var[]则是unsigned char 变量。

"type error in argument 3 to 'LCD_write_uchar';found 'pointer to char' expected 'unsigned char'"

出0入0汤圆

发表于 2005-4-28 17:30:15 | 显示全部楼层
改成 LCD_write_uchar(2,0,0x2e);

0x2e是“.”的ASCII码,转一个小圈子,先找到问题。

出0入0汤圆

 楼主| 发表于 2005-4-29 10:29:15 | 显示全部楼层
应该一样有问题,我上次试过

LCD_write_uchar(0,0,0x34);

有时也会出现问题。

出0入0汤圆

发表于 2005-8-12 21:22:29 | 显示全部楼层
var = (unsigned char)(temp%10)+0x30;  

        temp = temp/10;  

    后面+0x30是什么意思,楼主可以帮忙解释一下吗?

我以前调试秒钟时也出现过烂码,不过是在LED上显示的,后来也是用马超老师的方法改正过来的。

LCD的显示还没有试过。

出0入0汤圆

发表于 2005-8-15 09:50:21 | 显示全部楼层
ASCII变换

0 --> '0' =0x30

1 --> '1' =0x31

9 --> '9' =0x39

出0入0汤圆

发表于 2007-9-3 09:56:38 | 显示全部楼层
我怎么没图象啊??
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-23 09:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表