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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

keil報錯:OLED.h(5): error C141: syntax error near 'void', expected ';'

[復制鏈接]
跳轉到指定樓層
樓主
ID:1077835 發表于 2023-5-16 14:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
看了好多同樣的貼子,解決不了我的問題,代碼是之前寫OLED的代碼,之前可以運行,修改了一下,就報錯了,求大佬幫忙一下
可以復制粘貼運行一下,有3的文件:OLED.c、OLED.h、zk16x16.h(字庫)


首先是OLED.c文件:

#include <reg52.h>
#include <intrins.h>
#include "zk16x16.h"        //16*18點陣漢字庫
#include "OLED.h"


#define OLED_CMD 0 //寫命令
#define OLED_DATA 1 //寫數據
#define SCL_high  SCL=1                //SCL高電平
#define SCL_low  SCL=0                //SCL低電平
#define SDA_high  SDA_OLED=1                //SDA高電平
#define SDA_low  SDA_OLED=0                //SDA低電平

sbit SDA_OLED = P2^1;
sbit SCL = P2^0;




//I2C總線啟動信號
void IIC_Start(void)
{
    SDA_high;
    SCL_high;
    SDA_low;
    SCL_low;       
}

//I2C總線停止信號
void IIC_Stop(void)
{
    SDA_low;
    SCL_high;
    SDA_high;
}

//等待應答
bit IIC_WaitAck(void)
{
    bit ackbit;
       
    SCL_high;
    ackbit = SDA_OLED;
    SCL_low;
    return ackbit;
}

//I2C總線發送一個字節數據
void IIC_SendByte(unsigned char byt)
{
    unsigned char i;

    for(i=0; i<8; i++)
    {
        SCL_low;
        if(byt & 0x80) SDA_high;
        else SDA_low;
        SCL_high;
        byt <<= 1;
    }
    SCL  = 0;  
}

//延時函數
void delay(unsigned int ms)
{                        
        unsigned int a;
        while(ms)
        {
                a=1800;
                while(a--);
                ms--;
        }
        return;
}

//反顯函數
void OLED_ColorTurn(unsigned char i)
{
        if(i==0)
                {
                        OLED_WR_Byte(0xA6,OLED_CMD);//正常顯示
                }
        if(i==1)
                {
                        OLED_WR_Byte(0xA7,OLED_CMD);//反色顯示
                }
}

//屏幕旋轉180度
void OLED_DisplayTurn(unsigned char i)
{
        if(i==0)
                {
                        OLED_WR_Byte(0xC8,OLED_CMD);//正常顯示
                        OLED_WR_Byte(0xA1,OLED_CMD);
                }
        if(i==1)
                {
                        OLED_WR_Byte(0xC0,OLED_CMD);//反轉顯示
                        OLED_WR_Byte(0xA0,OLED_CMD);
                }
}

//清屏函數,清完屏,整個屏幕是黑色的!和沒點亮一樣!!!          
void OLED_Clear(void)  
{  
        unsigned char i,n;                    
        for(i=0;i<8;i++)  
        {  
                OLED_WR_Byte (0xb0+i,OLED_CMD);    //設置頁地址(0~7)
                OLED_WR_Byte (0x00,OLED_CMD);      //設置顯示位置—列低地址
                OLED_WR_Byte (0x10,OLED_CMD);      //設置顯示位置—列高地址   
                for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA);
        } //更新顯示
}

//發送一個字節
//向SSD1306寫入一個字節。
//mode:數據/命令標志 0,表示命令;1,表示數據;
void OLED_WR_Byte(unsigned char dat,unsigned char mode)
{
        IIC_Start();                                        //IIC起始信號
        IIC_SendByte(0x78);                                //IIC從機地址SA0=0
        IIC_WaitAck();                                        //IIC應答信號
        if(mode){IIC_SendByte(0x40);}        //mode=1,寫入數據,0x40寫命令
        else{IIC_SendByte(0x00);}                //mode=0,寫入命令,0x00寫命令
        IIC_WaitAck();                                        //IIC應答信號
        IIC_SendByte(dat);                                //寫入具體命令/數據
        IIC_WaitAck();                                        //IIC應答信號
        IIC_Stop();                                                //IIC停止信號
}

//坐標設置
void OLED_Set_Pos(unsigned char x, unsigned char y)
{
        OLED_WR_Byte(0xb0+y,OLED_CMD);                                        //頁地址——從0xb0開始(一共8頁)
        OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);                //(x&0xf0)——對應x高四位
        OLED_WR_Byte((x&0x0f),OLED_CMD);                                //(x&0x0f)——對應x第四位
}   

//初始化                                    
void OLED_Init(void)
{
        delay(200);       
        OLED_WR_Byte(0xAE,OLED_CMD); /*關顯示*/
       
        OLED_WR_Byte(0x00,OLED_CMD); /*set lower column address*/
        OLED_WR_Byte(0x10,OLED_CMD); /*set higher column address*/
       
        OLED_WR_Byte(0x40,OLED_CMD); /*01A5A4  A3A2A1A0 從第0行開始顯示(設置”顯示起始行“)*/
        OLED_WR_Byte(0xB0,OLED_CMD); /*0111 A3A2A1A0 從第0頁開始顯示(設置”頁地址“)*/
       
        OLED_WR_Byte(0x81,OLED_CMD); /*對比度模式設置*/
        OLED_WR_Byte(0xff,OLED_CMD); /*對比度256(共256級)*/
       
        OLED_WR_Byte(0xA1,OLED_CMD); /*向左旋轉(反方向)*/
       
        OLED_WR_Byte(0xA6,OLED_CMD); /*不”反白顯示“(0x07為反白顯示)*/
       
        OLED_WR_Byte(0xA8,OLED_CMD); /*multiplex ratio*/
        OLED_WR_Byte(0x1F,OLED_CMD); /*占空比duty = 1/32*/
       
        OLED_WR_Byte(0xAD,OLED_CMD); /*DC-DC轉換模式*/
        OLED_WR_Byte(0xBB,OLED_CMD); /*顯示時DC-DC打開*/
       
        OLED_WR_Byte(0xC8,OLED_CMD); /*列掃描方向*/
       
        OLED_WR_Byte(0xD3,OLED_CMD); /*設置顯示偏移(滾屏)*/
        OLED_WR_Byte(0x00,OLED_CMD);
       
        OLED_WR_Byte(0xD5,OLED_CMD); /*設置OSC部門(set osc division)*/
        OLED_WR_Byte(0x80,OLED_CMD);
       
        OLED_WR_Byte(0xD9,OLED_CMD); /*set pre-charge period*/
        OLED_WR_Byte(0x1f,OLED_CMD);
       
        OLED_WR_Byte(0xDA,OLED_CMD); /*set COM pins*/
        OLED_WR_Byte(0x12,OLED_CMD); //行地址連續顯示
       
        OLED_WR_Byte(0xdb,OLED_CMD); /*VCOM設置*/
        OLED_WR_Byte(0x40,OLED_CMD);
       
        OLED_WR_Byte(0x8d,OLED_CMD); /*設置電荷泵使能*/
        OLED_WR_Byte(0x14,OLED_CMD);
       
        OLED_WR_Byte(0xAF,OLED_CMD); /*開顯示*/
        OLED_Set_Pos(0,0);//指定坐標(0列,0行)
        OLED_Clear();        //清屏
        delay(200);       
}

//顯示8*16
void  OLED_8x16(unsigned char x, y, N)       
{
        unsigned char m;                        //循環計數值
        unsigned int adder=N*16;                        //字模編號
        OLED_Set_Pos(x,y);
        for(m=0;m<8;m++)
        {
                OLED_WR_Byte(Hzk[adder],OLED_DATA);
                adder++;
        }
        OLED_Set_Pos(x,y+1);
        for(m=0;m<8;m++)
        {
                OLED_WR_Byte(Hzk[adder],OLED_DATA);        //跳過右上1/4點陣
                adder++;
        }
}

//顯示漢字
void OLED_ShowChinese(unsigned char x, y, N)        //16*16
{
        unsigned char m;                        //循環計數值
        unsigned int adder=N*32;                        //字模編號*32(16*16點陣,每個漢字32字節)
        OLED_Set_Pos(x,y);
        for(m=0;m<16;m++)
        {
                OLED_WR_Byte(Hzk[adder],OLED_DATA);
                adder++;
        }
        OLED_Set_Pos(x,y+1);
        for(m=0;m<16;m++)
        {
                OLED_WR_Byte(Hzk[adder],OLED_DATA);
                adder++;
        }
}

//顯示漢字,為了兼容英文,將中文拆成2部分
void  OLED_ShowChinese_L(unsigned char x, y, N)        //左部分
{
        unsigned char m;                        //循環計數值
        unsigned int adder=N*32;                        //字模編號*32(16*16點陣,每個漢字32字節)
        OLED_Set_Pos(x,y);
        for(m=0;m<8;m++)
        {
                OLED_WR_Byte(Hzk[adder],OLED_DATA);
                adder++;
        }
        OLED_Set_Pos(x,y+1);
        for(m=0;m<8;m++)
        {
                OLED_WR_Byte(Hzk[adder+8],OLED_DATA);        //跳過右上1/4點陣
                adder++;
        }
}
void  OLED_ShowChinese_R(unsigned char x, y, N)        //右部分
{
        unsigned char m;                        //循環計數值
        unsigned int adder=N*32+8;                        //字模編號*32(16*16點陣,每個漢字32字節)
        OLED_Set_Pos(x,y);
        for(m=0;m<8;m++)
        {
                OLED_WR_Byte(Hzk[adder],OLED_DATA);
                adder++;
        }
        OLED_Set_Pos(x,y+1);
        for(m=0;m<8;m++)
        {
                OLED_WR_Byte(Hzk[adder+8],OLED_DATA);
                adder++;
        }
}

//顯示圖片
void OLED_BMP(unsigned char x, y, sizex, sizey,unsigned char BMP[])
{
        unsigned int j=0;
        unsigned char i,m;
        sizey=sizey/8+((sizey%8)?1:0);
        for(i=0;i<sizey;i++)
        {
                OLED_Set_Pos(x,i+y);
    for(m=0;m<sizex;m++)
                {      
                        OLED_WR_Byte(BMP[j++],OLED_DATA);                   
                }
        }       
}


OLED.h文件:
#ifndef __OLED_H
#define __OLED_H


void delay_ms(unsigned int ms);
void OLED_Clear(void);
void OLED_WR_Byte(unsigned char dat,unsigned char mode);
void OLED_Set_Pos(unsigned char x, unsigned char y);
void OLED_Init(void);
void OLED_ShowChinese(unsigned char x,unsigned char y,unsigned char N);
void  OLED_ShowChinese_L(unsigned char x, y, N);
void  OLED_ShowChinese_R(unsigned char x, y, N);
void OLED_ColorTurn(unsigned char i);
void OLED_DisplayTurn(unsigned char i);
void OLED_BMP(unsigned char x, y, sizex, sizey, unsigned char BMP[]);

void  OLED_8x16(unsigned char x, y, N);

#endif


然后是zk16x16.h:

#ifndef __zk16x16_H
#define __zk16x16_H


unsigned char code Hzk[]={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/

0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,/*"1",1*/

0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/

0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,/*"3",3*/

0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,/*"4",4*/

0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/

0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,/*"6",6*/

0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,/*"7",7*/

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*"8",8*/

0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,/*"9",9*/
       
0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92, 0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,
0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00, 0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,/*"溫",10、11*/

0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25, 0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,
0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00, 0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,/*"度",12、13*/

0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92, 0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,
0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00, 0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00,/*"濕",14、15*/       

0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,/*"H",16*/

0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,/*"T",17*/

0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,/*"<",18*/

0x04,0x44,0x84,0x14,0x64,0x0F,0x04,0xE4, 0x00,0x08,0x09,0x78,0x04,0x03,0x00,0x3F,
0x24,0x2F,0x24,0x24,0xE4,0x04,0x04,0x00, 0x40,0x40,0x42,0x44,0x43,0x40,0x78,0x00,/*"范",19、20*/

0x00,0xFE,0x02,0x12,0x52,0x52,0x52,0xFE, 0x00,0xFF,0x40,0x41,0x41,0x41,0x41,0x7F,
0x52,0x52,0x52,0x12,0x02,0xFE,0x00,0x00, 0x41,0x49,0x51,0x4F,0x40,0xFF,0x00,0x00,/*"圍",21、22*/

0x40,0x42,0xCC,0x00,0x00,0xFE,0x82,0x92, 0x00,0x00,0x3F,0x10,0x88,0x7F,0x00,0x1E,
0x92,0xFE,0x92,0x92,0x82,0xFE,0x00,0x00, 0x12,0x12,0x12,0x5E,0x80,0x7F,0x00,0x00,/*"調",23、24*/

0x04,0x74,0xD4,0x54,0xFF,0x54,0xD4,0x74, 0x82,0x89,0x88,0xE8,0x8B,0x88,0x88,0xF9,
0x14,0x08,0x77,0x84,0x44,0x3C,0x04,0x00, 0xA8,0xAA,0xA9,0xA8,0xA9,0x8A,0x82,0x00,/*"整",25、26*/

0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0xFE, 0x08,0x08,0x04,0x84,0x62,0x1E,0x01,0x00,
0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x00, 0x01,0xFE,0x02,0x04,0x04,0x08,0x08,0x00,/*"界",27、28*/

0x02,0x02,0xE2,0x22,0x22,0xF2,0x2E,0x22, 0x00,0x00,0xFF,0x40,0x40,0x7F,0x49,0x49,
0x22,0xE2,0x22,0x22,0xE2,0x02,0x02,0x00, 0x49,0x7F,0x40,0x40,0xFF,0x00,0x00,0x00,/*"面",29、30*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"空格",31*/
}



#endif

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

使用道具 舉報

沙發
ID:1077835 發表于 2023-5-16 15:06 | 只看該作者
該帖已經自己找到問題了,調用字庫的時候,字庫的數組少了一個分號
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一二三区在线观看 | 一区二区三区高清 | 国产免费又色又爽又黄在线观看 | 久久久久久久久久久久久九 | 精品在线一区 | 日韩中文字幕一区二区 | 国产精品国产三级国产aⅴ中文 | 精品久久影院 | 99精品一区二区 | 91精品国产欧美一区二区 | 爱高潮www亚洲精品 中文字幕免费视频 | www久久国产| 天堂网中文 | 伊人超碰在线 | 欧美精品久久久 | 日韩1区 | 午夜精品一区二区三区在线观看 | 亚洲一区二区网站 | 韩日有码 | 国产精品久久 | 中文字幕在线一区 | 成人亚洲片 | 亚洲美女一区 | 国产欧美一级二级三级在线视频 | 国产精品久久久久久婷婷天堂 | gav成人免费播放视频 | 成人免费激情视频 | 黄色毛片在线看 | 精品久久香蕉国产线看观看亚洲 | 精品久久久久国产免费第一页 | 日本黄色影片在线观看 | 亚洲精品一区中文字幕乱码 | 久久国产精品精品国产色婷婷 | 精品久久久久久亚洲综合网 | 蜜桃精品在线 | 人人干视频在线 | 国产精品久久久久久久久图文区 | 手机看黄av免费网址 | 日本中文字幕视频 | 精品国产99 | 亚洲精品久久久久中文字幕欢迎你 |