- /******************************************************************************
- 函数说明:显示单个字符
- 入口数据:x,y显示坐标
- num 要显示的字符
- fc 字的颜色
- bc 字的背景色
- sizey 字号
- mode: 0非叠加模式 1叠加模式
- 返回值: 无
- ******************************************************************************/
- void LCD_ShowChar(uint16_t x,uint16_t y,uint8_t num,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- uint8_t temp,sizex,t,m=0;
- uint16_t i,TypefaceNum;//一个字符所占字节大小
- uint16_t x0=x;
- sizex=sizey/2;
- TypefaceNum=(sizex/8+((sizex%8)?1:0))*sizey;
- num=num-' '; //得到偏移后的值
-
- adderset(x,x+sizex-1,y,y+sizey-1); //设置光标位置
- for(i=0;i<TypefaceNum;i++)
- {
- if(sizey==12)temp=ascii_1206[num][i]; //调用6x12字体
- else if(sizey==16)temp=ascii_1608[num][i]; //调用8x16字体
- else if(sizey==24)temp=ascii_2412[num][i]; //调用12x24字体
- else if(sizey==32)temp=ascii_3216[num][i]; //调用16x32字体
- else return;
- for(t=0;t<8;t++)
- {
- if(!mode)//非叠加模式
- {
- if(temp&(0x01<<t))SPI_Write_Data(fc);
- else SPI_Write_Data(bc);
- m++;
- if(m%sizex==0)
- {
- m=0;
- break;
- }
- }
- else//叠加模式
- {
- if(temp&(0x01<<t))LCD_DrawPoint(x,y,fc);//画一个点
- x++;
- if((x-x0)==sizex)
- {
- x=x0;
- y++;
- break;
- }
- }
- }
- }
- }
- /******************************************************************************
- 函数说明:显示字符串
- 入口数据:x,y显示坐标
- *p 要显示的字符串
- fc 字的颜色
- bc 字的背景色
- sizey 字号
- mode: 0非叠加模式 1叠加模式
- 返回值: 无
- ******************************************************************************/
- void LCD_ShowString(uint16_t x,uint16_t y,const uint8_t *p,uint16_t fc,uint16_t bc,uint8_t sizey,uint8_t mode)
- {
- while(*p!='\0')
- {
- LCD_ShowChar(x,y,*p,fc,bc,sizey,mode);
- x+=sizey/2;
- p++;
- }
- }
- /******************************************************************************
- 函数说明:显示数字
- 入口数据:m底数,n指数
- 返回值: 无
- ******************************************************************************/
- uint32_t mypow(uint8_t m,uint8_t n)
- {
- uint32_t result=1;
- while(n--)result*=m;
- return result;
- }
- /******************************************************************************
- 函数说明:显示两位小数变量
- 入口数据:x,y显示坐标
- num 要显示小数变量
- len 要显示的位数
- fc 字的颜色
- bc 字的背景色
- sizey 字号
- 返回值: 无
- ******************************************************************************/
- void LCD_ShowFloatNum1(uint16_t x,uint16_t y,float num,uint8_t len,uint16_t fc,uint16_t bc,uint8_t sizey)
- {
- uint8_t t,temp,sizex;
- uint16_t num1;
- sizex=sizey/2;
- num1=num*100;
- for(t=0;t<len;t++)
- {
- temp=(num1/mypow(10,len-t-1))%10;
- if(t==(len-2))
- {
- LCD_ShowChar(x+(len-2)*sizex,y,'.',fc,bc,sizey,0);
- t++;
- len+=1;
- }
- LCD_ShowChar(x+t*sizex,y,temp+48,fc,bc,sizey,0);
- }
- }
然后在主函数中调用
- LCD_ShowString(20,80,"LCD_Diameter:",RED,WHITE,32,0);
文字是显示出来了,但颜色对不上啊,给大家看看图片
我要是显示的是红字白底,结果是黑字蓝底,这是怎么回事?知道的朋友说说原因?
颜色定义在这里
- //画笔颜色
- #define WHITE 0xFFFF
- #define BLACK 0x0000
- #define BLUE 0x001F
- #define BRED 0XF81F
- #define GRED 0XFFE0
- #define GBLUE 0X07FF
- #define RED 0xF800
- #define MAGENTA 0xF81F
- #define GREEN 0x07E0
- #define CYAN 0x7FFF
- #define YELLOW 0xFFE0
- #define BROWN 0XBC40 //棕色
- #define BRRED 0XFC07 //棕红色
- #define GRAY 0X8430 //灰色
- #define DARKBLUE 0X01CF //深蓝色
- #define LIGHTBLUE 0X7D7C //浅蓝色
- #define GRAYBLUE 0X5458 //灰蓝色
- #define LIGHTGREEN 0X841F //浅绿色
- #define LGRAY 0XC618 //浅灰色(PANNEL),窗体背景色
- #define LGRAYBLUE 0XA651 //浅灰蓝色(中间层颜色)
- #define LBBLUE 0X2B12 //浅棕蓝色(选择条目的反色)
为什么颜色不对呢?是什么地方搞错了呢?哪位大神指点一下!