久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1835|回復: 1
打印 上一主題 下一主題
收起左側

為什么經過ADC0808轉換后的,lcd1602沒有變化一直顯示0,求大神解答

[復制鏈接]
跳轉到指定樓層
樓主


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit rs=P2^0;
  5. sbit rw=P2^1;
  6. sbit en=P2^2;
  7. sbit START=P2^3;
  8. sbit ALE=P2^3;
  9. sbit CLK=P2^4;
  10. sbit OE=P2^5;
  11. sbit EOC=P2^6;
  12. uchar code table[]="Digital Ohmmeter";
  13. uchar code bby[]="(R)=";
  14. //uchar code abc[]={0,1,2,3,4,5,6,7,8,9};
  15. uchar num=0;
  16. uint  temp,getdata;
  17. uchar qian, bai, shi, ge;
  18. void delay(uint z)
  19.           {
  20.         uint x,y;
  21.           for(z=x;x>0;x--)
  22.           for(y=110;y>0;y--);
  23.           }
  24. bit lcd_busy_check()                                                        //1602狀態檢測是否忙碌
  25.         {
  26.           bit  result;
  27.           rs=0;
  28.           rw=1;
  29.           en=1;
  30.           delay(10);
  31.           result=(bit)(P0&0x80);
  32.           en=0;
  33.           return  result;
  34.         }

  35. void write_comd(uchar command)                                            //寫LCD命令
  36.         {
  37.           while(lcd_busy_check());
  38.           rw=0;
  39.           rs=0;
  40.           en=0;
  41.           P0=command;
  42.           delay(5);
  43.           en=1;
  44.           delay(5);
  45.           en=0;
  46.         }

  47. void  write_data(uchar dat)                                             //向1602發送數據
  48.         {
  49.           while(lcd_busy_check());
  50.           rs=1;
  51.           rw=0;
  52.           en=0;
  53.           P0=dat;
  54.           delay(5);
  55.           en=1;
  56.           delay(5);
  57.           en=0;
  58.         }


  59. lcd_init()                                                                                                     //LCD1602初始化
  60.         {
  61.           write_comd(0x38);          //顯示模式設置為16X2顯示
  62.           write_comd(0x0c);   //開顯示屏,關光標
  63.           write_comd(0x06);    //字符進入模式:屏幕不動,字符后移
  64.           write_comd(0x01);  //清屏
  65.           write_comd(0x80);
  66.         }
  67. lcd_display()
  68.         {
  69.         uint a,b;
  70.           for(a=0;a<16;a++)
  71.                           {
  72.                           write_data(table[a]);
  73.                           }
  74.                   //delay(200);
  75.                   write_comd(0x80+0x40+2);
  76.                   for(b=0;b<4;b++)
  77.                           {
  78.                           write_data(bby[b]);
  79.                           }
  80.                   //delay(200);
  81.                   write_comd(0x80+0x40+13);
  82.                           
  83.                           write_data(0xF4);//顯示歐姆符號
  84.                         
  85.                  // delay(200);
  86.                  
  87.         }
  88.   adc0808_tra()      // AD轉換
  89.                 {
  90.                    uint getdata;
  91.                  
  92.                   START=0;
  93.                   START=1;
  94.                   delay(1);
  95.                   START=0;
  96.                   delay(5);
  97.                   EOC=1;
  98.                   while(EOC==0);
  99.                   OE=1;
  100.                   
  101.                   getdata=P1;
  102.                   OE=0;
  103.                   return getdata;        
  104.                            
  105.                   }
  106.                
  107.         

  108. void data_display()
  109.                 {        
  110.                            temp=getdata*1.0/255*500;
  111.                     qian=temp/1000;
  112.            bai=temp%1000/100;
  113.                shi=temp%100/10;
  114.                   ge=temp%10;
  115.                   
  116.                 write_comd(0x80+0x40+7);
  117.                 write_data(qian+0x30);        //千位
  118.                 delay(5);
  119.                 write_comd(0x80+0x40+8);
  120.                 write_data(bai+0x30);//百位
  121.                 delay(5);
  122.                 write_comd(0x80+0x40+9);
  123.                 write_data(shi+0x30);        //十位
  124.                 delay(5);
  125.                 write_comd(0x80+0x40+10);
  126.                 write_data('.');
  127.                 delay(5);
  128.                 //write_comd(0x80+0x40+11);
  129.           write_data(ge+0x30);         //小數一位                        
  130.                 }
  131. void T0init()
  132.    {
  133.    TMOD=0x01;
  134.    TH0=(65536-200)/256;
  135.    TL0=(65536-200)%256;
  136.    EA=1;
  137.    ET0=1;
  138.    TR0=1;
  139.    //delay(20);
  140.    }
  141. void main()
  142.          {
  143.         
  144.           T0init();
  145.           lcd_init();
  146.             lcd_display();
  147.            while(1)
  148.            {
  149.                       adc0808_tra();
  150.               data_display();
  151.          }         
  152.          }
  153.    void timer() interrupt 1
  154.            {
  155.           TH0=(65536-200)/256;
  156.       TL0=(65536-200)%256;
  157.           CLK=~CLK;
  158.         }
復制代碼


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

使用道具 舉報

沙發
ID:704545 發表于 2020-3-10 16:28 | 只看該作者
假如把仿真的圖文件和程序打包放上來可能會有人幫你跑一下查找原因(前提是不要下載就扣黑幣啊),這樣找出問題的所在更準確更少花時間。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 啪啪综合网 | 亚洲免费网址 | www.亚洲精品 | 国产原创在线观看 | 日韩av免费在线观看 | 国产精品片 | 羞羞色在线观看 | 综合网视频 | 在线观看亚洲 | 欧美大片在线观看 | 91www在线观看 | 亚洲色图插插插 | 九九热在线观看 | 成人国产精品久久 | 国产亚洲精品久久午夜玫瑰园 | 日韩成人一区二区 | 91在线看片 | 久久久久久国产精品免费免费狐狸 | 一区二区三区在线 | 一区二区三区精品 | 999久久久| 91麻豆精品国产91久久久资源速度 | 二区中文 | 久久国产精品99久久久久久丝袜 | 在线观看www高清视频 | 欧洲亚洲精品久久久久 | 欧美a∨| 亚洲精品1区 | 欧美精品tv | 欧美国产日韩一区 | 欧美日韩精品在线免费观看 | 国产一区在线免费观看视频 | 亚洲精品日韩视频 | 动漫www.被爆羞羞av44 | 欧区一欧区二欧区三免费 | 欧美日韩高清在线观看 | 欧美成人高清 | 国产精品久久久久一区二区 | 一区二区三区四区在线视频 | 99自拍视频| 手机在线一区二区三区 |