c51 keil编译出现 错误 c129:missing ';' before 'code' 别的提问上说的情况都看过了还是没找出答案
那个图片的数组字数超限我给删了,不过那个数组是从一个好使的程序上复制下来的应该没问题#include<reg52.h>#include<stdio.h>#include<...
那个图片的数组字数超限我给删了,不过那个数组是从一个好使的程序上复制下来的应该没问题
#include <reg52.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#define unsigned char uchar
#define unsigned int uint
sbit RS=P2^0; //片选,数据,命令
sbit WRD=P2^1; //读写选择 读 写
sbit E=P2^2; //使能信号
sbit PSB=P2^3; //并口串口选择 并 串
sbit RES=P2^5; //复位低电平有效
uchar code pic2[]=
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
void delayms(unsigned int n) //延时10×n毫秒
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<2000;j++);
}
void delay(unsigned int m) //延时
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
void TransferData(char data1,bit DI) //DI等于0发送命令,DI等于1发送数据
{
WRD=0;
RS=DI;
delay(1);
P0=data1;
E=1;
delay(1);
E=0;
}
void initina2(void) //LCD显示图片(扩展)初始化程序
{
delay(40); //大于40MS的延时程序
PSB=1;
delay(1);
RES=0; //复位
delay(1);
RES=1; //复位置高
delay(10);
TransferData(0x36,0); //切换为扩充指令操作
delay(100); //大于100uS的延时程序
TransferData(0x36,0); //设置并口通讯模式为8位模式
delay(37); ////大于37uS的延时程序
TransferData(0x3E,0); //开启绘图显示功能
delay(100); //大于100uS的延时程序
TransferData(0x01,0); //进入待命模式
delay(100); //大于100uS的延时程序
}
void DisplayGraphic(uchar code *adder) //整屏图片刷新显示
{
uchar i,j;
//**显示上半屏内容设置
for(i=0;i<32;i++) //
{
TransferData((0x80 + i),0); //垂直地址
TransferData(0x80,0); //水平地址
for(j=0;j<16;j++)
{
TransferData(*adder,1);
adder++;
}
}
//**显示下半屏内容设置
for(i=0;i<32;i++) //
{
TransferData((0x80 + i),0); //垂直地址
TransferData(0x88,0); //水平地址
for(j=0;j<16;j++)
{
TransferData(*adder,1);
adder++;
}
}
}
void main(void)
{
while(1)
{
initina2(); //调用LCD显示图片(扩展)初始化程序
DisplayGraphic(pic2); //显示图片2
delayms(200);
initinal(); //调用LCD字库初始化程序
delay(100); //大于100uS的延时程序
lcd_mesg(IC_DAT); //显示中文汉字1
delayms(240);
delayms(240);
initinal(); //调用LCD字库初始化程序
delay(100); //大于100uS的延时程序
lcd_mesg(IC_DAT2); //显示中文汉字2
delayms(240);
delayms(240);
}
}
还有个警告317:redefiniton of macro 'unsigned'第6行 上面那个错误是12行 展开
#include <reg52.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#define unsigned char uchar
#define unsigned int uint
sbit RS=P2^0; //片选,数据,命令
sbit WRD=P2^1; //读写选择 读 写
sbit E=P2^2; //使能信号
sbit PSB=P2^3; //并口串口选择 并 串
sbit RES=P2^5; //复位低电平有效
uchar code pic2[]=
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
void delayms(unsigned int n) //延时10×n毫秒
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<2000;j++);
}
void delay(unsigned int m) //延时
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
void TransferData(char data1,bit DI) //DI等于0发送命令,DI等于1发送数据
{
WRD=0;
RS=DI;
delay(1);
P0=data1;
E=1;
delay(1);
E=0;
}
void initina2(void) //LCD显示图片(扩展)初始化程序
{
delay(40); //大于40MS的延时程序
PSB=1;
delay(1);
RES=0; //复位
delay(1);
RES=1; //复位置高
delay(10);
TransferData(0x36,0); //切换为扩充指令操作
delay(100); //大于100uS的延时程序
TransferData(0x36,0); //设置并口通讯模式为8位模式
delay(37); ////大于37uS的延时程序
TransferData(0x3E,0); //开启绘图显示功能
delay(100); //大于100uS的延时程序
TransferData(0x01,0); //进入待命模式
delay(100); //大于100uS的延时程序
}
void DisplayGraphic(uchar code *adder) //整屏图片刷新显示
{
uchar i,j;
//**显示上半屏内容设置
for(i=0;i<32;i++) //
{
TransferData((0x80 + i),0); //垂直地址
TransferData(0x80,0); //水平地址
for(j=0;j<16;j++)
{
TransferData(*adder,1);
adder++;
}
}
//**显示下半屏内容设置
for(i=0;i<32;i++) //
{
TransferData((0x80 + i),0); //垂直地址
TransferData(0x88,0); //水平地址
for(j=0;j<16;j++)
{
TransferData(*adder,1);
adder++;
}
}
}
void main(void)
{
while(1)
{
initina2(); //调用LCD显示图片(扩展)初始化程序
DisplayGraphic(pic2); //显示图片2
delayms(200);
initinal(); //调用LCD字库初始化程序
delay(100); //大于100uS的延时程序
lcd_mesg(IC_DAT); //显示中文汉字1
delayms(240);
delayms(240);
initinal(); //调用LCD字库初始化程序
delay(100); //大于100uS的延时程序
lcd_mesg(IC_DAT2); //显示中文汉字2
delayms(240);
delayms(240);
}
}
还有个警告317:redefiniton of macro 'unsigned'第6行 上面那个错误是12行 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询