- #define uchar unsigned char
 
- #define uint unsigned int
 
 
- ///////数据端口接 P0
 
 
- sbit lcdrs=P2^7;//端口定义
 
- sbit lcdrw=P2^6;//端口定义
 
- sbit lcden=P2^5;//端口定义
 
 
- uchar num;
 
 
- uchar code table[]={
 
 
 
 
 
 
-                         0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,//一  0x00
 
-                         0x00,0x04,0x1f,0x15,0x15,0x1f,0x04,0x04,//中  0x01
 
-                         0x1F,0x04,0x04,0x06,0x05,0x04,0x04,0x04,//下  0x02
 
-                         0x1F,0x04,0x1F,0x15,0x1F,0x15,0x1F,0x15,//雨  0x03
 
 
 
-    0x00,0x00,0x00,0x00,0x1e,0x12,0x12,0x12,//"叶1653"左上半部分代码 0x04
 
-    0x04,0x04,0x04,0x04,0x04,0x04,0x1f,0x04,//"叶"右上半部分代码 0x05
 
-    0x12,0x12,0x12,0x1e,0x00,0x00,0x00,0x00,//"叶"左下半部分代码 0x06
 
-    0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,//"叶"右下半部分代码 0x07  
 
-          
 
- //         
 
 
 
-        
 
-       
 
- };
 
 
- uchar code table1[]={0x00,0x01,0x10,0x10,0x04,0x05,0x10,0x10,0x00,0x01,0x02,0x03,};//自定义字符数据地址
 
 
 
 
- uchar code table2[]={0x02,0x03,0x10,0x10,0x06,0x07,};
 
 
- /******************************
 
 
-        ms延时函数
 
 
- ******************************/
 
 
 
 
- void delay(uchar z)///延时函数
 
 
 
- {
 
 
 
- uint x,y;
 
 
 
- for(x=z;x>0;x--)
 
 
 
- for(y=122;y>0;y--);
 
 
 
 
- }
 
 
- /******************************
 
 
-    lcd1602写命令函数
 
 
- ******************************/
 
 
 
- void write_cmd(uchar cmd)
 
 
 
- {
 
 
-     P0=cmd; //写了命令
 
 
-     lcdrs=0;
 
 
 
-     lcdrw=0; //选择指令寄存器
 
 
-   
 
-     lcden=1;
 
 
 
 
 
-     delay(5);
 
-    
 
 
- lcden=0; //使能拉低
 
-    
 
 
- lcden=1;
 
 
 
- }
 
 
 
 
- /******************************
 
 
-     lcd1602写数据函数
 
 
- ******************************/
 
 
 
- void write_date(uchar date)
 
 
 
- {
 
 
 
-        lcdrs=1;
 
 
 
-        lcdrw=0; //选择数据寄存器
 
 
 
-        lcden=1;
 
 
 
-        P0=date; //写了命令
 
 
 
-        delay(5);
 
 
 
-        lcden=0; //使能拉低
 
 
 
-        lcden=1;
 
 
 
- }
 
 
 
- /******************************
 
 
-      lcd1602初始化
 
 
- ******************************/
 
 
 
 
- void init_lcd1602()
 
 
 
- {
 
 
 
-      write_cmd(0x01); //清屏
 
-    
 
 
- write_cmd(0x38); //功能设置
 
 
 
-      write_cmd(0x0c); //显示设置
 
 
 
-      write_cmd(0x06); //输入方式从左到右
 
 
 
-        delay(1);
 
 
 
 
 
- }
 
 
 
 
- /******************************
 
 
-         主函数
 
 
- ******************************/
 
 
 
- void main()
 
 
 
- {
 
 
 
-                         uchar i;
 
-                         init_lcd1602();//1602显示初始化
 
-                         delay(1);
 
-                         while(1)
 
 
-   {
 
 
- write_cmd(0x40); //开始写入你要显示的自定义字符、汉字代码
 
-    for(i=0;i<64;i++)
 
-   {
 
 
- write_date(table[i]);
 
-   delay(5);
 
 
-   }
 
 
 
-   write_cmd(0x80); //从第一行第一列开始显示
 
 
 
 
- for(i=0;i<12;i++) //显示自定义字符
 
 
- {
 
-   write_date(table1[i]);
 
- delay(5);
 
 
- }
 
- write_cmd(0xc0); //显示第二行
 
 
-    for(i=0;i<6;i++)
 
- {
 
 
- write_date(table2[i]);
 
 
- delay(5);
 
 
-       }  
 
 
- }
 
 
- }