lpc1768控制lcd12864正常显示一次,之后下载出现乱码。求解释?
#include <LPC17xx.H>#include "LCD12864.h"
unsigned charIC_DAT[]={
" HOT-51 "
" "
" 欢迎你来到 "
" 东流电子 "
};
unsigned char IC_DAT1[]={
"GoodGoodStudy "
" DayDayUp "
" 好好学习 "
" 天天向上 "
};
unsigned char IC_DAT2[]={
"Energy and persi"
" all things "
" stence conquer "
"动力坚持战胜一切"
};
unsigned char 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,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x1F,0x00,0x00,0x00,0x00,0x10,0x00,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1F,0x00,0x00,0x00,0x00,0xFF,0x08,0x20,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x1F,0x00,0x00,0x00,0x00,0x28,0x05,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x0C,0x00,0x00,0x00,0x00,0x48,0x00,0x40,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0xFF,0x08,0x88,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0x08,0x05,0xFC,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x4A,0x00,0xA8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x89,0x04,0xA8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x01,0x08,0x88,0xA8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x10,0xAA,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x2E,
};
int main(void)
{
SystemInit();
LPC_PINCON->PINSEL0 |= 0x0;//P0.25,P0.24,P0.23 Set GPIO
LPC_PINCON->PINSEL3 |= 0x0;//P1.18--P1.25 Set GPIO
LPC_GPIO0->FIODIR |= 0X03;
LPC_GPIO1->FIODIR |= 0x7FF<<18;
//while(1)
//{
LCD12864_init();
delay(10000);
TransferData('a');
delay(10000);
// TransferData('b');
// delay(10000);
// TransferData('c');
// delay(10000);
// TransferData('d');
// delay(10000);
// lcd_mesg(IC_DAT);
// delayms(24000);
//
//
// LCD12864_init2();
// delay(1000);
// DisplayGraphic(pic2);
// delay(1000);
// }
while(1);
}
#include <LPC17xx.H>
#include "LCD12864.h"
void delay(uint32_t m) //延时程序
{
uint32_t i,j;
for(i=0;i<m;i++)
for(j=0;j<10;j++);
}
void delayms(unsigned int n) //延时10×n毫秒程序
{
unsigned int i,j;
for(i=0;i<n;i++)
for(j=0;j<2000;j++);
}
void Transfercmd(char cmd)
{
LPC_GPIO1->FIOCLR |= RW;
LPC_GPIO1->FIOCLR |= RS;
delay(100000);
LPC_GPIO1->FIOCLR |= (0XFF<<21);
LPC_GPIO1->FIOSET |= cmd<<21;
LPC_GPIO1->FIOSET |= EN;
delay(100000);
LPC_GPIO1->FIOCLR |= EN;
}
void TransferData(char data)
{
LPC_GPIO1->FIOCLR |= RW;
LPC_GPIO1->FIOSET |= RS;
delay(100000);
LPC_GPIO1->FIOCLR |= (0XFF<<21);
LPC_GPIO1->FIOSET |= data<<21;
LPC_GPIO1->FIOSET |= EN;
delay(100000);
LPC_GPIO1->FIOCLR |= EN;
}
void LCD12864_init(void)
{
delay(40000);
LPC_GPIO0->FIOSET |= PSB;
delay(10000);
LPC_GPIO0->FIOCLR |= RES;
delay(10000);
LPC_GPIO0->FIOSET |= RES;
delayms(1000);
Transfercmd(0x38);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000); //大于100uS的延时程序
Transfercmd(0x38);//Function Set
delay(100000); ////大于37uS的延时程序
Transfercmd(0x0f);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000);
Transfercmd(0x01);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000);
Transfercmd(0x06);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000);
Transfercmd(0x84);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000);
}
void lcd_mesg(unsigned char (*adder1))
{
uint8_t i;
delay(100000);
Transfercmd(0x80);
delay(100000);
for(i=0;i<32;i++)
{
delay(100000);
TransferData(*adder1);
adder1++;
delay(100000);
}
Transfercmd(0x90);//Set Graphic Display RAM Address
delay(100000);
for(i=32;i<64;i++)
{
delay(100000);
TransferData(*adder1);
adder1++;
delay(100000);
}
}
void LCD12864_init2(void)
{
delay(400000);
LPC_GPIO0->FIOSET |= PSB;
delay(100000);
LPC_GPIO0->FIOCLR |= RES;
delay(100000);
LPC_GPIO0->FIOSET |= RES;
delay(100000);
Transfercmd(0x36);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000); //大于100uS的延时程序
Transfercmd(0x36);//Function Set
delay(100000); ////大于37uS的延时程序
Transfercmd(0x3e);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000);
Transfercmd(0x01);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000);
Transfercmd(0x81);//Extended Function Set :8BIT设置,RE=0: basic instruction set, G=0 :graphic display OFF
delay(100000);
}
void DisplayGraphic(uint8_t *adder)
{
uint8_t i,j;
for(i=0;i<32;i++)
{
Transfercmd(0x80+i);
delay(10000);
Transfercmd(0x80);
delay(10000);
for(j=0;j<16;j++)
{
TransferData(*adder);
adder++;
delay(1000);
}
}
for(i=0;i<32;i++)
{
Transfercmd(0x80+i);
delay(10000);
Transfercmd(0x88);
delay(10000);
for(j=0;j<16;j++)
{
TransferData(*adder);
adder++;
delay(1000);
}
}
}
//lcd 12864.h
#ifndef LCD_1602_H
#define LCD_1602_H
#define RS 0x00040000 //P1.18 Connect RS
#define RW 0x00080000 //P1.19 Connect RW
#define EN 0x00100000 //P1.20 Connect E
#define PSB 0x00000001
#define RES 0x00000002
void delay(uint32_t m);
void delayms(unsigned int n);
void Transfercmd(char cmd);
void TransferData(char data);
void LCD12864_init(void);
void lcd_mesg(unsigned char (*adder1));
void LCD12864_init2(void);
void DisplayGraphic(uint8_t *adder);
#endif
页:
[1]