簡單的LCD漢字顯示程序附帶仿真程序和C文件,按下按鈕就可以顯示下面的字符.下面是原理圖:
0.png (24.06 KB, 下載次數(shù): 74)
下載附件
2016-10-17 14:00 上傳
0.png (54.79 KB, 下載次數(shù): 65)
下載附件
2016-10-17 13:59 上傳
仿真工程文件下載:
漢字顯示程序.rar
(35.84 KB, 下載次數(shù): 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); */
- }
- } }
復制代碼
|