找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 5473|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

求助萬能的網(wǎng)友,單片機(jī)+12864不能顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:213280 發(fā)表于 2018-12-22 18:08 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
50黑幣
按照開發(fā)板做個帶12864的最小系統(tǒng)板,接口和開發(fā)板一樣,可是燒錄一樣的程序就是顯示不了,求點(diǎn)解決方案

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include <stdlib.h>        
  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. /* 端口定義*/
  7. #define LCD_data  P0            //數(shù)據(jù)口
  8. sbit LCD_RS  =  P2^6;            //寄存器選擇輸入
  9. sbit LCD_RW  =  P2^5;            //液晶讀/寫控制
  10. sbit LCD_EN  =  P2^7;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            //液晶使能控制
  11. sbit LCD_PSB =  P3^4;            //串/并方式控制
  12. sbit LCD_RST =  P3^2;

  13. uchar code dis1[] = {"  123456  "};
  14. uchar code dis2[] = {"    0123456789 "};

  15. void delay_1ms(uint x)
  16. {
  17. uint i,j;
  18. for(j=0;j<x;j++)  
  19.         for(i=0;i<110;i++);
  20. }

  21. /*******************************************************************/
  22. /*                                                                 */
  23. /*寫指令數(shù)據(jù)到LCD                                                  */
  24. /*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。                             */
  25. /*                                                                 */
  26. /*******************************************************************/
  27. void write_cmd(uchar cmd)
  28. {                          
  29.     LCD_RS = 0;
  30.     LCD_RW = 0;
  31.     LCD_EN = 0;

  32.         P0 =cmd;
  33.         delay_1ms(5);
  34.     LCD_EN = 1;
  35.         delay_1ms(5);
  36.     LCD_EN = 0;  
  37. }

  38. /*******************************************************************/
  39. /*                                                                 */
  40. /*寫顯示數(shù)據(jù)到LCD                                                  */
  41. /*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。                               */
  42. /*                                                                 */
  43. /*******************************************************************/
  44. void write_dat(uchar dat)
  45. {                          
  46.     LCD_RS = 1;
  47.     LCD_RW = 0;
  48.     LCD_EN = 0;

  49.         P0=dat;
  50.         delay_1ms(5);
  51.     LCD_EN = 1;
  52.         delay_1ms(5);
  53.     LCD_EN = 0;  
  54. }

  55. /*********************************************************/
  56. /*                                                       */
  57. /* 設(shè)定顯示位置                                          */
  58. /*                                                       */
  59. /*********************************************************/
  60. void lcd_pos(uchar X,uchar Y)
  61. {                          
  62.    uchar  pos;
  63.    if (X==0)
  64.      {X=0x80;}
  65.    else if (X==1)
  66.      {X=0x90;}
  67.    else if (X==2)
  68.      {X=0x88;}
  69.    else if (X==3)
  70.      {X=0x98;}
  71.    pos = X+Y ;  
  72.    write_cmd(pos);     //顯示地址
  73. }

  74. /*******************************************************************/
  75. /*                                                                 */
  76. /*  LCD初始化設(shè)定                                                  */
  77. /*                                                                 */
  78. /*******************************************************************/
  79. void lcd_init()
  80. {
  81.     LCD_PSB = 1;         //并口方式  
  82.     write_cmd(0x30);      //基本指令操作
  83.     delay_1ms(5);
  84.     write_cmd(0x0C);      //顯示開,關(guān)光標(biāo)
  85.     delay_1ms(5);
  86.     write_cmd(0x01);      //清除LCD的顯示內(nèi)容
  87.     delay_1ms(5);
  88. }

  89. /*********************************************************/
  90. /*                                                                                                                 */
  91. /* 主程序                                                                                    */
  92. /*                                                       */
  93. /*********************************************************/
  94. main()
  95. {
  96.     uchar i,j;

  97.     delay_1ms(10);                 //延時
  98.     lcd_init();                 //初始化LCD
  99.         
  100.          
  101.     lcd_pos(0,0);             //設(shè)置顯示位置為第一行的第1個字符
  102.     i = 0;
  103.          while(dis1[i]!= '\0')
  104.     {
  105.        write_dat(dis1[i]);      //顯示字符
  106.          i++;
  107.     }

  108.     lcd_pos(1,0);  
  109.         j=0;
  110.         
  111.                    while(dis2[j]!= '\0')
  112.     {
  113.        write_dat(dis2[j]);      //顯示字符
  114.          j++;
  115.     }
  116.         while(1);



  117. }
復(fù)制代碼


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

使用道具 舉報

沙發(fā)
ID:282519 發(fā)表于 2018-12-22 20:22 | 只看該作者
對比度沒有調(diào)節(jié)好
回復(fù)

使用道具 舉報

板凳
ID:403593 發(fā)表于 2018-12-23 07:51 | 只看該作者
硬件問題居多
回復(fù)

使用道具 舉報

地板
ID:213280 發(fā)表于 2018-12-23 08:25 來自觸屏版 | 只看該作者
海盜船 發(fā)表于 2018-12-22 20:22
對比度沒有調(diào)節(jié)好

調(diào)了,也顯示不了
回復(fù)

使用道具 舉報

5#
ID:213280 發(fā)表于 2018-12-23 09:54 | 只看該作者

換了個串行程序可以顯示了,可是并行的為啥不行呢
回復(fù)

使用道具 舉報

6#
ID:432823 發(fā)表于 2018-12-23 10:08 | 只看該作者
對比度調(diào)節(jié)不正確,調(diào)節(jié)R7,另連接也檢查一下。
回復(fù)

使用道具 舉報

7#
ID:432823 發(fā)表于 2018-12-23 10:14 | 只看該作者
寫命令、數(shù)據(jù)前檢查LCD忙,寫命令、數(shù)據(jù)中設(shè)好RS等加一點(diǎn)延時NOP();
回復(fù)

使用道具 舉報

8#
ID:425222 發(fā)表于 2018-12-23 11:50 | 只看該作者
兩個芯片的型號是否完全一樣,晶振是否一樣,如果不一樣那就該延時,如果一樣那上網(wǎng)找12864硬件的接線資料
回復(fù)

使用道具 舉報

9#
ID:213280 發(fā)表于 2018-12-23 12:45 | 只看該作者
yaoji123 發(fā)表于 2018-12-23 10:08
對比度調(diào)節(jié)不正確,調(diào)節(jié)R7,另連接也檢查一下。

可以調(diào),線也沒錯,但是換個串行程序又可以顯示
回復(fù)

使用道具 舉報

10#
ID:452561 發(fā)表于 2018-12-23 14:22 | 只看該作者
兩個芯片的型號是不是一樣的?晶振是不是一樣的?
回復(fù)

使用道具 舉報

11#
ID:213280 發(fā)表于 2018-12-23 15:12 | 只看該作者
yangcong1314 發(fā)表于 2018-12-23 14:22
兩個芯片的型號是不是一樣的?晶振是不是一樣的?

都一樣
回復(fù)

使用道具 舉報

12#
ID:303383 發(fā)表于 2018-12-24 14:28 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

13#
ID:451718 發(fā)表于 2018-12-24 19:55 | 只看該作者
我也和你一樣碰到了同樣的情況, 但是,我的現(xiàn)象是恰恰相反,自己做的板子上有顯示,但有時會花屏,開發(fā)板上就完全沒有顯示,就是兩條橫崗。持續(xù)關(guān)注你,一起學(xué)習(xí)哈。
回復(fù)

使用道具 舉報

14#
ID:449525 發(fā)表于 2018-12-24 22:26 來自觸屏版 | 只看該作者
你單獨(dú)做的話,自己焊接線,初始化部分需要延時,查下線別接錯了,應(yīng)該沒有其它問題了
回復(fù)

使用道具 舉報

15#
ID:420031 發(fā)表于 2018-12-24 23:49 | 只看該作者
C語言還沒學(xué)會。如果要匯編的可以轉(zhuǎn)發(fā)一個給你試試。我測試過是可以的
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表