📄 lcd12864.c.new
字号:
#include <REG52.H>#include "LCD12864.h"#include "ZK.h"/*忙判别*/void lcd_busy(void){ p_di=0;p_rw=1;P0=0xff; while(1) { p_e=1; if(P0<0x80) break; p_e=0; } p_e=0; p_rw=0;}/*设置xy*/void set_xy(unsigned char x,unsigned char y){ if (x>=64)
{
p_csa=0;p_csb=1;
}
else
{
p_csb=0;p_csa=1;
} lcd_busy(); p_di=0;P0=0x40|x;p_e=1;p_e=0; lcd_busy(); p_di=0;P0=0xb8|y;p_e=1;p_e=0; P0=0xff;}void lw(unsigned char x,unsigned char y,unsigned char dd){ set_xy(x,y); lcd_busy();p_di=1;P0=dd;p_e=1;p_e=0; P0=0xff;}/*显示初始化*/#pragma disablevoid lcd_init(void){ unsigned char x,y; /*开显示*/ p_e=p_di=0; p_csa=p_csb=0; p_csa=1;lcd_busy();P0=0x3f;p_e=1;p_e=0;p_csa=0; p_csb=1;lcd_busy();P0=0x3f;p_e=1;p_e=0;p_csb=0; /*0行开始显示*/ p_csa=1;lcd_busy();p_di=0;P0=0xc0;p_e=1;p_e=0;p_csa=0; p_csb=1;lcd_busy();p_di=0;P0=0xc0;p_e=1;p_e=0;p_csb=0; for (y=0;y<8;y++) { for (x=0;x<128;x++) lw(x,y,0); }}//显示汉字,fb==1:反白显示void dh(unsigned char x,unsigned char y,unsigned char n,unsigned char fb){ unsigned char i,dd; for (i=0;i<16;i++) { dd=hz[n].Msk[i]; if (fb) dd=255-dd; lw(x*8+i,y,dd); dd=hz[n].Msk[i+16]; if (fb) dd=255-dd; lw(x*8+i,y+1,dd); }}//显示字符,fb==1:反白显示void da(unsigned char x,unsigned char y,unsigned char n,unsigned char fb){ unsigned char i,dd; n-=32; if (n>128) n=0; if (fb) dd=255; else dd=0; lw(x*8,y,dd); lw(x*8,y+1,dd); for (i=0;i<8;i++) { dd=asc[i+n*16]; if (fb) dd=255-dd; lw(x*8+i+1,y,dd); dd=asc[i+n*16+8]; if (fb) dd=255-dd; lw(x*8+i+1,y+1,dd); }}void print_str(unsigned char x,unsigned char y,char *str,unsigned char fb){ unsigned char c1,c2,i,j; j=0; //字符串是最后一位是0结尾? while(str[j]) //如果不是最后一位则进入循环 { c1=str[j]; if(c1>128) { c2=str[j+1]; for(i=0;i<HZMAX;i++) { if(c1==hz[i].Index[0] && c2==hz[i].Index[1]) { break; } } if(i<HZMAX) {
/* Found HZ */ dh(j+x,y,i,fb); } else {
/* Not Found HZ */ dh(j+x,y,0,0); } j+=2; } else { da(x+j,y,c1,fb); j++; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -