|
#define uchar unsigned char #define uint unsigned int //可以改動(dòng)端口 sbit sclk=P2^0;//時(shí)鐘 sbit sdin=P2^1; //數(shù)據(jù) sbit dc=P2^2;//1寫(xiě)數(shù)據(jù),0寫(xiě)指令 sbit sce=P2^3;//片選 sbit res=P2^4;//復(fù)位,0復(fù)位
void write_byte(uchar datatemp,bit mod)//寫(xiě)一字節(jié) mod=0,命令模式 通用 { uchar i=8; sce=0; dc=mod; while (i--) { if (datatemp&0x80){sdin=1;} else {sdin=0;} sclk=0; sclk=1; datatemp<<=1; } dc=1; sce=1; sdin=1; }
void init(void) //初始化 通用 { res=0; Adelay(10); res=1; sce=1; sdin=1; sclk=1; write_byte(0x21,0);//初始化Lcd,功能設(shè)定使用擴(kuò)充指令 write_byte(0xd5,0);//設(shè)定液晶偏置電壓(高--低) write_byte(0x20,0);//使用基本指令 write_byte(0x0C,0);//設(shè)定顯示模式,正常顯示 }
void setadd(uchar a,uchar d)//設(shè)定地址 { write_byte((a|0x80),0);//設(shè)定x坐標(biāo) write_byte((d|0x40),0);//設(shè)定y坐標(biāo) }
void clr()//清屏 { uchar t,k; uint d; d=0; // setdd(0,0); for(t=0;t<6;t++) { for(k=0;k<84;k++) { setadd(k,t); write_byte(0,1); d=d+1; if(d>504)d=d-504; } } }
//寫(xiě)漢字 void WriteCh(uchar *p,char x0,char x1,char y0,char y1,char z0) //*p是數(shù)組字模,x0是橫向初始坐標(biāo),x1橫向結(jié)束坐標(biāo),x(0~84) //y0是縱向初始坐標(biāo),y1縱向結(jié)束坐標(biāo),y(0~5) z0數(shù)組長(zhǎng)度 { unsigned char z,x,y; for(x=x0;x<x1;x++) { for(y=y0;y<y1;y++) { setadd(x,y); ///定位 write_byte(*p,1); Adelay(4); p++; //寫(xiě)下一位 z++; //數(shù)組長(zhǎng)度 if(z==z0) { y0+=2; //n+=2; z=0; } } } }
//寫(xiě)數(shù)字 void WriteDa(uchar num,char x0,char x1,char y0,char y1,char z0) { unsigned char z=0,x,y; for(x=x0;x<x1;x++) { for(y=y0;y<y1;y++) { setadd(x,y); ///定位 write_byte(dal3[num][z],1); Adelay(4); z++; if(z==z0) { y0+=2; z=0; } } } }
(文章推薦人:丁丁)
|