⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12864液晶驱动程序(带字库型,基于avr mega16)--wuzhenzhi的笔记.mht

📁 包括多种12864的驱动程序
💻 MHT
📖 第 1 页 / 共 5 页
字号:
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&nbsp;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&nbsp; =
http://wuzhenzhi.googlepages.com/12864driver.rar&nbsp; "=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&nbsp;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&nbsp; RS&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>#define&nbsp;=20
RW&nbsp;&nbsp;&nbsp;&nbsp; 1<BR>#define&nbsp; =
E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
2<BR>#define&nbsp; PSB&nbsp;&nbsp;&nbsp; 3<BR>#define&nbsp;=20
RST&nbsp;&nbsp;&nbsp; 4<BR>#define&nbsp; DATA&nbsp;&nbsp; =
PORTD<BR>#define&nbsp;=20
PCTRL&nbsp; =
PORTB<BR>=CA=FD=BE=DD=CE=AAPORTD=BF=DA=A3=AC=BF=D8=D6=C6=CE=AAPORTC=BF=DA=
</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</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>&nbsp;ulong i;<BR>&nbsp;for=20
(i=3D0;i&lt;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>&nbsp;Delay(30*i);&nbsp;<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>&nbsp;i=3Di&amp;0x03;//=B5=CD=C8=FD=CE=BB=D3=D0=D0=A7<BR>&nbsp=
;WriteCommand(0x34,2);<BR>&nbsp;WriteCommand(0b00000100|=20
i,2);<BR>&nbsp;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>&nbsp;</P>
<P>&nbsp;Busy(BusyWait);<BR>&nbsp;DATA=3D0xff;<BR>&nbsp;clb(PCTRL,RS);<BR=
>&nbsp;clb(PCTRL,RW);<BR>&nbsp;DATA=3DCommand;&nbsp;<BR>&nbsp;stb(PCTRL,E=
);<BR>&nbsp;Delay(20);<BR>&nbsp;clb(PCTRL,E);<BR>}</P>
<P>//=D0=B4=CA=FD=BE=DD<BR>void WriteData(uchar=20
Command)<BR>{<BR>&nbsp;Busy(1);<BR>&nbsp;DATA=3D0xff;<BR>&nbsp;stb(PCTRL,=
RS);<BR>&nbsp;clb(PCTRL,RW);<BR>&nbsp;stb(PCTRL,E);<BR>&nbsp;DATA=3DComma=
nd;<BR>&nbsp;Delay(10);<BR>&nbsp;clb(PCTRL,E);<BR>}</P>
<P>//=C7=E5=C6=C1<BR>void=20
ClearScreen(void)<BR>{<BR>&nbsp;DATA=3D0xff;<BR>&nbsp;clb(PCTRL,RS);<BR>&=
nbsp;clb(PCTRL,RW);<BR>&nbsp;stb(PCTRL,E);<BR>&nbsp;DATA=3D1;<BR>&nbsp;De=
lay(10);<BR>&nbsp;clb(PCTRL,E);<BR>}</P>
<P>//=B3=F5=CA=BC=BB=AF<BR>void=20
Initiation(void)<BR>{<BR>&nbsp;WriteCommand(0x30,1);<BR>&nbsp;WriteComman=
d(0x0c,1);<BR>&nbsp;WriteCommand(0x01,1);<BR>&nbsp;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>&nbsp;uchar=20
tmp;<BR>&nbsp;uchar xgroup=3D0,ygroup,x,y;<BR>&nbsp;uchar=20
i;&nbsp;<BR>&nbsp;for(ygroup=3D0;ygroup&lt;=3D63;ygroup++)<BR>&nbsp;{&nbs=
p;&nbsp;<BR>&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;if (ygroup&lt;32)<BR>&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=3Dxgroup+0x80;<BR>&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;y=3Dygroup+0x80;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>=
&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{=20
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=3Dxgroup+0x88;<BR>&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;y=3Dygroup-32+0x80;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;WriteCommand(0x34,0);&nbsp;//=D3=A6=D3=C3=C0=A9=D5=B9=
=D6=B8=C1=EE=BC=AF<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteCommand(y,=
0);&nbsp;//=B7=D6=B1=F0=B8=F8=B3=F6x=BA=CDy=B5=C4=D6=B5<BR>&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;Delay(100);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
WriteCommand(x,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteCommand(0x=
30,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=3D1;i&lt;=3D16;i++)<B=
R>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;tmp=3Dpgm_read_byte(p+16*ygroup+(16-i));<BR>&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;tmp=3DReverseData(tmp);&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteData(tmp);<=
BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;}=20
<BR>&nbsp;WriteCommand(0x36,0);<BR>&nbsp;&nbsp;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>&nbsp;uchar tmp;<BR>&nbsp;uchar=20
xgroup=3D0,ygroup,x,y;<BR>&nbsp;uchar=20
i;&nbsp;<BR>&nbsp;WriteCommand(0x34,0);&nbsp;//=D3=A6=D3=C3=C0=A9=D5=B9=D6=
=B8=C1=EE=BC=AF<BR>&nbsp;for(ygroup=3D16;ygroup&lt;=3D47;ygroup++)<BR>&nb=
sp;{&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;if (ygroup&lt;32)<BR>&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=3Dxgroup+0x84-position;<=
BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y=3Dygroup+0x80;<BR>&nbsp;&nbsp;&nbsp;&n=
bsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{=20
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=3Dxgroup+0x8c-position;<BR>&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;y=3Dygroup-32+0x80;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteCommand(y,0);&nbsp;//=B7=
=D6=B1=F0=B8=F8=B3=F6x=BA=CDy=B5=C4=D6=B5<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;WriteCommand(x,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;tmp=3Dpgm_read_byte(p+4*(ygroup-16)+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;tmp=3D~tmp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;tmp=3D=20
ReverseData(tmp);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;WriteData(tmp);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;tmp=3Dpgm_read_byte(p+4*(ygroup-16));<BR>&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;tmp=3D~tmp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;tmp=3DReverseData(tmp);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteData(tmp);<BR>&nbsp;}=20
<BR>&nbsp;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&nbsp; * str, uint n, uchar=20
base)<BR>{<BR>&nbsp;&nbsp;&nbsp; char * q =3D str =
;<BR>&nbsp;&nbsp;&nbsp; char * p=20
=3D str ; <BR>&nbsp;&nbsp;&nbsp; // =D6=BB=BD=D3=CA=DC =
2=A1=A28=A1=A210=A1=A216 =BD=F8=D6=C6=CA=FD<BR>&nbsp;&nbsp;&nbsp;=20
if(base !=3D 2 &amp;&amp; base !=3D 8 &amp;&amp; base !=3D 10 &amp;&amp; =
base !=3D=20
16)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return=20
0;<BR>&nbsp;&nbsp;&nbsp; while(n &gt; 0)<BR>&nbsp;&nbsp;&nbsp;=20
{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint tmp =3D n % base=20
;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(tmp &gt;=3D=20
10)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
 *p++ =3D=20
tmp - 10 + 'A' ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; *p++=20
=3D tmp + '0' ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n /=3D =
base=20
;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; *p-- =3D '\0'=20
;<BR>&nbsp;&nbsp;&nbsp; // =
=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>&nbsp;&nbsp;&nbsp; while(q &lt;=20
p)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
*p ^=3D=20
*q ^=3D *p ^=3D *q ;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++q=20
;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --p =
;<BR>&nbsp;&nbsp;&nbsp;=20
}<BR>&nbsp;&nbsp;&nbsp; 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>&nbsp;//uch=3Duch &amp;=20
0xaa&gt;&gt;1 | uch &amp; 0x55 &lt;&lt;1;<BR>&nbsp;//uch=3Duch &amp; =
0xcc&gt;&gt;2=20
| uch &amp; 0x33 &lt;&lt;2;<BR>&nbsp;//uch=3Duch &amp; 0xf0&gt;&gt;4 | =
uch &amp;=20
0x0f &lt;&lt;4;&nbsp;<BR>&nbsp;//return =
uch;<BR>&nbsp;b=3D(b&amp;0x01)&lt;&lt;7 |=20
(b&amp;0x02)&lt;&lt;5 | (b&amp;0x04)&lt;&lt;3 | (b&amp;0x08)&lt;&lt;1 |=20
(b&amp;0x10)&gt;&gt;1 | (b&amp;0x20)&gt;&gt;3 | (b&amp;0x40)&gt;&gt;5=20
|(b&amp;0x80)&gt;&gt;7;<BR>&nbsp;return b;</P>
<P>}</P>
<P>/*<BR>//=B2=C9=BC=AFADC=D0=C5=BA=C5<BR>void =
adc_init(void)<BR>{<BR>&nbsp;SFIOR |=3D=20
0x0;<BR>&nbsp;ADMUX =3D 0x01;<BR>&nbsp;ADCSRA =3D=20
0xae;<BR>&nbsp;ADCSR|=3D0x40;<BR>}</P>
<P>SIGNAL(SIG_ADC)<BR>{<BR>&nbsp;unsigned char=20
adc_datal,adc_datah;<BR>&nbsp;unsigned char a,b,c;<BR>&nbsp;adc_datal =
=3D=20
ADCL/25.4;<BR>&nbsp;adc_datah =3D=20
ADCH;<BR>&nbsp;a=3Dadc_datal/100;<BR>&nbsp;b=3Dadc_datal/10-a*10;<BR>&nbs=

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -