现在问题是,能正常显示字符串……但是,打不出点,因为我想画出波形……有人写过打点函数吗?我看网上说,打点需要读取数据,所以我写了这个读取数据函数,不知道对不对:
u8 LCD12684_Rdat(void)
{
u8 temp;
while(LCD12864_busy()); //忙检测
LCD_RS(1);
LCD_RW(1);
LCD_EN(0);
Delay_Ms(1);
temp = GPIO_ReadInputDataBit(LCD12864_GPIO,LCD_GPIO_DAT);
Delay_Ms(1);
LCD_EN(1);
Delay_Ms(1);
LCD_EN(0);
return temp;
}
下面的事打点函数:
void LCD_DraPoint(u8 x,u8 y)
{
u8 x_byte,x_bit;
u8 y_byte,y_bit;
u8 tmph,tmp1;
x &= 0x7f;
y &= 0x3f;
x_byte = x/16;
x_bit = x&0x0f;
y_byte = y/32;
y_bit = y&0x3f;
LCD12684_Wcmd(0x34);
LCD12684_Wcmd(0x34);
LCD12684_Wcmd(0x80+y_bit);
LCD12684_Wcmd(0x80+x_byte+8*y_byte);
LCD12684_Rdat();
tmph = LCD12684_Rdat();
tmp1 = LCD12684_Rdat();
LCD12684_Wcmd(0x80+y_bit);
LCD12684_Wcmd(0x80+x_byte+8*y_byte);
if(x_bit<8)
{
LCD12684_Wdat(tmph|(0x01<<(7-x_bit)));
LCD12684_Wdat(tmp1);
}
else
{
LCD12684_Wdat(tmph);
LCD12684_Wdat(tmp1|(0x01<<(15-x_bit)));
}
LCD12684_Wcmd(0x36);
LCD12684_Wcmd(0x30);
}
执行打点函数时,
在屏上打点没有效果
相反的,屏上出现了密密麻麻的没有规律的点
不知道是什么原因……
希望有人能指导一下!!!
拜托了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
- void LCD_DrawPoint(u16 X,u16 Y,u16 Colour) //液晶屏上实现画一个点的函数
- {
- LCD_SetXY(X,Y);
- ili9481_WriteData(Colour);
- }
- /* 函数LCD_DrawCriclePixel画圆的像素点 */
- void LCD_DrawCriclePixel(u16 x0,u16 y0,u16 x,u16 y,u16 colour)
- {
- LCD_DrawPoint(x0+x,y0+y,colour); //LCD_DrawPoint(x,y,colour)函数为在对应x,y坐标处画一个颜 {MOD}为colour的点,根据不同液晶屏修改下
- LCD_DrawPoint(x0+x,y0-y,colour);
- LCD_DrawPoint(x0-x,y0+y,colour);
- LCD_DrawPoint(x0-x,y0-y,colour);
- LCD_DrawPoint(x0+y,y0+x,colour);
- LCD_DrawPoint(x0+y,y0-x,colour);
- LCD_DrawPoint(x0-y,y0+x,colour);
- LCD_DrawPoint(x0-y,y0-x,colour);
- }
- /* 画圆函数,x0,y0为圆心坐标,r为半径,colour为颜 {MOD} */
- void LCD_DrawCricle(int x0,int y0,int r,u16 colour)
- {
- int x,y;
- float d;
- x = 0;
- y = r;
- d = 5.0/4-r;
- while(x<=y)
- {
- LCD_DrawCriclePixel(x0,y0,x,y,colour);
- if(d<0)
- d+=x*2.0+3;
- else
- {
- d+=2.0*(x-y)+5;
- y--;
- }
- x++;
- }
- }
复制代码一周热门 更多>