找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2028|回复: 5
收起左侧

单片机+Lcd1602一部分显示字符,部分显示方块 求帮助

[复制链接]
ID:880867 发表于 2021-3-6 00:26 | 显示全部楼层 |阅读模式
5黑币
51hei图片20210306002524.jpg
  1. #include "reg52.h"//此文件中定义了单片机的一些特殊功能寄存器
  2. #include "XPT2046.h"        
  3. #include "lcd.h"


  4. typedef unsigned int u16;          //对数据类型进行声明定义
  5. typedef unsigned char u8;

  6. unsigned char PuZh[12]="  GQ:       "; //第一行
  7. u8 disbuffgq[4];  //用来显示数字
  8. unsigned char code ASCII[10]={'0','1','2','3','4','5','6','7','8','9'};


  9. void delayms(unsigned int ms)
  10. {
  11.         unsigned char i=100,j;
  12.         for(;ms;ms--)
  13.         {
  14.                 while(--i)
  15.                 {
  16.                         j=10;
  17.                         while(--j);
  18.                 }
  19.         }
  20. }

  21. void datapros()
  22. {
  23.         u16 temp;      //temp就是读取到的光敏电阻数据值
  24.         static u8 i;
  25.         if(i==50)      //意思是每隔一段时间读取一次
  26.         {
  27.                 i=0;
  28.                 temp = Read_AD_Data(0xA4);                //   AIN2 光敏电阻  读取光敏电阻的模拟信号转换成数字信号
  29.         }
  30.         i++;
  31.         disbuffgq[0]=ASCII[temp/1000];         //千位
  32.         disbuffgq[1]=ASCII[temp%1000/100];     //百位
  33.         disbuffgq[2]=ASCII[temp%1000%100/10];  //十位
  34.         disbuffgq[3]=ASCII[temp%1000%100%10];         //个位
  35.         
  36.         DisplayOneChar(7,0,ASCII[disbuffgq[0]]);
  37.         DisplayOneChar(8,0,ASCII[disbuffgq[1]]);
  38.         DisplayOneChar(9,0,ASCII[disbuffgq[2]]);
  39.         DisplayOneChar(10,0,ASCII[disbuffgq[3]]);
  40.         

  41.         
  42. }


  43. void main(void)
  44. {        
  45.         LcdInit();
  46.         LcdShowStr(0,0,PuZh);
  47.         while(1)
  48.         {
  49.                
  50.                 datapros();         //数据处理函数
  51.                 delayms(80);
  52.         }               
  53. }
复制代码
就是想用lcd显示光敏的值,结果却显示图片的情况望解答

最佳答案

查看完整内容

disbuffgq[0]=ASCII[temp/1000]; //千位 disbuffgq[1]=ASCII[temp%1000/100]; //百位 disbuffgq[2]=ASCII[temp%1000%100/10]; //十位 disbuffgq[3]=ASCII[temp%1000%100%10]; //个位 // 上面代码已经把数据分解并转换为ASCII码保存在disbuffgq[ ]中 // 下面直接直接显示disbuffgq[ ]中ASCII码即可,若再次转换即出错 DisplayOneChar( 7,0,disbuffgq[0]); DisplayOneChar( 8,0,disbuffgq[1]); ...
回复

使用道具 举报

ID:213173 发表于 2021-3-6 00:26 | 显示全部楼层
马涛 发表于 2021-3-6 00:27
其他代码就没有打出来了,不好意思,主要想解决方块

        disbuffgq[0]=ASCII[temp/1000];         //千位
        disbuffgq[1]=ASCII[temp%1000/100];     //百位
        disbuffgq[2]=ASCII[temp%1000%100/10];  //十位
        disbuffgq[3]=ASCII[temp%1000%100%10];         //个位
//        上面代码已经把数据分解并转换为ASCII码保存在disbuffgq[ ]中
//        下面直接直接显示disbuffgq[ ]中ASCII码即可,若再次转换即出错
        DisplayOneChar( 7,0,disbuffgq[0]);
        DisplayOneChar( 8,0,disbuffgq[1]);
        DisplayOneChar( 9,0,disbuffgq[2]);
        DisplayOneChar(10,0,disbuffgq[3]);       
//        DisplayOneChar(7,0,ASCII[disbuffgq[0]]);
//        DisplayOneChar(8,0,ASCII[disbuffgq[1]]);
//        DisplayOneChar(9,0,ASCII[disbuffgq[2]]);
//        DisplayOneChar(10,0,ASCII[disbuffgq[3]]);
回复

使用道具 举报

ID:880867 发表于 2021-3-6 00:27 | 显示全部楼层
其他代码就没有打出来了,不好意思,主要想解决方块
回复

使用道具 举报

ID:880867 发表于 2021-3-6 08:46 | 显示全部楼层
wulin 发表于 2021-3-6 06:55
disbuffgq[0]=ASCII[temp/1000];         //千位
        disbuffgq[1]=ASCII[temp%1000/100];     //百位
        d ...

谢谢,这个解决了,但是显示的值为0,这个怎么解释
回复

使用道具 举报

ID:880867 发表于 2021-3-6 08:56 | 显示全部楼层
马涛 发表于 2021-3-6 08:46
谢谢,这个解决了,但是显示的值为0,这个怎么解释

问题解决了,是延时函数的问题
回复

使用道具 举报

ID:390416 发表于 2021-3-6 13:41 | 显示全部楼层
LCD12864中文资料包 容易看明白 http://www.51hei.com/bbs/dpj-200462-1.html

LCD1602显示℃ 这种自定义符号 http://www.51hei.com/bbs/dpj-200685-1.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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