| #include <reg52.h> #include"intrins.h" #define uchar unsigned char #define uint unsigned int sbit rs =P2^0; // //数据\//指令//选择 sbit rw =P2^1; // //读\写选择 sbit en =P2^2; // 读\写使能 sbit cs1 =P2^4; // 片选1,低有效(前64列) sbit cs2 =P2^5; // 片选2,低有效(后64列) void lcdstate() { uchar lcd=0x00; /*设置初值为0,全部为低,方便后面的判忙*/ rs=0; /*根据时序图拉低,选择写指令*/ rw=1; /*根据时序图拉低,选择写模式*/ do { en=1; /*使能,使液晶输出信号,检查是否忙*/ _nop_();_nop_();_nop_();_nop_();/*延时4US*/ lcd=P0; /*把P0口的状态值读回来给lcd*/ en=0; /*使能端跳变*/; }while(lcd&0x80); /*结果的高位保留,如果高位DB7为一,则表示忙*/ } void delay(uchar ms) { uchar i; uchar j; for(i=0;i<100;i++) for(j=0;j<ms;j++); } void write_command(uchar command) { lcdstate(); rs=0; //RS=0;为往MCU进行指令操作 rw=0; //RW=0;为往MCU写入操作 en=0; _nop_();_nop_();_nop_();_nop_();/*延时4US*/ en=1; _nop_();_nop_();_nop_();_nop_();/*延时4US*/ P0=command; _nop_();_nop_();_nop_();_nop_();/*延时4US*/ en=0; } void write_data(uchar datas) { lcdstate(); rs=1; rw=0; en=0; _nop_();_nop_();_nop_();_nop_();/*延时4US*/ en=1; _nop_();_nop_();_nop_();_nop_();/*延时4US*/ P0=datas; _nop_();_nop_();_nop_();_nop_();/*延时4US*/ en=0; } void lcdinit() { delay(100); // cs1=1; cs2=1; delay(100); lcdstate(); // write_command(0x3e); // write_command(0xb8+0); // write_command(0xc0+0); // write_command(0x40+0); // write_command(0x3f); } void clearScreen( ) { uchar i,j; lcdstate(); cs1=1; cs2=1; write_command(0x3f); //设置显示开 write_command(0xb8); //Y 设置第0页; write_command(0x40); // 设置第0列 for(i=0;i<8;i++) { write_command(0xb8+i); for(j=0;j<64;j++) { //write_command(0x40+j); write_data(0x00); } } } unsigned char code jin[128]= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xF8,0x7C,0x3C,0x7C,0xF8,0xE0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x20,0x60,0x70,0x78,0x38,0x3C,0x7E,0x6F,0x67,0x67,0x63,0x61,0xE0,0xE0,0xE0,0xE0,0x61,0x63,0x63,0x67,0x6F,0x7E,0x7E,0x1C,0x3C,0x38,0x78,0x78,0x10,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0xD8,0xD8,0xD8,0x98,0x18,0x18,0xFF,0xFF,0xFF,0xFF,0x18,0x18,0x38,0xF8,0xD8,0xD8,0xD8,0x18,0x18,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,0x31,0x37,0x37,0x33,0x32,0x30,0x3F,0x3F,0x3F,0x3F,0x30,0x38,0x3F,0x3F,0x3F,0x33,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x00};/*"金",0*/ /* (32 X 32 , 黑体, 加粗 )*/ uchar code se[128]= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0xFC,0xFC,0xF8,0xC8,0xC8,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x10,0x30,0x38,0x3C,0xFE,0xFF,0xFF,0xF7,0x33,0x30,0x30,0x30,0x30,0xF0,0xF0,0xF8,0xFE,0x3F,0x3F,0x33,0x31,0x30,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1C,0x1C,0x1C,0x1C,0x1C,0x1F,0x1F,0x1F,0x1F,0x1C,0x1C,0x1C,0x1C,0x1C,0x3F,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x1F,0x3F,0x3F,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x38,0x3E,0x1E,0x0C,0x00,0x00};/*"色",1*/ /* (32 X 32 , 黑体, 加粗 )*/ uchar code tong[128]= {0x00,0x00,0x00,0x00,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xE0,0xE0,0x60,0x68,0x7C,0x7C,0x7C,0x60,0x60,0xE0,0xE0,0xE0,0x60,0x60,0x60,0x60,0x60,0x60,0x00,0x00,0x00, 0x00,0x00,0x00,0x04,0x04,0x04,0xE4,0xE4,0xE4,0x64,0x67,0x67,0x67,0x67,0x64,0xE4,0xE4,0xE4,0x64,0x67,0x67,0x67,0x65,0x64,0xE4,0xE4,0xE4,0x04,0x04,0x04,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x32,0x32,0x32,0x32,0x32,0x32,0xFF,0xFF,0xFF,0x32,0x32,0x32,0x32,0x32,0x32,0x3F,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x30,0x30,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x3F,0x3F,0x3F,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x30,0x30,0x00,0x00};/*"童",2*/ /* (32 X 32 , 黑体, 加粗 )*/ uchar code nian[128]= {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0xFC,0xFC,0x98,0x88,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00, 0x00,0x00,0x20,0x30,0x78,0x7C,0x3F,0xDF,0xCF,0xC3,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xFF,0xFF,0xFF,0xFF,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0xC1,0x01,0x00,0x00,0x00, 0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"年",3*/ /* (32 X 32 , 黑体, 加粗 )*/ void hz_display16(unsigned char pag, unsigned char col, unsigned char code *hzk) { uchar j=0; uchar i=0; for(j=0;j<4;j++) //这里写四页 { write_command(0xb8+pag+j); //page在这里就是从page表示的这页开始写起。 write_command(0x40+col); //从列为col表示的列开始 for(i=0;i<32;i++) //这里写32列 write_data(hzk[32*j+i]); //J为页,I,为第J行第I个数 } } void main() { lcdinit(); clearScreen( ); while(1) { delay(2); // hz_display16(0,0,xms[]); cs1=1; cs2=0; hz_display16(0,0,jin); hz_display16(0,32,se); cs1=0;cs2=1; hz_display16(0,0,tong); hz_display16(0,32,nian); } } |
| 欢迎光临 迅维网 (https://www.chinafix.com/) | Powered by Discuz! X3.4 |