打印

大家来看看这个显示程序

[复制链接]
1343|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
duhemayi|  楼主 | 2012-9-25 13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/***********************************************************/
void lcd_pos(uint8 pos)
{                          
  LCD_write_command(pos | 0x80);  //数据指针=80+地址变量
}
/**********************************************************/
void show_value(ulong value,uchar pos)
{
    dis[4]=value/10000;
dis[4]=dis[4]+0x30;
    dis[3]=(value%10000)/1000;
dis[3]=dis[3]+0x30;
dis[2]=((value%10000)%1000)/100;
dis[2]=dis[2]+0x30;
dis[1]=(((value%10000)%1000)%100)/10/1;
dis[1]=dis[1]+0x30;
dis[0]=((((value%10000)%1000)%100)%10)/1;
dis[0]=dis[0]+0x30;
   lcd_pos(pos+11);
   LCD_write_data(dis[4]);
lcd_pos(pos+12);
LCD_write_data(0x2E);
   lcd_pos(pos+13);
   LCD_write_data(dis[3]);
   lcd_pos(pos+14);            
   LCD_write_data(dis[2]);    //整数位显示
   lcd_pos(pos+15);            
   LCD_write_data(dis[1]);    //第一位小数显示
   lcd_pos(pos+16);            
   LCD_write_data(dis[0]);    //第二位小数显示
    lcd_pos(pos+17);            
   LCD_write_data(0x56);               
}
这是两个LCD1602的显示程序,对其中第一段写入显示地址,以及后来在LCD上显示时很是不太清楚,有没有高手出来说说!

相关帖子

沙发
阿南| | 2012-9-25 15:54 | 只看该作者
dis[4]=value/10000;
dis[4]=dis[4]+0x30;
    dis[3]=(value%10000)/1000;
dis[3]=dis[3]+0x30;
dis[2]=((value%10000)%1000)/100;
dis[2]=dis[2]+0x30;
dis[1]=(((value%10000)%1000)%100)/10/1;
dis[1]=dis[1]+0x30;
dis[0]=((((value%10000)%1000)%100)%10)/1;
dis[0]=dis[0]+0x30;

这里是把一个值的个位、十位、百位、千位、万位分别取出保存在dis数组中

使用特权

评论回复
板凳
阿南| | 2012-9-25 15:57 | 只看该作者
LCD_write_command(pos | 0x80);  //数据指针=80+地址变量

这个是写LCD的命令,需要对应LCD模块的规格书看才能明白。

使用特权

评论回复
地板
阿南| | 2012-9-25 15:58 | 只看该作者
LCD_write_data(0x2E);
LCD_write_data(0x56);     

这个看看实际运行时LCD的显示效果,对应的是什么字符,或其它。

使用特权

评论回复
5
duhemayi|  楼主 | 2012-9-25 19:22 | 只看该作者
这个他用的是TS2040的显示器,实际上和1602是一样的,只不过能显示4行,每行20个字符,第1 行首地址0X00,第2 行首地址0X40,第3行首地址0X14,第4行首地址0X54,实际写入时每个地址加0X80,每行的其它地址是依次往后,自动加1,这个模块的驱动IC是ST7066,不知道有人用过没有!

使用特权

评论回复
6
阿南| | 2012-9-25 20:38 | 只看该作者
看来楼主已经理解的很明白了:lol

使用特权

评论回复
7
雷影少年| | 2012-9-25 20:56 | 只看该作者
dis[0]=dis[0]+0x30;我喜欢写成dis[0]=dis[0]+'0';

使用特权

评论回复
8
duhemayi|  楼主 | 2012-9-26 11:26 | 只看该作者
实际上确实不太明白,我看他这个每次写入时对地址控制的很巧妙,就是搞不懂“取地址再或上0X80”,写入时再用“POS+13”什么的?

有点郁闷!

使用特权

评论回复
9
duhemayi|  楼主 | 2012-9-26 11:26 | 只看该作者
实际上确实不太明白,我看他这个每次写入时对地址控制的很巧妙,就是搞不懂“取地址再或上0X80”,写入时再用“POS+13”什么的?

有点郁闷!

使用特权

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

本版积分规则

10

主题

1656

帖子

8

粉丝