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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2200|回復: 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);      
}






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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
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 單片機教程網

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