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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3709|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

基于stc15單片機(jī)實(shí)現(xiàn)數(shù)字電壓表問(wèn)題 1602液晶顯示一行白色方塊

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
300黑幣
我用STC15F2K6S2芯片做簡(jiǎn)易電壓表測(cè)量,但下載進(jìn)去總是顯示一條白行怎么回事?電路純自己焊的P0口輸出數(shù)據(jù)到LCD1602,p1.0,p1.1借FPC8591

單片機(jī)源程序如下:
  1. #include<STC15F2K60S2.h>   
  2. #include <intrins.h>

  3. #define  AddWr 0x90   
  4. #define Data  P0   


  5. unsigned char AD_CHANNEL;
  6. sbit scl=P1^0;      
  7. sbit sda=P1^1;      
  8. bit ack;                 

  9. sbit RS = P2^0;
  10. sbit RW = P2^1;
  11. sbit E  = P2^2;



  12. unsigned char TempData[8];
  13. unsigned char  FirstLine[16]="Voltage:        ";
  14. unsigned char  SecondLine[16] ="Current:        ";

  15. void Start_I2c()
  16. {
  17.   sda=1;         
  18.   _nop_();
  19.   scl=1;
  20.   _nop_();        
  21.   _nop_();
  22.   _nop_();
  23.   _nop_();
  24.   _nop_();   
  25.   sda=0;         
  26.   _nop_();        
  27.   _nop_();
  28.   _nop_();
  29.   _nop_();
  30.   _nop_();      
  31.   scl=0;      
  32.   _nop_();
  33.   _nop_();
  34. }


  35. void Stop_I2c()
  36. {
  37.   sda=0;      
  38.   _nop_();      
  39.   scl=1;      
  40.   _nop_();
  41.   _nop_();
  42.   _nop_();
  43.   _nop_();
  44.   _nop_();
  45.   sda=1;      
  46.   _nop_();
  47.   _nop_();
  48.   _nop_();
  49.   _nop_();
  50. }


  51. void  I2C_SendByte(unsigned char  c)
  52. {
  53. unsigned char  i;

  54. for(i=0;i<8;i++)  
  55.     {
  56.      if((c<<i)&0x80)sda=1;   
  57.        else  sda=0;               
  58.      _nop_();
  59.      scl=1;               
  60.       _nop_();
  61.       _nop_();            
  62.       _nop_();
  63.       _nop_();
  64.       _nop_();         
  65.      scl=0;
  66.     }

  67.     _nop_();
  68.     _nop_();
  69.     sda=1;               
  70.     _nop_();
  71.     _nop_();   
  72.     scl=1;
  73.     _nop_();
  74.     _nop_();
  75.     _nop_();
  76.     if(sda==1)ack=0;     
  77.        else ack=1;        
  78.     scl=0;
  79.     _nop_();
  80.     _nop_();
  81. }

  82.    
  83. unsigned char   I2C_RcvByte()
  84. {
  85.   unsigned char  retc=0,i;
  86.   sda=1;                     
  87.   for(i=0;i<8;i++)
  88.       {
  89.         _nop_();           
  90.         scl=0;                  
  91.         _nop_();
  92.         _nop_();                 
  93.         _nop_();
  94.         _nop_();
  95.         _nop_();
  96.         scl=1;                  
  97.         _nop_();
  98.         _nop_();
  99.         retc=retc<<1;
  100.         if(sda==1)retc=retc+1;  
  101.         _nop_();
  102.         _nop_();
  103.       }
  104.   scl=0;   
  105.   _nop_();
  106.   _nop_();
  107.   return(retc);
  108. }


  109. void Ack_I2c(bit a)
  110. {  
  111.   if(a==0)
  112.   {
  113.   sda=0;
  114.     _nop_();
  115.   _nop_();
  116.   _nop_();      
  117.   scl=1;
  118.   _nop_();
  119.   _nop_();                    
  120.   _nop_();
  121.   _nop_();
  122.   _nop_();  
  123.   scl=0;                     
  124.   _nop_();
  125.   _nop_();   
  126.   sda=1;
  127.     _nop_();
  128.   _nop_();   

  129.   }              
  130.   else
  131. {  sda=1;                                 
  132.   _nop_();
  133.   _nop_();
  134.   _nop_();      
  135.   scl=1;
  136.   _nop_();
  137.   _nop_();                    
  138.   _nop_();
  139.   _nop_();
  140.   _nop_();  
  141.   scl=0;                     
  142.   _nop_();
  143.   _nop_();
  144.   sda=0;
  145.       _nop_();
  146.   _nop_();   

  147.   }   
  148. }


  149. bit PCF8591_SendByte(unsigned char addr,unsigned char channel)
  150. {
  151.    Start_I2c();              
  152.    I2C_SendByte(addr);            
  153.    if(ack==0)return(0);
  154.    I2C_SendByte(0x40|channel);              
  155.    if(ack==0)return(0);
  156.    Stop_I2c();               
  157.    return(1);
  158. }


  159. unsigned char PCF8591_RcvByte(unsigned char addr)
  160. {  
  161.    unsigned char dat;

  162.    Start_I2c();         
  163.    I2C_SendByte(addr+1);      
  164.    if(ack==0)return(0);
  165.    dat=I2C_RcvByte();         

  166.    Ack_I2c(1);           
  167.    Stop_I2c();           
  168.    return(dat);
  169. }




  170. void DelayUs(unsigned char us)
  171. {
  172. unsigned char uscnt;
  173. uscnt=us>>1;
  174. while(--uscnt);
  175. }

  176. void DelayMs(unsigned char ms)
  177. {
  178. while(--ms)
  179.    {
  180.      DelayUs(250);
  181.      DelayUs(250);
  182.          DelayUs(250);
  183.          DelayUs(250);
  184.    }
  185. }
  186. void WriteCommand(unsigned char c)
  187. {
  188. DelayMs(5);
  189. E=0;
  190. RS=0;
  191. RW=0;
  192. _nop_();
  193. E=1;
  194. Data=c;
  195. E=0;
  196. }

  197. void WriteData(unsigned char c)
  198. {
  199. DelayMs(5);   
  200. E=0;
  201. RS=1;
  202. RW=0;
  203. _nop_();
  204. E=1;
  205. Data=c;
  206. E=0;
  207. RS=0;
  208. }

  209. void ShowChar(unsigned char pos,unsigned char c)
  210. {
  211. unsigned char p;
  212. if (pos>=0x10)
  213.     p=pos+0xb0;
  214. else
  215.     p=pos+0x80;
  216. WriteCommand (p);
  217. WriteData (c);   
  218. }

  219. void ShowString (unsigned char line,char *ptr)
  220. {
  221. unsigned char l,i;
  222. l=line<<4;
  223. for (i=0;i<16;i++)
  224.   ShowChar (l++,*(ptr+i));
  225. }

  226. void InitLcd()
  227. {
  228. DelayMs(15);
  229. WriteCommand(0x38);
  230. WriteCommand(0x38);
  231. WriteCommand(0x38);
  232. WriteCommand(0x06);
  233. WriteCommand(0x0c);
  234. WriteCommand(0x01);

  235. }


  236. /
  237. void disp(void)

  238. {
  239.    unsigned char i=0;
  240.    while(FirstLine[i]!=' ')
  241.    {
  242.            ShowString(0,FirstLine);
  243.         i++;
  244.    }


  245. FirstLine[8]= '0'+TempData[0];
  246. FirstLine[9]= '0'+TempData[1];
  247. FirstLine[10]='.';
  248. FirstLine[11]='0'+TempData[2];
  249. FirstLine[12]='0'+TempData[3];
  250. FirstLine[14]='V';

  251. ShowString(0,FirstLine);

  252.      while(SecondLine[i]!=' ')
  253.    {
  254.            ShowString(1,SecondLine);
  255.         i++;
  256.    }

  257. SecondLine[8]='0'+TempData[4];
  258. SecondLine[11]='0'+TempData[6];
  259. SecondLine[10]='.';
  260. SecondLine[14]='V';



  261. ShowString(1,SecondLine);

  262. }

  263. void mDelay(unsigned char j)
  264. {
  265.   unsigned int i;
  266.   for(;j>0;j--)
  267.      {
  268.           for(i=0;i<125;i++)
  269.              {;}
  270.           }
  271.   }

  272. main()
  273. {  
  274.          unsigned char ADtemp;               
  275.          InitLcd();
  276.      mDelay(20);
  277.         while(1)
  278.         {

  279.          
  280.         
  281.             switch(AD_CHANNEL)
  282.                 {
  283.                         case 0: PCF8591_SendByte(AddWr,1);
  284.                              ADtemp = PCF8591_RcvByte(AddWr);  
  285.                                  TempData[0]=(ADtemp*10/51)/10;            
  286.                                  TempData[1]=(ADtemp*10/51)%10;            
  287.                                  TempData[2]=((ADtemp*10)%51)/5;
  288.                                  TempData[3]=((ADtemp*10)%51)%5;
  289.                                                                                    
  290.                                  break;  
  291.                         
  292.                         case 1: PCF8591_SendByte(AddWr,0);
  293.                              ADtemp=PCF8591_RcvByte(AddWr);  
  294.                                  TempData[4]=ADtemp/51;
  295.                                    TempData[6]=(ADtemp%51)/5;
  296.                                  break;  
  297.                         
  298.                         
  299.                 }                        
  300.            if(++AD_CHANNEL>2) AD_CHANNEL=0;
  301.            disp();         
  302.    }
  303. }
復(fù)制代碼

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

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2019-7-17 11:05 | 只看該作者
自己先寫(xiě)個(gè)顯示的程序,將LCD調(diào)通。
回復(fù)

使用道具 舉報(bào)

板凳
ID:579621 發(fā)表于 2019-7-17 12:54 | 只看該作者
已經(jīng)調(diào)試好用了,謝謝
回復(fù)

使用道具 舉報(bào)

地板
ID:307020 發(fā)表于 2019-7-23 12:38 | 只看該作者
其實(shí)到此時(shí)刻,對(duì)LCD1602來(lái)說(shuō)基本是程序已經(jīng)走通了,接下來(lái)要作的就是調(diào)整對(duì)比度電位器旋鈕,一直從屏幕上什么都看不出來(lái)到你程序確定的顯示位置出現(xiàn)方塊,此為調(diào)整對(duì)比度的可能范圍。對(duì)比度調(diào)整合適了,方塊自然就成了文字了。
回復(fù)

使用道具 舉報(bào)

5#
ID:542954 發(fā)表于 2019-8-11 20:09 | 只看該作者
可能有幾個(gè)問(wèn)題,在接受數(shù)據(jù)的時(shí)候rw端需要拉低,你可以試試單純的把rw接地,看一看是否有值,如果你行檢查你的供電電壓是否為這個(gè)lcd的工作電壓
回復(fù)

使用道具 舉報(bào)

6#
ID:662776 發(fā)表于 2019-12-12 20:43 | 只看該作者
樓主,可以把改好以后的程序發(fā)出來(lái)看看嗎
回復(fù)

使用道具 舉報(bào)

7#
ID:662776 發(fā)表于 2019-12-12 20:47 | 只看該作者
樓主,可以把改好的程序發(fā)出來(lái)看看嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:661917 發(fā)表于 2019-12-12 22:09 | 只看該作者
主要是電阻調(diào)對(duì)比度,電阻大小要合適
回復(fù)

使用道具 舉報(bào)

9#
ID:416239 發(fā)表于 2019-12-13 15:02 | 只看該作者
能否發(fā)一下程序看看,或者說(shuō)一下錯(cuò)誤之處
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99riav3国产精品视频 | 免费一区在线 | 永久免费av | 欧美精品乱码久久久久久按摩 | 午夜免费网站 | 一区二区三区欧美大片 | 亚洲自拍一区在线观看 | 久久久久久久久久久高潮一区二区 | 久久精品小短片 | 在线电影日韩 | 国产精品无码久久久久 | 国产高清视频一区二区 | 福利精品| 久久九精品 | 久草免费在线视频 | 欧美亚洲国语精品一区二区 | 免费在线成人 | 亚洲精品国产成人 | 免费av直接看 | 国产无套一区二区三区久久 | 91在线视频观看免费 | 久久精品国产亚洲 | 夜夜爽99久久国产综合精品女不卡 | 中文字幕一级毛片视频 | 人人鲁人人莫人人爱精品 | 亚洲国产成人精品女人久久久 | 国产成人精品久久 | 日韩一区二区免费视频 | 国产欧美性成人精品午夜 | 国产三级 | 国产日韩视频在线 | 国产精品美女久久久久久免费 | 国产精品成人一区二区三区 | 日韩国产精品一区二区三区 | 久久爱综合| 日韩欧美亚洲综合 | 91在线区 | 欧美 日韩 国产 成人 在线 91 | 日本超碰 | 亚洲国产成人在线视频 | 日韩aⅴ视频 |