|
这几天在调试控制芯片为T6963C的128*64的液晶,不过没什么进展。液晶亮都没亮。<br /><br />驱动程序如下,请各位不啬赐教。<br />#include <mega16.h><br />#include <delay.h><br /><br />#define WR PORTA.0<br />#define RD PORTA.1<br />#define CE PORTA.2<br />#define C_D PORTA.3<br /><br />void init_io()<br />{<br /> DDRA=0XFF;//porta is output <br /> CE=0;<br /> DDRC=0XFF;//portc is output<br /> PORTC=0XFF;<br />}<br /><br />void Re_Sta(unsigned char mark)<br />{<br /> bit exit=0;<br /> unsigned char state;<br /> <br /> C_D=1;<br /> RD=1;<br /> WR=1;<br /> while(1)<br /> {<br /> RD=0;<br /> state=PINC;<br /> RD=1;<br /> switch(mark)<br /> {<br /> case 1:if(state&0x03)exit=1;break;/*check commad execution capability or check data read/write capability*/<br /> case 2:if(state&0x04)exit=1;break;/*check auto mode data read capability*/<br /> case 3:if(state&0x08)exit=1;break;/*check auto mode data write capability*/<br /> case 4:if(state&0x40)exit=1;break;/*error flag;used for screen peek and screen copy commads*/<br /> default:break; <br /> }<br /> if(exit==1)<br /> break;<br /> }<br />}<br /><br />void send_data(unsigned char dat)<br />{<br /> C_D=0;<br /> PORTC=dat;<br /> WR=0;<br /> WR=1;<br />}<br /><br />void send_com(unsigned char com)<br />{<br /> PORTC=com;<br /> WR=0;<br /> WR=1; <br />}<br /><br />void send_d_c(unsigned char sta_sty, unsigned char dat_num,unsigned char dat1,unsigned char dat2,unsigned char com)<br />{<br /> if(dat_num)<br /> {<br /> Re_Sta(1);<br /> send_data(dat1);<br /> if(dat_num==2)<br /> Re_Sta(1);<br /> send_data(dat2);<br /> } <br /> switch(sta_sty)<br /> {<br /> case 1:Re_Sta(1);send_com(com);break;<br /> case 2:Re_Sta(2);send_com(com);break;<br /> case 3:Re_Sta(3);send_com(com);break;<br /> case 4:Re_Sta(4);send_com(com);break;<br /> default:break;<br /> }<br />}<br /><br />void init_lcd(void)<br />{<br /> send_d_c(1,2,0x00,0x00,0x21);//set the position of curser<br /> send_d_c(1,2,0x00,0x00,0x40);//set text home address<br /> send_d_c(1,2,0X20,0X00,0X41);//set text area<br /> send_d_c(1,2,0X00,0X80,0X42);//set graphic home address<br /> send_d_c(1,2,0X20,0X00,0X43);//set graphic area <br /> send_d_c(1,0,0x00,0x00,0x80);//set the logic of display,internal character generator mode<br /> send_d_c(1,0,0x00,0x00,0x9f);//text on,graphic on,cursor on,blink on<br /> send_d_c(1,0,0x00,0x00,0xaf);//8-line cursor<br />}<br /><br />void clear_lcd(void)<br />{<br /> unsigned char i,j;<br /> <br /> send_d_c(1,2,0X00,0X00,0X24);//set address pointer<br /> send_d_c(1,0,0x00,0x00,0xb0);//set auto write mode<br /> for(i=0;i<205;i++)<br /> {<br /> for(j=0;j<=40;j++)<br /> {<br /> Re_Sta(3);<br /> C_D=0;<br /> PORTC=0X00;<br /> WR=0;<br /> WR=1; <br /> }<br /> }<br /> send_d_c(3,0,0x00,0x00,0xb2);//set auto reset<br />}<br /><br />main()<br />{<br /> delay_ms(200);<br /> init_io();<br /> init_lcd();<br /> //clear_lcd(); <br />} |
|