欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3895|回復: 2
收起左側

關于LCD1602顯示問題 為什么第二行的內容跑到第一行了?

[復制鏈接]
ID:309919 發表于 2020-6-11 19:38 | 顯示全部樓層 |閱讀模式
本帖最后由 vircopc 于 2020-6-11 20:39 編輯

仿真圖

仿真圖

附上程序:
  1. //LCD管腳聲明
  2. sbit LCDRS = P2^7;
  3. sbit LCDEN= P2^6;

  4. //初始畫時顯示的內容
  5. uchar code Init1[]="Temperature:  C";
  6. uchar code Init2[]="Distance:     CM";

  7. //初始畫時顯示的內容
  8. //uchar code Init3[]="  Max------   CM";
  9. uchar code Init4[]="Min:          CM";

  10. //LCD延時
  11. void LCDdelay(uint z)
  12. {
  13.   uint x,y;
  14.   for(x=z;x>0;x--)
  15.     for(y=10;y>0;y--);
  16. }
  17. //寫命令
  18. void write_com(uchar com)
  19. {
  20.   LCDRS=0;
  21.   P0=com;
  22.   LCDdelay(5);
  23.   LCDEN=1;
  24.   LCDdelay(5);
  25.   LCDEN=0;
  26. }
  27. //寫數據
  28. void write_data(uchar date)
  29. {
  30.   LCDRS=1;
  31.   P0=date;
  32.   LCDdelay(5);
  33.   LCDEN=1;
  34.   LCDdelay(5);
  35.   LCDEN=0;
  36. }
  37. //1602初始化
  38. void Init1602()
  39. {
  40.   uchar i=0;
  41.   write_com(0x38);//屏幕初始化
  42.   write_com(0x0C);//打開顯示 無光標 無光標閃爍
  43.   write_com(0x06);//當讀或寫一個字符是指針后一一位
  44.   write_com(0x01);//清屏
  45.   write_com(0x80);//設置位置

  46.   for(i=0;i<14;i++)
  47.   {
  48.                 write_data(Init1[i]);
  49.   }
  50.         write_data(0xdf);
  51.         write_data(Init1[14]);        

  52.   write_com(0x80+0x40);//設置位置
  53.   for(i=0;i<16;i++)
  54.   {
  55.                 write_data(Init2[i]);
  56.   }
  57. }


  58. //溫度 距離顯示
  59. void Display_1602(uchar W,uint L)
  60. {
  61.         //溫度值顯示
  62.         write_com(0x80+12);
  63.         write_data('0'+W/10);
  64.         write_data('0'+W%10);

  65.         //長度值顯示
  66.         if(flag1s==1)
  67.         {
  68.                 write_com(0x80+0x40+0x0a);
  69.                 write_data(' ');
  70.                 write_data('0'+L/100);
  71.                 write_data('0'+L/10%10);
  72.                 write_data('0'+L%10);
  73.         }
  74.         //超出測距范圍
  75.         else if(flag1s==0)
  76.         {
  77.                
  78.                 write_com(0x80+0x40+0x0a);
  79.                 write_data(' ');
  80.           write_data(' ');
  81.                 write_data(' ');
  82.                 write_data(' ');
  83.         
  84.         }
  85. }


  86. //1602初始化最大化最小化調整界面
  87. void Init_MaxMin()
  88. {
  89.   uchar i=0;
  90.   write_com(0x38);//屏幕初始化
  91.   write_com(0x0f);//打開顯示 有光標 光標閃爍
  92.   write_com(0x06);//當讀或寫一個字符時后移一位
  93.   write_com(0x01);//清屏
  94.   write_com(0x80);//設置位置

  95.   /*for(i=0;i<16;i++)
  96.   {
  97.                 write_data(Init3[i]);
  98.   }
  99.         */

  100.   write_com(0x80);//設置位置
  101.   for(i=0;i<16;i++)
  102.   {
  103.                 write_data(Init4[i]);
  104.   }
  105.    /*write_com(0x8b);//設置位置
  106.         write_data('0'+Max/100);
  107.         write_data('0'+Max/10%10);
  108.         write_data('0'+Max%10);
  109.         */

  110.    write_com(0x87);//設置位置
  111.         write_data('0'+Min/100);
  112.         write_data('0'+Min/10%10);
  113.         write_data('0'+Min%10);

  114.    write_com(0x8d);//設置位置        
  115. }
復制代碼
為什么第二行的內容跑到第一行了呀

改正后

改正后
回復

使用道具 舉報

ID:309919 發表于 2020-6-11 20:40 | 顯示全部樓層
        write_com(0x87);
        write_data('0'+Max/100);
        write_data('0'+Max/10%10);
        write_data('0'+Max%10);
        write_data(' ');
        write_data(' ');
        write_data(' ');
        write_data(' ');
       
        write_com(0x8e);
        write_data('C');
        write_com(0x8f);
        write_data('M');
挨個輸入就好了,但我Min循環輸入就沒問題,為啥呀
回復

使用道具 舉報

ID:739545 發表于 2020-6-12 11:08 | 顯示全部樓層
地址位置沒有協調好
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表