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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4217|回復: 6
收起左側

程序在proteus仿真正確,但在單片機開發板顯示不正確

[復制鏈接]
ID:497598 發表于 2020-4-2 20:15 | 顯示全部樓層 |閱讀模式
20黑幣
最近做的一個設計在仿真中lcd1602是可以顯示的,如圖一
但在普中V3.0開發板上lcd1602不能正確顯示,如圖二

普中lcd1602的RS、RW、E管腳分別是p2.7,p2.5,p2.6  仿真中lcd1602的RS、RW、E也是

普中開發板沒有問題,可以使用光盤中的程序

希望大佬能夠指導一下我哪里有錯誤,萬分感謝,拜托了,找了一下午都沒找出來

下面貼出lcd1602相關的單片機程序
  1. /***********************************************************************************************************
  2. LCD1602相關函數
  3. ***********************************************************************************************************/

  4. sbit LCDRS = P2^6;
  5. sbit LCDEN = P2^7;
  6. sbit LCDRW = P2^5;
  7. sbit D0        = P0^0;
  8. sbit D1        = P0^1;
  9. sbit D2        = P0^2;
  10. sbit D3        = P0^3;
  11. sbit D4        = P0^4;
  12. sbit D5        = P0^5;
  13. sbit D6        = P0^6;
  14. sbit D7        = P0^7;



  15. //LCD延時
  16. void LCDdelay(uint z)                  //該延時大約100us(不精確,液晶操作的延時不要求很精確)
  17. {
  18.   uint x,y;
  19.   for(x=z;x>0;x--)
  20.     for(y=2;y>0;y--);
  21. }
  22. void LCD_WriteData(uchar dat)         
  23. {
  24.         if(dat&0x01)D0=1;else D0=0;
  25.         if(dat&0x02)D1=1;else D1=0;
  26.         if(dat&0x04)D2=1;else D2=0;
  27.         if(dat&0x08)D3=1;else D3=0;
  28.         if(dat&0x10)D4=1;else D4=0;
  29.         if(dat&0x20)D5=1;else D5=0;
  30.         if(dat&0x40)D6=1;else D6=0;
  31.         if(dat&0x80)D7=1;else D7=0;
  32. }
  33. //寫命令
  34. void write_com(uchar com)
  35. {
  36.         LCDRS=0;
  37.     LCDRW = 0;                                 
  38.         LCD_WriteData(com);
  39.     LCDdelay(2);
  40.     LCDEN=1;
  41.     LCDdelay(2);
  42.     LCDEN=0;
  43. }
  44. //寫數據
  45. void write_data(uchar date)
  46. {
  47.   LCDRS=1;
  48.   LCDRW = 0;
  49.         LCD_WriteData(date);
  50. //  DAT=date;
  51.   LCDdelay(2);
  52.   LCDEN=1;
  53.   LCDdelay(2);
  54.   LCDEN=0;
  55. }

  56. /*------------------------------------------------
  57.               選擇寫入位置
  58. ------------------------------------------------*/
  59. void SelectPosition(unsigned char x,unsigned char y)
  60. {     
  61.         if (x == 0)
  62.         {     
  63.                 write_com(0x80 + y);     //表示第一行
  64.         }
  65.         else
  66.         {      
  67.                 write_com(0xC0 + y);      //表示第二行
  68.         }        
  69. }
  70. /*------------------------------------------------
  71.               寫入字符串函數
  72. ------------------------------------------------*/
  73. void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
  74. {     
  75.         SelectPosition(x,y);
  76.         while (*s)
  77.         {     
  78.                 write_data( *s);     
  79.                 s ++;     
  80.         }
  81. }
  82. //========================================================================
  83. // 函數: void LCD_Write_Char(uchar x,uchar y,uint s,uchar l)
  84. // 應用: LCD_Write_Char(0,1,366,4) ;
  85. // 描述: 在第0行第一個字節位置顯示366的后4位,顯示結果為 0366
  86. // 參數: x:行,y:列,s:要顯示的字,l:顯示的位數
  87. // 返回: none.
  88. //========================================================================
  89. void LCD_Write_Char(uchar x,uchar y,uint s,uchar l)
  90. {     
  91.         SelectPosition(x,y) ;

  92.         if(l>=5)
  93.                 write_data(0x30+s/10000%10);        //萬位
  94.         if(l>=4)
  95.                 write_data(0x30+s/1000%10);                //千位
  96.         if(l>=3)
  97.                 write_data(0x30+s/100%10);                //百位
  98.         if(l>=2)
  99.                 write_data(0x30+s/10%10);                        //十位
  100.         if(l>=1)
  101.                 write_data(0x30+s%10);                //個位

  102. }

  103. //1602初始化
  104. void Init1602()
  105. {
  106.   uchar i=0;
  107.   write_com(0x38);//屏幕初始化
  108.   write_com(0x0c);//打開顯示 無光標 無光標閃爍
  109.   write_com(0x06);//當讀或寫一個字符是指針后一一位
  110.   write_com(0x01);//清屏        
  111. }
  112. void Display1(c,temp,temp2,temp3) //溫度,煙霧,PM2.5,甲醛
  113. {
  114.         //時時溫度
  115.         LCD_Write_Char(0,6,c/10,2);
  116.         write_data('.');
  117.         LCD_Write_Char(0,9,c%10,1);        
  118.         //時時煙霧
  119.         LCD_Write_Char(0,13,temp,3);
  120.         //時時pm25
  121.         LCD_Write_Char(1,6,temp2,3);
  122.         //時時甲醛
  123.         LCD_Write_Char(1,13,temp3,3);

  124. }


  125. void Display2(yushe_wendu,yushe_yanwu,yushe_pm25,yushe_jiaquan)
  126. {
  127.         //顯示預設溫度
  128.         LCD_Write_Char(0,6,yushe_wendu,2);

  129.         //顯示預設煙霧
  130.         LCD_Write_Char(0,13,yushe_yanwu,3);

  131.         //顯示預設PM2.5
  132.         LCD_Write_Char(1,6,yushe_pm25,3);
  133.         
  134.         //顯示預設甲醛
  135.         LCD_Write_Char(1,13,yushe_jiaquan,3);        

  136. }
復制代碼

圖二

圖二

圖一

圖一
回復

使用道具 舉報

ID:420836 發表于 2020-4-2 23:18 | 顯示全部樓層
嘗試不同的延遲值。 模擬與實際控件不同,需要調整延遲。
回復

使用道具 舉報

ID:235200 發表于 2020-4-3 01:30 | 顯示全部樓層
光盤上有程序,可以直接使用其程序呀,估計你加了不同的傳感器,是獲取傳感器數據時進入了等待狀態,如果去掉傳感器內容,又能夠顯示就不是顯示程序的問題
回復

使用道具 舉報

ID:665861 發表于 2020-4-3 09:44 | 顯示全部樓層
你試試調整一下晶振
回復

使用道具 舉報

ID:478073 發表于 2020-4-3 12:53 | 顯示全部樓層
先下載別人成功例子的代碼看看,這樣會下走很多彎路
回復

使用道具 舉報

ID:497598 發表于 2020-4-3 14:12 | 顯示全部樓層
csmyldl 發表于 2020-4-3 01:30
光盤上有程序,可以直接使用其程序呀,估計你加了不同的傳感器,是獲取傳感器數據時進入了等待狀態,如果去掉傳 ...

去掉傳感器程序,還是不顯示
回復

使用道具 舉報

ID:606493 發表于 2020-4-3 15:03 | 顯示全部樓層
仿真沒問題的話程序應該是沒有問題的,你可以看看你的硬件有沒有問題,你看一下你開發板上的晶振是不是跟仿真用的晶振是一樣的,一般用的是11.0592的,但是有的開發板的晶振是12M的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久久星辰影院 | 欧美乱码精品一区二区三区 | 91一区二区 | 亚洲精品福利视频 | 亚洲人a | 2019中文字幕视频 | 7799精品视频天天看 | 亚洲激情在线 | 美女视频一区 | 亚洲精品黄色 | 国产天天操 | 日韩在线观看视频一区 | 涩涩导航| 国产精品一区在线观看 | 国内自拍真实伦在线观看 | 精品视频在线免费观看 | 日韩中文av在线 | 99在线免费观看 | 精品一区二区久久 | 国产一区二区在线91 | 亚洲高清一区二区三区 | 伊人久久免费视频 | 黄色三级免费网站 | 99久久婷婷 | 日韩成年人视频在线 | 国产精品视频在线观看 | 午夜影院毛片 | 一区二区三区国产好的精 | 免费在线观看一区二区三区 | 中文字幕一区二区三区精彩视频 | 五月天激情电影 | 91观看| 国产精品精品久久久 | 欧美日韩不卡 | 少妇一级淫片免费播放 | 久久免费看 | 欧美一区二区三区在线观看 | 毛片一区二区 | 一区免费观看 | 亚洲国产精品一区二区三区 | 亚洲一av |