找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2571|回复: 4
打印 上一主题 下一主题
收起左侧

单片机+LCD12864显示编译那里出错?

[复制链接]
跳转到指定楼层
楼主
ID:595237 发表于 2020-4-19 13:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编译问题

..\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             //数据口
  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[]="  显示系统  ";
  12. uchar code dis1[]="1.输入      ";
  13. uchar code dis2[]="2.密码输入:  ";



  14. void delay(int ms)         //延时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()  //延时4us
  29. { _nop_(); _nop_(); _nop_(); _nop_();}





  30. /*******************************************************************/
  31. /*                                                                 */
  32. /*检查LCD忙状态                                                    */
  33. /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。      */
  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初始化设定                                                  */
  50. /*                                                                 */
  51. /*******************************************************************/
  52. void lcd_init()
  53. {


  54.     write_cmd(0x36);      //扩充指令操作
  55.     delay(5);
  56.     write_cmd(0x30);      //基本指令操
  57.         delay(5);
  58.     write_cmd(0x0C);      //显示开,关光标
  59.     delay(5);
  60.     write_cmd(0x01);      //清除LCD的显示内容
  61.     delay(5);
  62. }         
  63. /*********************************************************/
  64. /*                                                       */
  65. /* 设定显示位置                                          */
  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);             //第一行显示数字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="  系统    ";
  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);             //第一行显示数字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:内容                                                 */
  158. /*********************************************************/
  159. void display2(uchar a,uchar b,uchar *p,uchar num)
  160. {

  161.       uchar i;                 
  162.           lcd_pos(a,b);             //第一行显示数字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. }

复制代码




谢谢指教!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-4-19 16:16 | 只看该作者
缺少3个函数
void write_cmd(unsigned char com)
void lcd_wdat(unsigned char date)
void lcd_pos(unsigned char a,b)
回复

使用道具 举报

板凳
ID:729982 发表于 2020-4-19 17:20 | 只看该作者
他的意思是你入口参数少了,你点开那个C文件进去看看具体函数声明的地方,看看是哪几个参数。一般都有注释告诉你是哪些参数,还有代码例句的
回复

使用道具 举报

地板
ID:235200 发表于 2020-4-19 21:00 | 只看该作者
程序少了lcd_wdat()这个函数,除非你没有贴出来
回复

使用道具 举报

5#
ID:595237 发表于 2020-4-19 21:25 | 只看该作者
谢谢!
#include  “LCD12864.h”

丢了
LCD12864.h
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表