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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3109|回復: 9
打印 上一主題 下一主題
收起左側

求助:LCD1602顯示程序4個警告,搞不明白。

[復制鏈接]
跳轉到指定樓層
樓主
ID:253767 發(fā)表于 2023-1-19 13:56 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

1、警告原文:1602.c(178):warning C206: 'LCD1602Init': missing function-prototype
       譯文:1602.c178):警告C206:LCD1602Unit”:缺少函數(shù)原型
函數(shù)原型是
void LCD1602Init(void)
{
  LCD1602ClearScreen( );
  LCD1602WriteCommand(LCD1602_DATA_MODE);  //顯示模式設置,設置16x2顯示,5x7點陣,
                                                                          //8位數(shù)據(jù)接口
  LCD1602WriteCommand(LCD1602_OPEN_SCREEN); //開顯示
  LCD1602WriteCommand(LCD1602_DISP_ADDRESS); //起始顯示地址
  LCD1602ClearScreen( );
}

但警告:LCD1602Unit”:缺少函數(shù)原型
而程序中并沒有LCD1602Unit”這個函數(shù)。


2、*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?LCD1602CLEARSCREEN?1602
譯文:***警告L16:未調用的段,覆蓋過程忽略
段:?公共關系?lcd1602透明屏幕?1602


3、*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  LCD1602INIT
    MODULE:  .\Objects\1602.obj (1602)
譯文:***警告L1:未解析的外部符號
    符號:LCD1602INIT
    模塊:\對象\1602.obj(1602)


4、*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  LCD1602INIT
    MODULE:  .\Objects\1602.obj (1602)
    ADDRESS: 0861H
譯文:***警告L2:引用未解析的外部
    符號:LCD1602INIT
    模塊:\對象\1602.obj(1602)
    地址:0861H










這是一個LCD1602顯示程序,其中用LS164進行IO擴展。


原程序全文如下 :
#include <reg51.h>
#include <intrins.h>
sbit        P0_4=0x84;      
sbit        P0_5=0x85;
sbit        P0_0=0x80;      
sbit        P0_1=0x81;
sbit        P0_2=0x82;

/*******************************************
*        大量宏定義,便于代碼移植和閱讀
*******************************************/
#define NOP()          _nop_()
#define HIGH              1
#define LOW                0
#define LS164_DATA(x)         {if((x))P0_4=1;else P0_4=0;}
#define LS164_CLK(x)         {if((x))P0_5=1;else P0_5=0;}
#define LCD1602_LINE1         0
#define  LCD1602_LINE2         1
#define  LCD1602_LINE1_HEAD     0x80
#define  LCD1602_LINE2_HEAD     0xC0
#define  LCD1602_DATA_MODE     0x38
#define  LCD1602_OPEN_SCREEN    0x0C
#define  LCD1602_DISP_ADDRESS   0x80
#define  LCD1602_RS(x)         {if ( (x) ) P0_0=1; else P0_0=0;}    //RS引腳控制
#define  LCD1602_RW(x)         {if ( (x) ) P0_1=1; else P0_1=0;}    //RW引腳控制
#define  LCD1602_EN(x)         {if ( (x) ) P0_2=1; else P0_2=0;}    //EN引腳控制
#define  LCD1602_PORT         LS164Send                           //發(fā)送數(shù)據(jù)
/*******************************************
*函數(shù)名稱:DelayNus
*輸    入:t延時時間
*輸    出:無
*說    明:微秒級延時
*******************************************/
void DelayNus(unsigned int t)
{
  unsigned int d=0;
  d=t;
  do
  {
                NOP();
        }
        while(--d>0);
}
/*******************************************
*函數(shù)名稱:LS164Send
*輸    入:byte寫發(fā)送的字節(jié)
*輸    出:無
*說    明:74LS164發(fā)送數(shù)據(jù)
*******************************************/
void LS164Send(unsigned char byte)
{
unsigned char j;
for(j=0;j<=7;j++)
{
if (byte&(1<<(7-j)))
{
LS164_DATA(HIGH);
}
else
{
LS164_DATA(LOW);
}
LS164_CLK(LOW);
LS164_CLK(HIGH);
}
}
/*******************************************
*函數(shù)名稱: LCD1602WriteByte
*輸            入:byte要寫入的字節(jié)
*輸     出:無
*說     明:LCD1602寫字節(jié)
*******************************************/
void LCD1602WriteByte(unsigned char byte)
{
LCD1602_PORT(byte);
LCD1602_RS(HIGH);
LCD1602_RW(LOW);
LCD1602_EN(LOW);
DelayNus(50);
LCD1602_EN(HIGH);
}
/*******************************************
*函數(shù)名稱:LCD1602WriteCommand
*輸    入:command要寫入的命令
*輸    出:無
*說    明:LCD1602寫命令
*******************************************/
void LCD1602WriteCommand(unsigned char command)
{
LCD1602_PORT(command);
LCD1602_RS(LOW);
LCD1602_RW(LOW);
LCD1602_EN(LOW);
DelayNus(50);
LCD1602_EN(HIGH);
}
/*******************************************
*函數(shù)名稱:LCD1602SetXY
*輸    入:x橫坐標y縱坐標
*輸    出:無
*說    明:LCD1602設置坐標
*******************************************/
void LCD1602SetXY(unsigned char x,unsigned char y)
{
unsigned char address;
if(y==LCD1602_LINE1)
{
address=LCD1602_LINE1_HEAD+x;
}
else
{
address=LCD1602_LINE2_HEAD+x;
}
LCD1602WriteCommand(address);
}
/*******************************************
*函數(shù)名稱:LCD1602PrintfString
*輸    入:x橫坐標y縱坐標s字符串
*輸    出:無
*說    明:LCD1602打印字符串
*******************************************/
void LCD1602PrintfString(unsigned char x,unsigned char y,unsigned char *s)
{
LCD1602SetXY(x,y);
while(s && *s)
{
LCD1602WriteByte(*s);
s++;
}
}
/*******************************************
*函數(shù)名稱:LCD1602ClearScreen
*輸    入:無
*輸    出:無
*說    明:LCD1602清屏
*******************************************/
void LCD1602LM016LClearScreen(void)
{
LCD1602WriteCommand(0x01);
DelayNus(50);
}
/*******************************************
*函數(shù)名稱:LCD1602Init
*輸    入:無
*輸    出:無
*說    明:LCD1602初始化
/ *******************************************
void LCD1602Init(void)
{
LCD1602ClearScreen( );
LCD1602WriteCommand(LCD1602_DATA_MODE);  //顯示模式設置,設置16x2顯示,5x7點陣,
//8位數(shù)據(jù)接口
LCD1602WriteCommand(LCD1602_OPEN_SCREEN); //開顯示
LCD1602WriteCommand(LCD1602_DISP_ADDRESS); //起始顯示地址
LCD1602ClearScreen( );
}
/*******************************************
*函數(shù)名稱:PortInit
*輸    入:無
*輸    出:無
*說    明:I/O口初始化
*******************************************/
void PortInit(void)
{
P0=P1=P2=P3=0xFF;
    }
/*******************************************
*函數(shù)名稱:main
*輸    入:無
*輸    出:無
*說    明:函數(shù)主體
*******************************************/
void main(void)
{
PortInit( );
LCD1602Init();
LCD1602PrintfString(0,LCD1602_LINE1,"0123456789");
LCD1602PrintfString(0,LCD1602_LINE2,"ABCDEFGHIJ");
while(1)
{
;     //空操作
}
}


屏幕截圖 2023-01-19 135219.jpg (226.01 KB, 下載次數(shù): 131)

LCD1602

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

使用道具 舉報

沙發(fā)
ID:155507 發(fā)表于 2023-1-21 12:50 | 只看該作者
給你改了,對比一下就知道哪里錯了。

  1. //這是一個LCD1602顯示程序,其中用LS164進行IO擴展。

  2. //原程序全文如下 :
  3. #include <reg51.h>
  4. #include <intrins.h>
  5. sbit        P0_4=0x84;      
  6. sbit        P0_5=0x85;
  7. sbit        P0_0=0x80;      
  8. sbit        P0_1=0x81;
  9. sbit        P0_2=0x82;

  10. /*******************************************
  11. *        大量宏定義,便于代碼移植和閱讀
  12. *******************************************/
  13. #define NOP()          _nop_()
  14. #define HIGH              1
  15. #define LOW                0
  16. #define LS164_DATA(x)         {if((x))P0_4=1;else P0_4=0;}
  17. #define LS164_CLK(x)         {if((x))P0_5=1;else P0_5=0;}
  18. #define LCD1602_LINE1         0
  19. #define  LCD1602_LINE2         1
  20. #define  LCD1602_LINE1_HEAD     0x80
  21. #define  LCD1602_LINE2_HEAD     0xC0
  22. #define  LCD1602_DATA_MODE     0x38
  23. #define  LCD1602_OPEN_SCREEN    0x0C
  24. #define  LCD1602_DISP_ADDRESS   0x80
  25. #define  LCD1602_RS(x)         {if ( (x) ) P0_0=1; else P0_0=0;}    //RS引腳控制
  26. #define  LCD1602_RW(x)         {if ( (x) ) P0_1=1; else P0_1=0;}    //RW引腳控制
  27. #define  LCD1602_EN(x)         {if ( (x) ) P0_2=1; else P0_2=0;}    //EN引腳控制
  28. #define  LCD1602_PORT         LS164Send                           //發(fā)送數(shù)據(jù)
  29. /*******************************************
  30. *函數(shù)名稱:DelayNus
  31. *輸    入:t延時時間
  32. *輸    出:無
  33. *說    明:微秒級延時
  34. *******************************************/
  35. void DelayNus(unsigned int t)
  36. {
  37.   unsigned int d=0;
  38.   d=t;
  39.   do
  40.   {
  41.     NOP();
  42.   }
  43.   while(--d>0);
  44. }
  45. /*******************************************
  46. *函數(shù)名稱:LS164Send
  47. *輸    入:byte寫發(fā)送的字節(jié)
  48. *輸    出:無
  49. *說    明:74LS164發(fā)送數(shù)據(jù)
  50. *******************************************/
  51. void LS164Send(unsigned char byte)
  52. {
  53.         unsigned char j;
  54.         for(j=0;j<=7;j++)
  55.         {
  56.                 if (byte&(1<<(7-j)))
  57.                 {
  58.                         LS164_DATA(HIGH);
  59.                 }
  60.                 else
  61.                 {
  62.                         LS164_DATA(LOW);
  63.                 }
  64.                 LS164_CLK(LOW);
  65.                 LS164_CLK(HIGH);
  66.         }
  67. }
  68. /*******************************************
  69. *函數(shù)名稱: LCD1602WriteByte
  70. *輸            入:byte要寫入的字節(jié)
  71. *輸     出:無
  72. *說     明:LCD1602寫字節(jié)
  73. *******************************************/
  74. void LCD1602WriteByte(unsigned char byte)
  75. {
  76.         LCD1602_PORT(byte);
  77.         LCD1602_RS(HIGH);
  78.         LCD1602_RW(LOW);
  79.         LCD1602_EN(LOW);
  80.         DelayNus(50);
  81.         LCD1602_EN(HIGH);
  82. }
  83. /*******************************************
  84. *函數(shù)名稱:LCD1602WriteCommand
  85. *輸    入:command要寫入的命令
  86. *輸    出:無
  87. *說    明:LCD1602寫命令
  88. *******************************************/
  89. void LCD1602WriteCommand(unsigned char command)
  90. {
  91.         LCD1602_PORT(command);
  92.         LCD1602_RS(LOW);
  93.         LCD1602_RW(LOW);
  94.         LCD1602_EN(LOW);
  95.         DelayNus(50);
  96.         LCD1602_EN(HIGH);
  97. }
  98. /*******************************************
  99. *函數(shù)名稱:LCD1602SetXY
  100. *輸    入:x橫坐標y縱坐標
  101. *輸    出:無
  102. *說    明:LCD1602設置坐標
  103. *******************************************/
  104. void LCD1602SetXY(unsigned char x,unsigned char y)
  105. {
  106.         unsigned char address;
  107.         if(y==LCD1602_LINE1)
  108.         {
  109.                 address=LCD1602_LINE1_HEAD+x;
  110.         }
  111.         else
  112.         {
  113.                 address=LCD1602_LINE2_HEAD+x;
  114.         }
  115.         LCD1602WriteCommand(address);
  116. }
  117. /*******************************************
  118. *函數(shù)名稱:LCD1602PrintfString
  119. *輸    入:x橫坐標y縱坐標s字符串
  120. *輸    出:無
  121. *說    明:LCD1602打印字符串
  122. *******************************************/
  123. void LCD1602PrintfString(unsigned char x,unsigned char y,unsigned char *s)
  124. {
  125.         LCD1602SetXY(x,y);
  126.         while(s && *s)
  127.         {
  128.                 LCD1602WriteByte(*s);
  129.                 s++;
  130.         }
  131. }
  132. /*******************************************
  133. *函數(shù)名稱:LCD1602ClearScreen
  134. *輸    入:無
  135. *輸    出:無
  136. *說    明:LCD1602清屏
  137. *******************************************/
  138. void LCD1602LM016LClearScreen(void)
  139. {
  140.         LCD1602WriteCommand(0x01);
  141.         DelayNus(50);
  142. }
  143. /*******************************************
  144. *函數(shù)名稱:LCD1602Init
  145. *輸    入:無
  146. *輸    出:無
  147. *說    明:LCD1602初始化
  148. *******************************************/ //<------- 這里少了/
  149. void LCD1602Init(void)
  150. {
  151.         LCD1602ClearScreen( );
  152.         LCD1602WriteCommand(LCD1602_DATA_MODE);  //顯示模式設置,設置16x2顯示,5x7點陣,
  153.         //8位數(shù)據(jù)接口
  154.         LCD1602WriteCommand(LCD1602_OPEN_SCREEN); //開顯示
  155.         LCD1602WriteCommand(LCD1602_DISP_ADDRESS); //起始顯示地址
  156.         LCD1602ClearScreen( );
  157. }
  158. /*******************************************
  159. *函數(shù)名稱:PortInit
  160. *輸    入:無
  161. *輸    出:無
  162. *說    明:I/O口初始化
  163. *******************************************/
  164. void PortInit(void)
  165. {
  166.         P0=P1=P2=P3=0xFF;
  167. }
  168. /*******************************************
  169. *函數(shù)名稱:main
  170. *輸    入:無
  171. *輸    出:無
  172. *說    明:函數(shù)主體
  173. *******************************************/
  174. void main(void)
  175. {
  176.         PortInit();
  177.         LCD1602Init();
  178.         LCD1602PrintfString(0,LCD1602_LINE1,"0123456789");
  179.         LCD1602PrintfString(0,LCD1602_LINE2,"ABCDEFGHIJ");
  180.         while(1)
  181.         {
  182.                 ;     //空操作
  183.         }
  184. }

復制代碼
回復

使用道具 舉報

板凳
ID:69115 發(fā)表于 2023-1-21 13:56 | 只看該作者
第150行的注釋/號錯了 應該放在行尾,
回復

使用道具 舉報

地板
ID:69115 發(fā)表于 2023-1-21 13:57 | 只看該作者
/*******************************************
*函數(shù)名稱:LCD1602Init
*輸    入:無
*輸    出:無
*說    明:LCD1602初始化
/ *******************************************  (/號應該放在行尾)
void LCD1602Init(void)
回復

使用道具 舉報

5#
ID:1059013 發(fā)表于 2023-1-21 14:31 | 只看該作者
警告不影響運行,每次都忽略的
回復

使用道具 舉報

6#
ID:161164 發(fā)表于 2023-1-21 16:09 | 只看該作者

回復

使用道具 舉報

7#
ID:253767 發(fā)表于 2023-1-22 08:06 | 只看該作者
angmall 發(fā)表于 2023-1-21 12:50
給你改了,對比一下就知道哪里錯了。

謝謝,馬虎了。
回復

使用道具 舉報

8#
ID:253767 發(fā)表于 2023-1-22 08:07 | 只看該作者
xiexugang 發(fā)表于 2023-1-21 13:56
第150行的注釋/號錯了 應該放在行尾,

謝謝,馬虎了。
回復

使用道具 舉報

9#
ID:253767 發(fā)表于 2023-1-22 08:08 | 只看該作者
fishafish 發(fā)表于 2023-1-21 14:31
警告不影響運行,每次都忽略的

是的,還可以運行。
回復

使用道具 舉報

10#
ID:253767 發(fā)表于 2023-1-22 08:16 | 只看該作者

謝謝指出。這個地方,是因為找不到LCD1602,而圖上用的是M016L,程序運行不通,就將程序中LCD1602全部改為M016L,改后結果沒變化,就又將M016L又全部改為LCD1602。該處是由于馬虎給漏掉了。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久国产精品三区 | 亚洲欧美国产毛片在线 | 日本成人在线观看网站 | 羞羞的视频免费看 | 先锋影音资源网站 | 久久久久久综合 | 色悠悠久 | 国产精品久久久久久久久久三级 | 成人18亚洲xxoo | 亚洲高清av在线 | 韩三级在线观看 | www.国产91| 免费观看色 | 手机在线不卡av | 综合久久亚洲 | 成人精品一区二区户外勾搭野战 | 亚洲精品国产成人 | 亚洲免费视频网站 | 黄色一级视频 | 日韩美香港a一级毛片免费 国产综合av | 超碰免费观看 | 久久精品a级毛片 | 久久国产欧美日韩精品 | 亚洲欧美日韩精品 | 国产精品一区二区在线免费观看 | 久久免费视频1 | 亚洲欧美一区在线 | 久久久久国产一区二区 | 一二三四av | 一区二区三区亚洲 | 亚洲精品一区二区三区蜜桃久 | 91在线精品视频 | 日本不卡高清视频 | 日韩欧美视频在线 | 国产色爽 | 色综合久久久 | 午夜91| 午夜天堂精品久久久久 | 一级特黄色毛片 | 久久久久久国产精品久久 | 国产98色在线 | 日韩 |