寫了一個12864的顯示程序;但是發現從第三行開始顯示出錯,而且12864顯示一直在閃:本人學渣,實在不知道問題出在哪,希望各位大神幫我看看。謝謝啦。程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- sbit SID=P0^3;
- sbit SCK=P0^5;
- uchar table[]="37654321";
- uchar table1[]="2017 04 11";
- uchar table2[]="456461";
- uchar table3[]="1231484";
- void delay(uchar z)
- {
- uchar x,y;
- for(x=0;x<z;x++)
- for(y=0;y<110;y++);
- }
- void sentbyte(uchar byte)
- {
- uchar i;
- for(i=0;i<8;i++)
- {
- if(byte<<i&0x80)SID=1;
- else SID=0;
- SCK=0;
- SCK=1;
- };
- }
- void write_cmd(uchar ccmd)
- {
- sentbyte(0xf8);
- sentbyte(ccmd&0xf0);
- sentbyte((ccmd<<4)&0xf0);
- delay(20);
- }
- void write_data(uchar i_data)
- {
- sentbyte(0xfa);
- sentbyte(i_data&0xf0);
- sentbyte((i_data<<4)&0xf0);
- delay(20);
- }
- void lcd_init()
- {
- write_cmd(0x30);
- delay(5);
- write_cmd(0x02);
- delay(5);
- write_cmd(0x06);
- delay(5);
- write_cmd(0x0c);
- delay(5);
- write_cmd(0x01);
- delay(5);
- }
- void main()
- {
- uchar i,y;
- lcd_init();
- write_cmd(0x80);
- while(table[i]!='\0')
- {write_data(table[i]);
- i++;
- delay(10);
- };
- write_cmd(0x90);
- for(y=0;y<10;y++)
- {
- write_data(table1[y]);
- };
- delay(10);
- write_cmd(0x88);
- while(table2[i]!='\0')
- {write_data(table2[i]);
- i++;
- delay(10);
- };
- write_cmd(0x98);
- while(table3[i]!='\0')
- {write_data(table3[i]);
- i++;
- delay(10);
- };
- }
復制代碼
|