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

QQ登錄

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

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

單片機(jī)+LCD12864顯示編譯那里出錯(cuò)?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:595237 發(fā)表于 2020-4-19 13:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
編譯問(wèn)題

..\LCD12864.C(129): warning C209: '_write_cmd': too few actual parameters
..\LCD12864.C(131): warning C209: '_write_cmd': too few actual parameters
..\LCD12864.C(133): warning C209: '_write_cmd': too few actual parameters
..\LCD12864.C(135): warning C209: '_write_cmd': too few actual parameters
..\LCD12864.C(155): warning C209: '_write_cmd': too few actual parameters



程序

  1. #include <reg52.h>
  2. #include <intrins.h>


  3. #define uchar unsigned char
  4. #define uint  unsigned int




  5. /*LCD12864  端口定義*/
  6. #define LCD_data  P0             //數(shù)據(jù)口
  7. sbit LCD_RS  =  P2^4;            //寄存器選擇輸入
  8. sbit LCD_RW  =  P2^5;            //液晶讀/寫控制
  9. sbit LCD_EN  =  P2^6;            //液晶使能控制
  10. sbit LCM_RST =  P2^7;


  11. uchar code dis0[]="  顯示系統(tǒng)  ";
  12. uchar code dis1[]="1.輸入      ";
  13. uchar code dis2[]="2.密碼輸入:  ";



  14. void delay(int ms)         //延時(shí)xms
  15. {
  16.     while(ms--)
  17.         {
  18.       uchar i;
  19.           for(i=0;i<250;i++)  
  20.            {
  21.             _nop_();                           
  22.                 _nop_();
  23.                 _nop_();
  24.                 _nop_();
  25.            }
  26.         }
  27. }        

  28. void delayNOP()  //延時(shí)4us
  29. { _nop_(); _nop_(); _nop_(); _nop_();}





  30. /*******************************************************************/
  31. /*                                                                 */
  32. /*檢查L(zhǎng)CD忙狀態(tài)                                                    */
  33. /*lcd_busy為1時(shí),忙,等待。lcd-busy為0時(shí),閑,可寫指令與數(shù)據(jù)。      */
  34. /*                                                                 */
  35. /*******************************************************************/
  36. bit lcd_busy()
  37. {                          
  38.     bit result;
  39.     LCD_RS = 0;
  40.     LCD_RW = 1;
  41.     LCD_EN = 1;
  42.     delayNOP();
  43.     result = (bit)(LCD_data&0x80);
  44.     LCD_EN = 0;
  45.     return(result);
  46. }

  47. /*******************************************************************/
  48. /*                                                                 */
  49. /*  LCD初始化設(shè)定                                                  */
  50. /*                                                                 */
  51. /*******************************************************************/
  52. void lcd_init()
  53. {


  54.     write_cmd(0x36);      //擴(kuò)充指令操作
  55.     delay(5);
  56.     write_cmd(0x30);      //基本指令操
  57.         delay(5);
  58.     write_cmd(0x0C);      //顯示開(kāi),關(guān)光標(biāo)
  59.     delay(5);
  60.     write_cmd(0x01);      //清除LCD的顯示內(nèi)容
  61.     delay(5);
  62. }         
  63. /*********************************************************/
  64. /*                                                       */
  65. /* 設(shè)定顯示位置                                          */
  66. /*                                                       */
  67. /*********************************************************/
  68. void lcd_pos(uchar X,uchar Y)
  69. {                          
  70.    uchar  pos;
  71.    if (X==0)
  72.      {X=0x80;}
  73.    else if (X==1)
  74.      {X=0x90;}
  75.    else if (X==2)
  76.      {X=0x88;}
  77.    else if (X==3)
  78.      {X=0x98;}
  79.    pos = X+Y ;  
  80.    write_cmd(pos);     //顯示地址
  81. }

  82. /*********************************************************/
  83. /*                                                         */
  84. /* 顯示主程序                                            */
  85. /*                                                       */
  86. /*********************************************************/
  87. void display_all()
  88. {

  89.     uchar i;         
  90.                      
  91.           lcd_pos(0,0);             //第一行顯示數(shù)字0~9
  92.           i = 0;   
  93.       while(dis0[i] != '\0')
  94.        {
  95.          lcd_wdat(dis0[i]);      //顯示字母
  96.          i++;
  97.        }
  98.             
  99.       lcd_pos(1,0);             //第二行顯示字母
  100.           i = 0;   
  101.       while(dis1[i] != '\0')
  102.        {
  103.          lcd_wdat(dis1[i]);      //顯示字母
  104.          i++;
  105.        }

  106.            lcd_pos(2,0);             //第三行顯示文字
  107.           i = 0;
  108.       while(dis2[i] != '\0')
  109.        {
  110.          lcd_wdat(dis2[i]);     //顯示
  111.          i++;
  112.        }


  113.          
  114. }

  115. /*********************************************************/
  116. /* 特定字符顯示主程序          */
  117. /*                                                     
  118. 0="  系統(tǒng)    ";
  119. 1="1.輸入....    ";
  120. 2="2.登記....      ";

  121. /*********************************************************/
  122. void display(uchar a,uchar b,uchar c)
  123. {

  124.       uchar i;                    
  125.           lcd_pos(a,b);             //第一行顯示數(shù)字0~9
  126.           i = 0;
  127.           switch(c)
  128.           {
  129.                case 0:
  130.                 while(dis0[i] != '\0')
  131.               {
  132.                 lcd_wdat(dis0[i]);      //顯示字母
  133.                 i++;
  134.               }
  135.                           break;

  136.                      case 1:
  137.                while(dis1[i] != '\0')
  138.               {
  139.                 lcd_wdat(dis1[i]);      //顯示字母
  140.                 i++;
  141.               }
  142.                           break;

  143.                          case 2:
  144.                while(dis2[i] != '\0')
  145.               {
  146.                 lcd_wdat(dis2[i]);      //顯示字母
  147.                 i++;
  148.               }
  149.                           break;



  150.                           default :break;
  151.           }
  152. }

  153. /*********************************************************/
  154. /*                                                         */
  155. /* 一般字符顯示主程序                                    */
  156. /*                                                       */
  157. /*p:內(nèi)容                                                 */
  158. /*********************************************************/
  159. void display2(uchar a,uchar b,uchar *p,uchar num)
  160. {

  161.       uchar i;                 
  162.           lcd_pos(a,b);             //第一行顯示數(shù)字0~9        
  163.       for(i=0;i<num;i++)
  164.           lcd_wdat(p[i]);      //顯示字母

  165. }

  166. /********************
  167. 清除某一行
  168. *********************/
  169. void display_clear_line(uchar a)
  170. {
  171.    uchar i;
  172.    lcd_pos(a,0);
  173.    for(i=0;i<16;i++)
  174.      lcd_wdat(' ');
  175. }

復(fù)制代碼




謝謝指教!

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

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2020-4-19 16:16 | 只看該作者
缺少3個(gè)函數(shù)
void write_cmd(unsigned char com)
void lcd_wdat(unsigned char date)
void lcd_pos(unsigned char a,b)
回復(fù)

使用道具 舉報(bào)

板凳
ID:729982 發(fā)表于 2020-4-19 17:20 | 只看該作者
他的意思是你入口參數(shù)少了,你點(diǎn)開(kāi)那個(gè)C文件進(jìn)去看看具體函數(shù)聲明的地方,看看是哪幾個(gè)參數(shù)。一般都有注釋告訴你是哪些參數(shù),還有代碼例句的
回復(fù)

使用道具 舉報(bào)

地板
ID:235200 發(fā)表于 2020-4-19 21:00 | 只看該作者
程序少了lcd_wdat()這個(gè)函數(shù),除非你沒(méi)有貼出來(lái)
回復(fù)

使用道具 舉報(bào)

5#
ID:595237 發(fā)表于 2020-4-19 21:25 | 只看該作者
謝謝!
#include  “LCD12864.h”

丟了
LCD12864.h
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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