之前的0.96寸的OLED屏幕壞掉了,現在重新買了一塊1.44寸的LCD屏幕,感覺這次的質量比較好,還可以顯示彩色的
用的stm32是stm32f103vet6,我看某寶賣家給的例程里面好像還有觸摸功能,我之后研究下
百度網盤keil5工程鏈接:https://pan.baidu.com/s/1Ty28B-w1FdTzy4mJhypjSw
提取碼:c80z
實物圖
接線方法:
供電要5V的,3.3V只會白屏
SCL---PB13
SDA---PB15
RES---PB12(復位來的,和stm32接同一個復位就行)
DC---PB10
那個CS片選完全可以不接就默認浮空吧
BL接GND的話是關閉屏幕,浮空或者接3.3V就是開啟屏幕,那就不接默認浮空吧
放一個例子顯示的效果圖
還行挺清楚的,128*128分辨率還能放彩圖上去,美滋滋
下面貼一下lcd的代碼和main中使用,會移植的小伙伴自行移植

1 #include "lcd.h" 2 #include "stdlib.h" 3 #include "usart.h" 4 #include "delay.h" 5 /**************************************************************************************************** 6 //=======================================液晶屏數據線接線==========================================// 7 //CS 接PB11 //片選信號 8 //CLK 接PB13 //SPI時鍾信號 9 //SDI(DIN) 接PB15 //SPI總線數據信號 10 //=======================================液晶屏控制線接線==========================================// 11 //LED 接PB9 //背光控制信號,高電平點亮 12 //RS(D/C) 接PB10 //寄存器/數據選擇信號(RS=0數據總線發送的是指令;RS=1數據總線發送的是像素數據) 13 //RST 接PB12 //液晶屏復位信號,低電平復位 14 ///////////////////////////////////////////////////////////////////////////////////////////////// 15 //==================================如何精簡到只需要3個IO=======================================// 16 //1.CS信號可以精簡,不作SPI復用片選可將CS接地常低,節省1個IO 17 //2.LED背光控制信號可以接高電平3.3V背光常亮,節省1個IO 18 //3.RST復位信號可以接到單片機的復位端,利用系統上電復位,節省1個IO 19 //==================================如何切換橫豎屏顯示=======================================// 20 //打開lcd.h頭文件,修改宏#define USE_HORIZONTAL 值為0使用豎屏模式.1,使用橫屏模式 21 //===========================如何切換模擬SPI總線驅動和硬件SPI總線驅動=========================// 22 //打開lcd.h頭文件,修改宏#define USE_HARDWARE_SPI 值為0使用模擬SPI總線.1,使用硬件SPI總線 23 **************************************************************************************************/ 24 25 26 //管理LCD重要參數 27 //默認為豎屏 28 _lcd_dev lcddev; 29 30 //畫筆顏色,背景顏色 31 u16 POINT_COLOR = 0x0000,BACK_COLOR = 0xFFFF; 32 u16 DeviceCode; 33 34 /**************************************************************************** 35 * 名 稱:void SPIv_WriteData(u8 Data) 36 * 功 能:STM32_模擬SPI寫一個字節數據底層函數 37 * 入口參數:Data 38 * 出口參數:無 39 * 說 明:STM32_模擬SPI讀寫一個字節數據底層函數 40 ****************************************************************************/ 41 void SPIv_WriteData(u8 Data) 42 { 43 unsigned char i=0; 44 for(i=8;i>0;i--) 45 { 46 if(Data&0x80) 47 LCD_SDA_SET; //輸出數據 48 else LCD_SDA_CLR; 49 50 LCD_SCL_CLR; 51 LCD_SCL_SET; 52 Data<<=1; 53 } 54 } 55 56 /**************************************************************************** 57 * 名 稱:u8 SPI_WriteByte(SPI_TypeDef* SPIx,u8 Byte) 58 * 功 能:STM32_硬件SPI讀寫一個字節數據底層函數 59 * 入口參數:SPIx,Byte 60 * 出口參數:返回總線收到的數據 61 * 說 明:STM32_硬件SPI讀寫一個字節數據底層函數 62 ****************************************************************************/ 63 u8 SPI_WriteByte(SPI_TypeDef* SPIx,u8 Byte) 64 { 65 while((SPIx->SR&SPI_I2S_FLAG_TXE)==RESET); //等待發送區空 66 SPIx->DR=Byte; //發送一個byte 67 while((SPIx->SR&SPI_I2S_FLAG_RXNE)==RESET);//等待接收完一個byte 68 return SPIx->DR; //返回收到的數據 69 } 70 71 /**************************************************************************** 72 * 名 稱:void SPI_SetSpeed(SPI_TypeDef* SPIx,u8 SpeedSet) 73 * 功 能:設置SPI的速度 74 * 入口參數:SPIx,SpeedSet 75 * 出口參數:無 76 * 說 明:SpeedSet:1,高速;0,低速; 77 ****************************************************************************/ 78 void SPI_SetSpeed(SPI_TypeDef* SPIx,u8 SpeedSet) 79 { 80 SPIx->CR1&=0XFFC7; 81 if(SpeedSet==1)//高速 82 { 83 SPIx->CR1|=SPI_BaudRatePrescaler_2;//Fsck=Fpclk/2 84 } 85 else//低速 86 { 87 SPIx->CR1|=SPI_BaudRatePrescaler_32; //Fsck=Fpclk/32 88 } 89 SPIx->CR1|=1<<6; //SPI設備使能 90 } 91 92 /**************************************************************************** 93 * 名 稱:SPI2_Init(void) 94 * 功 能:STM32_SPI2硬件配置初始化 95 * 入口參數:無 96 * 出口參數:無 97 * 說 明:STM32_SPI2硬件配置初始化 98 ****************************************************************************/ 99 void SPI2_Init(void) 100 { 101 SPI_InitTypeDef SPI_InitStructure; 102 GPIO_InitTypeDef GPIO_InitStructure; 103 104 //配置SPI2管腳 105 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE); 106 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15; 107 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 108 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 109 GPIO_Init(GPIOB, &GPIO_InitStructure); 110 111 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; 112 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 113 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 114 GPIO_Init(GPIOB, &GPIO_InitStructure); 115 116 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10| GPIO_Pin_11| GPIO_Pin_12; 117 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 118 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 119 GPIO_Init(GPIOB, &GPIO_InitStructure); 120 121 //SPI2配置選項 122 RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2 ,ENABLE); 123 124 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; 125 SPI_InitStructure.SPI_Mode = SPI_Mode_Master; 126 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; 127 SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; 128 SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; 129 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; 130 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; 131 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; 132 SPI_InitStructure.SPI_CRCPolynomial = 7; 133 SPI_Init(SPI2, &SPI_InitStructure); 134 135 //使能SPI2 136 SPI_Cmd(SPI2, ENABLE); 137 } 138 139 //****************************************************************** 140 //函數名: LCD_WR_REG 141 //功能: 向液晶屏總線寫入寫16位指令 142 //輸入參數:Reg:待寫入的指令值 143 //返回值: 無 144 //修改記錄:無 145 //****************************************************************** 146 void LCD_WR_REG(u16 data) 147 { 148 LCD_CS_CLR; 149 LCD_RS_CLR; 150 #if USE_HARDWARE_SPI 151 SPI_WriteByte(SPI2,data); 152 #else 153 SPIv_WriteData(data); 154 #endif 155 LCD_CS_SET; 156 } 157 158 //****************************************************************** 159 //函數名: LCD_WR_DATA 160 //功能: 向液晶屏總線寫入寫8位數據 161 //輸入參數:Data:待寫入的數據 162 //返回值: 無 163 //修改記錄:無 164 //****************************************************************** 165 void LCD_WR_DATA(u8 data) 166 { 167 168 LCD_CS_CLR; 169 LCD_RS_SET; 170 #if USE_HARDWARE_SPI 171 SPI_WriteByte(SPI2,data); 172 #else 173 SPIv_WriteData(data); 174 #endif 175 LCD_CS_SET; 176 177 } 178 //****************************************************************** 179 //函數名: LCD_DrawPoint_16Bit 180 //功能: 8位總線下如何寫入一個16位數據 181 //輸入參數:(x,y):光標坐標 182 //返回值: 無 183 //修改記錄:無 184 //****************************************************************** 185 void LCD_WR_DATA_16Bit(u16 data) 186 { 187 LCD_CS_CLR; 188 LCD_RS_SET; 189 #if USE_HARDWARE_SPI 190 SPI_WriteByte(SPI2,data>>8); 191 SPI_WriteByte(SPI2,data); 192 #else 193 SPIv_WriteData(data>>8); 194 SPIv_WriteData(data); 195 #endif 196 LCD_CS_SET; 197 } 198 199 //****************************************************************** 200 //函數名: LCD_WriteReg 201 //功能: 寫寄存器數據 202 //輸入參數:LCD_Reg:寄存器地址 203 // LCD_RegValue:要寫入的數據 204 //返回值: 無 205 //修改記錄:無 206 //****************************************************************** 207 void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue) 208 { 209 LCD_WR_REG(LCD_Reg); 210 LCD_WR_DATA(LCD_RegValue); 211 } 212 213 //****************************************************************** 214 //函數名: LCD_WriteRAM_Prepare 215 //功能: 開始寫GRAM 216 // 在給液晶屏傳送RGB數據前,應該發送寫GRAM指令 217 //輸入參數:無 218 //返回值: 無 219 //修改記錄:無 220 //****************************************************************** 221 void LCD_WriteRAM_Prepare(void) 222 { 223 LCD_WR_REG(lcddev.wramcmd); 224 } 225 226 //****************************************************************** 227 //函數名: LCD_DrawPoint 228 //功能: 在指定位置寫入一個像素點數據 229 //輸入參數:(x,y):光標坐標 230 //返回值: 無 231 //修改記錄:無 232 //****************************************************************** 233 void LCD_DrawPoint(u16 x,u16 y) 234 { 235 LCD_SetCursor(x,y);//設置光標位置 236 LCD_WR_DATA_16Bit(POINT_COLOR); 237 } 238 239 //****************************************************************** 240 //函數名: LCD_GPIOInit 241 //功能: 液晶屏IO初始化,液晶初始化前要調用此函數 242 //輸入參數:無 243 //返回值: 無 244 //修改記錄:無 245 //****************************************************************** 246 void LCD_GPIOInit(void) 247 { 248 GPIO_InitTypeDef GPIO_InitStructure; 249 250 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB ,ENABLE); 251 252 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11| GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin_15; 253 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 254 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 255 GPIO_Init(GPIOB, &GPIO_InitStructure); 256 } 257 258 //****************************************************************** 259 //函數名: LCD_Reset 260 //功能: LCD復位函數,液晶初始化前要調用此函數 261 //輸入參數:無 262 //返回值: 無 263 //修改記錄:無 264 //****************************************************************** 265 void LCD_RESET(void) 266 { 267 LCD_RST_CLR; 268 delay_ms(100); 269 LCD_RST_SET; 270 delay_ms(50); 271 } 272 273 //****************************************************************** 274 //函數名: LCD_Init 275 //功能: LCD初始化 276 //輸入參數:無 277 //返回值: 無 278 //修改記錄:無 279 //****************************************************************** 280 void LCD_Init(void) 281 { 282 #if USE_HARDWARE_SPI //使用硬件SPI 283 SPI2_Init(); 284 #else 285 LCD_GPIOInit();//使用模擬SPI 286 #endif 287 288 LCD_RESET(); //液晶屏復位 289 290 //************* Start Initial Sequence **********// 291 //開始初始化液晶屏 292 LCD_WR_REG(0x11);//Sleep exit 293 delay_ms (120); 294 //ST7735R Frame Rate 295 LCD_WR_REG(0xB1); 296 LCD_WR_DATA(0x01); 297 LCD_WR_DATA(0x2C); 298 LCD_WR_DATA(0x2D); 299 300 LCD_WR_REG(0xB2); 301 LCD_WR_DATA(0x01); 302 LCD_WR_DATA(0x2C); 303 LCD_WR_DATA(0x2D); 304 305 LCD_WR_REG(0xB3); 306 LCD_WR_DATA(0x01); 307 LCD_WR_DATA(0x2C); 308 LCD_WR_DATA(0x2D); 309 LCD_WR_DATA(0x01); 310 LCD_WR_DATA(0x2C); 311 LCD_WR_DATA(0x2D); 312 313 LCD_WR_REG(0xB4); //Column inversion 314 LCD_WR_DATA(0x07); 315 316 //ST7735R Power Sequence 317 LCD_WR_REG(0xC0); 318 LCD_WR_DATA(0xA2); 319 LCD_WR_DATA(0x02); 320 LCD_WR_DATA(0x84); 321 LCD_WR_REG(0xC1); 322 LCD_WR_DATA(0xC5); 323 324 LCD_WR_REG(0xC2); 325 LCD_WR_DATA(0x0A); 326 LCD_WR_DATA(0x00); 327 328 LCD_WR_REG(0xC3); 329 LCD_WR_DATA(0x8A); 330 LCD_WR_DATA(0x2A); 331 LCD_WR_REG(0xC4); 332 LCD_WR_DATA(0x8A); 333 LCD_WR_DATA(0xEE); 334 335 LCD_WR_REG(0xC5); //VCOM 336 LCD_WR_DATA(0x0E); 337 338 LCD_WR_REG(0x36); //MX, MY, RGB mode 339 LCD_WR_DATA(0xC8); 340 341 //ST7735R Gamma Sequence 342 LCD_WR_REG(0xe0); 343 LCD_WR_DATA(0x0f); 344 LCD_WR_DATA(0x1a); 345 LCD_WR_DATA(0x0f); 346 LCD_WR_DATA(0x18); 347 LCD_WR_DATA(0x2f); 348 LCD_WR_DATA(0x28); 349 LCD_WR_DATA(0x20); 350 LCD_WR_DATA(0x22); 351 LCD_WR_DATA(0x1f); 352 LCD_WR_DATA(0x1b); 353 LCD_WR_DATA(0x23); 354 LCD_WR_DATA(0x37); 355 LCD_WR_DATA(0x00); 356 LCD_WR_DATA(0x07); 357 LCD_WR_DATA(0x02); 358 LCD_WR_DATA(0x10); 359 360 LCD_WR_REG(0xe1); 361 LCD_WR_DATA(0x0f); 362 LCD_WR_DATA(0x1b); 363 LCD_WR_DATA(0x0f); 364 LCD_WR_DATA(0x17); 365 LCD_WR_DATA(0x33); 366 LCD_WR_DATA(0x2c); 367 LCD_WR_DATA(0x29); 368 LCD_WR_DATA(0x2e); 369 LCD_WR_DATA(0x30); 370 LCD_WR_DATA(0x30); 371 LCD_WR_DATA(0x39); 372 LCD_WR_DATA(0x3f); 373 LCD_WR_DATA(0x00); 374 LCD_WR_DATA(0x07); 375 LCD_WR_DATA(0x03); 376 LCD_WR_DATA(0x10); 377 378 LCD_WR_REG(0x2a); 379 LCD_WR_DATA(0x00); 380 LCD_WR_DATA(0x00); 381 LCD_WR_DATA(0x00); 382 LCD_WR_DATA(0x7f); 383 384 LCD_WR_REG(0x2b); 385 LCD_WR_DATA(0x00); 386 LCD_WR_DATA(0x00); 387 LCD_WR_DATA(0x00); 388 LCD_WR_DATA(0x9f); 389 390 LCD_WR_REG(0xF0); //Enable test command 391 LCD_WR_DATA(0x01); 392 LCD_WR_REG(0xF6); //Disable ram power save mode 393 LCD_WR_DATA(0x00); 394 395 LCD_WR_REG(0x3A); //65k mode 396 LCD_WR_DATA(0x05); 397 LCD_WR_REG(0x29);//Display on 398 399 LCD_SetParam();//設置LCD參數 400 LCD_LED_SET;//點亮背光 401 //LCD_Clear(WHITE); 402 } 403 //****************************************************************** 404 //函數名: LCD_Clear 405 //功能: LCD全屏填充清屏函數 406 //輸入參數:Color:要清屏的填充色 407 //返回值: 無 408 //修改記錄:無 409 //****************************************************************** 410 void LCD_Clear(u16 Color) 411 { 412 u16 i,j; 413 LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1); 414 for(i=0;i<lcddev.width;i++) 415 { 416 for(j=0;j<lcddev.height;j++) 417 LCD_WR_DATA_16Bit(Color); //寫入數據 418 } 419 } 420 /************************************************* 421 函數名:LCD_SetWindows 422 功能:設置lcd顯示窗口,在此區域寫點數據自動換行 423 入口參數:xy起點和終點 424 返回值:無 425 *************************************************/ 426 void LCD_SetWindows(u16 xStar, u16 yStar,u16 xEnd,u16 yEnd) 427 { 428 #if USE_HORIZONTAL==1 //使用橫屏 429 LCD_WR_REG(lcddev.setxcmd); 430 LCD_WR_DATA(xStar>>8); 431 LCD_WR_DATA(0x00FF&xStar+3); 432 LCD_WR_DATA(xEnd>>8); 433 LCD_WR_DATA(0x00FF&xEnd+3); 434 435 LCD_WR_REG(lcddev.setycmd); 436 LCD_WR_DATA(yStar>>8); 437 LCD_WR_DATA(0x00FF&yStar+2); 438 LCD_WR_DATA(yEnd>>8); 439 LCD_WR_DATA(0x00FF&yEnd+2); 440 441 #else 442 443 LCD_WR_REG(lcddev.setxcmd); 444 LCD_WR_DATA(xStar>>8); 445 LCD_WR_DATA(0x00FF&xStar+2); 446 LCD_WR_DATA(xEnd>>8); 447 LCD_WR_DATA(0x00FF&xEnd+2); 448 449 LCD_WR_REG(lcddev.setycmd); 450 LCD_WR_DATA(yStar>>8); 451 LCD_WR_DATA(0x00FF&yStar+3); 452 LCD_WR_DATA(yEnd>>8); 453 LCD_WR_DATA(0x00FF&yEnd+3); 454 #endif 455 456 LCD_WriteRAM_Prepare(); //開始寫入GRAM 457 } 458 459 /************************************************* 460 函數名:LCD_SetCursor 461 功能:設置光標位置 462 入口參數:xy坐標 463 返回值:無 464 *************************************************/ 465 void LCD_SetCursor(u16 Xpos, u16 Ypos) 466 { 467 LCD_SetWindows(Xpos,Ypos,Xpos,Ypos); 468 } 469 470 //設置LCD參數 471 //方便進行橫豎屏模式切換 472 void LCD_SetParam(void) 473 { 474 lcddev.wramcmd=0x2C; 475 #if USE_HORIZONTAL==1 //使用橫屏 476 lcddev.dir=1;//橫屏 477 lcddev.width=128; 478 lcddev.height=128; 479 lcddev.setxcmd=0x2A; 480 lcddev.setycmd=0x2B; 481 LCD_WriteReg(0x36,0xA8); 482 483 #else//豎屏 484 lcddev.dir=0;//豎屏 485 lcddev.width=128; 486 lcddev.height=128; 487 lcddev.setxcmd=0x2A; 488 lcddev.setycmd=0x2B; 489 LCD_WriteReg(0x36,0xC8); 490 #endif 491 }

1 #ifndef __LCD_H 2 #define __LCD_H 3 #include "sys.h" 4 #include "stdlib.h" 5 6 ////////////////////////////////////////////////////////////////////////////////// 7 /**************************************************************************************************** 8 //=======================================液晶屏數據線接線==========================================// 9 //CS 接PB11 //片選信號 10 //CLK 接PB13 //SPI時鍾信號 11 //SDI(DIN) 接PB15 //SPI總線數據信號 12 //=======================================液晶屏控制線接線==========================================// 13 //LED 接PB9 //背光控制信號,高電平點亮 14 //RS(D/C) 接PB10 //寄存器/數據選擇信號(RS=0數據總線發送的是指令;RS=1數據總線發送的是像素數據) 15 //RST 接PB12 //液晶屏復位信號,低電平復位 16 ///////////////////////////////////////////////////////////////////////////////////////////////// 17 //==================================如何精簡到只需要3個IO=======================================// 18 //1.CS信號可以精簡,不作SPI復用片選可將CS接地常低,節省1個IO 19 //2.LED背光控制信號可以接高電平3.3V背光常亮,節省1個IO 20 //3.RST復位信號可以接到單片機的復位端,利用系統上電復位,節省1個IO 21 //==================================如何切換橫豎屏顯示=======================================// 22 //打開lcd.h頭文件,修改宏#define USE_HORIZONTAL 值為0使用豎屏模式.1,使用橫屏模式 23 //===========================如何切換模擬SPI總線驅動和硬件SPI總線驅動=========================// 24 //打開lcd.h頭文件,修改宏#define USE_HARDWARE_SPI 值為0使用模擬SPI總線.1,使用硬件SPI總線 25 **************************************************************************************************/ 26 27 //LCD重要參數集 28 typedef struct 29 { 30 u16 width; //LCD 寬度 31 u16 height; //LCD 高度 32 u16 id; //LCD ID 33 u8 dir; //橫屏還是豎屏控制:0,豎屏;1,橫屏。 34 u16 wramcmd; //開始寫gram指令 35 u16 setxcmd; //設置x坐標指令 36 u16 setycmd; //設置y坐標指令 37 }_lcd_dev; 38 39 //LCD參數 40 extern _lcd_dev lcddev; //管理LCD重要參數 41 /////////////////////////////////////用戶配置區/////////////////////////////////// 42 //支持橫豎屏快速定義切換,支持8/16位模式切換 43 #define USE_HORIZONTAL 0 //定義是否使用橫屏 0,不使用.1,使用. 44 //使用硬件SPI 還是模擬SPI作為測試 45 #define USE_HARDWARE_SPI 1 //1:Enable Hardware SPI;0:USE Soft SPI 46 ////////////////////////////////////////////////////////////////////////////////// 47 //定義LCD的尺寸 48 #if USE_HORIZONTAL==1 //使用橫屏 49 #define LCD_W 320 50 #define LCD_H 240 51 #else 52 #define LCD_W 240 53 #define LCD_H 320 54 #endif 55 56 //TFTLCD部分外要調用的函數 57 extern u16 POINT_COLOR;//默認紅色 58 extern u16 BACK_COLOR; //背景顏色.默認為白色 59 60 //////////////////////////////////////////////////////////////////// 61 //-----------------LCD端口定義---------------- 62 //QDtech全系列模塊采用了三極管控制背光亮滅,用戶也可以接PWM調節背光亮度 63 #define LCD_LED GPIO_Pin_9 //PB9 連接至TFT -LED 64 //接口定義在Lcd_Driver.h內定義,請根據接線修改並修改相應IO初始化LCD_GPIO_Init() 65 #define LCD_CTRL GPIOB //定義TFT數據端口 66 #define LCD_RS GPIO_Pin_10 //PB10連接至TFT --RS 67 #define LCD_CS GPIO_Pin_11 //PB11 連接至TFT --CS 68 #define LCD_RST GPIO_Pin_12 //PB12連接至TFT --RST 69 #define LCD_SCL GPIO_Pin_13 //PB13連接至TFT -- CLK 70 #define LCD_SDA GPIO_Pin_15 //PB15連接至TFT - SDI 71 72 ////////////////////////////////////////////////////////////////////// 73 //液晶控制口置1操作語句宏定義 74 #define LCD_CS_SET LCD_CTRL->BSRR=LCD_CS 75 #define LCD_RS_SET LCD_CTRL->BSRR=LCD_RS 76 #define LCD_SDA_SET LCD_CTRL->BSRR=LCD_SDA 77 #define LCD_SCL_SET LCD_CTRL->BSRR=LCD_SCL 78 #define LCD_RST_SET LCD_CTRL->BSRR=LCD_RST 79 #define LCD_LED_SET LCD_CTRL->BSRR=LCD_LED 80 81 //液晶控制口置0操作語句宏定義 82 #define LCD_CS_CLR LCD_CTRL->BRR=LCD_CS 83 #define LCD_RS_CLR LCD_CTRL->BRR=LCD_RS 84 #define LCD_SDA_CLR LCD_CTRL->BRR=LCD_SDA 85 #define LCD_SCL_CLR LCD_CTRL->BRR=LCD_SCL 86 #define LCD_RST_CLR LCD_CTRL->BRR=LCD_RST 87 #define LCD_LED_CLR LCD_CTRL->BRR=LCD_LED 88 89 //畫筆顏色 90 #define WHITE 0xFFFF 91 #define BLACK 0x0000 92 #define BLUE 0x001F 93 #define BRED 0XF81F 94 #define GRED 0XFFE0 95 #define GBLUE 0X07FF 96 #define RED 0xF800 97 #define MAGENTA 0xF81F 98 #define GREEN 0x07E0 99 #define CYAN 0x7FFF 100 #define YELLOW 0xFFE0 101 #define BROWN 0XBC40 //棕色 102 #define BRRED 0XFC07 //棕紅色 103 #define GRAY 0X8430 //灰色 104 //GUI顏色 105 106 #define DARKBLUE 0X01CF //深藍色 107 #define LIGHTBLUE 0X7D7C //淺藍色 108 #define GRAYBLUE 0X5458 //灰藍色 109 //以上三色為PANEL的顏色 110 111 #define LIGHTGREEN 0X841F //淺綠色 112 //#define LIGHTGRAY 0XEF5B //淺灰色(PANNEL) 113 #define LGRAY 0XC618 //淺灰色(PANNEL),窗體背景色 114 115 #define LGRAYBLUE 0XA651 //淺灰藍色(中間層顏色) 116 #define LBBLUE 0X2B12 //淺棕藍色(選擇條目的反色) 117 118 extern u16 BACK_COLOR, POINT_COLOR ; 119 120 void LCD_Init(void); 121 void LCD_DisplayOn(void); 122 void LCD_DisplayOff(void); 123 void LCD_Clear(u16 Color); 124 void LCD_SetCursor(u16 Xpos, u16 Ypos); 125 void LCD_DrawPoint(u16 x,u16 y);//畫點 126 u16 LCD_ReadPoint(u16 x,u16 y); //讀點 127 void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); 128 void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2); 129 void LCD_SetWindows(u16 xStar, u16 yStar,u16 xEnd,u16 yEnd); 130 void LCD_DrawPoint_16Bit(u16 color); 131 u16 LCD_RD_DATA(void);//讀取LCD數據 132 void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue); 133 void LCD_WR_DATA(u8 data); 134 void LCD_WR_DATA_16Bit(u16 data); 135 u16 LCD_ReadReg(u8 LCD_Reg); 136 void LCD_WriteRAM_Prepare(void); 137 void LCD_WriteRAM(u16 RGB_Code); 138 u16 LCD_ReadRAM(void); 139 u16 LCD_BGR2RGB(u16 c); 140 void LCD_SetParam(void); 141 142 143 #endif 144 145

1 #include "lcd.h" 2 #include "string.h" 3 #include "font.h" 4 #include "delay.h" 5 #include "gui.h" 6 7 //****************************************************************** 8 //函數名: GUI_DrawPoint 9 //功能: GUI描繪一個點 10 //輸入參數:x:光標位置x坐標 11 // y:光標位置y坐標 12 // color:要填充的顏色 13 //返回值: 無 14 //修改記錄:無 15 //****************************************************************** 16 void GUI_DrawPoint(u16 x,u16 y,u16 color) 17 { 18 LCD_SetCursor(x,y);//設置光標位置 19 LCD_WR_DATA_16Bit(color); 20 } 21 22 //****************************************************************** 23 //函數名: LCD_Fill 24 //功能: 在指定區域內填充顏色 25 //輸入參數:sx:指定區域開始點x坐標 26 // sy:指定區域開始點y坐標 27 // ex:指定區域結束點x坐標 28 // ey:指定區域結束點y坐標 29 // color:要填充的顏色 30 //返回值: 無 31 //修改記錄:無 32 //****************************************************************** 33 void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color) 34 { 35 36 u16 i,j; 37 u16 width=ex-sx+1; //得到填充的寬度 38 u16 height=ey-sy+1; //高度 39 LCD_SetWindows(sx,sy,ex-1,ey-1);//設置顯示窗口 40 for(i=0;i<height;i++) 41 { 42 for(j=0;j<width;j++) 43 LCD_WR_DATA_16Bit(color); //寫入數據 44 } 45 46 LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢復窗口設置為全屏 47 } 48 49 //****************************************************************** 50 //函數名: LCD_DrawLine 51 //功能: GUI畫線 52 //輸入參數:x1,y1:起點坐標 53 // x2,y2:終點坐標 54 //返回值: 無 55 //修改記錄:無 56 //****************************************************************** 57 void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2) 58 { 59 u16 t; 60 int xerr=0,yerr=0,delta_x,delta_y,distance; 61 int incx,incy,uRow,uCol; 62 63 delta_x=x2-x1; //計算坐標增量 64 delta_y=y2-y1; 65 uRow=x1; 66 uCol=y1; 67 if(delta_x>0)incx=1; //設置單步方向 68 else if(delta_x==0)incx=0;//垂直線 69 else {incx=-1;delta_x=-delta_x;} 70 if(delta_y>0)incy=1; 71 else if(delta_y==0)incy=0;//水平線 72 else{incy=-1;delta_y=-delta_y;} 73 if( delta_x>delta_y)distance=delta_x; //選取基本增量坐標軸 74 else distance=delta_y; 75 for(t=0;t<=distance+1;t++ )//畫線輸出 76 { 77 LCD_DrawPoint(uRow,uCol);//畫點 78 xerr+=delta_x ; 79 yerr+=delta_y ; 80 if(xerr>distance) 81 { 82 xerr-=distance; 83 uRow+=incx; 84 } 85 if(yerr>distance) 86 { 87 yerr-=distance; 88 uCol+=incy; 89 } 90 } 91 } 92 93 //****************************************************************** 94 //函數名: LCD_DrawRectangle 95 //功能: GUI畫矩形(非填充) 96 //輸入參數:(x1,y1),(x2,y2):矩形的對角坐標 97 //返回值: 無 98 //修改記錄:無 99 //****************************************************************** 100 void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2) 101 { 102 LCD_DrawLine(x1,y1,x2,y1); 103 LCD_DrawLine(x1,y1,x1,y2); 104 LCD_DrawLine(x1,y2,x2,y2); 105 LCD_DrawLine(x2,y1,x2,y2); 106 } 107 108 //****************************************************************** 109 //函數名: LCD_DrawFillRectangle 110 //功能: GUI畫矩形(填充) 111 //輸入參數:(x1,y1),(x2,y2):矩形的對角坐標 112 //返回值: 無 113 //修改記錄:無 114 //****************************************************************** 115 void LCD_DrawFillRectangle(u16 x1, u16 y1, u16 x2, u16 y2) 116 { 117 LCD_Fill(x1,y1,x2,y2,POINT_COLOR); 118 119 } 120 121 //****************************************************************** 122 //函數名: _draw_circle_8 123 //功能: 8對稱性畫圓算法(內部調用) 124 //輸入參數:(xc,yc) :圓中心坐標 125 // (x,y):光標相對於圓心的坐標 126 // c:填充的顏色 127 //返回值: 無 128 //修改記錄:無 129 //****************************************************************** 130 void _draw_circle_8(int xc, int yc, int x, int y, u16 c) 131 { 132 GUI_DrawPoint(xc + x, yc + y, c); 133 134 GUI_DrawPoint(xc - x, yc + y, c); 135 136 GUI_DrawPoint(xc + x, yc - y, c); 137 138 GUI_DrawPoint(xc - x, yc - y, c); 139 140 GUI_DrawPoint(xc + y, yc + x, c); 141 142 GUI_DrawPoint(xc - y, yc + x, c); 143 144 GUI_DrawPoint(xc + y, yc - x, c); 145 146 GUI_DrawPoint(xc - y, yc - x, c); 147 } 148 149 //****************************************************************** 150 //函數名: gui_circle 151 //功能: 在指定位置畫一個指定大小的圓(填充) 152 //輸入參數:(xc,yc) :圓中心坐標 153 // c:填充的顏色 154 // r:圓半徑 155 // fill:填充判斷標志,1-填充,0-不填充 156 //返回值: 無 157 //修改記錄:無 158 //****************************************************************** 159 void gui_circle(int xc, int yc,u16 c,int r, int fill) 160 { 161 int x = 0, y = r, yi, d; 162 163 d = 3 - 2 * r; 164 165 166 if (fill) 167 { 168 // 如果填充(畫實心圓) 169 while (x <= y) { 170 for (yi = x; yi <= y; yi++) 171 _draw_circle_8(xc, yc, x, yi, c); 172 173 if (d < 0) { 174 d = d + 4 * x + 6; 175 } else { 176 d = d + 4 * (x - y) + 10; 177 y--; 178 } 179 x++; 180 } 181 } else 182 { 183 // 如果不填充(畫空心圓) 184 while (x <= y) { 185 _draw_circle_8(xc, yc, x, y, c); 186 if (d < 0) { 187 d = d + 4 * x + 6; 188 } else { 189 d = d + 4 * (x - y) + 10; 190 y--; 191 } 192 x++; 193 } 194 } 195 } 196 197 //****************************************************************** 198 //函數名: LCD_ShowChar 199 //功能: 顯示單個英文字符 200 //輸入參數:(x,y):字符顯示位置起始坐標 201 // fc:前置畫筆顏色 202 // bc:背景顏色 203 // num:數值(0-94) 204 // size:字體大小 205 // mode:模式 0,填充模式;1,疊加模式 206 //返回值: 無 207 //修改記錄:無 208 //****************************************************************** 209 void LCD_ShowChar(u16 x,u16 y,u16 fc, u16 bc, u8 num,u8 size,u8 mode) 210 { 211 u8 temp; 212 u8 pos,t; 213 u16 colortemp=POINT_COLOR; 214 215 num=num-' ';//得到偏移后的值 216 LCD_SetWindows(x,y,x+size/2-1,y+size-1);//設置單個文字顯示窗口 217 if(!mode) //非疊加方式 218 { 219 220 for(pos=0;pos<size;pos++) 221 { 222 if(size==12)temp=asc2_1206[num][pos];//調用1206字體 223 else temp=asc2_1608[num][pos]; //調用1608字體 224 for(t=0;t<size/2;t++) 225 { 226 if(temp&0x01)LCD_WR_DATA(fc); 227 else LCD_WR_DATA(bc); 228 temp>>=1; 229 230 } 231 232 } 233 }else//疊加方式 234 { 235 for(pos=0;pos<size;pos++) 236 { 237 if(size==12)temp=asc2_1206[num][pos];//調用1206字體 238 else temp=asc2_1608[num][pos]; //調用1608字體 239 for(t=0;t<size/2;t++) 240 { 241 POINT_COLOR=fc; 242 if(temp&0x01)LCD_DrawPoint(x+t,y+pos);//畫一個點 243 temp>>=1; 244 } 245 } 246 } 247 POINT_COLOR=colortemp; 248 LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢復窗口為全屏 249 } 250 251 //****************************************************************** 252 //函數名: LCD_ShowChar 253 //功能: 顯示單個英文字符 254 //輸入參數:(x,y):字符顯示位置起始坐標 255 // fc:前置畫筆顏色 256 // bc:背景顏色 257 // num:數值(0-94) 258 // size:字體大小 259 // mode:模式 0,填充模式;1,疊加模式 260 //返回值: 無 261 //修改記錄:無 262 //****************************************************************** 263 void LCD_ShowNum2412(u16 x,u16 y,u16 fc, u16 bc,u8 *p ,u8 size,u8 mode) 264 { 265 u16 temp; 266 u8 pos,t; 267 u16 colortemp=POINT_COLOR; 268 u16 x0=x; 269 u16 y0=y; 270 u8 num=0; 271 272 273 while((*p<='~')&&(*p>=' '))//判斷是不是非法字符! 274 { 275 276 if(x>(lcddev.width-1)||y>(lcddev.height-1)) 277 return; 278 num=*p; 279 if(':'==num) //特殊字符":" 280 num=10; 281 else if('.'==num)//特殊字符"." 282 num=11; 283 else //純數字 284 num=num-'0'; 285 x0=x; 286 287 for(pos=0;pos<48;pos++) 288 { 289 temp=asc2_2412[num][pos]; 290 for(t=0;t<8;t++) 291 { 292 POINT_COLOR=fc; 293 if(temp&0x80)LCD_DrawPoint(x,y);//畫一個點 294 //else LCD_WR_DATA_16Bit(bc); 295 temp<<=1; 296 x++; 297 if((x-x0)==12) 298 { 299 x=x0; 300 y++; 301 break; 302 } 303 } 304 } 305 if(num<10) 306 x+=16; //人為控制字距,使得排版更好看,原值為12 307 else 308 x+=8; //人為控制字距,使得排版更好看,原值為12 309 310 y=y0; 311 p++; 312 } 313 POINT_COLOR=colortemp; 314 } 315 316 317 //****************************************************************** 318 //函數名: LCD_ShowString 319 //功能: 顯示英文字符串 320 //輸入參數:x,y :起點坐標 321 // size:字體大小 322 // *p:字符串起始地址 323 // mode:模式 0,填充模式;1,疊加模式 324 //返回值: 無 325 //修改記錄:無 326 //****************************************************************** 327 void LCD_ShowString(u16 x,u16 y,u8 size,u8 *p,u8 mode) 328 { 329 while((*p<='~')&&(*p>=' '))//判斷是不是非法字符! 330 { 331 if(x>(lcddev.width-1)||y>(lcddev.height-1)) 332 return; 333 LCD_ShowChar(x,y,POINT_COLOR,BACK_COLOR,*p,size,mode); 334 x+=size/2; 335 p++; 336 } 337 } 338 339 //****************************************************************** 340 //函數名: mypow 341 //功能: 求m的n次方(gui內部調用) 342 //輸入參數:m:乘數 343 // n:冪 344 //返回值: m的n次方 345 //修改記錄:無 346 //****************************************************************** 347 u32 mypow(u8 m,u8 n) 348 { 349 u32 result=1; 350 while(n--)result*=m; 351 return result; 352 } 353 354 //****************************************************************** 355 //函數名: LCD_ShowNum 356 //功能: 顯示單個數字變量值 357 //輸入參數:x,y :起點坐標 358 // len :指定顯示數字的位數 359 // size:字體大小(12,16) 360 // color:顏色 361 // num:數值(0~4294967295) 362 //返回值: 無 363 //修改記錄:無 364 //****************************************************************** 365 void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size) 366 { 367 u8 t,temp; 368 u8 enshow=0; 369 for(t=0;t<len;t++) 370 { 371 temp=(num/mypow(10,len-t-1))%10; 372 if(enshow==0&&t<(len-1)) 373 { 374 if(temp==0) 375 { 376 LCD_ShowChar(x+(size/2)*t,y,POINT_COLOR,BACK_COLOR,' ',size,1); 377 continue; 378 }else enshow=1; 379 380 } 381 LCD_ShowChar(x+(size/2)*t,y,POINT_COLOR,BACK_COLOR,temp+'0',size,1); 382 } 383 } 384 385 //****************************************************************** 386 //函數名: GUI_DrawFont16 387 //功能: 顯示單個16X16中文字體 388 //輸入參數:x,y :起點坐標 389 // fc:前置畫筆顏色 390 // bc:背景顏色 391 // s:字符串地址 392 // mode:模式 0,填充模式;1,疊加模式 393 //返回值: 無 394 //修改記錄:無 395 //****************************************************************** 396 void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) 397 { 398 u8 i,j; 399 u16 k; 400 u16 HZnum; 401 u16 x0=x; 402 HZnum=sizeof(tfont16)/sizeof(typFNT_GB16); //自動統計漢字數目 403 404 405 for (k=0;k<HZnum;k++) 406 { 407 if ((tfont16[k].Index[0]==*(s))&&(tfont16[k].Index[1]==*(s+1))) 408 { LCD_SetWindows(x,y,x+16-1,y+16-1); 409 for(i=0;i<16*2;i++) 410 { 411 for(j=0;j<8;j++) 412 { 413 if(!mode) //非疊加方式 414 { 415 if(tfont16[k].Msk[i]&(0x80>>j)) LCD_WR_DATA_16Bit(fc); 416 else LCD_WR_DATA_16Bit(bc); 417 } 418 else 419 { 420 POINT_COLOR=fc; 421 if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//畫一個點 422 x++; 423 if((x-x0)==16) 424 { 425 x=x0; 426 y++; 427 break; 428 } 429 } 430 431 } 432 433 } 434 435 436 } 437 continue; //查找到對應點陣字庫立即退出,防止多個漢字重復取模帶來影響 438 } 439 440 LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢復窗口為全屏 441 } 442 443 //****************************************************************** 444 //函數名: GUI_DrawFont24 445 //功能: 顯示單個24X24中文字體 446 //輸入參數:x,y :起點坐標 447 // fc:前置畫筆顏色 448 // bc:背景顏色 449 // s:字符串地址 450 // mode:模式 0,填充模式;1,疊加模式 451 //返回值: 無 452 //修改記錄:無 453 //****************************************************************** 454 void GUI_DrawFont24(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) 455 { 456 u8 i,j; 457 u16 k; 458 u16 HZnum; 459 u16 x0=x; 460 HZnum=sizeof(tfont24)/sizeof(typFNT_GB24); //自動統計漢字數目 461 462 for (k=0;k<HZnum;k++) 463 { 464 if ((tfont24[k].Index[0]==*(s))&&(tfont24[k].Index[1]==*(s+1))) 465 { LCD_SetWindows(x,y,x+24-1,y+24-1); 466 for(i=0;i<24*3;i++) 467 { 468 for(j=0;j<8;j++) 469 { 470 if(!mode) //非疊加方式 471 { 472 if(tfont24[k].Msk[i]&(0x80>>j)) LCD_WR_DATA_16Bit(fc); 473 else LCD_WR_DATA_16Bit(bc); 474 } 475 else 476 { 477 POINT_COLOR=fc; 478 if(tfont24[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//畫一個點 479 x++; 480 if((x-x0)==24) 481 { 482 x=x0; 483 y++; 484 break; 485 } 486 } 487 } 488 } 489 490 491 } 492 continue; //查找到對應點陣字庫立即退出,防止多個漢字重復取模帶來影響 493 } 494 495 LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢復窗口為全屏 496 } 497 498 //****************************************************************** 499 //函數名: GUI_DrawFont32 500 //功能: 顯示單個32X32中文字體 501 //輸入參數:x,y :起點坐標 502 // fc:前置畫筆顏色 503 // bc:背景顏色 504 // s:字符串地址 505 // mode:模式 0,填充模式;1,疊加模式 506 //返回值: 無 507 //修改記錄:無 508 //****************************************************************** 509 void GUI_DrawFont32(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode) 510 { 511 u8 i,j; 512 u16 k; 513 u16 HZnum; 514 u16 x0=x; 515 HZnum=sizeof(tfont32)/sizeof(typFNT_GB32); //自動統計漢字數目 516 for (k=0;k<HZnum;k++) 517 { 518 if ((tfont32[k].Index[0]==*(s))&&(tfont32[k].Index[1]==*(s+1))) 519 { LCD_SetWindows(x,y,x+32-1,y+32-1); 520 for(i=0;i<32*4;i++) 521 { 522 for(j=0;j<8;j++) 523 { 524 if(!mode) //非疊加方式 525 { 526 if(tfont32[k].Msk[i]&(0x80>>j)) LCD_WR_DATA_16Bit(fc); 527 else LCD_WR_DATA_16Bit(bc); 528 } 529 else 530 { 531 POINT_COLOR=fc; 532 if(tfont32[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//畫一個點 533 x++; 534 if((x-x0)==32) 535 { 536 x=x0; 537 y++; 538 break; 539 } 540 } 541 } 542 } 543 544 545 } 546 continue; //查找到對應點陣字庫立即退出,防止多個漢字重復取模帶來影響 547 } 548 549 LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢復窗口為全屏 550 } 551 552 //****************************************************************** 553 //函數名: Show_Str 554 //功能: 顯示一個字符串,包含中英文顯示 555 //輸入參數:x,y :起點坐標 556 // fc:前置畫筆顏色 557 // bc:背景顏色 558 // str :字符串 559 // size:字體大小 560 // mode:模式 0,填充模式;1,疊加模式 561 //返回值: 無 562 //修改記錄:無 563 //****************************************************************** 564 void Show_Str(u16 x, u16 y, u16 fc, u16 bc, u8 *str,u8 size,u8 mode) 565 { 566 u16 x0=x; 567 u8 bHz=0; //字符或者中文 568 while(*str!=0)//數據未結束 569 { 570 if(!bHz) 571 { 572 if(x>(lcddev.width-size/2)||y>(lcddev.height-size)) 573 return; 574 if(*str>0x80)bHz=1;//中文 575 else //字符 576 { 577 if(*str==0x0D)//換行符號 578 { 579 y+=size; 580 x=x0; 581 str++; 582 } 583 else 584 { 585 if(size==12||size==16) 586 { 587 LCD_ShowChar(x,y,fc,bc,*str,size,mode); 588 x+=size/2; //字符,為全字的一半 589 } 590 else//字庫中沒有集成16X32的英文字體,用8X16代替 591 { 592 LCD_ShowChar(x,y,fc,bc,*str,16,mode); 593 x+=8; //字符,為全字的一半 594 } 595 } 596 str++; 597 598 } 599 }else//中文 600 { 601 if(x>(lcddev.width-size)||y>(lcddev.height-size)) 602 return; 603 bHz=0;//有漢字庫 604 if(size==32) 605 GUI_DrawFont32(x,y,fc,bc,str,mode); 606 else if(size==24) 607 GUI_DrawFont24(x,y,fc,bc,str,mode); 608 else 609 GUI_DrawFont16(x,y,fc,bc,str,mode); 610 611 str+=2; 612 x+=size;//下一個漢字偏移 613 } 614 } 615 } 616 617 //****************************************************************** 618 //函數名: Gui_StrCenter 619 //功能: 居中顯示一個字符串,包含中英文顯示 620 //輸入參數:x,y :起點坐標 621 // fc:前置畫筆顏色 622 // bc:背景顏色 623 // str :字符串 624 // size:字體大小 625 // mode:模式 0,填充模式;1,疊加模式 626 //返回值: 無 627 //修改記錄:無 628 //****************************************************************** 629 void Gui_StrCenter(u16 x, u16 y, u16 fc, u16 bc, u8 *str,u8 size,u8 mode) 630 { 631 u16 len=strlen((const char *)str); 632 u16 x1=(lcddev.width-len*8)/2; 633 Show_Str(x+x1,y,fc,bc,str,size,mode); 634 } 635 636 //****************************************************************** 637 //函數名: Gui_Drawbmp16 638 //功能: 顯示一副16位BMP圖像 639 //輸入參數:x,y :起點坐標 640 // *p :圖像數組起始地址 641 //返回值: 無 642 //修改記錄:無 643 //****************************************************************** 644 void Gui_Drawbmp16(u16 x,u16 y,const unsigned char *p) //顯示40*40 QQ圖片 645 { 646 int i; 647 unsigned char picH,picL; 648 LCD_SetWindows(x,y,x+40-1,y+40-1);//窗口設置 649 for(i=0;i<40*40;i++) 650 { 651 picL=*(p+i*2); //數據低位在前 652 picH=*(p+i*2+1); 653 LCD_WR_DATA_16Bit(picH<<8|picL); 654 } 655 LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢復顯示窗口為全屏 656 657 }

1 #ifndef __GUI_H__ 2 #define __GUI_H__ 3 4 void GUI_DrawPoint(u16 x,u16 y,u16 color); 5 void LCD_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u16 color); 6 void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); 7 void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2); 8 void Draw_Circle(u16 x0,u16 y0,u16 fc,u8 r); 9 void LCD_ShowChar(u16 x,u16 y,u16 fc, u16 bc, u8 num,u8 size,u8 mode); 10 void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size); 11 void LCD_Show2Num(u16 x,u16 y,u16 num,u8 len,u8 size,u8 mode); 12 void LCD_ShowString(u16 x,u16 y,u8 size,u8 *p,u8 mode); 13 void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode); 14 void GUI_DrawFont24(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode); 15 void GUI_DrawFont32(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode); 16 void Show_Str(u16 x, u16 y, u16 fc, u16 bc, u8 *str,u8 size,u8 mode); 17 void Gui_Drawbmp16(u16 x,u16 y,const unsigned char *p); //顯示40*40 QQ圖片 18 void gui_circle(int xc, int yc,u16 c,int r, int fill); 19 void Gui_StrCenter(u16 x, u16 y, u16 fc, u16 bc, u8 *str,u8 size,u8 mode); 20 void LCD_DrawFillRectangle(u16 x1, u16 y1, u16 x2, u16 y2); 21 void LCD_ShowNum2412(u16 x,u16 y,u16 fc, u16 bc,u8 *p ,u8 size,u8 mode); 22 #endif

1 #ifndef __FONT_H 2 #define __FONT_H 3 //常用ASCII表 4 //偏移量32 5 //ASCII字符集 6 //偏移量32 7 //大小:12*6 8 const unsigned char asc2_1206[95][12]={ 9 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ 10 {0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x04,0x00,0x00},/*"!",1*/ 11 {0x00,0x14,0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/ 12 {0x00,0x00,0x14,0x14,0x3F,0x14,0x0A,0x3F,0x0A,0x0A,0x00,0x00},/*"#",3*/ 13 {0x00,0x04,0x1E,0x15,0x05,0x06,0x0C,0x14,0x15,0x0F,0x04,0x00},/*"$",4*/ 14 {0x00,0x00,0x12,0x15,0x0D,0x0A,0x14,0x2C,0x2A,0x12,0x00,0x00},/*"%",5*/ 15 {0x00,0x00,0x04,0x0A,0x0A,0x1E,0x15,0x15,0x09,0x36,0x00,0x00},/*"&",6*/ 16 {0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/ 17 {0x00,0x20,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x20,0x00},/*"(",8*/ 18 {0x00,0x02,0x04,0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x02,0x00},/*")",9*/ 19 {0x00,0x00,0x00,0x04,0x15,0x0E,0x0E,0x15,0x04,0x00,0x00,0x00},/*"*",10*/ 20 {0x00,0x00,0x04,0x04,0x04,0x1F,0x04,0x04,0x04,0x00,0x00,0x00},/*"+",11*/ 21 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x01},/*",",12*/ 22 {0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/ 23 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00},/*".",14*/ 24 {0x00,0x10,0x08,0x08,0x08,0x04,0x04,0x02,0x02,0x02,0x01,0x00},/*"/",15*/ 25 {0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00,0x00},/*"0",16*/ 26 {0x00,0x00,0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"1",17*/ 27 {0x00,0x00,0x0E,0x11,0x11,0x08,0x04,0x02,0x01,0x1F,0x00,0x00},/*"2",18*/ 28 {0x00,0x00,0x0E,0x11,0x10,0x0C,0x10,0x10,0x11,0x0E,0x00,0x00},/*"3",19*/ 29 {0x00,0x00,0x08,0x0C,0x0A,0x0A,0x09,0x1E,0x08,0x18,0x00,0x00},/*"4",20*/ 30 {0x00,0x00,0x1F,0x01,0x01,0x0F,0x10,0x10,0x11,0x0E,0x00,0x00},/*"5",21*/ 31 {0x00,0x00,0x0E,0x09,0x01,0x0F,0x11,0x11,0x11,0x0E,0x00,0x00},/*"6",22*/ 32 {0x00,0x00,0x1F,0x09,0x08,0x04,0x04,0x04,0x04,0x04,0x00,0x00},/*"7",23*/ 33 {0x00,0x00,0x0E,0x11,0x11,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00},/*"8",24*/ 34 {0x00,0x00,0x0E,0x11,0x11,0x11,0x1E,0x10,0x12,0x0E,0x00,0x00},/*"9",25*/ 35 {0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00},/*":",26*/ 36 {0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x04,0x00},/*";",27*/ 37 {0x00,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x00,0x00},/*"<",28*/ 38 {0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x00,0x00},/*"=",29*/ 39 {0x00,0x02,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x02,0x00,0x00},/*">",30*/ 40 {0x00,0x00,0x0E,0x11,0x11,0x08,0x04,0x04,0x00,0x04,0x00,0x00},/*"?",31*/ 41 {0x00,0x00,0x0E,0x11,0x19,0x15,0x15,0x1D,0x01,0x1E,0x00,0x00},/*"@",32*/ 42 {0x00,0x00,0x04,0x04,0x0C,0x0A,0x0A,0x1E,0x12,0x33,0x00,0x00},/*"A",33*/ 43 {0x00,0x00,0x0F,0x12,0x12,0x0E,0x12,0x12,0x12,0x0F,0x00,0x00},/*"B",34*/ 44 {0x00,0x00,0x1E,0x11,0x01,0x01,0x01,0x01,0x11,0x0E,0x00,0x00},/*"C",35*/ 45 {0x00,0x00,0x0F,0x12,0x12,0x12,0x12,0x12,0x12,0x0F,0x00,0x00},/*"D",36*/ 46 {0x00,0x00,0x1F,0x12,0x0A,0x0E,0x0A,0x02,0x12,0x1F,0x00,0x00},/*"E",37*/ 47 {0x00,0x00,0x1F,0x12,0x0A,0x0E,0x0A,0x02,0x02,0x07,0x00,0x00},/*"F",38*/ 48 {0x00,0x00,0x1C,0x12,0x01,0x01,0x39,0x11,0x12,0x0C,0x00,0x00},/*"G",39*/ 49 {0x00,0x00,0x33,0x12,0x12,0x1E,0x12,0x12,0x12,0x33,0x00,0x00},/*"H",40*/ 50 {0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"I",41*/ 51 {0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x09,0x07,0x00},/*"J",42*/ 52 {0x00,0x00,0x37,0x12,0x0A,0x06,0x0A,0x0A,0x12,0x37,0x00,0x00},/*"K",43*/ 53 {0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x02,0x22,0x3F,0x00,0x00},/*"L",44*/ 54 {0x00,0x00,0x1B,0x1B,0x1B,0x1B,0x15,0x15,0x15,0x15,0x00,0x00},/*"M",45*/ 55 {0x00,0x00,0x3B,0x12,0x16,0x16,0x1A,0x1A,0x12,0x17,0x00,0x00},/*"N",46*/ 56 {0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00,0x00},/*"O",47*/ 57 {0x00,0x00,0x0F,0x12,0x12,0x0E,0x02,0x02,0x02,0x07,0x00,0x00},/*"P",48*/ 58 {0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x17,0x19,0x0E,0x18,0x00},/*"Q",49*/ 59 {0x00,0x00,0x0F,0x12,0x12,0x0E,0x0A,0x12,0x12,0x37,0x00,0x00},/*"R",50*/ 60 {0x00,0x00,0x1E,0x11,0x01,0x06,0x08,0x10,0x11,0x0F,0x00,0x00},/*"S",51*/ 61 {0x00,0x00,0x1F,0x15,0x04,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"T",52*/ 62 {0x00,0x00,0x33,0x12,0x12,0x12,0x12,0x12,0x12,0x0C,0x00,0x00},/*"U",53*/ 63 {0x00,0x00,0x33,0x12,0x12,0x0A,0x0A,0x0C,0x04,0x04,0x00,0x00},/*"V",54*/ 64 {0x00,0x00,0x15,0x15,0x15,0x0E,0x0A,0x0A,0x0A,0x0A,0x00,0x00},/*"W",55*/ 65 {0x00,0x00,0x1B,0x0A,0x0A,0x04,0x04,0x0A,0x0A,0x1B,0x00,0x00},/*"X",56*/ 66 {0x00,0x00,0x1B,0x0A,0x0A,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"Y",57*/ 67 {0x00,0x00,0x1F,0x09,0x08,0x04,0x04,0x02,0x12,0x1F,0x00,0x00},/*"Z",58*/ 68 {0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x1C,0x00},/*"[",59*/ 69 {0x00,0x02,0x02,0x02,0x04,0x04,0x08,0x08,0x08,0x10,0x00,0x00},/*"\",60*/ 70 {0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0E,0x00},/*"]",61*/ 71 {0x00,0x04,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/ 72 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F},/*"_",63*/ 73 {0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/ 74 {0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x1C,0x12,0x3C,0x00,0x00},/*"a",65*/ 75 {0x00,0x00,0x03,0x02,0x02,0x0E,0x12,0x12,0x12,0x0E,0x00,0x00},/*"b",66*/ 76 {0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x02,0x02,0x1C,0x00,0x00},/*"c",67*/ 77 {0x00,0x00,0x18,0x10,0x10,0x1C,0x12,0x12,0x12,0x3C,0x00,0x00},/*"d",68*/ 78 {0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x1E,0x02,0x1C,0x00,0x00},/*"e",69*/ 79 {0x00,0x00,0x38,0x04,0x04,0x1E,0x04,0x04,0x04,0x1E,0x00,0x00},/*"f",70*/ 80 {0x00,0x00,0x00,0x00,0x00,0x3C,0x12,0x0C,0x02,0x1E,0x22,0x1C},/*"g",71*/ 81 {0x00,0x00,0x03,0x02,0x02,0x0E,0x12,0x12,0x12,0x37,0x00,0x00},/*"h",72*/ 82 {0x00,0x00,0x04,0x00,0x00,0x06,0x04,0x04,0x04,0x0E,0x00,0x00},/*"i",73*/ 83 {0x00,0x00,0x08,0x00,0x00,0x0C,0x08,0x08,0x08,0x08,0x08,0x07},/*"j",74*/ 84 {0x00,0x00,0x03,0x02,0x02,0x3A,0x0A,0x0E,0x12,0x37,0x00,0x00},/*"k",75*/ 85 {0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"l",76*/ 86 {0x00,0x00,0x00,0x00,0x00,0x0F,0x15,0x15,0x15,0x15,0x00,0x00},/*"m",77*/ 87 {0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x37,0x00,0x00},/*"n",78*/ 88 {0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x0C,0x00,0x00},/*"o",79*/ 89 {0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x0E,0x02,0x07},/*"p",80*/ 90 {0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x12,0x12,0x1C,0x10,0x38},/*"q",81*/ 91 {0x00,0x00,0x00,0x00,0x00,0x1B,0x06,0x02,0x02,0x07,0x00,0x00},/*"r",82*/ 92 {0x00,0x00,0x00,0x00,0x00,0x1E,0x02,0x0C,0x10,0x1E,0x00,0x00},/*"s",83*/ 93 {0x00,0x00,0x00,0x04,0x04,0x0E,0x04,0x04,0x04,0x18,0x00,0x00},/*"t",84*/ 94 {0x00,0x00,0x00,0x00,0x00,0x1B,0x12,0x12,0x12,0x3C,0x00,0x00},/*"u",85*/ 95 {0x00,0x00,0x00,0x00,0x00,0x37,0x12,0x0A,0x0C,0x04,0x00,0x00},/*"v",86*/ 96 {0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x0E,0x0A,0x0A,0x00,0x00},/*"w",87*/ 97 {0x00,0x00,0x00,0x00,0x00,0x1B,0x0A,0x04,0x0A,0x1B,0x00,0x00},/*"x",88*/ 98 {0x00,0x00,0x00,0x00,0x00,0x37,0x12,0x0A,0x0C,0x04,0x04,0x03},/*"y",89*/ 99 {0x00,0x00,0x00,0x00,0x00,0x1E,0x08,0x04,0x04,0x1E,0x00,0x00},/*"z",90*/ 100 {0x00,0x18,0x08,0x08,0x08,0x04,0x08,0x08,0x08,0x08,0x18,0x00},/*"{",91*/ 101 {0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"|",92*/ 102 {0x00,0x06,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x06,0x00},/*"}",93*/ 103 {0x02,0x25,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} /*"~",94*/ 104 }; 105 const unsigned char asc2_1608[95][16]={ 106 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/ 107 {0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x18,0x18,0x00,0x00},/*"!",1*/ 108 {0x00,0x48,0x6C,0x24,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/ 109 {0x00,0x00,0x00,0x24,0x24,0x24,0x7F,0x12,0x12,0x12,0x7F,0x12,0x12,0x12,0x00,0x00},/*"#",3*/ 110 {0x00,0x00,0x08,0x1C,0x2A,0x2A,0x0A,0x0C,0x18,0x28,0x28,0x2A,0x2A,0x1C,0x08,0x08},/*"$",4*/ 111 {0x00,0x00,0x00,0x22,0x25,0x15,0x15,0x15,0x2A,0x58,0x54,0x54,0x54,0x22,0x00,0x00},/*"%",5*/ 112 {0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x0A,0x76,0x25,0x29,0x11,0x91,0x6E,0x00,0x00},/*"&",6*/ 113 {0x00,0x06,0x06,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/ 114 {0x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x00},/*"(",8*/ 115 {0x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x02,0x00},/*")",9*/ 116 {0x00,0x00,0x00,0x00,0x08,0x08,0x6B,0x1C,0x1C,0x6B,0x08,0x08,0x00,0x00,0x00,0x00},/*"*",10*/ 117 {0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x7F,0x08,0x08,0x08,0x08,0x00,0x00,0x00},/*"+",11*/ 118 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x04,0x03},/*",",12*/ 119 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/ 120 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00},/*".",14*/ 121 {0x00,0x00,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x08,0x08,0x04,0x04,0x02,0x02,0x00},/*"/",15*/ 122 {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"0",16*/ 123 {0x00,0x00,0x00,0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"1",17*/ 124 {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x20,0x20,0x10,0x08,0x04,0x42,0x7E,0x00,0x00},/*"2",18*/ 125 {0x00,0x00,0x00,0x3C,0x42,0x42,0x20,0x18,0x20,0x40,0x40,0x42,0x22,0x1C,0x00,0x00},/*"3",19*/ 126 {0x00,0x00,0x00,0x20,0x30,0x28,0x24,0x24,0x22,0x22,0x7E,0x20,0x20,0x78,0x00,0x00},/*"4",20*/ 127 {0x00,0x00,0x00,0x7E,0x02,0x02,0x02,0x1A,0x26,0x40,0x40,0x42,0x22,0x1C,0x00,0x00},/*"5",21*/ 128 {0x00,0x00,0x00,0x38,0x24,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"6",22*/ 129 {0x00,0x00,0x00,0x7E,0x22,0x22,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00},/*"7",23*/ 130 {0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},/*"8",24*/ 131 {0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x64,0x58,0x40,0x40,0x24,0x1C,0x00,0x00},/*"9",25*/ 132 {0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00},/*":",26*/ 133 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x04},/*";",27*/ 134 {0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x40,0x00,0x00},/*"<",28*/ 135 {0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00},/*"=",29*/ 136 {0x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00},/*">",30*/ 137 {0x00,0x00,0x00,0x3C,0x42,0x42,0x46,0x40,0x20,0x10,0x10,0x00,0x18,0x18,0x00,0x00},/*"?",31*/ 138 {0x00,0x00,0x00,0x1C,0x22,0x5A,0x55,0x55,0x55,0x55,0x2D,0x42,0x22,0x1C,0x00,0x00},/*"@",32*/ 139 {0x00,0x00,0x00,0x08,0x08,0x18,0x14,0x14,0x24,0x3C,0x22,0x42,0x42,0xE7,0x00,0x00},/*"A",33*/ 140 {0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x1E,0x22,0x42,0x42,0x42,0x22,0x1F,0x00,0x00},/*"B",34*/ 141 {0x00,0x00,0x00,0x7C,0x42,0x42,0x01,0x01,0x01,0x01,0x01,0x42,0x22,0x1C,0x00,0x00},/*"C",35*/ 142 {0x00,0x00,0x00,0x1F,0x22,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1F,0x00,0x00},/*"D",36*/ 143 {0x00,0x00,0x00,0x3F,0x42,0x12,0x12,0x1E,0x12,0x12,0x02,0x42,0x42,0x3F,0x00,0x00},/*"E",37*/ 144 {0x00,0x00,0x00,0x3F,0x42,0x12,0x12,0x1E,0x12,0x12,0x02,0x02,0x02,0x07,0x00,0x00},/*"F",38*/ 145 {0x00,0x00,0x00,0x3C,0x22,0x22,0x01,0x01,0x01,0x71,0x21,0x22,0x22,0x1C,0x00,0x00},/*"G",39*/ 146 {0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"H",40*/ 147 {0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"I",41*/ 148 {0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x0F},/*"J",42*/ 149 {0x00,0x00,0x00,0x77,0x22,0x12,0x0A,0x0E,0x0A,0x12,0x12,0x22,0x22,0x77,0x00,0x00},/*"K",43*/ 150 {0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x7F,0x00,0x00},/*"L",44*/ 151 {0x00,0x00,0x00,0x77,0x36,0x36,0x36,0x36,0x2A,0x2A,0x2A,0x2A,0x2A,0x6B,0x00,0x00},/*"M",45*/ 152 {0x00,0x00,0x00,0xE3,0x46,0x46,0x4A,0x4A,0x52,0x52,0x52,0x62,0x62,0x47,0x00,0x00},/*"N",46*/ 153 {0x00,0x00,0x00,0x1C,0x22,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x22,0x1C,0x00,0x00},/*"O",47*/ 154 {0x00,0x00,0x00,0x3F,0x42,0x42,0x42,0x42,0x3E,0x02,0x02,0x02,0x02,0x07,0x00,0x00},/*"P",48*/ 155 {0x00,0x00,0x00,0x1C,0x22,0x41,0x41,0x41,0x41,0x41,0x4D,0x53,0x32,0x1C,0x60,0x00},/*"Q",49*/ 156 {0x00,0x00,0x00,0x3F,0x42,0x42,0x42,0x3E,0x12,0x12,0x22,0x22,0x42,0xC7,0x00,0x00},/*"R",50*/ 157 {0x00,0x00,0x00,0x7C,0x42,0x42,0x02,0x04,0x18,0x20,0x40,0x42,0x42,0x3E,0x00,0x00},/*"S",51*/ 158 {0x00,0x00,0x00,0x7F,0x49,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00},/*"T",52*/ 159 {0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"U",53*/ 160 {0x00,0x00,0x00,0xE7,0x42,0x42,0x22,0x24,0x24,0x14,0x14,0x18,0x08,0x08,0x00,0x00},/*"V",54*/ 161 {0x00,0x00,0x00,0x6B,0x49,0x49,0x49,0x49,0x55,0x55,0x36,0x22,0x22,0x22,0x00,0x00},/*"W",55*/ 162 {0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00},/*"X",56*/ 163 {0x00,0x00,0x00,0x77,0x22,0x22,0x14,0x14,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00},/*"Y",57*/ 164 {0x00,0x00,0x00,0x7E,0x21,0x20,0x10,0x10,0x08,0x04,0x04,0x42,0x42,0x3F,0x00,0x00},/*"Z",58*/ 165 {0x00,0x78,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x78,0x00},/*"[",59*/ 166 {0x00,0x00,0x02,0x02,0x04,0x04,0x08,0x08,0x08,0x10,0x10,0x20,0x20,0x20,0x40,0x40},/*"\",60*/ 167 {0x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1E,0x00},/*"]",61*/ 168 {0x00,0x38,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/ 169 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},/*"_",63*/ 170 {0x00,0x06,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/ 171 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x78,0x44,0x42,0x42,0xFC,0x00,0x00},/*"a",65*/ 172 {0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,0x26,0x1A,0x00,0x00},/*"b",66*/ 173 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x02,0x02,0x02,0x44,0x38,0x00,0x00},/*"c",67*/ 174 {0x00,0x00,0x00,0x60,0x40,0x40,0x40,0x78,0x44,0x42,0x42,0x42,0x64,0xD8,0x00,0x00},/*"d",68*/ 175 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x7E,0x02,0x02,0x42,0x3C,0x00,0x00},/*"e",69*/ 176 {0x00,0x00,0x00,0xF0,0x88,0x08,0x08,0x7E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"f",70*/ 177 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x22,0x22,0x1C,0x02,0x3C,0x42,0x42,0x3C},/*"g",71*/ 178 {0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x3A,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"h",72*/ 179 {0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"i",73*/ 180 {0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x1E},/*"j",74*/ 181 {0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x72,0x12,0x0A,0x16,0x12,0x22,0x77,0x00,0x00},/*"k",75*/ 182 {0x00,0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"l",76*/ 183 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x92,0x92,0x92,0x92,0x92,0xB7,0x00,0x00},/*"m",77*/ 184 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"n",78*/ 185 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"o",79*/ 186 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x26,0x42,0x42,0x42,0x22,0x1E,0x02,0x07},/*"p",80*/ 187 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x44,0x42,0x42,0x42,0x44,0x78,0x40,0xE0},/*"q",81*/ 188 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x4C,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"r",82*/ 189 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x42,0x02,0x3C,0x40,0x42,0x3E,0x00,0x00},/*"s",83*/ 190 {0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x08,0x08,0x08,0x30,0x00,0x00},/*"t",84*/ 191 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00},/*"u",85*/ 192 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x14,0x08,0x08,0x00,0x00},/*"v",86*/ 193 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEB,0x49,0x49,0x55,0x55,0x22,0x22,0x00,0x00},/*"w",87*/ 194 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x24,0x18,0x18,0x18,0x24,0x6E,0x00,0x00},/*"x",88*/ 195 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x14,0x18,0x08,0x08,0x07},/*"y",89*/ 196 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x22,0x10,0x08,0x08,0x44,0x7E,0x00,0x00},/*"z",90*/ 197 {0x00,0xC0,0x20,0x20,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0xC0,0x00},/*"{",91*/ 198 {0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},/*"|",92*/ 199 {0x00,0x06,0x08,0x08,0x08,0x08,0x08,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x06,0x00},/*"}",93*/ 200 {0x0C,0x32,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/ 201 }; 202 const unsigned char asc2_2412[12][48]={ 203 #if 1 204 {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x1F,0xC0,0x6F,0xD0,0x77,0xB0,0x70,0x30, 205 0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30,0x20,0x10,0x70,0x30,0x70,0x30, 206 0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30,0x67,0xD0,0x6F,0xE0,0x1F,0xE0,0x1F,0xE0},/*"0",0*/ 207 {0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x78,0x00,0x36,0x00,0x2E,0x00,0x0E,0x00, 208 0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x0E,0x00, 209 0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x04,0x00},/*"1",1*/ 210 {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x7F,0xE0,0x7F,0xE0,0x3F,0xD0,0x00,0x30, 211 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x1F,0xD0,0x1F,0xE0,0x2F,0xE0,0x77,0xE0, 212 0x70,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0x6F,0xF0,0x5F,0xF0,0x3F,0xF0,0x3F,0xF0},/*"2",2*/ 213 {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x7F,0xF0,0x7F,0xE0,0x3F,0xD0,0x00,0x30, 214 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x3F,0xB0,0x7F,0xD0,0x7F,0xD0,0x3F,0xB0, 215 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x3F,0xD0,0x7F,0xE0,0x7F,0xF0,0x3F,0xF0},/*"3",3*/ 216 {0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30, 217 0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30,0x37,0xB0,0x0F,0xD0,0x0F,0xD0,0x07,0xB0, 218 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x10},/*"4",4*/ 219 {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x5F,0xF0,0x6F,0xF0,0x77,0xF0,0x70,0x00, 220 0x70,0x00,0x70,0x00,0x70,0x00,0x3F,0x80,0x1F,0xC0,0x1F,0xC0,0x0F,0xB0,0x00,0x30, 221 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x3F,0xD0,0x7F,0xD0,0x7F,0xE0,0x3F,0xE0},/*"5",5*/ 222 {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x1F,0xF0,0x6F,0xF0,0x77,0xF0,0x70,0x00, 223 0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x77,0xC0,0x2F,0xC0,0x6F,0xD0,0x77,0xB0, 224 0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30,0x67,0xD0,0x6F,0xE0,0x1F,0xE0,0x1F,0xE0},/*"6",6*/ 225 {0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x7F,0xE0,0x7F,0xD0,0x3F,0x90,0x00,0x30, 226 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x10,0x00,0x30, 227 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x10},/*"7",7*/ 228 {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x1F,0xC0,0x6F,0xD0,0x77,0xB0,0x70,0x30, 229 0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30,0x77,0xB0,0x2F,0xD0,0x6F,0xF0,0x77,0xB0, 230 0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30,0x67,0xD0,0x6F,0xE0,0x1F,0xE0,0x1F,0xC0},/*"8",8*/ 231 {0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x1F,0xC0,0x6F,0xD0,0x77,0xB0,0x70,0x30, 232 0x70,0x30,0x70,0x30,0x70,0x30,0x70,0x30,0x6F,0xB0,0x0F,0xD0,0x0F,0xF0,0x0F,0xB0, 233 0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x3F,0xD0,0x7F,0xE0,0x7F,0xE0,0x3F,0xC0},/*"9",9*/ 234 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 235 0x60,0x00,0x60,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 236 0x20,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*":",0*/ 237 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 238 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 239 0x00,0x00,0x00,0x00,0x3C,0x00,0x3C,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*".",0*/ 240 #endif 241 }; 242 243 244 245 typedef struct 246 { 247 unsigned char Index[2]; 248 char Msk[32]; 249 }typFNT_GB16; 250 //字體取模:宋體常規小四 251 const typFNT_GB16 tfont16[]= 252 { 253 "系",0x00,0x00,0x00,0x0C,0x3F,0xF8,0x03,0x00,0x06,0x38,0x0C,0x70,0x1F,0xC0,0x03,0x8C, 254 0x0E,0x0C,0x3F,0xFE,0x0D,0xB6,0x0D,0x98,0x19,0x9C,0x31,0x8C,0x31,0x86,0x67,0x86,/*0*/ 255 "統",0x00,0x00,0x00,0x00,0x18,0x30,0x1B,0xFF,0x30,0x60,0x36,0xCC,0x6C,0xCC,0x7D,0x86, 256 0x19,0xFE,0x18,0xDB,0x30,0xD8,0x7F,0xD8,0x70,0xDB,0x01,0x9B,0x1F,0x9B,0x77,0x1F,/*1*/ 257 "監",0x00,0x00,0x00,0x00,0x06,0xC0,0x36,0xFF,0x36,0xC0,0x37,0x80,0x37,0xB0,0x37,0x18, 258 0x06,0x0C,0x00,0x00,0x3F,0xFE,0x36,0x66,0x36,0x66,0x36,0x66,0x36,0x66,0x7F,0xFF,/*2*/ 259 "控",0x00,0x00,0x00,0x00,0x30,0x60,0x30,0x60,0x37,0xFF,0x7E,0xFB,0x37,0x9E,0x33,0x8C, 260 0x3F,0x06,0x38,0x00,0x31,0xFC,0x70,0x60,0x30,0x60,0x30,0x60,0x30,0x60,0x7F,0xFF,/*3*/ 261 "℃",0xC0,0x00,0x23,0xE8,0x2C,0x18,0xD8,0x08,0x10,0x08,0x30,0x00,0x30,0x00,0x30,0x00, 262 0x30,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x18,0x08,0x0C,0x10,0x03,0xE0,0x00,0x00,/*0*/ 263 }; 264 typedef struct 265 { 266 unsigned char Index[2]; 267 char Msk[72]; 268 }typFNT_GB24; 269 //字體取模:宋體常規小四 270 const typFNT_GB24 tfont24[]= 271 { 272 "溫",0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0C,0x7F,0xF0,0x04,0x40,0x20,0x04, 273 0x40,0x20,0x01,0x40,0x20,0x02,0x7F,0xE0,0x62,0x40,0x20,0x32,0x40,0x20,0x12,0x40, 274 0x20,0x04,0x7F,0xE0,0x04,0x00,0x00,0x05,0x00,0x10,0x04,0xFF,0xF8,0x08,0x89,0x10, 275 0x78,0x89,0x10,0x18,0x89,0x10,0x18,0x89,0x10,0x18,0x89,0x10,0x18,0x89,0x10,0x18, 276 0x89,0x16,0x07,0x76,0xE8,0x00,0x00,0x00,/*0*/ 277 "濕",0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x10,0x08,0x7F,0xF8,0x0C,0x60,0x10,0x04, 278 0x60,0x10,0x01,0x60,0x10,0x42,0x7F,0xF0,0x32,0x60,0x10,0x1A,0x60,0x10,0x12,0x7F, 279 0xF0,0x04,0x69,0x00,0x04,0x08,0x80,0x05,0x08,0x8C,0x08,0x88,0x8C,0x18,0xC8,0x98, 280 0x38,0x48,0x90,0x18,0x68,0xA0,0x10,0x48,0xC0,0x10,0x08,0x80,0x30,0x08,0x80,0x10, 281 0x08,0x8C,0x03,0xF7,0x70,0x00,0x00,0x00,/*1*/ 282 "度",0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x00,0x0C,0x08,0x0F,0xFF,0xFC,0x08, 283 0x40,0x00,0x08,0x30,0xC0,0x08,0x20,0x88,0x08,0x20,0x9C,0x0F,0xFF,0xE0,0x08,0x20, 284 0x80,0x08,0x20,0x80,0x08,0x3F,0x80,0x08,0x00,0x00,0x19,0xFF,0xE0,0x18,0x20,0xC0, 285 0x10,0x20,0x80,0x10,0x11,0x80,0x10,0x0B,0x00,0x20,0x06,0x00,0x20,0x1B,0x80,0x40, 286 0x60,0xFE,0x47,0x80,0x18,0x00,0x00,0x00,/*2*/ 287 "電",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00, 288 0x10,0x00,0x0F,0xFF,0xF0,0x08,0x10,0x20,0x08,0x10,0x20,0x08,0x10,0x20,0x08,0x10, 289 0x20,0x0F,0xFF,0xE0,0x08,0x10,0x20,0x08,0x10,0x20,0x08,0x10,0x20,0x08,0x10,0x20, 290 0x0F,0xFF,0xE0,0x08,0x10,0x00,0x00,0x10,0x08,0x00,0x10,0x08,0x00,0x10,0x04,0x00, 291 0x18,0x0C,0x00,0x0F,0xF8,0x00,0x00,0x00,/*3*/ 292 "壓",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x0F,0xFF,0xFC,0x0C,0x00,0x00,0x0C, 293 0x0C,0x00,0x0C,0x0C,0x00,0x0C,0x0C,0x00,0x0C,0x0C,0x00,0x0C,0x0C,0x00,0x0C,0x0C, 294 0x00,0x0D,0xFF,0xF0,0x0C,0x0C,0x00,0x0C,0x0C,0x00,0x08,0x0C,0x80,0x08,0x0C,0x40, 295 0x08,0x0C,0x60,0x08,0x0C,0x30,0x10,0x0C,0x20,0x10,0x0C,0x00,0x20,0x0C,0x0C,0x27, 296 0xF3,0xF0,0x40,0x00,0x00,0x00,0x00,0x00,/*4*/ 297 "流",0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x06,0x00,0x08,0x02,0x08,0x04,0xFF,0xFC,0x06, 298 0x04,0x00,0x00,0x04,0x00,0x01,0x08,0x40,0x41,0x10,0x20,0x31,0x20,0x30,0x12,0x7F, 299 0xD0,0x12,0x00,0x10,0x04,0x64,0x60,0x04,0x64,0x40,0x04,0x64,0x40,0x08,0x64,0x40, 300 0x78,0x64,0x40,0x18,0x44,0x40,0x18,0x44,0x44,0x18,0xC4,0x44,0x18,0x84,0x44,0x19, 301 0x04,0x7E,0x06,0x04,0x00,0x00,0x00,0x00,/*5*/ 302 "℃",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x12,0x1F,0x80,0x12, 303 0x30,0x68,0x12,0x60,0x18,0x0C,0xC0,0x18,0x00,0x80,0x08,0x01,0x80,0x08,0x01,0x80, 304 0x00,0x01,0x80,0x00,0x01,0x80,0x00,0x01,0x80,0x00,0x01,0x80,0x00,0x00,0x80,0x00, 305 0x00,0xC0,0x00,0x00,0xC0,0x10,0x00,0x60,0x20,0x00,0x38,0xC0,0x00,0x0F,0x00,0x00, 306 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*,6*/ 307 ":",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 308 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 309 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x0C,0x00,0x00, 310 0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x00, 311 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*7*/ 312 "%",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x18,0x08, 313 0x80,0x30,0x08,0x80,0x60,0x08,0x80,0xC0,0x08,0x81,0x80,0x08,0x81,0x00,0x08,0x82, 314 0x00,0x05,0x04,0x00,0x02,0x08,0x00,0x00,0x11,0xE0,0x00,0x21,0x10,0x00,0x41,0x10, 315 0x00,0x83,0x10,0x01,0x03,0x10,0x02,0x01,0x10,0x04,0x01,0x10,0x08,0x00,0xE0,0x00, 316 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*0*/ 317 "V",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC1,0xF0,0x03, 318 0x00,0x40,0x03,0x00,0x40,0x01,0x00,0x80,0x01,0x80,0x80,0x01,0x81,0x00,0x00,0xC1, 319 0x00,0x00,0xC3,0x00,0x00,0x62,0x00,0x00,0x62,0x00,0x00,0x24,0x00,0x00,0x34,0x00, 320 0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 321 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*0*/ 322 "A",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 323 0x08,0x00,0x00,0x18,0x00,0x00,0x1C,0x00,0x00,0x2C,0x00,0x00,0x24,0x00,0x00,0x66, 324 0x00,0x00,0x46,0x00,0x00,0xC3,0x00,0x00,0x83,0x00,0x00,0xFF,0x00,0x01,0x01,0x80, 325 0x01,0x01,0x80,0x02,0x00,0xC0,0x02,0x00,0xC0,0x0F,0x83,0xF0,0x00,0x00,0x00,0x00, 326 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*1*/ 327 }; 328 typedef struct 329 { 330 unsigned char Index[2]; 331 char Msk[128]; 332 }typFNT_GB32; 333 //字體取模:宋體常規小四 334 const typFNT_GB32 tfont32[]= 335 { 336 "字",0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0xC0,0x00, 337 0x00,0x01,0xC0,0xC0,0x00,0x01,0x07,0xC0,0x00,0x01,0xFF,0x00,0x02,0x1F,0xFE,0x00, 338 0x07,0xF0,0x1C,0x00,0x07,0xC0,0x70,0x00,0x0F,0x00,0xE0,0x00,0x0E,0x03,0xF0,0x00, 339 0x1C,0x0F,0xF0,0x00,0x3C,0x0F,0x70,0x00,0x3C,0x00,0xE0,0x00,0x18,0x00,0xC0,0x00, 340 0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x20,0x00, 341 0x00,0x00,0x37,0x00,0x00,0x01,0xFF,0x00,0x00,0x7F,0xF8,0x00,0x07,0xF8,0x30,0x00, 342 0x1F,0x80,0x30,0x00,0x00,0x80,0x30,0x00,0x00,0xC0,0x30,0x00,0x00,0x60,0x60,0x00, 343 0x00,0x18,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,/*0*/ 344 }; 345 #endif

1 #include "sys.h" 2 #include "delay.h" 3 #include "usart.h" 4 #include "lcd.h" 5 #include "gui.h" 6 7 int main(void) 8 { 9 delay_init(); //延時函數初始化 10 SystemInit();//初始化RCC 設置系統主頻為72MHZ 11 LCD_Init(); //液晶屏初始化 12 LCD_Clear(BLACK); //清屏 13 14 POINT_COLOR=WHITE; 15 LCD_DrawRectangle(0,0,128-1,128-1); //畫矩形 16 17 Show_Str(32,5,BLUE,YELLOW,"系統監控",24,0); 18 Show_Str(5,25,RED,YELLOW,"溫度 ℃",24,1); 19 LCD_ShowNum2412(5+48,25,RED,YELLOW,":32",24,1); 20 21 Show_Str(5,50,YELLOW,YELLOW,"濕度 %",24,1); 22 LCD_ShowNum2412(5+48,50,YELLOW,YELLOW,":20",24,1); 23 24 Show_Str(5,75,WHITE,YELLOW,"電壓 V",24,1); 25 LCD_ShowNum2412(5+48,75,WHITE,YELLOW,":3.2",24,1); 26 27 Show_Str(5,100,GREEN,YELLOW,"電流 A",24,1); 28 LCD_ShowNum2412(5+48,100,GREEN,YELLOW,":0.2",24,1); 29 while(1); 30 }
今天還算是充滿希望的一天