大家来看看这个显示程序

[复制链接]
2174|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的显示效果,对应的是什么字符,或其它。
 楼主| duhemayi 发表于 2012-9-25 19:22 | 显示全部楼层
这个他用的是TS2040的显示器,实际上和1602是一样的,只不过能显示4行,每行20个字符,第1 行首地址0X00,第2 行首地址0X40,第3行首地址0X14,第4行首地址0X54,实际写入时每个地址加0X80,每行的其它地址是依次往后,自动加1,这个模块的驱动IC是ST7066,不知道有人用过没有!
阿南 发表于 2012-9-25 20:38 | 显示全部楼层
看来楼主已经理解的很明白了:lol
雷影少年 发表于 2012-9-25 20:56 | 显示全部楼层
dis[0]=dis[0]+0x30;我喜欢写成dis[0]=dis[0]+'0';
 楼主| duhemayi 发表于 2012-9-26 11:26 | 显示全部楼层
实际上确实不太明白,我看他这个每次写入时对地址控制的很巧妙,就是搞不懂“取地址再或上0X80”,写入时再用“POS+13”什么的?

有点郁闷!
 楼主| duhemayi 发表于 2012-9-26 11:26 | 显示全部楼层
实际上确实不太明白,我看他这个每次写入时对地址控制的很巧妙,就是搞不懂“取地址再或上0X80”,写入时再用“POS+13”什么的?

有点郁闷!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

1684

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部