有人遇見過這種情況嗎 求大神指導
兩個英文字母中間就會冒出一個隨機漢字
不知道哪里出了問題
uj5u.com熱心網友回復:
樓主查一下寫入的字符在LCD屏上的位置有沒有重合吧。uj5u.com熱心網友回復:
一般這種情況,你使用的LCD是帶字庫的吧? 如果是,你查一查你寫入地址增加的量是否正確。uj5u.com熱心網友回復:
以前這個驅動函式是正常的 但是我現在改成用總線驅動就成這樣了 而且清屏函式清完螢屏是花的
uj5u.com熱心網友回復:
樓主,請把修改前后的程式發出來瞅瞅。
uj5u.com熱心網友回復:
像是沒重繪干凈呢uj5u.com熱心網友回復:
這個是我現在用總線控制的程式(24MHz)#define LCD_ReadCommand 0x80DA
#define LCD_WriteCommand 0x80D8
#define LCD_ReadData 0x80DB
#define LCD_WriteData 0x80D9
unsigned char Lcd_CheckBusy(void)
{
unsigned char Busy;
Busy=*((unsigned char xdata *)LCD_ReadCommand)&0x80;
return Busy;
}
void LCD_WrCmd(unsigned char cmd)
{
while(Lcd_CheckBusy());
*((unsigned char xdata *)LCD_WriteCommand) =cmd;
}
void LCD_WrDat(unsigned char dat)
{
while(Lcd_CheckBusy());
*((unsigned char xdata *)LCD_WriteData) =dat;
}
void LCD_SetDDRAM(unsigned char adr)
{
LCD_WrCmd(0x80|adr);
}
void LCD_DisAscll(unsigned char c)
{
LCD_WrDat(c);
}
void LCD_DisString(unsigned char *str)
{
while(*str!='\0')
{
LCD_DisAscll(*str++);
}
}
這是以前的程式
unsigned char Lcd_CheckBusy(void)
{
unsigned char Busy;
LcdData=https://bbs.csdn.net/topics/0xff;
RS=0;
RW=1;
E=1;
_nop_();
Busy=LcdData&0x80;
E=0;
return Busy;
}
/*********************************
?òLCDD′è?×??úêy?Y
**********************************/
void Lcd_WriteData(unsigned char Data)
{
while(Lcd_CheckBusy());
RS=1;
RW=0;
E=0;
_nop_();
_nop_();
LcdData=https://bbs.csdn.net/topics/Data;
E=1;
_nop_();
_nop_();
E=0;
}
uj5u.com熱心網友回復:
這是清屏函式 但清完是花的void Lcd_Clear(unsigned char Mode)
{
unsigned char x,y,ii;
unsigned char Temp;
if(Mode%2==0)
Temp=0x00;
else
Temp=0xff;
Lcd_WriteCmd(0x36);//à?3???á? ??í???ê?
for(ii=0;ii<9;ii+=8)
for(y=0;y<0x20;y++)
for(x=0;x<8;x++)
{
EA=0;
Lcd_WriteCmd(y+0x80); //DDμ??·
Lcd_WriteCmd(x+0x80+ii); //áDμ??·
Lcd_WriteData(Temp); //D′êy?Y D15£-D8
Lcd_WriteData(Temp); //D′êy?Y D7£-D0
EA=1;
}
Lcd_WriteCmd(0x30);
}
uj5u.com熱心網友回復:
樓主,修改前后的程式參考時鐘頻率一樣嗎?如果不一樣,可能是Lcd_WriteData(unsigned char Data)的延時時長不夠,多加幾個_nop_()看看。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/77195.html
標籤:單片機/工控
上一篇:LintCode 394. 硬幣排成線 JavaScript演算法
下一篇:DSP6717
