1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

52單片機的lcd1602顯示亂碼,求解答

[復制鏈接]
ID:757927 發表于 2020-5-22 03:01 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar code table[]="cm^2";
sbit lcden=P2^2;
sbit lcdrs=P2^0;
sbit lcdwr=P2^1;
sbit adwr=P3^6;
sbit adrd=P3^7;
sbit adcs=P2^5;
uchar num,ad_val;
void delay(uint z)            //延時子函數
{
  uint x,y;
  for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
void write_com(uchar com)          //寫命令
{
  lcdrs=0;
  lcdwr=0;
     P0=com;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
}
void write_data(uchar date)       //寫數據
{
  lcdrs=1;
  lcdwr=0;
  P0=date;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
}
void init()                       //液晶初始化
{
  lcden=0;
  write_com(0x38);
  write_com(0x0c);
  write_com(0x06);
  write_com(0x01);
}
uchar get_ad()                      //A/D 啟動和轉換程序
   {
    uchar ad_val;
     adwr=1;
     _nop_();
     adwr=0;                 //一個向下的脈沖,啟動 A/D 轉換
            
     _nop_();
     adwr=1;               
  delay(5);               //延遲 5 微秒 A/D 轉換留一定的時間
     P1=0xff;               //讀取 P1 口之前先給其全寫 1
     adrd=1;                //選通 ADCS
     _nop_();               
     adrd=0;
     _nop_();
     ad_val=P1;               //AD 數據賦給 P1 口
     adrd=1;
return ad_val;
}
void main()                      //主函數
{
    uint A1,A2,A3,A4;             //uint 的范圍是 0-65535   
    ulong ad_val,ad_vo;            //ulong 的范圍是 0~2^32-1
    adcs=0;                       //AD 的片選信號選通*/
    ad_val=get_ad();
    delay(10);              
    ad_val=ad_val*10000;
    ad_vo= (45574-ad_val)/3522     //本來是 y=(4.5574-x)/0.3522
    ad_vo=ad_vo*10000;     //浮點數不能差分,把它們擴大 10000 倍
    A1=ad_vo/100000;
    A2=ad_vo%100000/10000;
    A3=ad_vo%10000/1000;
    A4=ad_vo%1000/100;
    init();
    write_com(0x80);
  {      
       write_data(A1+48);
    write_data(A2+48);
       write_data('.');
    write_data(A3+48);
    write_data(A4+48);
    delay(5);
   }
  write_com(0x80+0x40);
      for(num=0;num<4;num++)
  {
   write_data(table[num]);
   delay(5);
  }
  while(1);      
}






十位數顯示亂碼其他正常。求大神解救

回復

使用道具 舉報

ID:584814 發表于 2020-5-22 16:02 | 顯示全部樓層
一般1602能顯示就正常亂碼多是讀數不失常 。
回復

使用道具 舉報

ID:750954 發表于 2020-5-22 16:27 | 顯示全部樓層
是不是初始化沒做好,或者時序太快造成lcd的工作不穩定所以十位數顯示亂碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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