想加按鍵控制文字顯示、滾動(dòng)、切換等,小白求指點(diǎn)
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define LCDLCDDisp_Off 0x3e
- #define LCDLCDDisp_On 0x3f
- #define Page_Add 0xb8
- #define LCDCol_Add 0x40
- #define Start_Line 0xC0
- #define data_ora P0
- sbit LCDMcs=P2^4 ;
- sbit LCDScs=P2^3 ;
- sbit LCDDi=P2^2 ;
- sbit LCDRW=P2^1 ;
- sbit LCDEnable=P2^0 ;
- sbit key1=P2^5;
- sbit key2=P2^6;
- sbit key3=P2^7;
- uchar code hz1[]=
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
-
- 0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,
- 0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
- 0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,
- 0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,
- 0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,
- 0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x24,0x24,0x24,0xA4,0xFE,0xA3,0x22,0x00,
- 0x24,0x48,0x00,0xFF,0x00,0x80,0x00,0x00,
- 0x10,0x08,0x06,0x01,0xFF,0x00,0x01,0x02,
- 0x02,0x02,0x02,0xFF,0x01,0x01,0x01,0x00,
- 0x10,0x10,0x10,0xFF,0x10,0x10,0x88,0x88,
- 0x88,0xFF,0x88,0x88,0x8C,0x08,0x00,0x00,
- 0x04,0x44,0x82,0x7F,0x01,0x80,0x81,0x46,
- 0x28,0x10,0x28,0x26,0x41,0xC0,0x40,0x00,
- 0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,
- 0xA0,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
- 0x00,0x40,0x40,0x20,0x10,0x0C,0x03,0x00,
- 0x01,0x06,0x08,0x10,0x20,0x60,0x20,0x00,
- 0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,
- 0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
- 0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,
- 0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00,
-
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 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 hz2[]=
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
-
- 0x00,0xF8,0x08,0x08,0x08,0x08,0x08,0xFF,
- 0x08,0x08,0x08,0x08,0x08,0xFC,0x08,0x00,
- 0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xFF,
- 0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00,
- 0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0xFF,
- 0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,
- 0x00,0x7F,0x20,0x20,0x20,0x20,0x20,0x3F,
- 0x20,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,
-
-
- 0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,
- 0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
- 0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,
- 0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00,
- 0x00,0xFE,0x22,0x5A,0x96,0x0C,0x24,0x24,
- 0x25,0x26,0x24,0x34,0xA4,0x14,0x0C,0x00,
- 0x00,0xFF,0x04,0x08,0x87,0x81,0x41,0x31,
- 0x0F,0x01,0x3F,0x41,0x41,0x41,0x70,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 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 hz3[]=
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
- 0x20,0x20,0x24,0xA4,0xA4,0xBF,0xA4,0xE4,
- 0xA4,0xBF,0xA4,0xE6,0xA4,0x30,0x20,0x00,
- 0x00,0x80,0x80,0x5F,0x4A,0x2A,0x0A,0x0F,
- 0x0A,0x2A,0x2A,0x4F,0x40,0x80,0x00,0x00,
-
-
- 0x00,0xFC,0x04,0x04,0xFE,0x04,0x00,0xE2,
- 0x2C,0x20,0x3F,0x20,0x28,0xF6,0x20,0x00,
- 0x00,0x1F,0x08,0x08,0x1F,0x00,0x00,0xFF,
- 0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,
-
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x0C,0x18,0x38,0x38,0x30,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
- 0x02,0xE2,0x22,0x22,0x3F,0x82,0x80,0xFF,
- 0x80,0xA0,0x90,0x88,0x86,0xC0,0x80,0x00,
- 0x00,0x43,0x82,0x42,0x3E,0x00,0x00,0xFF,
- 0x40,0x23,0x0C,0x10,0x20,0x60,0x20,0x00,
-
- 0x10,0x22,0x64,0x0C,0xC0,0x44,0x54,0x54,
- 0x54,0x7F,0x54,0x54,0xD6,0x44,0x40,0x00,
- 0x04,0x04,0xFE,0x01,0x00,0x00,0xFF,0x15,
- 0x15,0x15,0x55,0x95,0x7F,0x01,0x00,0x00,
-
- 0x10,0x0C,0x04,0x55,0xD5,0x55,0x05,0x7F,
- 0x05,0x55,0xD5,0x55,0x04,0x14,0x0C,0x00,
- 0x00,0x22,0x12,0x0A,0xFF,0x0A,0x12,0x20,
- 0x12,0x0A,0xFF,0x0A,0x13,0x32,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,
-
- };
- uchar code hz4[]=
- {
- 0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,
- 0x48,0x4C,0x4A,0x49,0xFC,0x08,0x00,0x00,
- 0x10,0x10,0x17,0x12,0x12,0x12,0x12,0xFF,
- 0x12,0x12,0x12,0x12,0x13,0x18,0x10,0x00,
- 0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,
- 0x3F,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
- 0x80,0x40,0x3F,0x01,0x01,0x01,0x01,0x01,
- 0x01,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFC,
- 0x04,0x04,0x04,0xFE,0x04,0x00,0x00,0x00,
- 0x04,0x03,0x00,0xFF,0x80,0x41,0x20,0x1F,
- 0x00,0x00,0x00,0x3F,0x40,0x40,0x70,0x00,
- 0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,
- 0x92,0x92,0x92,0xFF,0x02,0x00,0x00,0x00,
- 0x40,0x42,0x44,0x4D,0x40,0x7F,0x40,0x40,
- 0x40,0x7F,0x40,0x49,0x44,0x66,0x40,0x00,
- 0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xC2,
- 0x42,0x42,0x42,0x43,0x42,0x60,0x40,0x00,
- 0x00,0x10,0x08,0x04,0x06,0x40,0x80,0x7F,
- 0x00,0x00,0x02,0x04,0x0C,0x18,0x00,0x00,
- 0x00,0x00,0xFE,0x12,0x92,0x92,0xB2,0xD2,
- 0x92,0xD2,0xB2,0x92,0xDF,0x82,0x00,0x00,
- 0x40,0x20,0x1F,0x04,0x84,0x44,0x3F,0x04,
- 0x04,0x04,0xFF,0x04,0x04,0x06,0x04,0x00,
- 0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9F,
- 0x81,0x81,0x81,0x9F,0xA0,0x20,0x20,0x00,
- 0x00,0x00,0x00,0x7F,0xA0,0x90,0x40,0x43,
- 0x2C,0x10,0x28,0x26,0x41,0xC0,0x40,0x00,
- 0x40,0x40,0x42,0xCC,0x00,0x40,0x40,0x40,
- 0x40,0xFF,0x40,0x40,0x40,0x60,0x40,0x00,
- 0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,
- 0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
- };
- void LCDdelay(uchar x)
- {
- int d;
- uchar y;
- for(y=0;y<x;y++)
- for(d=0;d<10;d++);
- }
- void CheckState()
- {
- uchar dat,DATA;
- LCDDi=0;
- LCDRW=1;
- do
- {
- DATA=0x00;
- LCDEnable=1;
- LCDdelay(1);
- dat=DATA;
- LCDEnable=0;
- dat=0x80 & dat;
- }
- while(!(dat==0x00));
- }
- void write_com(uchar cmdcode)
- {
- CheckState();
- LCDDi=0;
- LCDRW=0;
- P1=cmdcode;
- LCDdelay(1);
- LCDEnable=1;
- LCDdelay(1);
- LCDEnable=0;
- }
- void write_data(uchar LCDDispdata)
- {
- CheckState();
- LCDDi=1;
- LCDRW=0;
- P1=LCDDispdata;
- LCDdelay(1);
- LCDEnable=1;
- LCDdelay(1);
- LCDEnable=0;
- }
- void init_lcd()
- {
- LCDdelay(1);
- LCDMcs=1;
- LCDScs=1;
- LCDdelay(1);
- write_com(LCDLCDDisp_Off);
- write_com(Page_Add+0);
- write_com(Start_Line+0);
- write_com(LCDCol_Add+0);
- write_com(LCDLCDDisp_On);
- }
- void Clr_Scr()
- {
- uchar j,k;
- LCDMcs=0;
- LCDScs=0;
- write_com(Page_Add+0);
- write_com(LCDCol_Add+0);
- for(k=0;k<8;k++)
- {
- write_com(Page_Add+k);
- for(j=0;j<64;j++)
- {
- write_com(LCDCol_Add+j);
- write_data(0x00);
- }
- }
- }
- Disp(uchar page,uchar column, uchar code *word)
- {
- uchar i;
- //×ó
- LCDMcs=0;
- LCDScs=1;
- //é?°?
- write_com(0xb8|page);
- write_com(0x40|column);
- for(i=0;i<16;i++)
- write_data(word[i]);
- for(i=32;i<48;i++)
- write_data(word[i]);
- for(i=64;i<80;i++)
- write_data(word[i]);
- for(i=96;i<112;i++)
- write_data(word[i]);
- //??°?
- write_com(0xb8|page+1);
- write_com(0x40|column);
- for(i=16;i<32;i++)
- write_data(word[i]);
- for(i=48;i<64;i++)
- write_data(word[i]);
- for(i=80;i<96;i++)
- write_data(word[i]);
- for(i=112;i<128;i++)
- write_data(word[i]);
- //óò
- LCDMcs=1;
- LCDScs=0;
- //é?°?
- write_com(0xb8|page);
- write_com(0x40);
- for(i=128;i<144;i++)
- write_data(word[i]);
- for(i=160;i<176;i++)
- write_data(word[i]);
- for(i=192;i<208;i++)
- write_data(word[i]);
- for(i=224;i<240;i++)
- write_data(word[i]);
- //??°?
- write_com(0xb8|page+1);
- write_com(0x40);
- for(i=144;i<160;i++)
- write_data(word[i]);
- for(i=176;i<192;i++)
- write_data(word[i]);
- for(i=208;i<224;i++)
- write_data(word[i]);
- for(i=240;i<250;i++)
- write_data(word[i]);
- }
- void main()
- {
- uint k=0;
- init_lcd();
- Clr_Scr();
- k=0;
- for(k=0xc0;k<0xff;k++)
- {
- Disp(0,0,hz1);
- Disp(2,0,hz2);
- Disp(4,0,hz3);
- Disp(6,0,hz4);
- LCDMcs=0;
- LCDScs=0;
- write_com(k);
- LCDdelay(2);
- }
- while(1)
- {
- }
- }
復(fù)制代碼
|