📄 12864液晶驱动程序(带字库型,基于avr mega16)--wuzhenzhi的笔记.mht
字号:
From: <由 Microsoft Internet Explorer 5 保存>
Subject: =?gb2312?B?MTI4NjTSur6nx/22r7PM0PKjqLT419a/4tDNo6y7+dPaQVZSoaFtZWdhMTY=?=
=?gb2312?B?o6ktLXd1emhlbnpoabXEscq8xw==?=
Date: Thu, 2 Aug 2007 16:07:04 +0800
MIME-Version: 1.0
Content-Type: multipart/related;
type="text/html";
boundary="----=_NextPart_000_0058_01C7D51F.2B286AC0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138
This is a multi-part message in MIME format.
------=_NextPart_000_0058_01C7D51F.2B286AC0
Content-Type: text/html;
charset="gb2312"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://blog.21ic.com/user1/3128/archives/2007/35412.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>12864=D2=BA=BE=A7=C7=FD=B6=AF=B3=CC=D0=F2=A3=A8=B4=F8=D7=
=D6=BF=E2=D0=CD=A3=AC=BB=F9=D3=DAAVR=A1=A1mega16=A3=A9--wuzhenzhi=B5=C4=B1=
=CA=BC=C7</TITLE>
<META http-equiv=3DContent-Language content=3Dzh-CN>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dgb2312">
<META content=3D"MSHTML 6.00.2900.3132" name=3DGENERATOR>
<META content=3Dwuzhenzhi, name=3Dauthor>
<META =
content=3D12864=D2=BA=BE=A7=C7=FD=B6=AF=B3=CC=D0=F2=A3=A8=B4=F8=D7=D6=BF=E2=
=D0=CD=A3=AC=BB=F9=D3=DAAVR mega16=A3=A9 name=3Dkeyword>
<META=20
content=3D"=B4=CB=B3=CC=D0=F2=CF=C8=BA=F3=CF=D4=CA=BE=C8=FD=B7=F9=CD=BC=C6=
=AC=A3=AC=D7=EE=BA=F3=D2=BB=B8=B1=CD=BC=D4=DD=CA=B1=CA=C7=D2=BB=B8=F6=B5=DD=
=D4=F6=BC=C6=CA=FD=CF=D4=CA=BE =
http://wuzhenzhi.googlepages.com/12864driver.rar "=20
name=3Ddescription><LINK title=3DRSS href=3D"/user1/3128/rss2.xml"=20
type=3Dapplication/rss+xml rel=3Dalternate><LINK=20
href=3D"http://blog.21ic.com/OblogStyle/OblogUserDefault4.css" =
type=3Dtext/css=20
rel=3Dstylesheet>
<SCRIPT src=3D"http://blog.21ic.com/inc/main.js" =
type=3Dtext/javascript></SCRIPT>
</HEAD>
<BODY>
<SCRIPT src=3D""></SCRIPT>
<LINK media=3Dall href=3D"http://blog.21ic.com/skin/veryhd/style.css" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK media=3Dall=20
href=3D"http://blog.21ic.com/skin/veryhd/customcss.css" type=3Dtext/css=20
rel=3Dstylesheet><LINK media=3Dprint=20
href=3D"http://blog.21ic.com/skin/veryhd/print.css" type=3Dtext/css =
rel=3Dstylesheet>
<H1 id=3Dheader style=3D"WIDTH: 100%; HEIGHT: 30px"><SPAN=20
id=3Dblogname>21IC=D2=B3=C3=E6=D4=D8=C8=EB....</SPAN></H1>
<P id=3Dtagline>| <SPAN =
id=3Dblogname>21IC=D2=B3=C3=E6=D4=D8=C8=EB....</SPAN>'s blog</P>
<DIV id=3Dmain style=3D"WIDTH: 67.78%; HEIGHT: 103px">
<DIV class=3DdateTitle>2007-2-14 11:31:00</DIV>
<DIV class=3Dpost>
<DIV =
class=3DpostTitle>12864=D2=BA=BE=A7=C7=FD=B6=AF=B3=CC=D0=F2=A3=A8=B4=F8=D7=
=D6=BF=E2=D0=CD=A3=AC=BB=F9=D3=DAAVR mega16=A3=A9</DIV>
<DIV class=3DpostText>
<DIV>=B4=CB=B3=CC=D0=F2=CF=C8=BA=F3=CF=D4=CA=BE=C8=FD=B7=F9=CD=BC=C6=AC=A3=
=AC=D7=EE=BA=F3=D2=BB=B8=B1=CD=BC=D4=DD=CA=B1=CA=C7=D2=BB=B8=F6=B5=DD=D4=F6=
=BC=C6=CA=FD=CF=D4=CA=BE</DIV>
<DIV><A=20
href=3D"http://wuzhenzhi.googlepages.com/12864driver.rar">http://wuzhenzh=
i.googlepages.com/12864driver.rar</A></DIV>
<DIV>=D2=FD=BD=C5=B6=A8=D2=E5=A3=BA</DIV>
<DIV>#define RS 0<BR>#define =20
RW 1<BR>#define =
E =20
2<BR>#define PSB 3<BR>#define =20
RST 4<BR>#define DATA =
PORTD<BR>#define =20
PCTRL =
PORTB<BR>=CA=FD=BE=DD=CE=AAPORTD=BF=DA=A3=AC=BF=D8=D6=C6=CE=AAPORTC=BF=DA=
</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>=D0=A7=B9=FB=CD=BC=A3=BA</DIV>
<DIV><IMG alt=3D"" =
src=3D"http://blog.21ic.com/uploadfile-/2007-2/214686639.jpg"=20
border=3D0></DIV>
<DIV>=D6=F7=CE=C4=BC=FEYJ.C</DIV>
<P>=A3=A3i nclude "YJ.h"</P>
<P><BR>//=D1=D3=CA=B1=BA=AF=CA=FD<BR>void Delay(ulong =
DelayTime)<BR>{<BR> ulong i;<BR> for=20
(i=3D0;i<DelayTime;i++);<BR>}</P>
<P>//=C3=A6=B5=C8=B4=FD=BA=AF=CA=FD=A3=AC=B8=F9=BE=DD=D0=E8=D2=AA=D1=D3=CA=
=B1=CA=E4=C8=EB=B2=CE=CA=FDi=B5=C440=B1=B6=CA=FD<BR>void Busy(uchar=20
i)<BR>{<BR> Delay(30*i); <BR>}</P>
<P>//=B7=B4=B0=D7=A3=AC=D3=C3=D3=DA=D7=D6=B7=FB=CF=D4=CA=BE=D7=B4=CC=AC=CA=
=B1=B7=B4=B0=D7=CB=F9=D2=AA=C7=F3=B5=C4=D0=D0<BR>void white(uchar=20
i)<BR>{<BR> i=3Di&0x03;//=B5=CD=C8=FD=CE=BB=D3=D0=D0=A7<BR> =
;WriteCommand(0x34,2);<BR> WriteCommand(0b00000100|=20
i,2);<BR> WriteCommand(0x36,2);<BR>}</P>
<P>//=D0=B4=BB=F9=B4=A1=D6=B8=C1=EE=BC=AF=D6=D0=B5=C4=D6=B8=C1=EE<BR>void=
WriteCommand(uchar Command,uchar=20
BusyWait)<BR>{<BR> </P>
<P> Busy(BusyWait);<BR> DATA=3D0xff;<BR> clb(PCTRL,RS);<BR=
> clb(PCTRL,RW);<BR> DATA=3DCommand; <BR> stb(PCTRL,E=
);<BR> Delay(20);<BR> clb(PCTRL,E);<BR>}</P>
<P>//=D0=B4=CA=FD=BE=DD<BR>void WriteData(uchar=20
Command)<BR>{<BR> Busy(1);<BR> DATA=3D0xff;<BR> stb(PCTRL,=
RS);<BR> clb(PCTRL,RW);<BR> stb(PCTRL,E);<BR> DATA=3DComma=
nd;<BR> Delay(10);<BR> clb(PCTRL,E);<BR>}</P>
<P>//=C7=E5=C6=C1<BR>void=20
ClearScreen(void)<BR>{<BR> DATA=3D0xff;<BR> clb(PCTRL,RS);<BR>&=
nbsp;clb(PCTRL,RW);<BR> stb(PCTRL,E);<BR> DATA=3D1;<BR> De=
lay(10);<BR> clb(PCTRL,E);<BR>}</P>
<P>//=B3=F5=CA=BC=BB=AF<BR>void=20
Initiation(void)<BR>{<BR> WriteCommand(0x30,1);<BR> WriteComman=
d(0x0c,1);<BR> WriteCommand(0x01,1);<BR> WriteCommand(0x06,1);<=
BR>}</P>
<P>//=D3=C3=D3=DA=BB=AD=C8=AB=C6=C1=C4=BB=CD=BC=CF=F1=A3=AC128*64<BR>void=
DrawFullScreen(uchar *p)<BR>{<BR> uchar=20
tmp;<BR> uchar xgroup=3D0,ygroup,x,y;<BR> uchar=20
i; <BR> for(ygroup=3D0;ygroup<=3D63;ygroup++)<BR> {&nbs=
p; <BR> =20
if (ygroup<32)<BR> =20
{<BR> x=3Dxgroup+0x80;<BR> =
y=3Dygroup+0x80;<BR> }<BR>=
else<BR> {=20
<BR> x=3Dxgroup+0x88;<BR> &=
nbsp; y=3Dygroup-32+0x80;<BR> }<BR> &nbs=
p; WriteCommand(0x34,0); //=D3=A6=D3=C3=C0=A9=D5=B9=
=D6=B8=C1=EE=BC=AF<BR> WriteCommand(y,=
0); //=B7=D6=B1=F0=B8=F8=B3=F6x=BA=CDy=B5=C4=D6=B5<BR> &n=
bsp; Delay(100);<BR> =
WriteCommand(x,0);<BR> WriteCommand(0x=
30,0);<BR> for(i=3D1;i<=3D16;i++)<B=
R> {<BR> =
tmp=3Dpgm_read_byte(p+16*ygroup+(16-i));<BR>  =
; tmp=3DReverseData(tmp); &=
nbsp; <BR> WriteData(tmp);<=
BR> }<BR> }=20
<BR> WriteCommand(0x36,0);<BR> WriteCommand(0x30,0);<BR>}=
</P>
<P>//=B8=FC=D0=C2=BE=D6=B2=BF=CA=FD=BE=DD=A3=AC=BF=C9=B8=F9=BE=DD=D0=E8=D2=
=AA=B8=FC=B8=C4<BR>void DrawData(uchar * p,uchar=20
position)<BR>{<BR> uchar tmp;<BR> uchar=20
xgroup=3D0,ygroup,x,y;<BR> uchar=20
i; <BR> WriteCommand(0x34,0); //=D3=A6=D3=C3=C0=A9=D5=B9=D6=
=B8=C1=EE=BC=AF<BR> for(ygroup=3D16;ygroup<=3D47;ygroup++)<BR>&nb=
sp;{ <BR> =20
if (ygroup<32)<BR> =20
{<BR> x=3Dxgroup+0x84-position;<=
BR> y=3Dygroup+0x80;<BR> &n=
bsp;}<BR> else<BR> {=20
<BR> x=3Dxgroup+0x8c-position;<BR> &nbs=
p; y=3Dygroup-32+0x80;<BR> }</P>
<P> WriteCommand(y,0); //=B7=
=D6=B1=F0=B8=F8=B3=F6x=BA=CDy=B5=C4=D6=B5<BR> &nbs=
p; WriteCommand(x,0);<BR> &=
nbsp;tmp=3Dpgm_read_byte(p+4*(ygroup-16)+1);<BR> &=
nbsp; tmp=3D~tmp;<BR>  =
;tmp=3D=20
ReverseData(tmp); <BR> &nbs=
p; WriteData(tmp);<BR> &nbs=
p; tmp=3Dpgm_read_byte(p+4*(ygroup-16));<BR> =
tmp=3D~tmp;<BR> &nbs=
p; tmp=3DReverseData(tmp); <BR>&n=
bsp; WriteData(tmp);<BR> }=20
<BR> WriteCommand(0x36,0);<BR>}</P>
<P><BR>//=D5=FB=CA=FD=B5=BD=D7=D6=B7=FB=B4=AE=B5=C4=D7=AA=BB=BB<BR>uchar =
* TranNumtoStr(uchar * str, uint n, uchar=20
base)<BR>{<BR> char * q =3D str =
;<BR> char * p=20
=3D str ; <BR> // =D6=BB=BD=D3=CA=DC =
2=A1=A28=A1=A210=A1=A216 =BD=F8=D6=C6=CA=FD<BR> =20
if(base !=3D 2 && base !=3D 8 && base !=3D 10 && =
base !=3D=20
16)<BR> return=20
0;<BR> while(n > 0)<BR> =20
{<BR> uint tmp =3D n % base=20
;<BR> if(tmp >=3D=20
10)<BR> =
*p++ =3D=20
tmp - 10 + 'A' ;<BR> =20
else<BR>  =
; *p++=20
=3D tmp + '0' ;<BR> n /=3D =
base=20
;<BR> }<BR> *p-- =3D '\0'=20
;<BR> // =
=B0=B4=C7=F3=D3=E0=D7=AA=BB=BB=B5=C4=B6=A8=D2=E5=A3=AC=D0=E8=D2=AA=BD=AB=D3=
=E0=CA=FD=B7=B4=D0=F2<BR> while(q <=20
p)<BR> {<BR> =
*p ^=3D=20
*q ^=3D *p ^=3D *q ;<BR> ++q=20
;<BR> --p =
;<BR> =20
}<BR> return str ;<BR>}</P>
<P>//=BE=B5=CF=F1=B7=AD=D7=AA2=BD=F8=D6=C6=CA=FD<BR>uchar =
ReverseData(uchar b)<BR>{ <BR> //uch=3Duch &=20
0xaa>>1 | uch & 0x55 <<1;<BR> //uch=3Duch & =
0xcc>>2=20
| uch & 0x33 <<2;<BR> //uch=3Duch & 0xf0>>4 | =
uch &=20
0x0f <<4; <BR> //return =
uch;<BR> b=3D(b&0x01)<<7 |=20
(b&0x02)<<5 | (b&0x04)<<3 | (b&0x08)<<1 |=20
(b&0x10)>>1 | (b&0x20)>>3 | (b&0x40)>>5=20
|(b&0x80)>>7;<BR> return b;</P>
<P>}</P>
<P>/*<BR>//=B2=C9=BC=AFADC=D0=C5=BA=C5<BR>void =
adc_init(void)<BR>{<BR> SFIOR |=3D=20
0x0;<BR> ADMUX =3D 0x01;<BR> ADCSRA =3D=20
0xae;<BR> ADCSR|=3D0x40;<BR>}</P>
<P>SIGNAL(SIG_ADC)<BR>{<BR> unsigned char=20
adc_datal,adc_datah;<BR> unsigned char a,b,c;<BR> adc_datal =
=3D=20
ADCL/25.4;<BR> adc_datah =3D=20
ADCH;<BR> a=3Dadc_datal/100;<BR> b=3Dadc_datal/10-a*10;<BR>&nbs=
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -