谢谢你的回复,下面是我的程序,麻烦多费心看看。(ST单片机C程序)<br />PC6 WR,PA6 DATA,PB4 /CS<br />#include "io72324.h" /* 寄存器定义文件 */<br />#include "lib.h"<br />#include "linsci.h" /* COSMIC 编译器需要用的头文件 */<br />#include "st72324.h"<br />#define BIAS 0x29<br />#define SYSDIS 0x00<br />#define SYSEN 0x01<br />#define LCDOFF 0x02<br />#define LCDON 0x03<br />const u8 DisNumber[10][7]={{0x06,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf},{0x00,0x03,0x04,0x05,0x06,0xaf,0xaf},<br /> {0x02,0x05,0xaf,0xaf,0xaf,0xaf,0xaf},{0x04,0x05,0xaf,0xaf,0xaf,0xaf,0xaf},<br /> {0x00,0x03,0x04,0xaf,0xaf,0xaf,0xaf},{0x01,0x04,0xaf,0xaf,0xaf,0xaf,0xaf},{0x01,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf},<br /> {0x03,0x04,0x05,0x6,0xaf,0xaf,0xaf},{0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf},{0x04,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf}<br />};<br /><br /><br /><br /><br /><br /><br />void t_clk(void)<br />{<br /> #asm<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> nop<br /> #endasm<br />} <br />/************************************************/<br />/*函数调用方式:SendBit(uchar Dat,uchar BitNum);*/ <br />/*将Dat数据从高位开始发送共BitNum位 */<br />/************************************************/<br />void SendBit(u8 Dat,u8 BitNum)<br />{<br /> <br /> u8 i;<br /> <br /> for(i=0;i<BitNum;i++)<br /> { /*置时钟线为低通知被控器开始接收*/<br /> ClrBit(PCDR,6);<br /> t_clk();<br /> if(( Dat & 0x80 ) == 0)<br /> { <br /> ClrBit(PADR,6);<br /> <br /> <br /> }<br /> else<br /> { <br /> SetBit(PADR,6);/* Q3=6DATA*/ /*发送数据由高位到低位传送 */<br /> <br /> }<br /> <br /> SetBit(PCDR,6); //SetBit(PADR,Q4); /*保持住总线准备下一个数据位 */<br /> t_clk();<br /> Dat=Dat<<1; /*发送数据左移一位 */<br /> }<br /><br />}<br /><br />void SendDataBit_1621(u8 Dat,u8 BitNum)<br />{u8 i;<br /> <br /> for(i=0;i<BitNum;i++)<br /> <br /> { ClrBit(PCDR,6);<br /> t_clk();<br /> if((Dat&0x01)==0) <br /> {<br /> <br /> ClrBit(PADR,6);<br /> <br /> } <br /> else <br /> {<br /> SetBit(PADR,6);<br /> <br /> } <br /> <br /> SetBit(PCDR,6); //SetBit(PADR,Q4); /*保持住总线准备下一个数据位 */<br /> t_clk();<br /> Dat=Dat>>1;<br /> }<br />} <br />/************************************************/<br />/*函数调用方式:SendCmd(uchar Dat); */ <br />/*将Dat命令字发给接收端 */<br />/************************************************/<br />void SendCmd(u8 Dat)<br />{ <br /> <br /> <br /> ClrBit(PBDR,4); /*Q6=4*/<br /> <br /> SendBit(0x80,3);<br /> SendBit(Dat,9);<br /> #asm<br /> nop<br /> #endasm<br /> SetBit(PBDR,4);<br /> #asm<br /> nop<br /> nop <br /> #endasm<br />}<br /><br /><br />void Write_1621(u8 addr,u8 data)<br />{ <br /> DisableInterrupts();<br /> <br /> ClrBit(PBDR,4);<br /> <br /> SendBit(0xa0,3);<br /> SendBit(addr<<2,6);<br /> SendDataBit_1621(data,4);<br /> #asm<br /> nop<br /> #endasm<br /> SetBit(PBDR,4);<br /> #asm<br /> nop<br /> nop<br /> #endasm<br /> EnableInterrupts();<br />} <br /><br />void lcdinit(void)<br />{ u8 i,j;<br /> SetBit(PADDR,6); //data<br /> SetBit(PAOR,6);<br /> SetBit(PADR,6);<br /> SetBit(PBDDR,4); //不选中1621<br /> SetBit(PBOR,4);<br /> SetBit(PBDR,4);<br /> SetBit(PCDDR,6); //WR<br /> SetBit(PCOR,6);<br /> ClrBit(PCDR,6);<br /> for(i=0;i<200;i++)<br /> for(j=0;j<65;j++)<br /> ;<br /> SendCmd(0x0e3); //NORMAL*/<br /> <br /> SendCmd(0x18); //RC256K<br /> SendCmd(BIAS);<br /> SendCmd(SYSEN);<br /> <br /> <br /> <br /> SendCmd(LCDON);<br /> <br /> <br /> <br />}<br />void main(void)<br />{u8 m,Temp,Adr;<br /> u8 n;<br /> u8 baiwei,shiwei,gewei;<br /> <br /> <br /> lcdinit();<br /> TACSR=0;<br /> WDGCR=0;<br /> EnableInterrupts();<br /> <br /> <br /> while(1)<br /> { <br /> <br /> <br /> for(m=0;m<7;m++)<br /> Write_1621(DisNumber[1][m],0x08);<br /> for(m=0;m<7;m++)<br /> Write_1621(DisNumber[6][m]+0x08,0x08);<br /> for(m=0;m<7;m++)<br /> Write_1621(DisNumber[4][m]+0x10,0x08);<br /> for(m=0;m<7;m++)<br /> Write_1621(DisNumber[9][m]+0x18,0x08);<br /> for(m=0;m<200;m++)<br /> for(n=0;n<65;n++)<br /> ;<br /> <br /> for(m=0;m<7;m++)<br /> Write_1621(DisNumber[2][m],0x08);<br /> for(m=0;m<7;m++)<br /> Write_1621(DisNumber[0][m]+0x08,0x08);<br /> for(m=0;m<7;m++)<br /> Write_1621(DisNumber[5][m]+0x10,0x08);<br /> for(m=0;m<7;m++)<br /> Write_1621(DisNumber[3][m]+0x18,0x08);<br /> for(m=0;m<200;m++)<br /> for(n=0;n<65;n++)<br /> ;<br /> <br /> <br /> }<br />} <br /> <br /><br />
|