已经解决了,是我的文件编码有问题,我的是utf-8 但是keil识别的是ANSI |
先声明再调用吧 |
1、一般都用并行试试程序,没问题再用串行。2、我觉得你的程序是延时的问题,像是发送数据时都没有延时,本来发前应测LCD忙的,你都给省略了。 |
是不是类型设置不正确? |
我这个电路用并行不太容易,毕竟不是实验板,是我自己焊的 |
3花木城 发表于 2022-1-8 20:37 这是并行的? |
mengsiu 发表于 2022-1-8 23:20 实践告诉我,改完后屏幕全乱了 |
第38行,“一闪一闪”,先声明一字符串,再引用。 |
第117行,uchar 改成 uint 怎么样? |
串行口真好!省IO口。 12864 这种低分辨率的黑白屏,数据量少,串行通信完全没有问题。 还有,像1602这种,我也用4线连接的。 |
改并行吧![]() ![]() ![]() ![]() ![]() ![]() |
你套用这个程序试试。 /********************************************************************************* * 【编写时间】: 2014年3月5日 * 【作 者】: 清翔电子:03 * 【实验平台】: QX-MCS51 单片机开发板 * 【外部晶振】: 11.0592mhz * 【主控芯片】: STC89C52RC * 【编译环境】: Keil μVisio4 * 【程序功能】: 12864液晶显示测试 * 【使用说明】: 使用液晶前拔下数码管J6跳帽 12864屏幕向板子外插,插在L1排母上 **********************************************************************************/ #include <reg52.h> #include <string.h> #define uchar unsigned char #define uint unsigned int uchar code IC_DAT[]; uchar code pic1[]; uchar code pic2[]; uchar code pic3[]; sbit RS = P0^7; sbit WRD = P0^6; sbit E = P0^5; sbit PSB = P0^4; sbit RES = P0^3; void TransferData(char data1,bit DI); void display(void); void display_grapic(void); void delayms(uint n); void DisplayLine(uchar line1,uchar line2); void DisplayGraphic(uchar code *adder); void delay(uint m); void lcd_mesg(uchar code *adder1); uchar code IC_DAT[]={ " QX-mini51 " " 原厂直销 " " 单片机开发板 " " QXMCU " }; uchar code IC_DAT2[]={ " 床前明月光, " //0x80 " 疑是地上霜, " //0x90 " 举头望明月。 " //0x88 " 低头思故乡。 " //0x98 }; /******************************************************************** * 名称 : Convert(uchar In_Date) * 功能 : 因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。 * 输入 : 1602资料上的值 * 输出 : 送到1602的值 ***********************************************************************/ unsigned char Convert(unsigned char In_Date) { unsigned char i, Out_Date = 0, temp = 0; for(i=0; i<8; i++) { //temp = (In_Date >> i) & 0x01; //Out_Date |= (temp << (7 - i)); Out_Date= In_Date; } return Out_Date; } void initinal(void) //LCD字库初始化程序 { delay(40); //大于40MS的延时程序 PSB=1; //设置为8BIT并口工作模式 delay(1); //延时 RES=0; //复位 delay(1); //延时 RES=1; //复位置高 delay(10); TransferData(0x30,0); //Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF delay(100); //大于100uS的延时程序 TransferData(0x30,0); //Function Set delay(37); ////大于37uS的延时程序 TransferData(0x08,0); //Display on Control delay(100); //大于100uS的延时程序 TransferData(0x10,0); //Cursor Display Control光标设置 delay(100); //大于100uS的延时程序 TransferData(0x0C,0); //Display Control,D=1,显示开 delay(100); //大于100uS的延时程序 TransferData(0x01,0); //Display Clear delay(10); //大于10mS的延时程序 TransferData(0x06,0); //Enry Mode Set,光标从右向左加1位移动 delay(100); //大于100uS的延时程序 } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void initina2(void) //LCD显示图片(扩展)初始化程序 { delay(40); //大于40MS的延时程序 PSB=1; //设置为8BIT并口工作模式 delay(1); //延时 RES=0; //复位 delay(1); //延时 RES=1; //复位置高 delay(10); TransferData(0x36,0); //Extended Function Set RE=1: extended instruction delay(100); //大于100uS的延时程序 TransferData(0x36,0); //Extended Function Set:RE=1: extended instruction set delay(37); ////大于37uS的延时程序 TransferData(0x3E,0); //EXFUNCTION(DL=8BITS,RE=1,G=1) delay(100); //大于100uS的延时程序 TransferData(0x01,0); //CLEAR SCREEN delay(100); //大于100uS的延时程序 } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ 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); initinal(); } } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void lcd_mesg(unsigned char code *adder1) { unsigned char i; TransferData(0x80,0); //Set Graphic Display RAM Address delay(100); for(i=0;i<32;i++) { TransferData(*adder1,1); adder1++; } TransferData(0x90,0); //Set Graphic Display RAM Address delay(100); for(i=32;i<64;i++) { TransferData(*adder1,1); adder1++; } } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void TransferData(char data1,bit DI) //传送数据或者命令,当DI=0是,传送命令,当DI=1,传送数据. { WRD=0; RS=DI; delay(1); P2=Convert(data1); E=1; delay(1); E=0; } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void delayms(unsigned int n) //延时10×n毫秒程序 { unsigned int i,j; for(i=0;i<n;i++) for(j=0;j<2000;j++); } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void delay(unsigned int m) //延时程序 { unsigned int i,j; for(i=0;i<m;i++) for(j=0;j<10;j++); } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void DisplayGraphic(unsigned char code *adder) { int i,j; //*******显示上半屏内容设置 for(i=0;i<32;i++) // { TransferData((0x80 + i),0); //SET 垂直地址 VERTICAL ADD TransferData(0x80,0); //SET 水平地址 HORIZONTAL ADD for(j=0;j<16;j++) { TransferData(*adder,1); adder++; } } //*******显示下半屏内容设置 for(i=0;i<32;i++) // { TransferData((0x80 + i),0); //SET 垂直地址 VERTICAL ADD TransferData(0x88,0); //SET 水平地址 HORIZONTAL ADD for(j=0;j<16;j++) { TransferData(*adder,1); adder++; } } } unsigned char code pic2[]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x01,0xE6,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x07,0x82,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x1E,0x02,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x78,0x03,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x01,0xE0,0x03,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x78,0x00,0x00,0x00,0x07,0x80,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x03,0x1E,0x00,0x00,0x00,0x1E,0x00,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x03,0x07,0x80,0x00,0x00,0x78,0x00,0x1F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x02,0x01,0xE0,0x00,0x01,0xE0,0x00,0x3F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x06,0x00,0x78,0x1F,0x07,0x80,0x01,0xF1,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0E,0x00,0x1E,0x3F,0x9E,0x00,0x03,0xF9,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0E,0x00,0x07,0xB3,0x78,0x00,0x0F,0xF9,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F,0x80,0x01,0xFF,0xE0,0x00,0x79,0x98,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F,0xE0,0x00,0x7F,0x80,0x00,0xE0,0xD8,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F,0xF8,0x00,0x0C,0x00,0x07,0xE0,0xF8,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0E,0x7E,0x00,0x0C,0x00,0x1F,0xF0,0xF8,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0E,0x1F,0x80,0x0C,0x00,0x7E,0x70,0xDC,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F,0x07,0xE0,0x0C,0x01,0xE3,0x70,0x5C,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F,0x81,0xF8,0x0C,0x07,0x83,0x70,0x5F,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0D,0xE0,0x7E,0x0C,0x1F,0xC1,0xF0,0x5F,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F,0x78,0x3F,0x8C,0x7F,0xC1,0xB8,0x47,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0F,0x1E,0x0F,0xED,0xEC,0xE1,0xB8,0xC7,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x07,0x83,0xFF,0xC6,0xE1,0xB9,0xC7,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x07,0xE0,0xFF,0xE7,0xE1,0xBF,0x07,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x07,0xF8,0x3F,0xE7,0xE1,0xBF,0x07,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x07,0x9E,0x0C,0xE6,0xE1,0x8F,0x07,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x07,0x87,0x8C,0xE6,0xE3,0x8F,0x83,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x0F,0x81,0xED,0xE6,0xE7,0x0F,0x83,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x07,0x00,0x7F,0xE6,0xFE,0x0F,0x83,0x40,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0x00,0x00,0x1E,0x76,0xFE,0x0F,0x83,0x40,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x72,0x1E,0x0F,0x83,0x40,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x7E,0x1A,0x0F,0x83,0x40,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x7C,0x1A,0x0F,0x83,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x78,0x1A,0x0F,0x83,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x1A,0x07,0x83,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1E,0x07,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x07,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x07,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x07,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; |