标题:
简单的LCD汉字显示程序 按键按下显示字符(不带只读 有仿真)
[打印本页]
作者:
倒澆红燭夜行船
时间:
2016-10-16 23:51
标题:
简单的LCD汉字显示程序 按键按下显示字符(不带只读 有仿真)
简单的LCD汉字显示程序附带仿真程序和C文件,按下按钮就可以显示下面的字符.下面是原理图:
0.png
(24.06 KB, 下载次数: 74)
下载附件
2016-10-17 14:00 上传
0.png
(54.79 KB, 下载次数: 65)
下载附件
2016-10-17 13:59 上传
仿真工程文件下载:
汉字显示程序.rar
(35.84 KB, 下载次数: 27)
2016-10-16 23:51 上传
点击文件名下载附件
仿真
下载积分: 黑币 -5
源程序:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab1[]={//简单汉字显示程序
0x08,0x04,0xC3,0x12,0x26,0x8A,0xA2,0xAA,0xA4,0xA3,0x22,0x26,0xEA,0x02,0x02,0x00,
0x00,0x00,0xFF,0x00,0x00,0x3F,0x24,0x24,0x24,0x3F,0x00,0x80,0xFF,0x00,0x00,0x00,
0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xF8,0x00,0x00,0x00,
0x10,0x10,0x13,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x10,0x10,0x00,
0x10,0x60,0x02,0x0C,0xC0,0x02,0x1E,0xE2,0x02,0x02,0x02,0xE2,0x1E,0x00,0x00,0x00,
0x04,0x04,0x7C,0x03,0x80,0x80,0x40,0x20,0x13,0x0C,0x13,0x20,0x40,0x80,0x80,0x00,
0x10,0x0C,0x04,0x24,0x24,0x24,0x25,0x26,0xA4,0x64,0x24,0x04,0x04,0x14,0x0C,0x00,
0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,
0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x00,
0x40,0x42,0x44,0x58,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x50,0x48,0x46,0x40,0x00,
0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xC2,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00,
0x20,0x10,0x08,0x06,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x02,0x04,0x08,0x30,0x00,
0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0x3E,0x22,0x22,0x22,0x22,0x22,0x3E,0x00,0x00,
0x08,0x06,0x01,0xFF,0x01,0x06,0x40,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,
0x00,0x00,0xFC,0x04,0x04,0x04,0x14,0x15,0x56,0x94,0x54,0x34,0x14,0x04,0x04,0x00,
0x40,0x30,0x0F,0x00,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x05,0x03,0x00
};
uchar code tab2_1[]={ //abcdefgh ijklmnop
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,
};
uchar code tab2_2[]={//qrstuvwx yz
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,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,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,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar code tab2_3[]={//0123456789
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,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,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,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
sbit RST=P2^5;
sbit E=P2^4;
sbit RW=P2^3;
sbit RS=P2^2;
sbit CS2=P2^1;
sbit CS1=P2^0;
sbit K0=P1^0;
sbit K1=P1^1;
sbit K2=P1^2;
uchar b,n,m;
void Delay(uchar ms){
uchar i;
for(;ms>0;ms--)
for(i=120;i>0;i--);
}
void Check_busy()
{
uchar a;
RW=1;
RS=0;
E=1;
while(1)
{
E=0;
if(!(P0&0x80))
break;
E=1;
a++;
if(a>10)
break;
}
}
void Write_inst(uchar inst)
{
Check_busy();
RS=0;
RW=0;
E=1;
P0=inst;
E=0;
}
void Write_data(uchar dat)
{
Check_busy();
RS=1;
RW=0;
E=1;
P0=dat;
E=0;
}
void Chip_select(uchar p)
{
if(p==0){
CS1=0;
CS2=0;
}
else if(p==1){
CS1=0;
CS2=1;
}
else if(p==2){
CS1=1;
CS2=0;
}
else{
CS1=1;
CS2=1;
}
}
void display1(uint opt,uint line,uint list,uchar a,uchar s)//字符显示程序
{
uint i;
uchar temp;
Chip_select(opt);
s=s*16; //16个字符为一组
Write_inst(0xb8+line*1); //1页为8 2页为16 display(1,0,0,0);display(1,1,4,8);display(1,1,5,9);
Delay(100);
Write_inst(0x40+list*8); //一次扫描16列
for(i=0;i<8;i++){
if(a==0){
temp=tab2_1[s];//a=0输出abcdefgh ijklmnop
}
else if(a==1){
temp=tab2_2[s];//a=1输出qrstuvwx yz
}
else if(a==2){
temp=tab2_3[s];//a=2输出0123456789
}
Write_data(temp); //查表格
s++;
}
Write_inst(0xb8+line*1+1); //下半页
Delay(100);
Write_inst(0x40+list*8); //一次扫描16列
for(i=0;i<8;i++){
if(a==0){
temp=tab2_1[s];//a=0输出19941002
}
else if(a==1){
temp=tab2_2[s];//a=1输18450087636
}
else if(a==2){
temp=tab2_3[s];//a=2输出0123456789
}
Write_data(temp); //查表格
s++;
}
}
void display2(uint opt,uint line,uint list,uchar a,uchar s){ //汉字显示程序
uint i;
uchar temp;
Chip_select(opt);
s=s*32; //每32个字符为一组
Write_inst(0xb8+line*2);
Write_inst(0x40+list*16);
for(i=0;i<16;i++){
if(a==0) {//简单汉字显示程序
temp=tab1[s];
}
Write_data(temp); //查表格
s++;
}
Write_inst(0xb8+line*2+1); //下半页
Delay(100);
Write_inst(0x40+list*16); //一次扫描16列
for(i=0;i<16;i++) {
if(a==0) {//简单汉字显示程序
temp=tab1[s];
}
Write_data(temp); //查表格
s++;
}
}
void Read_data(uchar dat)
{
Check_busy();
RS=1;
RW=1;
E=1;
P0=dat;
E=0;
}
void clear_screen()
{
uint i,j;
Chip_select(0);
for(i=0xb8;i<0xc0;i++){
Write_inst(i);
Write_inst(0x40);
for(j=0;j<64;j++)
{
Write_data(0);
}
}
}
void Init_lcd()
{
Write_inst (0x3f);
Delay(4);
Write_inst (0xc0);
Delay(10);
Write_inst (0xb8);
Delay(10);
Write_inst (0x40);
Delay(10);
}
void main(){
while(1) {
if(K0==0){Init_lcd();
clear_screen();}
if(K1==0){ Init_lcd();
clear_screen();
for(n=0;n<4;n++){ display2(1,0,n,0,n);
display2(2,0,n,0,4+n); }
for(n=0;n<8;n++){ display1(1,2,n,0,n);
display1(2,2,n,0,8+n); }
for(n=0;n<8;n++){ display1(1,4,n,1,n);
display1(2,4,n,1,8+n); }
for(n=0;n<8;n++){ display1(1,6,n,2,n);
display1(2,6,n,2,8+n); }
Init_lcd();
/* display2(1,1,0,0,0);
display2(1,1,1,0,1);
display2(1,2,2,0,2);
display2(1,2,3,0,3);
display2(1,2,4,0,4);
display2(1,2,5,0,5);
display2(1,2,6,0,6);
display2(1,2,7,0,7); */
}
} }
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1