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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

液晶模塊模擬IO口,單片機編譯的時候出現c213錯誤,有會的嗎

[復制鏈接]
跳轉到指定樓層
樓主
ID:726849 發表于 2020-12-22 20:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 zdcn 于 2020-12-22 20:41 編輯

#include<reg51.h>

#include<absacc.h>

#define uchar unsigned char

#define uint unsigned int

sbit LCD_RST=P1^0;

sbit DI=P1^5;

sbit RW=P1^4;

sbit CSL=P1^2;

sbit CSR=P1^1;

sbit EN=P1^3;

sbit RDY=P0^7;

sbit LCD=0x80;

#define LCD_DISPON  0x3f

#define LCD_STARTROW 0xc0

#define LCD_ADDRSTRY 0xb8

#define LCD_ADDRSTRX 0x40

#define CSL 0

#define CSR 1

void LCD_WrCmd(bit port, uchar cmd)
{
EN=0;
CSL=port;
DI=0;
RW=0;
EN=1;
LCD=cmd;
EN=0;

}



void LCD_WrDat(bit port, uchar wrdata)
{
EN=0;
CSR=port;
DI=1;
RW=0;
EN=1;
LCD=wrdata;
EN=0;

}



uchar code  ASCII_TAB[480] = //0X20~0X7F之間 ASCII碼對應的點陣數據表

              { 0x00, 0x00, 0x00, 0x00, 0x00,

                            0x00, 0x00, 0x9e, 0x00, 0x00,

                0x00, 0x0e, 0x00, 0x0e, 0x00,

                0x28, 0xfe, 0x28, 0xfe, 0x28,

                0x48, 0x54, 0xfe, 0x54, 0x24,

                0x46, 0x26, 0x10, 0xc8, 0xc4,

                0x6c, 0x92, 0xaa, 0x44, 0xa0,

                0x00, 0x0a, 0x06, 0x00, 0x00,

                                 0x00, 0x38, 0x44, 0x82, 0x00,

                                 0x00, 0x82, 0x44, 0x38, 0x00,

                                 0x28, 0x10, 0x7c, 0x10, 0x28,

                                 0x10, 0x10, 0x7c, 0x10, 0x10,

                                 0x00, 0xa0, 0x60, 0x00, 0x00,

                                 0x10, 0x10, 0x10, 0x10, 0x10,

                                 0x00, 0xc0, 0xc0, 0x00, 0x00,

                                 0x40, 0x20, 0x10, 0x08, 0x04,



                        0x7C, 0xA2, 0x92, 0x8A, 0x7C,                        

                                0x00, 0x84, 0xFE, 0x80, 0x00,

                                0x84, 0xC2, 0xA2, 0x92, 0x8C,                        

                                0x42, 0x82, 0x8A, 0x96, 0x62,                        

                                0x30, 0x28, 0x24, 0xFE, 0x20,               

                                0x4E, 0x8A, 0x8A, 0x8A, 0x72,                        

                                0x78, 0x94, 0x92, 0x92, 0x60,                        

                                0x02, 0xE2, 0x12, 0x0A, 0x06,                        

                                0x6C, 0x92, 0x92, 0x92, 0x6C,                        

                                 0x0C, 0x92, 0x92, 0x52, 0x3C,                        

                                0x00, 0x6C, 0x6C, 0x00, 0x00,                        

                                0x00, 0xAC, 0x6C, 0x00, 0x00,                        

                                0x10, 0x28, 0x44, 0x82, 0x00,                        

                                0x28, 0x28, 0x28, 0x28, 0x28,                        

                                0x00, 0x82, 0x44, 0x28, 0x10,                        

                                0x04, 0x02, 0xA2, 0x12, 0x0C,



                        0x64, 0x92, 0xF2, 0x82, 0x7C,                        

                                0xFC, 0x22, 0x22, 0x22, 0xFC,                        

                                 0xFE, 0x92, 0x92, 0x92, 0x6C,                        

                                0x7C, 0x82, 0x82, 0x82, 0x44,                        

                                0xFE, 0x82, 0x82, 0x44, 0x38,               

                                0xFE, 0x92, 0x92, 0x92, 0x82,               

                                0xFE, 0x12, 0x12, 0x12, 0x02,                        

                                0x7C, 0x82, 0x92, 0x92, 0xF4,                        

                                0xFE, 0x10, 0x10, 0x10, 0xFE,               

                                0x00, 0x82, 0xFE, 0x82, 0x00,               

                                0x40, 0x80, 0x82, 0x7E, 0x02,                        

                                0xFE, 0x10, 0x28, 0x44, 0x82,                        

                                0xFE, 0x80, 0x80, 0x80, 0x80,               

                                0xFE, 0x04, 0x18, 0x04, 0xFE,                        

                                0xFE, 0x08, 0x10, 0x20, 0xFE,                        

                                0x7C, 0x82, 0x82, 0x82, 0x7C,



                        0xFE, 0x12, 0x12, 0x12, 0x0C,

                                0x7C, 0x82, 0xA2, 0x42, 0xBC,

                                0xFE, 0x12, 0x32, 0x52, 0x8C,                        

                                0x8C, 0x92, 0x92, 0x92, 0x62,                        

                                0x02, 0x02, 0xFE, 0x02, 0x02,        

                                0x7E, 0x80, 0x80, 0x80, 0x7E,

                                0x3E, 0x40, 0x80, 0x40, 0x3E,

                                0x7E, 0x80, 0x70, 0x80, 0x7E,

                                0xC6, 0x28, 0x10, 0x28, 0xC6,

                                0x0E, 0x10, 0xE0, 0x10, 0x0E,

                                0xC2, 0xA2, 0x92, 0x8A, 0x86,

                                0x00, 0xFE, 0x82, 0x82, 0x00,

                                0x04, 0x08, 0x10, 0x20, 0x40,

                                0x00, 0x82, 0x82, 0xFE, 0x00,

                                0x08, 0x04, 0x02, 0x04, 0x08,

                                0x80, 0x80, 0x80, 0x80, 0x80,



                        0x00, 0x02, 0x04, 0x08, 0x00,

                                0x40, 0xA8, 0xA8, 0xA8, 0xF0,

                                0xFE, 0x90, 0x88, 0x88, 0x70,

                                0x70, 0x88, 0x88, 0x88, 0x40,

                                0x70, 0x88, 0x88, 0x90, 0xFE,

                                0x70, 0xA8, 0xA8, 0xA8, 0x30,

                                0x10, 0xFC, 0x12, 0x02, 0x04,

                                0x18, 0xA4, 0xA4, 0xA4, 0x7C,

                                0xFE, 0x10, 0x08, 0x08, 0xF0,

                                0x00, 0x88, 0xFA, 0x80, 0x00,

                                0x40, 0x80, 0x88, 0x7A, 0x00,

                                0xFE, 0x20, 0x50, 0x88, 0x00,

                                0x00, 0x82, 0xFE, 0x80, 0x00,

                                0xF8, 0x08, 0x30, 0x08, 0xF8,

                                0xF8, 0x10, 0x08, 0x08, 0xF0,

                                0x70, 0x88, 0x88, 0x88, 0x70,



                        0xF8, 0x28, 0x28, 0x28, 0x10,

                                0x10, 0x28, 0x28, 0x30, 0xF8,

                                0xF8, 0x10, 0x08, 0x08, 0x10,

                                0x90, 0xA8, 0xA8, 0xA8, 0x40,

                                0x08, 0x7E, 0x88, 0x80, 0x40,

                                0x78, 0x80, 0x80, 0x40, 0xF8,

                                0x38, 0x40, 0x80, 0x40, 0x38,

                                0x78, 0x80, 0x60, 0x80, 0x78,

                                0x88, 0x50, 0x20, 0x50, 0x88,

                                0x18, 0xA0, 0xA0, 0xA0, 0x78,

                                0x88, 0xC8, 0xA8, 0x98, 0x88,

                                0x00, 0x10, 0x6C, 0x82, 0x00,

                                0x00, 0x00, 0xFE, 0x00, 0x00,

                                0x00, 0x82, 0x6C, 0x10, 0x00,

                                0x10, 0x10, 0x54, 0x38, 0x10,

                                0x10, 0x38, 0x54, 0x10, 0x10};



//以filldata充填液晶屏

void  LCD_DispFill(uchar filldata)

{  uchar  x, y;

   LCD_WrCmd(CSL,LCD_STARTROW+0);        //設置左半屏顯示起始行為0

   LCD_WrCmd(CSR,LCD_STARTROW+0);        //設置右半屏顯示起始行為0

   for( y=0;y<8;y++)           //循環充填8頁

   {  LCD_WrCmd(CSL,LCD_ADDRSTRY+y);        // 設置左半屏頁地址

      LCD_WrCmd(CSL,LCD_ADDRSTRX);            // 設置左半屏列地址

      LCD_WrCmd(CSR,LCD_ADDRSTRY+y);        // 設置右半屏頁地址

      LCD_WrCmd(CSR,LCD_ADDRSTRX);                // 設置右半屏列地址



      for(x=0;x<64;x++)                  //充填每頁的64個單元(列)

      {  LCD_WrDat(CSL,filldata);

         LCD_WrDat(CSR,filldata);



      }        

   }

}



//液晶模塊初始化

void  LCD_DispIni(void)                        

{  uint  i;

   LCD_RST = 0;                                           // 復位驅動芯片

   for(i=0; i<500; i++);

   LCD_RST = 1;   

   LCD_WrCmd(CSL,LCD_DISPON);                 // 打開顯示

   LCD_WrCmd(CSL,LCD_STARTROW);           // 設置顯示起始行為0

   LCD_WrCmd(CSR,LCD_DISPON);        

   LCD_WrCmd(CSR,LCD_STARTROW);               

   LCD_DispFill(00);                        // 清屏

   LCD_WrCmd(CSL,LCD_ADDRSTRY+0);        // 設置頁(字符行)地址

   LCD_WrCmd(CSL,LCD_ADDRSTRX+0);        // 設置列地址

   LCD_WrCmd(CSR,LCD_ADDRSTRY+0);

   LCD_WrCmd(CSR,LCD_ADDRSTRX+0);

}



//在液晶屏的cy(0-7)行、cx(0-15)列顯示字符dispdata        

void LCD_DispChar(uchar cy, uchar cx, char dispdata)

{  uchar  code  *pch;

   uchar  i;

   bit port;

   cy = cy&0x07;                // 參數過濾

   cx = cx&0x0f;

   pch = &ASCII_TAB[(dispdata-0X20)*5];     //指向字符起始列的點陣碼

   if((cx&0x08)==0)                // 列號cx<8,在左半屏顯示

       {  port=CSL;

          i=cx<<3;

       }

   else

       {  port=CSR;

          i = (cx&0x07)<<3;

       }

   LCD_WrCmd(port,LCD_ADDRSTRX+i);        // 設置當前列地址

   LCD_WrCmd(port,LCD_ADDRSTRY+cy);        // 設置當前頁地址

   for(i=0; i<5; i++);           //延時

   LCD_WrDat(port,0x00);                                // 顯示一列空格

   for(i=0; i<5; i++)            //送出字符的5列點陣碼

      { LCD_WrDat(port,*pch);               

        pch++;

      }

   LCD_WrDat(port,0x00);                   //顯示一列空格

      for(i=0; i<5; i++);

   LCD_WrDat(port,0x00);        

}

                                                      

//在液晶屏的cy(0-7)行、cx(0-15)列顯示字符disp_str        

void  LCD_DispStr(uchar cy, uchar cx, char *disp_str)

{  while( *disp_str !='\0')

   {  cy = cy&0x07;                        // 參數過濾

      cx = cx&0x0f;        

      LCD_DispChar(cy, cx, *disp_str);         // 顯示字符

             disp_str++ ;                                // 指向下一字符數據

      cx++;

      if(cx>15) cy++;                    // 指向下一顯示行

   }

}

#define uchar unsigned char
#define uint unsigned int
extern void LCD_DispIni(void);
extern void LCD_DispFill(uchar filldata);
extern void LCD_DispChar(uchar cy,uchar cx,char dispdata);
extern void LCD_DispStr(uchar cy,uchar cx,char *disp_str);

void  main(void)

{ while(1)

   {  LCD_DispIni();        // 初始化液晶模塊

      LCD_DispStr (0,1,"void Stop()");

      LCD_DispStr (1,1,"{ SDA=0;");

      LCD_DispStr (2,1,"        SCL=1;");

      LCD_DispStr (3,1,"        delay5us();");

      LCD_DispStr (4,1,"        SDA=1;");

      LCD_DispStr (5,1,"        delay5us();");

      LCD_DispStr (6,1,"        SCL=0;");

      LCD_DispChar (7,1,'}');

      while(1);

   }

}

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

使用道具 舉報

沙發
ID:726849 發表于 2020-12-22 20:08 | 只看該作者
出錯的是40和54行
回復

使用道具 舉報

板凳
ID:726849 發表于 2020-12-22 20:36 | 只看該作者
后面按要求把CSL=port;改成了if(port)
{
CSR=1;
CSL=0;
}
else
{
CSR=0;
CSL=1;
}還是C213的錯誤
回復

使用道具 舉報

地板
ID:517466 發表于 2020-12-22 23:31 | 只看該作者
你的程序寫的有點讓人迷惑啊。是不是從別的地方拷貝過來的?
1、函數明明在這個程序中為什么要加extern說明?
2、#define CSL 0和sbit CSL=P1^2;同時存在,你到底想要聲明CSL是什么?CSR也一樣。
3、#define能否全部提到前面?
4、類似extern void LCD_DispIni(void);這樣的函數聲明是不是也放到前面?
改好的程序如下:

#include<reg51.h>

#include<absacc.h>

#define uchar unsigned char

#define uint unsigned int


#define LCD_DISPON  0x3f

#define LCD_STARTROW 0xc0

#define LCD_ADDRSTRY 0xb8

#define LCD_ADDRSTRX 0x40

//#define CSL 0
//#define CSR 1

void LCD_DispIni(void);
void LCD_DispFill(uchar filldata);
void LCD_DispChar(uchar cy,uchar cx,char dispdata);
void LCD_DispStr(uchar cy,uchar cx,char *disp_str);

sbit LCD_RST=P1^0;

sbit DI=P1^5;

sbit RW=P1^4;

sbit CSL=P1^2;

sbit CSR=P1^1;

sbit EN=P1^3;

sbit RDY=P0^7;

sbit LCD=0x80;



void LCD_WrCmd(bit port, uchar cmd)
{
EN=0;
CSL=port;
DI=0;
RW=0;
EN=1;
LCD=cmd;
EN=0;

}



void LCD_WrDat(bit port, uchar wrdata)
{
EN=0;
CSR=port;
DI=1;
RW=0;
EN=1;
LCD=wrdata;
EN=0;

}



uchar code  ASCII_TAB[480] = //0X20~0X7F之間 ASCII碼對應的點陣數據表

              { 0x00, 0x00, 0x00, 0x00, 0x00,

                            0x00, 0x00, 0x9e, 0x00, 0x00,

                0x00, 0x0e, 0x00, 0x0e, 0x00,

                0x28, 0xfe, 0x28, 0xfe, 0x28,

                0x48, 0x54, 0xfe, 0x54, 0x24,

                0x46, 0x26, 0x10, 0xc8, 0xc4,

                0x6c, 0x92, 0xaa, 0x44, 0xa0,

                0x00, 0x0a, 0x06, 0x00, 0x00,

                                 0x00, 0x38, 0x44, 0x82, 0x00,

                                 0x00, 0x82, 0x44, 0x38, 0x00,

                                 0x28, 0x10, 0x7c, 0x10, 0x28,

                                 0x10, 0x10, 0x7c, 0x10, 0x10,

                                 0x00, 0xa0, 0x60, 0x00, 0x00,

                                 0x10, 0x10, 0x10, 0x10, 0x10,

                                 0x00, 0xc0, 0xc0, 0x00, 0x00,

                                 0x40, 0x20, 0x10, 0x08, 0x04,



                        0x7C, 0xA2, 0x92, 0x8A, 0x7C,                        

                                0x00, 0x84, 0xFE, 0x80, 0x00,

                                0x84, 0xC2, 0xA2, 0x92, 0x8C,                        

                                0x42, 0x82, 0x8A, 0x96, 0x62,                        

                                0x30, 0x28, 0x24, 0xFE, 0x20,               

                                0x4E, 0x8A, 0x8A, 0x8A, 0x72,                        

                                0x78, 0x94, 0x92, 0x92, 0x60,                        

                                0x02, 0xE2, 0x12, 0x0A, 0x06,                        

                                0x6C, 0x92, 0x92, 0x92, 0x6C,                        

                                 0x0C, 0x92, 0x92, 0x52, 0x3C,                        

                                0x00, 0x6C, 0x6C, 0x00, 0x00,                        

                                0x00, 0xAC, 0x6C, 0x00, 0x00,                        

                                0x10, 0x28, 0x44, 0x82, 0x00,                        

                                0x28, 0x28, 0x28, 0x28, 0x28,                        

                                0x00, 0x82, 0x44, 0x28, 0x10,                        

                                0x04, 0x02, 0xA2, 0x12, 0x0C,



                        0x64, 0x92, 0xF2, 0x82, 0x7C,                        

                                0xFC, 0x22, 0x22, 0x22, 0xFC,                        

                                 0xFE, 0x92, 0x92, 0x92, 0x6C,                        

                                0x7C, 0x82, 0x82, 0x82, 0x44,                        

                                0xFE, 0x82, 0x82, 0x44, 0x38,               

                                0xFE, 0x92, 0x92, 0x92, 0x82,               

                                0xFE, 0x12, 0x12, 0x12, 0x02,                        

                                0x7C, 0x82, 0x92, 0x92, 0xF4,                        

                                0xFE, 0x10, 0x10, 0x10, 0xFE,               

                                0x00, 0x82, 0xFE, 0x82, 0x00,               

                                0x40, 0x80, 0x82, 0x7E, 0x02,                        

                                0xFE, 0x10, 0x28, 0x44, 0x82,                        

                                0xFE, 0x80, 0x80, 0x80, 0x80,               

                                0xFE, 0x04, 0x18, 0x04, 0xFE,                        

                                0xFE, 0x08, 0x10, 0x20, 0xFE,                        

                                0x7C, 0x82, 0x82, 0x82, 0x7C,



                        0xFE, 0x12, 0x12, 0x12, 0x0C,

                                0x7C, 0x82, 0xA2, 0x42, 0xBC,

                                0xFE, 0x12, 0x32, 0x52, 0x8C,                        

                                0x8C, 0x92, 0x92, 0x92, 0x62,                        

                                0x02, 0x02, 0xFE, 0x02, 0x02,        

                                0x7E, 0x80, 0x80, 0x80, 0x7E,

                                0x3E, 0x40, 0x80, 0x40, 0x3E,

                                0x7E, 0x80, 0x70, 0x80, 0x7E,

                                0xC6, 0x28, 0x10, 0x28, 0xC6,

                                0x0E, 0x10, 0xE0, 0x10, 0x0E,

                                0xC2, 0xA2, 0x92, 0x8A, 0x86,

                                0x00, 0xFE, 0x82, 0x82, 0x00,

                                0x04, 0x08, 0x10, 0x20, 0x40,

                                0x00, 0x82, 0x82, 0xFE, 0x00,

                                0x08, 0x04, 0x02, 0x04, 0x08,

                                0x80, 0x80, 0x80, 0x80, 0x80,



                        0x00, 0x02, 0x04, 0x08, 0x00,

                                0x40, 0xA8, 0xA8, 0xA8, 0xF0,

                                0xFE, 0x90, 0x88, 0x88, 0x70,

                                0x70, 0x88, 0x88, 0x88, 0x40,

                                0x70, 0x88, 0x88, 0x90, 0xFE,

                                0x70, 0xA8, 0xA8, 0xA8, 0x30,

                                0x10, 0xFC, 0x12, 0x02, 0x04,

                                0x18, 0xA4, 0xA4, 0xA4, 0x7C,

                                0xFE, 0x10, 0x08, 0x08, 0xF0,

                                0x00, 0x88, 0xFA, 0x80, 0x00,

                                0x40, 0x80, 0x88, 0x7A, 0x00,

                                0xFE, 0x20, 0x50, 0x88, 0x00,

                                0x00, 0x82, 0xFE, 0x80, 0x00,

                                0xF8, 0x08, 0x30, 0x08, 0xF8,

                                0xF8, 0x10, 0x08, 0x08, 0xF0,

                                0x70, 0x88, 0x88, 0x88, 0x70,



                        0xF8, 0x28, 0x28, 0x28, 0x10,

                                0x10, 0x28, 0x28, 0x30, 0xF8,

                                0xF8, 0x10, 0x08, 0x08, 0x10,

                                0x90, 0xA8, 0xA8, 0xA8, 0x40,

                                0x08, 0x7E, 0x88, 0x80, 0x40,

                                0x78, 0x80, 0x80, 0x40, 0xF8,

                                0x38, 0x40, 0x80, 0x40, 0x38,

                                0x78, 0x80, 0x60, 0x80, 0x78,

                                0x88, 0x50, 0x20, 0x50, 0x88,

                                0x18, 0xA0, 0xA0, 0xA0, 0x78,

                                0x88, 0xC8, 0xA8, 0x98, 0x88,

                                0x00, 0x10, 0x6C, 0x82, 0x00,

                                0x00, 0x00, 0xFE, 0x00, 0x00,

                                0x00, 0x82, 0x6C, 0x10, 0x00,

                                0x10, 0x10, 0x54, 0x38, 0x10,

                                0x10, 0x38, 0x54, 0x10, 0x10};



//以filldata充填液晶屏

void  LCD_DispFill(uchar filldata)

{  uchar  x, y;

   LCD_WrCmd(CSL,LCD_STARTROW+0);        //設置左半屏顯示起始行為0

   LCD_WrCmd(CSR,LCD_STARTROW+0);        //設置右半屏顯示起始行為0

   for( y=0;y<8;y++)           //循環充填8頁

   {  LCD_WrCmd(CSL,LCD_ADDRSTRY+y);        // 設置左半屏頁地址

      LCD_WrCmd(CSL,LCD_ADDRSTRX);            // 設置左半屏列地址

      LCD_WrCmd(CSR,LCD_ADDRSTRY+y);        // 設置右半屏頁地址

      LCD_WrCmd(CSR,LCD_ADDRSTRX);                // 設置右半屏列地址



      for(x=0;x<64;x++)                  //充填每頁的64個單元(列)

      {  LCD_WrDat(CSL,filldata);

         LCD_WrDat(CSR,filldata);



      }        

   }

}



//液晶模塊初始化

void  LCD_DispIni(void)                        

{  uint  i;

   LCD_RST = 0;                                           // 復位驅動芯片

   for(i=0; i<500; i++);

   LCD_RST = 1;   

   LCD_WrCmd(CSL,LCD_DISPON);                 // 打開顯示

   LCD_WrCmd(CSL,LCD_STARTROW);           // 設置顯示起始行為0

   LCD_WrCmd(CSR,LCD_DISPON);        

   LCD_WrCmd(CSR,LCD_STARTROW);               

   LCD_DispFill(00);                        // 清屏

   LCD_WrCmd(CSL,LCD_ADDRSTRY+0);        // 設置頁(字符行)地址

   LCD_WrCmd(CSL,LCD_ADDRSTRX+0);        // 設置列地址

   LCD_WrCmd(CSR,LCD_ADDRSTRY+0);

   LCD_WrCmd(CSR,LCD_ADDRSTRX+0);

}



//在液晶屏的cy(0-7)行、cx(0-15)列顯示字符dispdata        

void LCD_DispChar(uchar cy, uchar cx, char dispdata)

{  uchar  code  *pch;

   uchar  i;

   bit port;

   cy = cy&0x07;                // 參數過濾

   cx = cx&0x0f;

   pch = &ASCII_TAB[(dispdata-0X20)*5];     //指向字符起始列的點陣碼

   if((cx&0x08)==0)                // 列號cx<8,在左半屏顯示

       {  port=CSL;

          i=cx<<3;

       }

   else

       {  port=CSR;

          i = (cx&0x07)<<3;

       }

   LCD_WrCmd(port,LCD_ADDRSTRX+i);        // 設置當前列地址

   LCD_WrCmd(port,LCD_ADDRSTRY+cy);        // 設置當前頁地址

   for(i=0; i<5; i++);           //延時

   LCD_WrDat(port,0x00);                                // 顯示一列空格

   for(i=0; i<5; i++)            //送出字符的5列點陣碼

      { LCD_WrDat(port,*pch);               

        pch++;

      }

   LCD_WrDat(port,0x00);                   //顯示一列空格

      for(i=0; i<5; i++);

   LCD_WrDat(port,0x00);        

}

                                                      

//在液晶屏的cy(0-7)行、cx(0-15)列顯示字符disp_str        

void  LCD_DispStr(uchar cy, uchar cx, char *disp_str)

{  while( *disp_str !='\0')

   {  cy = cy&0x07;                        // 參數過濾

      cx = cx&0x0f;        

      LCD_DispChar(cy, cx, *disp_str);         // 顯示字符

             disp_str++ ;                                // 指向下一字符數據

      cx++;

      if(cx>15) cy++;                    // 指向下一顯示行

   }

}



void  main(void)

{ while(1)

   {  LCD_DispIni();        // 初始化液晶模塊

      LCD_DispStr (0,1,"void Stop()");

      LCD_DispStr (1,1,"{ SDA=0;");

      LCD_DispStr (2,1,"        SCL=1;");

      LCD_DispStr (3,1,"        delay5us();");

      LCD_DispStr (4,1,"        SDA=1;");

      LCD_DispStr (5,1,"        delay5us();");

      LCD_DispStr (6,1,"        SCL=0;");

      LCD_DispChar (7,1,'}');

      while(1);

   }

}
回復

使用道具 舉報

5#
ID:517466 發表于 2020-12-22 23:32 | 只看該作者
感覺你需要加強C語言的基本編程知識。
回復

使用道具 舉報

6#
ID:865960 發表于 2020-12-22 23:37 | 只看該作者
后面按要求把CSL=port;改成了if(port) { CSR=1; CSL=0; } else { CSR=0; CSL=1; }還是C213的錯誤
回復

使用道具 舉報

7#
ID:517466 發表于 2020-12-22 23:39 | 只看該作者
你的程序結構太亂。#define的函數聲明位置不正常。CSL和CSR在程序中被重復使用,這個是主要原因。
#define CSL 0 和sbit CSL=P1^2;同時存在,程序能正常?CSR也一樣。把#define CSL 0注釋掉或者刪除
extern沒必要加的
代碼給你修改了,編譯沒有問題。
#include<reg51.h>

#include<absacc.h>

#define uchar unsigned char

#define uint unsigned int


#define LCD_DISPON  0x3f

#define LCD_STARTROW 0xc0

#define LCD_ADDRSTRY 0xb8

#define LCD_ADDRSTRX 0x40

//#define CSL 0
//#define CSR 1

void LCD_DispIni(void);
void LCD_DispFill(uchar filldata);
void LCD_DispChar(uchar cy,uchar cx,char dispdata);
void LCD_DispStr(uchar cy,uchar cx,char *disp_str);

sbit LCD_RST=P1^0;

sbit DI=P1^5;

sbit RW=P1^4;

sbit CSL=P1^2;

sbit CSR=P1^1;

sbit EN=P1^3;

sbit RDY=P0^7;

sbit LCD=0x80;



void LCD_WrCmd(bit port, uchar cmd)
{
EN=0;
CSL=port;
DI=0;
RW=0;
EN=1;
LCD=cmd;
EN=0;

}



void LCD_WrDat(bit port, uchar wrdata)
{
EN=0;
CSR=port;
DI=1;
RW=0;
EN=1;
LCD=wrdata;
EN=0;

}



uchar code  ASCII_TAB[480] = //0X20~0X7F之間 ASCII碼對應的點陣數據表

              { 0x00, 0x00, 0x00, 0x00, 0x00,

                            0x00, 0x00, 0x9e, 0x00, 0x00,

                0x00, 0x0e, 0x00, 0x0e, 0x00,

                0x28, 0xfe, 0x28, 0xfe, 0x28,

                0x48, 0x54, 0xfe, 0x54, 0x24,

                0x46, 0x26, 0x10, 0xc8, 0xc4,

                0x6c, 0x92, 0xaa, 0x44, 0xa0,

                0x00, 0x0a, 0x06, 0x00, 0x00,

                                 0x00, 0x38, 0x44, 0x82, 0x00,

                                 0x00, 0x82, 0x44, 0x38, 0x00,

                                 0x28, 0x10, 0x7c, 0x10, 0x28,

                                 0x10, 0x10, 0x7c, 0x10, 0x10,

                                 0x00, 0xa0, 0x60, 0x00, 0x00,

                                 0x10, 0x10, 0x10, 0x10, 0x10,

                                 0x00, 0xc0, 0xc0, 0x00, 0x00,

                                 0x40, 0x20, 0x10, 0x08, 0x04,



                        0x7C, 0xA2, 0x92, 0x8A, 0x7C,                        

                                0x00, 0x84, 0xFE, 0x80, 0x00,

                                0x84, 0xC2, 0xA2, 0x92, 0x8C,                        

                                0x42, 0x82, 0x8A, 0x96, 0x62,                        

                                0x30, 0x28, 0x24, 0xFE, 0x20,               

                                0x4E, 0x8A, 0x8A, 0x8A, 0x72,                        

                                0x78, 0x94, 0x92, 0x92, 0x60,                        

                                0x02, 0xE2, 0x12, 0x0A, 0x06,                        

                                0x6C, 0x92, 0x92, 0x92, 0x6C,                        

                                 0x0C, 0x92, 0x92, 0x52, 0x3C,                        

                                0x00, 0x6C, 0x6C, 0x00, 0x00,                        

                                0x00, 0xAC, 0x6C, 0x00, 0x00,                        

                                0x10, 0x28, 0x44, 0x82, 0x00,                        

                                0x28, 0x28, 0x28, 0x28, 0x28,                        

                                0x00, 0x82, 0x44, 0x28, 0x10,                        

                                0x04, 0x02, 0xA2, 0x12, 0x0C,



                        0x64, 0x92, 0xF2, 0x82, 0x7C,                        

                                0xFC, 0x22, 0x22, 0x22, 0xFC,                        

                                 0xFE, 0x92, 0x92, 0x92, 0x6C,                        

                                0x7C, 0x82, 0x82, 0x82, 0x44,                        

                                0xFE, 0x82, 0x82, 0x44, 0x38,               

                                0xFE, 0x92, 0x92, 0x92, 0x82,               

                                0xFE, 0x12, 0x12, 0x12, 0x02,                        

                                0x7C, 0x82, 0x92, 0x92, 0xF4,                        

                                0xFE, 0x10, 0x10, 0x10, 0xFE,               

                                0x00, 0x82, 0xFE, 0x82, 0x00,               

                                0x40, 0x80, 0x82, 0x7E, 0x02,                        

                                0xFE, 0x10, 0x28, 0x44, 0x82,                        

                                0xFE, 0x80, 0x80, 0x80, 0x80,               

                                0xFE, 0x04, 0x18, 0x04, 0xFE,                        

                                0xFE, 0x08, 0x10, 0x20, 0xFE,                        

                                0x7C, 0x82, 0x82, 0x82, 0x7C,



                        0xFE, 0x12, 0x12, 0x12, 0x0C,

                                0x7C, 0x82, 0xA2, 0x42, 0xBC,

                                0xFE, 0x12, 0x32, 0x52, 0x8C,                        

                                0x8C, 0x92, 0x92, 0x92, 0x62,                        

                                0x02, 0x02, 0xFE, 0x02, 0x02,        

                                0x7E, 0x80, 0x80, 0x80, 0x7E,

                                0x3E, 0x40, 0x80, 0x40, 0x3E,

                                0x7E, 0x80, 0x70, 0x80, 0x7E,

                                0xC6, 0x28, 0x10, 0x28, 0xC6,

                                0x0E, 0x10, 0xE0, 0x10, 0x0E,

                                0xC2, 0xA2, 0x92, 0x8A, 0x86,

                                0x00, 0xFE, 0x82, 0x82, 0x00,

                                0x04, 0x08, 0x10, 0x20, 0x40,

                                0x00, 0x82, 0x82, 0xFE, 0x00,

                                0x08, 0x04, 0x02, 0x04, 0x08,

                                0x80, 0x80, 0x80, 0x80, 0x80,



                        0x00, 0x02, 0x04, 0x08, 0x00,

                                0x40, 0xA8, 0xA8, 0xA8, 0xF0,

                                0xFE, 0x90, 0x88, 0x88, 0x70,

                                0x70, 0x88, 0x88, 0x88, 0x40,

                                0x70, 0x88, 0x88, 0x90, 0xFE,

                                0x70, 0xA8, 0xA8, 0xA8, 0x30,

                                0x10, 0xFC, 0x12, 0x02, 0x04,

                                0x18, 0xA4, 0xA4, 0xA4, 0x7C,

                                0xFE, 0x10, 0x08, 0x08, 0xF0,

                                0x00, 0x88, 0xFA, 0x80, 0x00,

                                0x40, 0x80, 0x88, 0x7A, 0x00,

                                0xFE, 0x20, 0x50, 0x88, 0x00,

                                0x00, 0x82, 0xFE, 0x80, 0x00,

                                0xF8, 0x08, 0x30, 0x08, 0xF8,

                                0xF8, 0x10, 0x08, 0x08, 0xF0,

                                0x70, 0x88, 0x88, 0x88, 0x70,



                        0xF8, 0x28, 0x28, 0x28, 0x10,

                                0x10, 0x28, 0x28, 0x30, 0xF8,

                                0xF8, 0x10, 0x08, 0x08, 0x10,

                                0x90, 0xA8, 0xA8, 0xA8, 0x40,

                                0x08, 0x7E, 0x88, 0x80, 0x40,

                                0x78, 0x80, 0x80, 0x40, 0xF8,

                                0x38, 0x40, 0x80, 0x40, 0x38,

                                0x78, 0x80, 0x60, 0x80, 0x78,

                                0x88, 0x50, 0x20, 0x50, 0x88,

                                0x18, 0xA0, 0xA0, 0xA0, 0x78,

                                0x88, 0xC8, 0xA8, 0x98, 0x88,

                                0x00, 0x10, 0x6C, 0x82, 0x00,

                                0x00, 0x00, 0xFE, 0x00, 0x00,

                                0x00, 0x82, 0x6C, 0x10, 0x00,

                                0x10, 0x10, 0x54, 0x38, 0x10,

                                0x10, 0x38, 0x54, 0x10, 0x10};



//以filldata充填液晶屏

void  LCD_DispFill(uchar filldata)

{  uchar  x, y;

   LCD_WrCmd(CSL,LCD_STARTROW+0);        //設置左半屏顯示起始行為0

   LCD_WrCmd(CSR,LCD_STARTROW+0);        //設置右半屏顯示起始行為0

   for( y=0;y<8;y++)           //循環充填8頁

   {  LCD_WrCmd(CSL,LCD_ADDRSTRY+y);        // 設置左半屏頁地址

      LCD_WrCmd(CSL,LCD_ADDRSTRX);            // 設置左半屏列地址

      LCD_WrCmd(CSR,LCD_ADDRSTRY+y);        // 設置右半屏頁地址

      LCD_WrCmd(CSR,LCD_ADDRSTRX);                // 設置右半屏列地址



      for(x=0;x<64;x++)                  //充填每頁的64個單元(列)

      {  LCD_WrDat(CSL,filldata);

         LCD_WrDat(CSR,filldata);



      }        

   }

}



//液晶模塊初始化

void  LCD_DispIni(void)                        

{  uint  i;

   LCD_RST = 0;                                           // 復位驅動芯片

   for(i=0; i<500; i++);

   LCD_RST = 1;   

   LCD_WrCmd(CSL,LCD_DISPON);                 // 打開顯示

   LCD_WrCmd(CSL,LCD_STARTROW);           // 設置顯示起始行為0

   LCD_WrCmd(CSR,LCD_DISPON);        

   LCD_WrCmd(CSR,LCD_STARTROW);               

   LCD_DispFill(00);                        // 清屏

   LCD_WrCmd(CSL,LCD_ADDRSTRY+0);        // 設置頁(字符行)地址

   LCD_WrCmd(CSL,LCD_ADDRSTRX+0);        // 設置列地址

   LCD_WrCmd(CSR,LCD_ADDRSTRY+0);

   LCD_WrCmd(CSR,LCD_ADDRSTRX+0);

}



//在液晶屏的cy(0-7)行、cx(0-15)列顯示字符dispdata        

void LCD_DispChar(uchar cy, uchar cx, char dispdata)

{  uchar  code  *pch;

   uchar  i;

   bit port;

   cy = cy&0x07;                // 參數過濾

   cx = cx&0x0f;

   pch = &ASCII_TAB[(dispdata-0X20)*5];     //指向字符起始列的點陣碼

   if((cx&0x08)==0)                // 列號cx<8,在左半屏顯示

       {  port=CSL;

          i=cx<<3;

       }

   else

       {  port=CSR;

          i = (cx&0x07)<<3;

       }

   LCD_WrCmd(port,LCD_ADDRSTRX+i);        // 設置當前列地址

   LCD_WrCmd(port,LCD_ADDRSTRY+cy);        // 設置當前頁地址

   for(i=0; i<5; i++);           //延時

   LCD_WrDat(port,0x00);                                // 顯示一列空格

   for(i=0; i<5; i++)            //送出字符的5列點陣碼

      { LCD_WrDat(port,*pch);               

        pch++;

      }

   LCD_WrDat(port,0x00);                   //顯示一列空格

      for(i=0; i<5; i++);

   LCD_WrDat(port,0x00);        

}

                                                      

//在液晶屏的cy(0-7)行、cx(0-15)列顯示字符disp_str        

void  LCD_DispStr(uchar cy, uchar cx, char *disp_str)

{  while( *disp_str !='\0')

   {  cy = cy&0x07;                        // 參數過濾

      cx = cx&0x0f;        

      LCD_DispChar(cy, cx, *disp_str);         // 顯示字符

             disp_str++ ;                                // 指向下一字符數據

      cx++;

      if(cx>15) cy++;                    // 指向下一顯示行

   }

}



void  main(void)

{ while(1)

   {  LCD_DispIni();        // 初始化液晶模塊

      LCD_DispStr (0,1,"void Stop()");

      LCD_DispStr (1,1,"{ SDA=0;");

      LCD_DispStr (2,1,"        SCL=1;");

      LCD_DispStr (3,1,"        delay5us();");

      LCD_DispStr (4,1,"        SDA=1;");

      LCD_DispStr (5,1,"        delay5us();");

      LCD_DispStr (6,1,"        SCL=0;");

      LCD_DispChar (7,1,'}');

      while(1);

   }

}
回復

使用道具 舉報

8#
ID:517466 發表于 2020-12-22 23:43 | 只看該作者
//#define CSL 0
//#define CSR 1
sbit CSL=P1^2;
sbit CSR=P1^1;

//#define uchar unsigned char
//#define uint unsigned int
下面的去掉extern ,并把所有聲明放在函數LCD_WrCmd的實體前面
extern void LCD_DispIni(void);
extern void LCD_DispFill(uchar filldata);
extern void LCD_DispChar(uchar cy,uchar cx,char dispdata);
extern void LCD_DispStr(uchar cy,uchar cx,char *disp_str);

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:517466 發表于 2020-12-22 23:49 | 只看該作者
CSL和CSR在sbit后又被define了,然后后面對define的對象賦值,你的代碼有些神奇。
把#define CSL和#define CSR注釋掉,或者刪除!

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

10#
ID:726849 發表于 2020-12-23 11:19 | 只看該作者
suncat0504 發表于 2020-12-22 23:49
CSL和CSR在sbit后又被define了,然后后面對define的對象賦值,你的代碼有些神奇。
把#define CSL和# ...

謝謝謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产sm主人调教女m视频 | 国产亚洲人成a在线v网站 | 在线看亚洲 | 国产一区久久 | 天天干夜夜操 | 欧美高清性xxxxhdvideosex | 婷婷色国产偷v国产偷v小说 | 国产一区二区精品在线 | 欧美成人免费在线视频 | 国产欧美一区二区三区日本久久久 | 欧美精品一区二区三区在线播放 | 色综合一区| 色香婷婷 | 最新国产精品精品视频 | 夜夜草| 亚洲国产成人av好男人在线观看 | 一区二区三区av | 成人午夜视频在线观看 | 干干干操操操 | 日韩欧美精品一区 | 日韩二区 | 国产综合精品一区二区三区 | 国产精品久久久久久av公交车 | 9999精品视频| av福利网 | 日本免费在线观看视频 | 成人av观看 | 欧美电影大全 | 日韩影院在线观看 | 久久婷婷av | 黄色片在线观看网址 | 免费观看一级特黄欧美大片 | 99在线精品视频 | 一区二区三区欧美 | 一区二区三区视频在线观看 | 国产精品大片在线观看 | 男女羞羞视频在线观看 | 精品日韩一区二区 | 午夜激情免费 | 亚洲国产精品成人久久久 | 久草视频观看 |