期末大作业-增加显示屏
This commit is contained in:
		
							parent
							
								
									e40ccab9e6
								
							
						
					
					
						commit
						26b284daac
					
				
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										439
									
								
								FinalHomework/Core/Inc/FONT.H
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										439
									
								
								FinalHomework/Core/Inc/FONT.H
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,439 @@
 | 
			
		||||
/****************************************************************************************************
 | 
			
		||||
//=========================================电源接线================================================//
 | 
			
		||||
//     LCD模块                STM32单片机
 | 
			
		||||
//      VCC          接        DC5V/3.3V      //电源
 | 
			
		||||
//      GND          接          GND          //电源地
 | 
			
		||||
//=======================================液晶屏数据线接线==========================================//
 | 
			
		||||
//本模块默认数据总线类型为SPI总线
 | 
			
		||||
//     LCD模块                STM32单片机    
 | 
			
		||||
//       SDA         接          PB15         //液晶屏SPI总线数据写信号
 | 
			
		||||
//=======================================液晶屏控制线接线==========================================//
 | 
			
		||||
//     LCD模块 					      STM32单片机 
 | 
			
		||||
//       LED         接          PB9          //液晶屏背光控制信号,如果不需要控制,接5V或3.3V
 | 
			
		||||
//       SCK         接          PB13         //液晶屏SPI总线时钟信号
 | 
			
		||||
//       A0          接          PB10         //液晶屏数据/命令控制信号
 | 
			
		||||
//       RESET       接          PB12         //液晶屏复位控制信号
 | 
			
		||||
//       CS          接          PB11         //液晶屏片选控制信号
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
 /* @attention
 | 
			
		||||
  *
 | 
			
		||||
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 | 
			
		||||
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 | 
			
		||||
  * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
 | 
			
		||||
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 | 
			
		||||
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 | 
			
		||||
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 | 
			
		||||
**************************************************************************************************/		
 | 
			
		||||
 | 
			
		||||
#ifndef __FONT_H
 | 
			
		||||
#define __FONT_H 	   
 | 
			
		||||
//常用ASCII表
 | 
			
		||||
//偏移量32
 | 
			
		||||
//ASCII字符集
 | 
			
		||||
//偏移量32
 | 
			
		||||
//大小:12*6
 | 
			
		||||
const unsigned char asc2_1206[95][12]={
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
 | 
			
		||||
{0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x04,0x00,0x00},/*"!",1*/
 | 
			
		||||
{0x00,0x14,0x0A,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
 | 
			
		||||
{0x00,0x00,0x14,0x14,0x3F,0x14,0x0A,0x3F,0x0A,0x0A,0x00,0x00},/*"#",3*/
 | 
			
		||||
{0x00,0x04,0x1E,0x15,0x05,0x06,0x0C,0x14,0x15,0x0F,0x04,0x00},/*"$",4*/
 | 
			
		||||
{0x00,0x00,0x12,0x15,0x0D,0x0A,0x14,0x2C,0x2A,0x12,0x00,0x00},/*"%",5*/
 | 
			
		||||
{0x00,0x00,0x04,0x0A,0x0A,0x1E,0x15,0x15,0x09,0x36,0x00,0x00},/*"&",6*/
 | 
			
		||||
{0x00,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
 | 
			
		||||
{0x00,0x20,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x20,0x00},/*"(",8*/
 | 
			
		||||
{0x00,0x02,0x04,0x08,0x08,0x08,0x08,0x08,0x08,0x04,0x02,0x00},/*")",9*/
 | 
			
		||||
{0x00,0x00,0x00,0x04,0x15,0x0E,0x0E,0x15,0x04,0x00,0x00,0x00},/*"*",10*/
 | 
			
		||||
{0x00,0x00,0x04,0x04,0x04,0x1F,0x04,0x04,0x04,0x00,0x00,0x00},/*"+",11*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x01},/*",",12*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00},/*".",14*/
 | 
			
		||||
{0x00,0x10,0x08,0x08,0x08,0x04,0x04,0x02,0x02,0x02,0x01,0x00},/*"/",15*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00,0x00},/*"0",16*/
 | 
			
		||||
{0x00,0x00,0x04,0x06,0x04,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"1",17*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x11,0x08,0x04,0x02,0x01,0x1F,0x00,0x00},/*"2",18*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x10,0x0C,0x10,0x10,0x11,0x0E,0x00,0x00},/*"3",19*/
 | 
			
		||||
{0x00,0x00,0x08,0x0C,0x0A,0x0A,0x09,0x1E,0x08,0x18,0x00,0x00},/*"4",20*/
 | 
			
		||||
{0x00,0x00,0x1F,0x01,0x01,0x0F,0x10,0x10,0x11,0x0E,0x00,0x00},/*"5",21*/
 | 
			
		||||
{0x00,0x00,0x0E,0x09,0x01,0x0F,0x11,0x11,0x11,0x0E,0x00,0x00},/*"6",22*/
 | 
			
		||||
{0x00,0x00,0x1F,0x09,0x08,0x04,0x04,0x04,0x04,0x04,0x00,0x00},/*"7",23*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x11,0x0E,0x11,0x11,0x11,0x0E,0x00,0x00},/*"8",24*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x11,0x11,0x1E,0x10,0x12,0x0E,0x00,0x00},/*"9",25*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00},/*":",26*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x04,0x00},/*";",27*/
 | 
			
		||||
{0x00,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x00,0x00},/*"<",28*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x00,0x00},/*"=",29*/
 | 
			
		||||
{0x00,0x02,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x02,0x00,0x00},/*">",30*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x11,0x08,0x04,0x04,0x00,0x04,0x00,0x00},/*"?",31*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x19,0x15,0x15,0x1D,0x01,0x1E,0x00,0x00},/*"@",32*/
 | 
			
		||||
{0x00,0x00,0x04,0x04,0x0C,0x0A,0x0A,0x1E,0x12,0x33,0x00,0x00},/*"A",33*/
 | 
			
		||||
{0x00,0x00,0x0F,0x12,0x12,0x0E,0x12,0x12,0x12,0x0F,0x00,0x00},/*"B",34*/
 | 
			
		||||
{0x00,0x00,0x1E,0x11,0x01,0x01,0x01,0x01,0x11,0x0E,0x00,0x00},/*"C",35*/
 | 
			
		||||
{0x00,0x00,0x0F,0x12,0x12,0x12,0x12,0x12,0x12,0x0F,0x00,0x00},/*"D",36*/
 | 
			
		||||
{0x00,0x00,0x1F,0x12,0x0A,0x0E,0x0A,0x02,0x12,0x1F,0x00,0x00},/*"E",37*/
 | 
			
		||||
{0x00,0x00,0x1F,0x12,0x0A,0x0E,0x0A,0x02,0x02,0x07,0x00,0x00},/*"F",38*/
 | 
			
		||||
{0x00,0x00,0x1C,0x12,0x01,0x01,0x39,0x11,0x12,0x0C,0x00,0x00},/*"G",39*/
 | 
			
		||||
{0x00,0x00,0x33,0x12,0x12,0x1E,0x12,0x12,0x12,0x33,0x00,0x00},/*"H",40*/
 | 
			
		||||
{0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"I",41*/
 | 
			
		||||
{0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x09,0x07,0x00},/*"J",42*/
 | 
			
		||||
{0x00,0x00,0x37,0x12,0x0A,0x06,0x0A,0x0A,0x12,0x37,0x00,0x00},/*"K",43*/
 | 
			
		||||
{0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x02,0x22,0x3F,0x00,0x00},/*"L",44*/
 | 
			
		||||
{0x00,0x00,0x1B,0x1B,0x1B,0x1B,0x15,0x15,0x15,0x15,0x00,0x00},/*"M",45*/
 | 
			
		||||
{0x00,0x00,0x3B,0x12,0x16,0x16,0x1A,0x1A,0x12,0x17,0x00,0x00},/*"N",46*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x11,0x11,0x0E,0x00,0x00},/*"O",47*/
 | 
			
		||||
{0x00,0x00,0x0F,0x12,0x12,0x0E,0x02,0x02,0x02,0x07,0x00,0x00},/*"P",48*/
 | 
			
		||||
{0x00,0x00,0x0E,0x11,0x11,0x11,0x11,0x17,0x19,0x0E,0x18,0x00},/*"Q",49*/
 | 
			
		||||
{0x00,0x00,0x0F,0x12,0x12,0x0E,0x0A,0x12,0x12,0x37,0x00,0x00},/*"R",50*/
 | 
			
		||||
{0x00,0x00,0x1E,0x11,0x01,0x06,0x08,0x10,0x11,0x0F,0x00,0x00},/*"S",51*/
 | 
			
		||||
{0x00,0x00,0x1F,0x15,0x04,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"T",52*/
 | 
			
		||||
{0x00,0x00,0x33,0x12,0x12,0x12,0x12,0x12,0x12,0x0C,0x00,0x00},/*"U",53*/
 | 
			
		||||
{0x00,0x00,0x33,0x12,0x12,0x0A,0x0A,0x0C,0x04,0x04,0x00,0x00},/*"V",54*/
 | 
			
		||||
{0x00,0x00,0x15,0x15,0x15,0x0E,0x0A,0x0A,0x0A,0x0A,0x00,0x00},/*"W",55*/
 | 
			
		||||
{0x00,0x00,0x1B,0x0A,0x0A,0x04,0x04,0x0A,0x0A,0x1B,0x00,0x00},/*"X",56*/
 | 
			
		||||
{0x00,0x00,0x1B,0x0A,0x0A,0x04,0x04,0x04,0x04,0x0E,0x00,0x00},/*"Y",57*/
 | 
			
		||||
{0x00,0x00,0x1F,0x09,0x08,0x04,0x04,0x02,0x12,0x1F,0x00,0x00},/*"Z",58*/
 | 
			
		||||
{0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x1C,0x00},/*"[",59*/
 | 
			
		||||
{0x00,0x02,0x02,0x02,0x04,0x04,0x08,0x08,0x08,0x10,0x00,0x00},/*"\",60*/
 | 
			
		||||
{0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0E,0x00},/*"]",61*/
 | 
			
		||||
{0x00,0x04,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F},/*"_",63*/
 | 
			
		||||
{0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x1C,0x12,0x3C,0x00,0x00},/*"a",65*/
 | 
			
		||||
{0x00,0x00,0x03,0x02,0x02,0x0E,0x12,0x12,0x12,0x0E,0x00,0x00},/*"b",66*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x02,0x02,0x1C,0x00,0x00},/*"c",67*/
 | 
			
		||||
{0x00,0x00,0x18,0x10,0x10,0x1C,0x12,0x12,0x12,0x3C,0x00,0x00},/*"d",68*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x1E,0x02,0x1C,0x00,0x00},/*"e",69*/
 | 
			
		||||
{0x00,0x00,0x38,0x04,0x04,0x1E,0x04,0x04,0x04,0x1E,0x00,0x00},/*"f",70*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x3C,0x12,0x0C,0x02,0x1E,0x22,0x1C},/*"g",71*/
 | 
			
		||||
{0x00,0x00,0x03,0x02,0x02,0x0E,0x12,0x12,0x12,0x37,0x00,0x00},/*"h",72*/
 | 
			
		||||
{0x00,0x00,0x04,0x00,0x00,0x06,0x04,0x04,0x04,0x0E,0x00,0x00},/*"i",73*/
 | 
			
		||||
{0x00,0x00,0x08,0x00,0x00,0x0C,0x08,0x08,0x08,0x08,0x08,0x07},/*"j",74*/
 | 
			
		||||
{0x00,0x00,0x03,0x02,0x02,0x3A,0x0A,0x0E,0x12,0x37,0x00,0x00},/*"k",75*/
 | 
			
		||||
{0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"l",76*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x0F,0x15,0x15,0x15,0x15,0x00,0x00},/*"m",77*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x37,0x00,0x00},/*"n",78*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x0C,0x00,0x00},/*"o",79*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x0F,0x12,0x12,0x12,0x0E,0x02,0x07},/*"p",80*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x1C,0x12,0x12,0x12,0x1C,0x10,0x38},/*"q",81*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x1B,0x06,0x02,0x02,0x07,0x00,0x00},/*"r",82*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x1E,0x02,0x0C,0x10,0x1E,0x00,0x00},/*"s",83*/
 | 
			
		||||
{0x00,0x00,0x00,0x04,0x04,0x0E,0x04,0x04,0x04,0x18,0x00,0x00},/*"t",84*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x1B,0x12,0x12,0x12,0x3C,0x00,0x00},/*"u",85*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x37,0x12,0x0A,0x0C,0x04,0x00,0x00},/*"v",86*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x0E,0x0A,0x0A,0x00,0x00},/*"w",87*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x1B,0x0A,0x04,0x0A,0x1B,0x00,0x00},/*"x",88*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x37,0x12,0x0A,0x0C,0x04,0x04,0x03},/*"y",89*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x1E,0x08,0x04,0x04,0x1E,0x00,0x00},/*"z",90*/
 | 
			
		||||
{0x00,0x18,0x08,0x08,0x08,0x04,0x08,0x08,0x08,0x08,0x18,0x00},/*"{",91*/
 | 
			
		||||
{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},/*"|",92*/
 | 
			
		||||
{0x00,0x06,0x04,0x04,0x04,0x08,0x04,0x04,0x04,0x04,0x06,0x00},/*"}",93*/
 | 
			
		||||
{0x02,0x25,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} /*"~",94*/
 | 
			
		||||
}; 
 | 
			
		||||
const unsigned char asc2_1608[95][16]={
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" ",0*/
 | 
			
		||||
{0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x18,0x18,0x00,0x00},/*"!",1*/
 | 
			
		||||
{0x00,0x48,0x6C,0x24,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",2*/
 | 
			
		||||
{0x00,0x00,0x00,0x24,0x24,0x24,0x7F,0x12,0x12,0x12,0x7F,0x12,0x12,0x12,0x00,0x00},/*"#",3*/
 | 
			
		||||
{0x00,0x00,0x08,0x1C,0x2A,0x2A,0x0A,0x0C,0x18,0x28,0x28,0x2A,0x2A,0x1C,0x08,0x08},/*"$",4*/
 | 
			
		||||
{0x00,0x00,0x00,0x22,0x25,0x15,0x15,0x15,0x2A,0x58,0x54,0x54,0x54,0x22,0x00,0x00},/*"%",5*/
 | 
			
		||||
{0x00,0x00,0x00,0x0C,0x12,0x12,0x12,0x0A,0x76,0x25,0x29,0x11,0x91,0x6E,0x00,0x00},/*"&",6*/
 | 
			
		||||
{0x00,0x06,0x06,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",7*/
 | 
			
		||||
{0x00,0x40,0x20,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x10,0x20,0x40,0x00},/*"(",8*/
 | 
			
		||||
{0x00,0x02,0x04,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x08,0x04,0x02,0x00},/*")",9*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x08,0x08,0x6B,0x1C,0x1C,0x6B,0x08,0x08,0x00,0x00,0x00,0x00},/*"*",10*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x7F,0x08,0x08,0x08,0x08,0x00,0x00,0x00},/*"+",11*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x04,0x03},/*",",12*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"-",13*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00},/*".",14*/
 | 
			
		||||
{0x00,0x00,0x80,0x40,0x40,0x20,0x20,0x10,0x10,0x08,0x08,0x04,0x04,0x02,0x02,0x00},/*"/",15*/
 | 
			
		||||
{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"0",16*/
 | 
			
		||||
{0x00,0x00,0x00,0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"1",17*/
 | 
			
		||||
{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x20,0x20,0x10,0x08,0x04,0x42,0x7E,0x00,0x00},/*"2",18*/
 | 
			
		||||
{0x00,0x00,0x00,0x3C,0x42,0x42,0x20,0x18,0x20,0x40,0x40,0x42,0x22,0x1C,0x00,0x00},/*"3",19*/
 | 
			
		||||
{0x00,0x00,0x00,0x20,0x30,0x28,0x24,0x24,0x22,0x22,0x7E,0x20,0x20,0x78,0x00,0x00},/*"4",20*/
 | 
			
		||||
{0x00,0x00,0x00,0x7E,0x02,0x02,0x02,0x1A,0x26,0x40,0x40,0x42,0x22,0x1C,0x00,0x00},/*"5",21*/
 | 
			
		||||
{0x00,0x00,0x00,0x38,0x24,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,0x24,0x18,0x00,0x00},/*"6",22*/
 | 
			
		||||
{0x00,0x00,0x00,0x7E,0x22,0x22,0x10,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00},/*"7",23*/	 
 | 
			
		||||
{0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00},/*"8",24*/
 | 
			
		||||
{0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x64,0x58,0x40,0x40,0x24,0x1C,0x00,0x00},/*"9",25*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00},/*":",26*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x04},/*";",27*/
 | 
			
		||||
{0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x40,0x00,0x00},/*"<",28*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00},/*"=",29*/
 | 
			
		||||
{0x00,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x02,0x00,0x00},/*">",30*/
 | 
			
		||||
{0x00,0x00,0x00,0x3C,0x42,0x42,0x46,0x40,0x20,0x10,0x10,0x00,0x18,0x18,0x00,0x00},/*"?",31*/
 | 
			
		||||
{0x00,0x00,0x00,0x1C,0x22,0x5A,0x55,0x55,0x55,0x55,0x2D,0x42,0x22,0x1C,0x00,0x00},/*"@",32*/
 | 
			
		||||
{0x00,0x00,0x00,0x08,0x08,0x18,0x14,0x14,0x24,0x3C,0x22,0x42,0x42,0xE7,0x00,0x00},/*"A",33*/
 | 
			
		||||
{0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x1E,0x22,0x42,0x42,0x42,0x22,0x1F,0x00,0x00},/*"B",34*/
 | 
			
		||||
{0x00,0x00,0x00,0x7C,0x42,0x42,0x01,0x01,0x01,0x01,0x01,0x42,0x22,0x1C,0x00,0x00},/*"C",35*/
 | 
			
		||||
{0x00,0x00,0x00,0x1F,0x22,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1F,0x00,0x00},/*"D",36*/
 | 
			
		||||
{0x00,0x00,0x00,0x3F,0x42,0x12,0x12,0x1E,0x12,0x12,0x02,0x42,0x42,0x3F,0x00,0x00},/*"E",37*/
 | 
			
		||||
{0x00,0x00,0x00,0x3F,0x42,0x12,0x12,0x1E,0x12,0x12,0x02,0x02,0x02,0x07,0x00,0x00},/*"F",38*/
 | 
			
		||||
{0x00,0x00,0x00,0x3C,0x22,0x22,0x01,0x01,0x01,0x71,0x21,0x22,0x22,0x1C,0x00,0x00},/*"G",39*/
 | 
			
		||||
{0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"H",40*/
 | 
			
		||||
{0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"I",41*/
 | 
			
		||||
{0x00,0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x0F},/*"J",42*/
 | 
			
		||||
{0x00,0x00,0x00,0x77,0x22,0x12,0x0A,0x0E,0x0A,0x12,0x12,0x22,0x22,0x77,0x00,0x00},/*"K",43*/
 | 
			
		||||
{0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x7F,0x00,0x00},/*"L",44*/
 | 
			
		||||
{0x00,0x00,0x00,0x77,0x36,0x36,0x36,0x36,0x2A,0x2A,0x2A,0x2A,0x2A,0x6B,0x00,0x00},/*"M",45*/
 | 
			
		||||
{0x00,0x00,0x00,0xE3,0x46,0x46,0x4A,0x4A,0x52,0x52,0x52,0x62,0x62,0x47,0x00,0x00},/*"N",46*/
 | 
			
		||||
{0x00,0x00,0x00,0x1C,0x22,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x22,0x1C,0x00,0x00},/*"O",47*/
 | 
			
		||||
{0x00,0x00,0x00,0x3F,0x42,0x42,0x42,0x42,0x3E,0x02,0x02,0x02,0x02,0x07,0x00,0x00},/*"P",48*/
 | 
			
		||||
{0x00,0x00,0x00,0x1C,0x22,0x41,0x41,0x41,0x41,0x41,0x4D,0x53,0x32,0x1C,0x60,0x00},/*"Q",49*/
 | 
			
		||||
{0x00,0x00,0x00,0x3F,0x42,0x42,0x42,0x3E,0x12,0x12,0x22,0x22,0x42,0xC7,0x00,0x00},/*"R",50*/
 | 
			
		||||
{0x00,0x00,0x00,0x7C,0x42,0x42,0x02,0x04,0x18,0x20,0x40,0x42,0x42,0x3E,0x00,0x00},/*"S",51*/
 | 
			
		||||
{0x00,0x00,0x00,0x7F,0x49,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00},/*"T",52*/
 | 
			
		||||
{0x00,0x00,0x00,0xE7,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"U",53*/
 | 
			
		||||
{0x00,0x00,0x00,0xE7,0x42,0x42,0x22,0x24,0x24,0x14,0x14,0x18,0x08,0x08,0x00,0x00},/*"V",54*/
 | 
			
		||||
{0x00,0x00,0x00,0x6B,0x49,0x49,0x49,0x49,0x55,0x55,0x36,0x22,0x22,0x22,0x00,0x00},/*"W",55*/
 | 
			
		||||
{0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x18,0x18,0x18,0x24,0x24,0x42,0xE7,0x00,0x00},/*"X",56*/
 | 
			
		||||
{0x00,0x00,0x00,0x77,0x22,0x22,0x14,0x14,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00},/*"Y",57*/
 | 
			
		||||
{0x00,0x00,0x00,0x7E,0x21,0x20,0x10,0x10,0x08,0x04,0x04,0x42,0x42,0x3F,0x00,0x00},/*"Z",58*/
 | 
			
		||||
{0x00,0x78,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x78,0x00},/*"[",59*/
 | 
			
		||||
{0x00,0x00,0x02,0x02,0x04,0x04,0x08,0x08,0x08,0x10,0x10,0x20,0x20,0x20,0x40,0x40},/*"\",60*/
 | 
			
		||||
{0x00,0x1E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1E,0x00},/*"]",61*/
 | 
			
		||||
{0x00,0x38,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",62*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF},/*"_",63*/
 | 
			
		||||
{0x00,0x06,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",64*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x78,0x44,0x42,0x42,0xFC,0x00,0x00},/*"a",65*/
 | 
			
		||||
{0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,0x26,0x1A,0x00,0x00},/*"b",66*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x44,0x02,0x02,0x02,0x44,0x38,0x00,0x00},/*"c",67*/
 | 
			
		||||
{0x00,0x00,0x00,0x60,0x40,0x40,0x40,0x78,0x44,0x42,0x42,0x42,0x64,0xD8,0x00,0x00},/*"d",68*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x7E,0x02,0x02,0x42,0x3C,0x00,0x00},/*"e",69*/
 | 
			
		||||
{0x00,0x00,0x00,0xF0,0x88,0x08,0x08,0x7E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"f",70*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x22,0x22,0x1C,0x02,0x3C,0x42,0x42,0x3C},/*"g",71*/
 | 
			
		||||
{0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x3A,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"h",72*/
 | 
			
		||||
{0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"i",73*/
 | 
			
		||||
{0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x1E},/*"j",74*/
 | 
			
		||||
{0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x72,0x12,0x0A,0x16,0x12,0x22,0x77,0x00,0x00},/*"k",75*/
 | 
			
		||||
{0x00,0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00},/*"l",76*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x92,0x92,0x92,0x92,0x92,0xB7,0x00,0x00},/*"m",77*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00},/*"n",78*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00},/*"o",79*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x26,0x42,0x42,0x42,0x22,0x1E,0x02,0x07},/*"p",80*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x44,0x42,0x42,0x42,0x44,0x78,0x40,0xE0},/*"q",81*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,0x4C,0x04,0x04,0x04,0x04,0x1F,0x00,0x00},/*"r",82*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x42,0x02,0x3C,0x40,0x42,0x3E,0x00,0x00},/*"s",83*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x08,0x08,0x08,0x30,0x00,0x00},/*"t",84*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00},/*"u",85*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x14,0x08,0x08,0x00,0x00},/*"v",86*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEB,0x49,0x49,0x55,0x55,0x22,0x22,0x00,0x00},/*"w",87*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x24,0x18,0x18,0x18,0x24,0x6E,0x00,0x00},/*"x",88*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,0x42,0x24,0x24,0x14,0x18,0x08,0x08,0x07},/*"y",89*/
 | 
			
		||||
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x22,0x10,0x08,0x08,0x44,0x7E,0x00,0x00},/*"z",90*/
 | 
			
		||||
{0x00,0xC0,0x20,0x20,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0xC0,0x00},/*"{",91*/
 | 
			
		||||
{0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},/*"|",92*/
 | 
			
		||||
{0x00,0x06,0x08,0x08,0x08,0x08,0x08,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x06,0x00},/*"}",93*/
 | 
			
		||||
{0x0C,0x32,0xC2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",94*/
 | 
			
		||||
}; 
 | 
			
		||||
typedef struct 
 | 
			
		||||
{
 | 
			
		||||
       unsigned char Index[2];	
 | 
			
		||||
       char Msk[32];
 | 
			
		||||
}typFNT_GB16; 
 | 
			
		||||
//字体取模:宋体常规小四
 | 
			
		||||
const typFNT_GB16 tfont16[]=   
 | 
			
		||||
{
 | 
			
		||||
"深",0x00,0x00,0x27,0xFC,0x14,0x04,0x14,0xA4,0x81,0x10,0x42,0x08,0x40,0x40,0x10,0x40,
 | 
			
		||||
0x17,0xFC,0x20,0x40,0xE0,0xE0,0x21,0x50,0x22,0x48,0x2C,0x46,0x20,0x40,0x00,0x40,/*0*/
 | 
			
		||||
"圳",0x11,0x04,0x11,0x24,0x11,0x24,0x11,0x24,0x11,0x24,0xFD,0x24,0x11,0x24,0x11,0x24,
 | 
			
		||||
0x11,0x24,0x11,0x24,0x11,0x24,0x1D,0x24,0xE1,0x24,0x42,0x24,0x02,0x04,0x04,0x04,/*1*/
 | 
			
		||||
"市",0x02,0x00,0x01,0x00,0x00,0x00,0x7F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,
 | 
			
		||||
0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x28,0x21,0x10,0x01,0x00,0x01,0x00,/*2*/
 | 
			
		||||
"全",0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x40,0x04,0x30,0x18,0x08,0x60,0x06,0x1F,0xF9,
 | 
			
		||||
0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFE,/*0*/
 | 
			
		||||
"动",0x00,0x00,0x00,0x00,0x00,0x20,0x3E,0x20,0x00,0x7C,0x00,0x22,0x00,0x22,0x7F,0x22,
 | 
			
		||||
0x10,0x22,0x10,0x22,0x12,0x22,0x12,0x22,0x22,0x42,0x23,0x42,0x3D,0x82,0x00,0x9C,/*1*/
 | 
			
		||||
"电",0x00,0x00,0x01,0x00,0x01,0x00,0x1F,0xF0,0x61,0x0C,0x41,0x04,0x41,0x04,0x7F,0xFC,
 | 
			
		||||
0x41,0x04,0x41,0x04,0x41,0x04,0x7F,0xFC,0x01,0x00,0x01,0x02,0x01,0x02,0x01,0xFC,/*2*/
 | 
			
		||||
"子",0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x10,0x00,0x60,0x00,0x80,0x01,0x00,0x00,0x80,
 | 
			
		||||
0x7F,0xFE,0x00,0x40,0x00,0x40,0x00,0x20,0x00,0x20,0x00,0x20,0x18,0x40,0x07,0x80,/*3*/
 | 
			
		||||
"技",0x10,0x20,0x10,0x20,0x10,0x20,0x13,0xFE,0xFC,0x20,0x10,0x20,0x10,0x20,0x15,0xFC,0x18,0x84,0x30,0x88,0xD0,0x48,0x10,0x50,0x10,0x20,0x10,0x50,0x51,0x88,0x26,0x06,
 | 
			
		||||
"术",0x01,0x00,0x01,0x20,0x01,0x10,0x01,0x10,0x7F,0xFC,0x03,0x80,0x05,0x40,0x05,0x40,0x09,0x20,0x11,0x10,0x21,0x08,0x41,0x04,0x81,0x02,0x01,0x00,0x01,0x00,0x01,0x00,
 | 
			
		||||
"有",0x02,0x00,0x02,0x00,0xFF,0xFE,0x04,0x00,0x04,0x00,0x0F,0xF0,0x08,0x10,0x18,0x10,0x2F,0xF0,0x48,0x10,0x88,0x10,0x0F,0xF0,0x08,0x10,0x08,0x10,0x08,0x50,0x08,0x20,
 | 
			
		||||
"限",0x00,0x00,0x7B,0xF8,0x4A,0x08,0x52,0x08,0x53,0xF8,0x62,0x08,0x52,0x08,0x4B,0xF8,0x4A,0x44,0x4A,0x48,0x6A,0x30,0x52,0x20,0x42,0x10,0x42,0x88,0x43,0x06,0x42,0x00,
 | 
			
		||||
"公",0x00,0x80,0x04,0x80,0x04,0x80,0x08,0x40,0x08,0x40,0x10,0x20,0x20,0x10,0x42,0x08,0x82,0x06,0x04,0x00,0x04,0x40,0x08,0x20,0x10,0x20,0x3F,0xF0,0x10,0x10,0x00,0x00,
 | 
			
		||||
"司",0x00,0x00,0x3F,0xF8,0x00,0x08,0x00,0x08,0x7F,0xE8,0x00,0x08,0x00,0x08,0x1F,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x10,0x88,0x1F,0x88,0x10,0x88,0x00,0x28,0x00,0x10,
 | 
			
		||||
"欢",0x00,0x80,0x00,0x80,0xFC,0x80,0x04,0xFC,0x05,0x04,0x49,0x08,0x2A,0x40,0x14,0x40,0x10,0x40,0x28,0xA0,0x24,0xA0,0x45,0x10,0x81,0x10,0x02,0x08,0x04,0x04,0x08,0x02,
 | 
			
		||||
"迎",0x00,0x00,0x20,0x80,0x13,0x3C,0x12,0x24,0x02,0x24,0x02,0x24,0xF2,0x24,0x12,0x24,0x12,0x24,0x12,0xB4,0x13,0x28,0x12,0x20,0x10,0x20,0x28,0x20,0x47,0xFE,0x00,0x00,
 | 
			
		||||
"您",0x09,0x00,0x09,0x00,0x11,0xFC,0x32,0x04,0x54,0x48,0x99,0x50,0x11,0x48,0x12,0x44,0x14,0x44,0x11,0x40,0x10,0x80,0x02,0x00,0x51,0x04,0x51,0x12,0x90,0x12,0x0F,0xF0,
 | 
			
		||||
"纯",0x00,0x00,0x00,0x20,0x10,0x20,0x13,0xFE,0x20,0x20,0x26,0x24,0x4A,0x24,0x7A,0x24,
 | 
			
		||||
0x12,0x24,0x22,0x24,0x23,0xFC,0x7C,0x20,0x00,0x22,0x04,0x22,0x78,0x22,0x00,0x3C,/*0*/
 | 
			
		||||
"色",0x00,0x00,0x00,0x00,0x04,0x00,0x0F,0xF0,0x10,0x20,0x20,0x20,0x7F,0xFC,0x20,0x84,
 | 
			
		||||
0x20,0x84,0x20,0x84,0x20,0x84,0x3F,0xF8,0x20,0x00,0x20,0x02,0x20,0x02,0x1F,0xFE,/*1*/
 | 
			
		||||
"填",0x00,0x00,0x00,0x00,0x20,0x40,0x23,0xFE,0x20,0x40,0x79,0xFC,0x22,0x04,0x23,0xFC,
 | 
			
		||||
0x22,0x04,0x23,0xFC,0x22,0x04,0x23,0xFC,0x3A,0x04,0x65,0xFA,0x01,0x98,0x02,0x04,/*2*/
 | 
			
		||||
"充",0x00,0x00,0x01,0x00,0x01,0x00,0x7F,0xFE,0x02,0x20,0x04,0x10,0x04,0x08,0x08,0x04,
 | 
			
		||||
0x3F,0xFC,0x04,0x42,0x04,0x40,0x04,0x40,0x04,0x42,0x08,0x42,0x10,0x42,0x60,0x7E,/*3*/
 | 
			
		||||
"矩",0x00,0x00,0x00,0x00,0x20,0x7E,0x3E,0x80,0x48,0x80,0x48,0x80,0x48,0xFE,0x48,0x82,
 | 
			
		||||
0x7F,0x82,0x08,0x82,0x0C,0x82,0x14,0xFA,0x12,0x84,0x22,0x80,0x21,0x80,0x40,0xFE,/*6*/
 | 
			
		||||
"形",0x00,0x00,0x00,0x00,0x7F,0x84,0x22,0x08,0x22,0x30,0x22,0xC0,0x22,0x02,0x22,0x04,
 | 
			
		||||
0x7F,0xC8,0x22,0x30,0x22,0xC2,0x22,0x02,0x22,0x04,0x22,0x08,0x22,0x30,0x40,0x40,/*7*/
 | 
			
		||||
"画",0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x0F,0xF0,0x11,0x10,0x11,0x10,0x11,0x10,
 | 
			
		||||
0x51,0x12,0x5F,0xF2,0x51,0x12,0x51,0x12,0x51,0x12,0x4F,0xF2,0x40,0x02,0x7F,0xFC,/*8*/
 | 
			
		||||
"圆",0x00,0x00,0x00,0x00,0x7F,0xFE,0x47,0xE2,0x48,0x12,0x48,0x12,0x47,0xE2,0x4F,0xF2,
 | 
			
		||||
0x50,0x12,0x50,0x12,0x51,0x12,0x51,0x12,0x42,0x92,0x44,0x72,0x58,0x0A,0x3F,0xFC,/*9*/
 | 
			
		||||
"图",0x00,0x00,0x00,0x00,0x3F,0xFE,0x44,0x02,0x47,0xF2,0x4C,0x22,0x53,0x62,0x40,0x82,
 | 
			
		||||
0x43,0x62,0x5E,0x1A,0x41,0x82,0x40,0x62,0x43,0x02,0x40,0xC2,0x40,0x22,0x3F,0xFC,/*0*/
 | 
			
		||||
"片",0x00,0x00,0x00,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x3F,0xFE,0x20,0x00,0x20,0x00,
 | 
			
		||||
0x20,0x00,0x3F,0xE0,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x40,0x10,0x40,0x10,/*1*/
 | 
			
		||||
"显",0x00,0x00,0x00,0x00,0x3F,0xFC,0x20,0x04,0x20,0x04,0x3F,0xFC,0x20,0x04,0x20,0x04,
 | 
			
		||||
0x1F,0xF8,0x24,0x44,0x14,0x48,0x14,0x48,0x14,0x48,0x0C,0x50,0x04,0x40,0x7F,0xFE,/*2*/
 | 
			
		||||
"示",0x00,0x00,0x00,0x00,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x80,
 | 
			
		||||
0x08,0x90,0x08,0x88,0x10,0x88,0x10,0x84,0x20,0x84,0x20,0x82,0x40,0x82,0x07,0x80,/*3*/
 | 
			
		||||
"菜",0x00,0x00,0x00,0x20,0x08,0x20,0x7F,0xFE,0x00,0x20,0x00,0x78,0x3F,0x88,0x11,0x08,
 | 
			
		||||
0x08,0x90,0x09,0x20,0x7F,0xFE,0x01,0x80,0x03,0x40,0x0D,0x30,0x31,0x0C,0x40,0x02,/*4*/
 | 
			
		||||
"单",0x00,0x00,0x00,0x10,0x08,0x10,0x04,0x20,0x3F,0xF8,0x21,0x04,0x21,0x04,0x3F,0xFC,
 | 
			
		||||
0x21,0x04,0x21,0x04,0x3F,0xF8,0x01,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,/*5*/
 | 
			
		||||
"中",0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xFC,0x21,0x04,0x21,0x04,0x21,0x04,
 | 
			
		||||
0x21,0x04,0x21,0x04,0x21,0x04,0x3F,0xFC,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,/*0*/
 | 
			
		||||
"英",0x00,0x00,0x00,0x00,0x08,0x20,0x7F,0xFE,0x08,0x20,0x09,0x20,0x01,0x00,0x3F,0xF8,
 | 
			
		||||
0x21,0x08,0x21,0x08,0x21,0x08,0x1F,0xF4,0x01,0x40,0x02,0x20,0x0C,0x10,0x70,0x0E,/*1*/
 | 
			
		||||
"文",0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x80,0x3F,0x7C,0x08,0x10,0x08,0x10,0x04,0x10,
 | 
			
		||||
0x04,0x20,0x02,0x20,0x02,0x40,0x01,0x80,0x01,0x80,0x02,0x60,0x1C,0x18,0xE0,0x06,/*2*/
 | 
			
		||||
"综",0x00,0x00,0x00,0x00,0x10,0x20,0x11,0xFE,0x22,0x02,0x22,0x02,0x49,0xFC,0x58,0x00,
 | 
			
		||||
0x30,0x00,0x13,0xFE,0x25,0x28,0x79,0x24,0x01,0x24,0x0D,0x24,0x72,0x22,0x02,0xA2,/*4*/
 | 
			
		||||
"合",0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x40,0x04,0x30,0x18,0x08,0x60,0x06,0x1F,0xF8,
 | 
			
		||||
0x00,0x00,0x1F,0xF8,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x1F,0xF8,/*5*/
 | 
			
		||||
"亮",0x00,0x00,0x01,0x00,0x01,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xF8,0x20,0x08,0x3F,0xF8,
 | 
			
		||||
0x3F,0xF8,0x40,0x06,0x47,0xC2,0x48,0x24,0x08,0x20,0x08,0x22,0x10,0x22,0x60,0x3E,/*0*/
 | 
			
		||||
"度",0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0xFE,0x44,0x10,0x5F,0xFC,0x44,0x10,0x44,0x10,
 | 
			
		||||
0x43,0xF0,0x40,0x00,0x5F,0xF8,0x44,0x08,0x42,0x30,0x41,0xC0,0x43,0x60,0xBC,0x1E,/*1*/
 | 
			
		||||
"测",0x00,0x00,0x00,0x00,0x67,0xC2,0x14,0x52,0x05,0x52,0x05,0x52,0xC5,0x52,0x25,0x52,
 | 
			
		||||
0x05,0x52,0x05,0x52,0x15,0x52,0x17,0x52,0x22,0x82,0x22,0x42,0x44,0x42,0x48,0x3E,/*2*/
 | 
			
		||||
"试",0x00,0x00,0x00,0x00,0x20,0x14,0x10,0x14,0x17,0xFE,0x00,0x12,0x00,0x10,0x60,0x10,
 | 
			
		||||
0x13,0xF0,0x10,0x90,0x10,0x90,0x10,0x90,0x14,0x92,0x14,0xEA,0x1F,0x0A,0x00,0x06,/*3*/
 | 
			
		||||
"程",0x00,0x00,0x00,0x00,0x19,0xFE,0x72,0x02,0x12,0x02,0x12,0x02,0x7D,0xFC,0x18,0x00,
 | 
			
		||||
0x1B,0xFE,0x34,0x20,0x50,0x20,0x53,0xFE,0x10,0x20,0x10,0x20,0x10,0x20,0x13,0xFE,/*8*/
 | 
			
		||||
"序",0x00,0x00,0x00,0x00,0x00,0x80,0x3F,0xFE,0x40,0x00,0x47,0xFC,0x42,0x08,0x41,0x30,
 | 
			
		||||
0x40,0xC0,0x5F,0xFE,0x40,0x42,0x40,0x42,0x40,0x44,0x40,0x48,0x40,0x40,0x44,0x40,/*9*/
 | 
			
		||||
"调",0x00,0x00,0x00,0x00,0x23,0xFE,0x12,0x22,0x02,0xFA,0x02,0x22,0xE2,0x22,0x12,0xFE,
 | 
			
		||||
0x12,0x72,0x12,0x8A,0x12,0x8A,0x12,0x8A,0x16,0xBA,0x1A,0x42,0x12,0x02,0x04,0x0E,/*0*/
 | 
			
		||||
"光",0x00,0x00,0x01,0x00,0x01,0x04,0x11,0x08,0x09,0x08,0x09,0x10,0x09,0x20,0x7F,0xFE,
 | 
			
		||||
0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x42,0x08,0x42,0x10,0x42,0x60,0x7C,/*1*/
 | 
			
		||||
"版",0x00,0x00,0x00,0x00,0x48,0xFE,0x49,0x00,0x49,0x00,0x49,0x00,0x7E,0xFE,0x41,0x82,
 | 
			
		||||
0x41,0x44,0x79,0x44,0x45,0x28,0x45,0x28,0x45,0x10,0x45,0x28,0x46,0x44,0x03,0x82,/*10*/
 | 
			
		||||
"权",0x00,0x00,0x10,0x00,0x10,0x00,0x13,0xFC,0x7D,0x04,0x11,0x04,0x19,0x04,0x18,0x84,
 | 
			
		||||
0x34,0x88,0x50,0x48,0x50,0x50,0x10,0x20,0x10,0x50,0x10,0x88,0x13,0x04,0x14,0x02,/*11*/
 | 
			
		||||
"所",0x00,0x00,0x00,0x00,0x3F,0x7C,0x20,0x40,0x20,0x40,0x3E,0x40,0x22,0x7E,0x22,0x44,
 | 
			
		||||
0x22,0x44,0x22,0x44,0x3E,0x84,0x20,0x84,0x20,0x84,0x40,0x84,0x41,0x04,0x42,0x04,/*12*/
 | 
			
		||||
"屏",0x00,0x00,0x3F,0xF8,0x20,0x08,0x20,0x08,0x3F,0xF8,0x24,0x10,0x22,0x20,0x2F,0xF8,
 | 
			
		||||
0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x42,0x20,0x44,0x20,0x84,0x20,0x08,0x20,/*"?",0*/
 | 
			
		||||
"幕",0x04,0x40,0x7F,0xFC,0x04,0x40,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,
 | 
			
		||||
0x04,0x00,0xFF,0xFE,0x11,0x10,0x3F,0xF8,0xD1,0x16,0x11,0x50,0x11,0x20,0x01,0x00,/*"?",1*/
 | 
			
		||||
"旋",0x20,0x80,0x10,0x80,0x10,0xFE,0x01,0x00,0xFE,0x00,0x21,0xFC,0x20,0x24,0x3C,0x24,
 | 
			
		||||
0x24,0xA0,0x24,0xA0,0x24,0xBC,0x24,0xA0,0x24,0xA0,0x45,0x60,0x55,0x3E,0x8A,0x00,/*"?",2*/
 | 
			
		||||
"转",0x20,0x20,0x20,0x20,0x20,0x20,0xFD,0xFC,0x40,0x20,0x50,0x40,0x93,0xFE,0xFC,0x40,
 | 
			
		||||
0x10,0x80,0x11,0xFC,0x1C,0x04,0xF0,0x88,0x50,0x50,0x10,0x20,0x10,0x10,0x10,0x10,/*"?",3*/
 | 
			
		||||
"开",0x00,0x00,0x7F,0xFC,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0xFF,0xFE,
 | 
			
		||||
0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x40,0x20,/*"?",0*/
 | 
			
		||||
"源",0x00,0x00,0x27,0xFE,0x14,0x20,0x14,0x40,0x85,0xFC,0x45,0x04,0x45,0xFC,0x15,0x04,
 | 
			
		||||
0x15,0xFC,0x25,0x24,0xE4,0x20,0x24,0xA8,0x29,0x24,0x2A,0x22,0x30,0xA0,0x00,0x40,/*"?",1*/
 | 
			
		||||
"液",0x00,0x80,0x20,0x40,0x17,0xFE,0x11,0x20,0x81,0x20,0x42,0x3C,0x42,0x44,0x16,0x64,
 | 
			
		||||
0x12,0x94,0x23,0x48,0xE2,0x48,0x22,0x30,0x22,0x20,0x22,0x50,0x22,0x88,0x03,0x06,/*"?",2*/
 | 
			
		||||
"晶",0x0F,0xE0,0x08,0x20,0x08,0x20,0x0F,0xE0,0x08,0x20,0x08,0x20,0x0F,0xE0,0x00,0x00,
 | 
			
		||||
0x7E,0xFC,0x42,0x84,0x42,0x84,0x7E,0xFC,0x42,0x84,0x42,0x84,0x7E,0xFC,0x42,0x84,/*"?",3*/
 | 
			
		||||
"网",0x00,0x00,0x7F,0xFC,0x40,0x04,0x40,0x04,0x42,0x14,0x52,0x94,0x4A,0x54,0x44,0x24,
 | 
			
		||||
0x44,0x24,0x4A,0x54,0x4A,0x54,0x52,0x94,0x61,0x04,0x40,0x04,0x40,0x14,0x40,0x08,/*"?",4*/
 | 
			
		||||
"站",0x10,0x20,0x08,0x20,0x08,0x20,0x7E,0x20,0x00,0x3E,0x04,0x20,0x44,0x20,0x44,0x20,
 | 
			
		||||
0x25,0xFC,0x29,0x04,0x29,0x04,0x0F,0x04,0xF1,0x04,0x41,0x04,0x01,0xFC,0x01,0x04,/*"?",5*/
 | 
			
		||||
"按",0x10,0x40,0x10,0x20,0x10,0x20,0x13,0xFE,0xFA,0x02,0x14,0x44,0x10,0x40,0x1B,0xFE,
 | 
			
		||||
0x30,0x88,0xD0,0x88,0x11,0x08,0x10,0xD0,0x10,0x20,0x10,0x50,0x50,0x88,0x23,0x04,/*"?",6*/
 | 
			
		||||
"键",0x20,0x10,0x20,0x10,0x3B,0x7C,0x21,0x14,0x41,0xFE,0x7A,0x14,0xA2,0x7C,0x27,0x10,
 | 
			
		||||
0xF9,0x7C,0x25,0x10,0x25,0xFE,0x22,0x10,0x2A,0x10,0x35,0x00,0x28,0xFE,0x00,0x00,/*"?",0*/
 | 
			
		||||
"校",0x10,0x40,0x10,0x20,0x10,0x20,0x11,0xFE,0xFC,0x00,0x10,0x88,0x31,0x04,0x3A,0x02,
 | 
			
		||||
0x54,0x88,0x50,0x88,0x90,0x50,0x10,0x50,0x10,0x20,0x10,0x50,0x10,0x88,0x13,0x06,/*"?",7*/
 | 
			
		||||
"准",0x01,0x40,0x41,0x20,0x21,0x20,0x23,0xFE,0x02,0x20,0x16,0x20,0x1B,0xFC,0x12,0x20,
 | 
			
		||||
0x22,0x20,0x23,0xFC,0xE2,0x20,0x22,0x20,0x22,0x20,0x23,0xFE,0x22,0x00,0x02,0x00,/*"?",8*/
 | 
			
		||||
"触",0x20,0x20,0x20,0x20,0x78,0x20,0x49,0xFC,0x91,0x24,0x7D,0x24,0x55,0x24,0x55,0x24,
 | 
			
		||||
0x7D,0xFC,0x55,0x24,0x54,0x20,0x7C,0x28,0x54,0x24,0x57,0xFE,0x45,0x02,0x8C,0x00,/*"?",9*/
 | 
			
		||||
"摸",0x11,0x10,0x11,0x10,0x17,0xFC,0x11,0x10,0xFC,0x00,0x13,0xF8,0x12,0x08,0x17,0xF8,
 | 
			
		||||
0x1A,0x08,0x33,0xF8,0xD0,0x40,0x17,0xFC,0x10,0xA0,0x11,0x10,0x52,0x08,0x24,0x06,/*"?",10*/
 | 
			
		||||
};
 | 
			
		||||
typedef struct 
 | 
			
		||||
{
 | 
			
		||||
       unsigned char Index[2];	
 | 
			
		||||
       char Msk[72];
 | 
			
		||||
}typFNT_GB24; 
 | 
			
		||||
//字体取模:宋体常规小四
 | 
			
		||||
const typFNT_GB24 tfont24[]=
 | 
			
		||||
{
 | 
			
		||||
"深",0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x08,0x0C,0x7F,0xFC,0x04,
 | 
			
		||||
0x40,0x10,0x01,0xC8,0xA0,0x02,0x18,0x60,0x42,0x30,0x18,0x32,0x23,0x18,0x12,0xC3,
 | 
			
		||||
0x00,0x14,0x03,0x00,0x04,0x03,0x0C,0x04,0x7F,0xF0,0x08,0x0F,0x80,0x08,0x0B,0x40,
 | 
			
		||||
0x78,0x13,0x60,0x18,0x33,0x20,0x18,0x63,0x18,0x18,0x83,0x1C,0x19,0x03,0x08,0x18,
 | 
			
		||||
0x03,0x00,0x00,0x03,0x00,0x00,0x00,0x00,/*0*/
 | 
			
		||||
"圳",0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x0C,0x04,0x18,0x0C,0x04,0x10,0x8C,0x04,
 | 
			
		||||
0x10,0x8C,0x04,0x10,0x8C,0x04,0x10,0x8C,0x04,0xD0,0x8C,0x3F,0x10,0x8C,0x04,0x10,
 | 
			
		||||
0x8C,0x04,0x10,0x8C,0x04,0x10,0x8C,0x04,0x10,0x8C,0x04,0x10,0x8C,0x04,0x10,0x8C,
 | 
			
		||||
0x05,0xF0,0x8C,0x0E,0x20,0x8C,0x78,0x20,0x8C,0x20,0x40,0x8C,0x00,0x80,0x8C,0x01,
 | 
			
		||||
0x00,0x0C,0x02,0x00,0x0C,0x00,0x00,0x00,/*1*/
 | 
			
		||||
"市",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x18,0x00,0x00,0x18,0x08,0x00,
 | 
			
		||||
0x00,0x1C,0x1F,0xFF,0xE0,0x00,0x18,0x00,0x00,0x18,0x20,0x07,0xFF,0xF0,0x04,0x18,
 | 
			
		||||
0x20,0x04,0x18,0x20,0x04,0x18,0x20,0x04,0x18,0x20,0x04,0x18,0x20,0x04,0x18,0x20,
 | 
			
		||||
0x04,0x18,0x20,0x04,0x18,0x20,0x04,0x18,0x20,0x04,0x18,0xE0,0x04,0x18,0x40,0x00,
 | 
			
		||||
0x18,0x00,0x00,0x18,0x00,0x00,0x00,0x00,/*2*/
 | 
			
		||||
"中",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
 | 
			
		||||
0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x3F,0xFF,0xFE,0x30,0x18,0x06,0x30,0x18,
 | 
			
		||||
0x06,0x30,0x18,0x06,0x30,0x18,0x06,0x30,0x18,0x06,0x3F,0xFF,0xFE,0x30,0x18,0x06,
 | 
			
		||||
0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,
 | 
			
		||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*0*/
 | 
			
		||||
"文",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,
 | 
			
		||||
0x06,0x00,0xFF,0xFF,0xFF,0x06,0x00,0x30,0x06,0x00,0x30,0x03,0x00,0x60,0x03,0x00,
 | 
			
		||||
0x60,0x01,0x80,0xC0,0x00,0xC1,0x80,0x00,0xE3,0x00,0x00,0x36,0x00,0x00,0x1C,0x00,
 | 
			
		||||
0x00,0x77,0x00,0x03,0xC1,0xE0,0x1E,0x00,0x3C,0x60,0x00,0x07,0x00,0x00,0x00,0x00,
 | 
			
		||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*1*/
 | 
			
		||||
"测",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x03,0x21,
 | 
			
		||||
0xFF,0x33,0x39,0x83,0x33,0x11,0x83,0x33,0x01,0x9B,0x33,0xC1,0x9B,0x33,0x71,0x9B,
 | 
			
		||||
0x33,0x19,0x9B,0x33,0x01,0x9B,0x33,0x01,0x9B,0x33,0x11,0x9B,0x33,0x19,0xB3,0x33,
 | 
			
		||||
0x30,0x30,0x33,0x30,0x6C,0x03,0x30,0xC6,0x03,0x63,0x83,0x03,0x2E,0x01,0xBE,0x00,
 | 
			
		||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*2*/
 | 
			
		||||
"试",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xD8,0x30,
 | 
			
		||||
0x00,0xCE,0x18,0x00,0xC2,0x1C,0x00,0xC0,0x01,0xFF,0xFF,0x00,0x00,0xC0,0xF8,0x00,
 | 
			
		||||
0xC0,0x18,0x00,0xC0,0x19,0xFF,0xC0,0x18,0x18,0x40,0x18,0x18,0x60,0x19,0x18,0x60,
 | 
			
		||||
0x1B,0x18,0x61,0x1E,0x18,0x31,0x1C,0x1F,0xB1,0x39,0xF0,0x19,0x10,0x00,0x0F,0x00,
 | 
			
		||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*3*/
 | 
			
		||||
};  
 | 
			
		||||
typedef struct 
 | 
			
		||||
{
 | 
			
		||||
       unsigned char Index[2];	
 | 
			
		||||
       char Msk[128];
 | 
			
		||||
}typFNT_GB32; 
 | 
			
		||||
//字体取模:宋体常规小四
 | 
			
		||||
const typFNT_GB32 tfont32[]=
 | 
			
		||||
{
 | 
			
		||||
"字",0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0xC0,0x00,
 | 
			
		||||
0x00,0x01,0xC0,0xC0,0x00,0x01,0x07,0xC0,0x00,0x01,0xFF,0x00,0x02,0x1F,0xFE,0x00,
 | 
			
		||||
0x07,0xF0,0x1C,0x00,0x07,0xC0,0x70,0x00,0x0F,0x00,0xE0,0x00,0x0E,0x03,0xF0,0x00,
 | 
			
		||||
0x1C,0x0F,0xF0,0x00,0x3C,0x0F,0x70,0x00,0x3C,0x00,0xE0,0x00,0x18,0x00,0xC0,0x00,
 | 
			
		||||
0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x20,0x00,
 | 
			
		||||
0x00,0x00,0x37,0x00,0x00,0x01,0xFF,0x00,0x00,0x7F,0xF8,0x00,0x07,0xF8,0x30,0x00,
 | 
			
		||||
0x1F,0x80,0x30,0x00,0x00,0x80,0x30,0x00,0x00,0xC0,0x30,0x00,0x00,0x60,0x60,0x00,
 | 
			
		||||
0x00,0x18,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,/*0*/
 | 
			
		||||
"体",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xE0,
 | 
			
		||||
0x00,0x20,0x01,0xB8,0x00,0x70,0x3F,0xF8,0x00,0x61,0xFF,0xC0,0x00,0xC3,0x03,0x00,
 | 
			
		||||
0x01,0xC6,0x06,0x00,0x03,0x8C,0x06,0x00,0x03,0x08,0x0C,0x00,0x06,0x08,0x0C,0x00,
 | 
			
		||||
0x0E,0x18,0x18,0x3F,0x1E,0x10,0x1B,0xF3,0x1F,0x90,0x3F,0x07,0x00,0x80,0x3C,0x1C,
 | 
			
		||||
0x01,0x90,0x70,0x7C,0x01,0x90,0x60,0xFE,0x01,0xA0,0xC3,0xF8,0x01,0xA0,0x0F,0xD8,
 | 
			
		||||
0x03,0xA0,0x08,0x18,0x03,0x60,0x00,0x18,0x03,0x40,0x00,0x18,0x03,0xC0,0x00,0x18,
 | 
			
		||||
0x03,0x80,0x00,0x18,0x03,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x10,
 | 
			
		||||
0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*1*/
 | 
			
		||||
"测",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 | 
			
		||||
0x02,0x0C,0x10,0x08,0x07,0x1F,0xF8,0x04,0x03,0xBF,0xF0,0x02,0x01,0xBC,0x30,0x03,
 | 
			
		||||
0x03,0xEC,0x30,0x03,0x01,0x5C,0x60,0x03,0x00,0xD8,0x60,0x03,0x00,0xD8,0x60,0x03,
 | 
			
		||||
0x80,0x98,0x62,0x03,0x61,0xB8,0x43,0x07,0x71,0xB1,0x43,0x06,0x31,0x32,0x43,0x06,
 | 
			
		||||
0x33,0x76,0xC3,0x06,0x3A,0x64,0xC7,0x06,0x3E,0xEC,0xC0,0x06,0x3E,0x78,0xC0,0x06,
 | 
			
		||||
0x3C,0x30,0x40,0x06,0x7C,0x70,0x00,0x06,0x78,0xE0,0x60,0x06,0x7B,0xFF,0xF0,0x06,
 | 
			
		||||
0xF7,0xC0,0x00,0x06,0xE4,0x00,0x00,0x06,0x40,0x00,0x00,0x06,0x00,0x00,0x00,0x06,
 | 
			
		||||
0x00,0x00,0x00,0x7C,0x00,0x00,0x8F,0xF0,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,/*2*/
 | 
			
		||||
"试",0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,
 | 
			
		||||
0x00,0x00,0x7F,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,
 | 
			
		||||
0x00,0x00,0x00,0xCE,0x03,0x80,0x00,0xCF,0xFF,0xC0,0x00,0xDD,0x41,0x80,0x0F,0xFE,
 | 
			
		||||
0x00,0x07,0xFF,0xFC,0x00,0x0C,0x00,0xF0,0x00,0x18,0x0F,0xC0,0x3E,0x19,0xFF,0x40,
 | 
			
		||||
0xF3,0x11,0xBC,0x60,0x83,0x30,0x7F,0xE0,0x03,0xB1,0xFE,0x20,0x03,0x33,0x80,0x20,
 | 
			
		||||
0x03,0x70,0x00,0x30,0x03,0x60,0x00,0x10,0x03,0x60,0x00,0x18,0x07,0xC0,0x00,0x0C,
 | 
			
		||||
0x07,0xC0,0x00,0x04,0x07,0x80,0x00,0x02,0x01,0x00,0x00,0x03,0x00,0x00,0x00,0x01,
 | 
			
		||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*3*/
 | 
			
		||||
};
 | 
			
		||||
  
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										51
									
								
								FinalHomework/Core/Inc/GUI.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								FinalHomework/Core/Inc/GUI.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
			
		||||
/****************************************************************************************************
 | 
			
		||||
//=========================================电源接线================================================//
 | 
			
		||||
//     LCD模块                STM32单片机
 | 
			
		||||
//      VCC          接        DC5V/3.3V      //电源
 | 
			
		||||
//      GND          接          GND          //电源地
 | 
			
		||||
//=======================================液晶屏数据线接线==========================================//
 | 
			
		||||
//本模块默认数据总线类型为SPI总线
 | 
			
		||||
//     LCD模块                STM32单片机    
 | 
			
		||||
//       SDA         接          PB15         //液晶屏SPI总线数据写信号
 | 
			
		||||
//=======================================液晶屏控制线接线==========================================//
 | 
			
		||||
//     LCD模块 					      STM32单片机 
 | 
			
		||||
//       SCK         接          PB13         //液晶屏SPI总线时钟信号
 | 
			
		||||
//       A0          接          PB10         //液晶屏数据/命令控制信号
 | 
			
		||||
//       RESET       接          PB12         //液晶屏复位控制信号
 | 
			
		||||
//       CS          接          PB11         //液晶屏片选控制信号
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
 /* @attention
 | 
			
		||||
  *
 | 
			
		||||
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 | 
			
		||||
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 | 
			
		||||
  * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
 | 
			
		||||
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 | 
			
		||||
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 | 
			
		||||
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 | 
			
		||||
**************************************************************************************************/		
 | 
			
		||||
#ifndef __GUI_H__
 | 
			
		||||
#define __GUI_H__
 | 
			
		||||
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
void GUI_DrawPoint(uint16_t x,uint16_t y,uint16_t color);
 | 
			
		||||
void LCD_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t color);
 | 
			
		||||
void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
 | 
			
		||||
void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
 | 
			
		||||
void Draw_Circle(uint16_t x0,uint16_t y0,uint16_t fc,uint8_t r);
 | 
			
		||||
void Draw_Triangel(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2);
 | 
			
		||||
void Fill_Triangel(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2);
 | 
			
		||||
void LCD_ShowChar(uint16_t x,uint16_t y,uint16_t fc, uint16_t bc, uint8_t num,uint8_t size,uint8_t mode);
 | 
			
		||||
void LCD_ShowNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len,uint8_t size);
 | 
			
		||||
void LCD_Show2Num(uint16_t x,uint16_t y,uint16_t num,uint8_t len,uint8_t size,uint8_t mode);
 | 
			
		||||
void LCD_ShowString(uint16_t x,uint16_t y,uint8_t size,uint8_t *p,uint8_t mode);
 | 
			
		||||
void GUI_DrawFont16(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode);
 | 
			
		||||
void GUI_DrawFont24(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode);
 | 
			
		||||
void GUI_DrawFont32(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode);
 | 
			
		||||
void Show_Str(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str,uint8_t size,uint8_t mode);
 | 
			
		||||
void Gui_Drawbmp16(uint16_t x,uint16_t y,const unsigned char *p); //显示40*40 QQ图片
 | 
			
		||||
void gui_circle(int xc, int yc,uint16_t c,int r, int fill);
 | 
			
		||||
void Gui_StrCenter(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str,uint8_t size,uint8_t mode);
 | 
			
		||||
void LCD_DrawFillRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										130
									
								
								FinalHomework/Core/Inc/lcd.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								FinalHomework/Core/Inc/lcd.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,130 @@
 | 
			
		||||
/****************************************************************************************************
 | 
			
		||||
//=========================================电源接线================================================//
 | 
			
		||||
//     LCD模块                STM32单片机
 | 
			
		||||
//      VCC          接        DC5V/3.3V      //电源
 | 
			
		||||
//      GND          接          GND          //电源地
 | 
			
		||||
//=======================================液晶屏数据线接线==========================================//
 | 
			
		||||
//本模块默认数据总线类型为SPI总线
 | 
			
		||||
//     LCD模块                STM32单片机    
 | 
			
		||||
//       SDA         接          PB15         //液晶屏SPI总线数据写信号
 | 
			
		||||
//=======================================液晶屏控制线接线==========================================//
 | 
			
		||||
//     LCD模块 					      STM32单片机 
 | 
			
		||||
//       SCK         接          PB13         //液晶屏SPI总线时钟信号
 | 
			
		||||
//       A0          接          PB10         //液晶屏数据/命令控制信号
 | 
			
		||||
//       RESET       接          PB12         //液晶屏复位控制信号
 | 
			
		||||
//       CS          接          PB11         //液晶屏片选控制信号
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
 /* @attention
 | 
			
		||||
  *
 | 
			
		||||
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 | 
			
		||||
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 | 
			
		||||
  * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
 | 
			
		||||
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 | 
			
		||||
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 | 
			
		||||
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
#ifndef __LCD_H
 | 
			
		||||
#define __LCD_H		
 | 
			
		||||
#include "main.h"
 | 
			
		||||
#include "stdlib.h"
 | 
			
		||||
 | 
			
		||||
//LCD重要参数集
 | 
			
		||||
typedef struct  
 | 
			
		||||
{										    
 | 
			
		||||
	uint16_t width;				//LCD 宽度
 | 
			
		||||
	uint16_t height;			//LCD 高度
 | 
			
		||||
	uint16_t id;				  //LCD ID
 | 
			
		||||
	uint8_t  dir;			  	//横屏还是竖屏控制:0,竖屏;1,横屏。	
 | 
			
		||||
	uint16_t	 wramcmd;		//开始写gram指令
 | 
			
		||||
	uint16_t  setxcmd;			//设置x坐标指令
 | 
			
		||||
	uint16_t  setycmd;			//设置y坐标指令	 
 | 
			
		||||
}_lcd_dev; 	
 | 
			
		||||
 | 
			
		||||
//LCD参数
 | 
			
		||||
extern _lcd_dev lcddev;	//管理LCD重要参数
 | 
			
		||||
/////////////////////////////////////用户配置区///////////////////////////////////	 
 | 
			
		||||
#define USE_HORIZONTAL  	 0 //定义液晶屏顺时针旋转方向 	0-0度旋转,1-90度旋转,2-180度旋转,3-270度旋转
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////	  
 | 
			
		||||
//定义LCD的尺寸
 | 
			
		||||
#define LCD_W 128
 | 
			
		||||
#define LCD_H 160
 | 
			
		||||
 | 
			
		||||
//TFTLCD部分外要调用的函数		   
 | 
			
		||||
extern uint16_t  POINT_COLOR;//默认红色    
 | 
			
		||||
extern uint16_t  BACK_COLOR; //背景颜色.默认为白色
 | 
			
		||||
 | 
			
		||||
////////////////////////////////////////////////////////////////////
 | 
			
		||||
//-----------------LCD端口定义---------------- 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//GPIO置位(拉高)
 | 
			
		||||
#define	LCD_CS_SET  LCD_CS_GPIO_Port->BSRR=LCD_CS_Pin    //片选端口  	PB12
 | 
			
		||||
#define	LCD_RS_SET	LCD_RS_GPIO_Port->BSRR=LCD_RS_Pin    //数据/命令  	PB14	  
 | 
			
		||||
#define	LCD_RST_SET	LCD_RST_GPIO_Port->BSRR=LCD_RST_Pin   //复位	 	PB11
 | 
			
		||||
 | 
			
		||||
//GPIO复位(拉低)							    
 | 
			
		||||
#define	LCD_CS_CLR  LCD_CS_GPIO_Port->BRR=LCD_CS_Pin     //片选端口  	PB12
 | 
			
		||||
#define	LCD_RS_CLR	LCD_RS_GPIO_Port->BRR=LCD_RS_Pin     //数据/命令  	PB13	 
 | 
			
		||||
#define	LCD_RST_CLR	LCD_RST_GPIO_Port->BRR=LCD_RST_Pin    //复位		PB11
 | 
			
		||||
 | 
			
		||||
//画笔颜色
 | 
			
		||||
#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 //灰色
 | 
			
		||||
//GUI颜色
 | 
			
		||||
 | 
			
		||||
#define DARKBLUE      	 0X01CF	//深蓝色
 | 
			
		||||
#define LIGHTBLUE      	 0X7D7C	//浅蓝色  
 | 
			
		||||
#define GRAYBLUE       	 0X5458 //灰蓝色
 | 
			
		||||
//以上三色为PANEL的颜色 
 | 
			
		||||
 
 | 
			
		||||
#define LIGHTGREEN     	0X841F //浅绿色
 | 
			
		||||
#define LIGHTGRAY     0XEF5B //浅灰色(PANNEL)
 | 
			
		||||
#define LGRAY 			 		0XC618 //浅灰色(PANNEL),窗体背景色
 | 
			
		||||
 | 
			
		||||
#define LGRAYBLUE      	0XA651 //浅灰蓝色(中间层颜色)
 | 
			
		||||
#define LBBLUE          0X2B12 //浅棕蓝色(选择条目的反色)
 | 
			
		||||
	    															  
 | 
			
		||||
void LCD_Init(void);
 | 
			
		||||
void LCD_DisplayOn(void);
 | 
			
		||||
void LCD_DisplayOff(void);
 | 
			
		||||
void LCD_Clear(uint16_t Color);	 
 | 
			
		||||
void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos);
 | 
			
		||||
void LCD_DrawPoint(uint16_t x,uint16_t y);//画点
 | 
			
		||||
uint16_t  LCD_ReadPoint(uint16_t x,uint16_t y); //读点
 | 
			
		||||
void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
 | 
			
		||||
void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);		   
 | 
			
		||||
void LCD_SetWindows(uint16_t xStar, uint16_t yStar,uint16_t xEnd,uint16_t yEnd);
 | 
			
		||||
 | 
			
		||||
uint16_t LCD_RD_DATA(void);//读取LCD数据									    
 | 
			
		||||
void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue);
 | 
			
		||||
void LCD_WR_DATA(uint8_t data);
 | 
			
		||||
uint16_t LCD_ReadReg(uint8_t LCD_Reg);
 | 
			
		||||
void LCD_WriteRAM_Prepare(void);
 | 
			
		||||
void LCD_WriteRAM(uint16_t RGB_Code);
 | 
			
		||||
uint16_t LCD_ReadRAM(void);		   
 | 
			
		||||
uint16_t LCD_BGR2RGB(uint16_t c);
 | 
			
		||||
void LCD_SetParam(void);
 | 
			
		||||
void Lcd_WriteData_16Bit(uint16_t Data);
 | 
			
		||||
void LCD_direction(uint8_t direction );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
				  		 
 | 
			
		||||
#endif  
 | 
			
		||||
	 
 | 
			
		||||
	 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										268
									
								
								FinalHomework/Core/Inc/pic.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										268
									
								
								FinalHomework/Core/Inc/pic.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,268 @@
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////	 
 | 
			
		||||
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
 | 
			
		||||
//测试硬件:单片机STM32F103RCT6,正点原子MiniSTM32开发板,主频72MHZ,晶振12MHZ
 | 
			
		||||
//QDtech-TFT液晶驱动 for STM32 IO模拟
 | 
			
		||||
//xiao冯@ShenZhen QDtech co.,LTD
 | 
			
		||||
//公司网站:www.qdtft.com
 | 
			
		||||
//淘宝网站:http://qdtech.taobao.com
 | 
			
		||||
//wiki技术网站:http://www.lcdwiki.com
 | 
			
		||||
//我司提供技术支持,任何技术问题欢迎随时交流学习
 | 
			
		||||
//固话(传真) :+86 0755-23594567 
 | 
			
		||||
//手机:15989313508(冯工) 
 | 
			
		||||
//邮箱:lcdwiki01@gmail.com    support@lcdwiki.com    goodtft@163.com 
 | 
			
		||||
//技术支持QQ:3002773612  3002778157
 | 
			
		||||
//技术交流QQ群:324828016
 | 
			
		||||
//创建日期:2018/08/22
 | 
			
		||||
//版本:V1.0
 | 
			
		||||
//版权所有,盗版必究。
 | 
			
		||||
//Copyright(C) 深圳市全动电子技术有限公司 2018-2028
 | 
			
		||||
//All rights reserved
 | 
			
		||||
/****************************************************************************************************
 | 
			
		||||
//=========================================电源接线================================================//
 | 
			
		||||
//     LCD模块                STM32单片机
 | 
			
		||||
//      VCC          接        DC5V/3.3V      //电源
 | 
			
		||||
//      GND          接          GND          //电源地
 | 
			
		||||
//=======================================液晶屏数据线接线==========================================//
 | 
			
		||||
//本模块默认数据总线类型为SPI总线
 | 
			
		||||
//     LCD模块                STM32单片机    
 | 
			
		||||
//       SDA         接          PB15         //液晶屏SPI总线数据写信号
 | 
			
		||||
//=======================================液晶屏控制线接线==========================================//
 | 
			
		||||
//     LCD模块 					      STM32单片机 
 | 
			
		||||
//       LED         接          PB9          //液晶屏背光控制信号,如果不需要控制,接5V或3.3V
 | 
			
		||||
//       SCK         接          PB13         //液晶屏SPI总线时钟信号
 | 
			
		||||
//       A0          接          PB10         //液晶屏数据/命令控制信号
 | 
			
		||||
//       RESET       接          PB12         //液晶屏复位控制信号
 | 
			
		||||
//       CS          接          PB11         //液晶屏片选控制信号
 | 
			
		||||
//=========================================触摸屏触接线=========================================//
 | 
			
		||||
//如果模块不带触摸功能或者带有触摸功能,但是不需要触摸功能,则不需要进行触摸屏接线
 | 
			
		||||
//	   LCD模块                STM32单片机 
 | 
			
		||||
//      T_IRQ        接          PC10         //触摸屏触摸中断信号
 | 
			
		||||
//      T_DO         接          PC2          //触摸屏SPI总线读信号
 | 
			
		||||
//      T_DIN        接          PC3          //触摸屏SPI总线写信号
 | 
			
		||||
//      T_CS         接          PC13         //触摸屏片选控制信号
 | 
			
		||||
//      T_CLK        接          PC0          //触摸屏SPI总线时钟信号
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
 /* @attention
 | 
			
		||||
  *
 | 
			
		||||
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 | 
			
		||||
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 | 
			
		||||
  * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
 | 
			
		||||
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 | 
			
		||||
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 | 
			
		||||
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
#ifndef __PIC_H
 | 
			
		||||
#define __PIC_H 
 | 
			
		||||
 | 
			
		||||
//16位BMP 40X40 QQ图像取模数据
 | 
			
		||||
//Image2LCD取模选项设置
 | 
			
		||||
//水平扫描
 | 
			
		||||
//16位
 | 
			
		||||
//40X40
 | 
			
		||||
//不包含图像头数据
 | 
			
		||||
//自左至右
 | 
			
		||||
//自顶至底
 | 
			
		||||
//低位在前
 | 
			
		||||
const unsigned char gImage_qq[3200] = { /* 0X00,0X10,0X28,0X00,0X28,0X00,0X01,0X1B, */
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0XF7,
 | 
			
		||||
0XFF,0XFF,0XDE,0XFF,0X38,0XC6,0X92,0X8C,0X8E,0X6B,0X6E,0X6B,0X10,0X7C,0X96,0XAD,
 | 
			
		||||
0X3C,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5D,0XEF,
 | 
			
		||||
0X15,0X9D,0X4F,0X63,0X6C,0X42,0X0A,0X32,0X88,0X29,0X46,0X19,0X25,0X19,0X45,0X21,
 | 
			
		||||
0XE8,0X31,0X8E,0X6B,0X38,0XC6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X36,0XA5,0X10,0X53,
 | 
			
		||||
0X10,0X4B,0X51,0X53,0X0F,0X4B,0X6C,0X3A,0XE9,0X31,0X67,0X21,0X25,0X19,0XE4,0X10,
 | 
			
		||||
0XA3,0X08,0X62,0X00,0X83,0X08,0XCB,0X52,0X9A,0XD6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3C,0XE7,0X70,0X63,0XB3,0X63,0XB8,0X7C,
 | 
			
		||||
0XF5,0X63,0X11,0X43,0X4D,0X32,0XEA,0X29,0X88,0X21,0X26,0X19,0X05,0X19,0X05,0X19,
 | 
			
		||||
0X04,0X11,0X04,0X11,0XE4,0X10,0X83,0X00,0XA3,0X08,0X72,0X8C,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDB,0XDE,0X4B,0X3A,0XF0,0X42,0X35,0X6C,0X54,0X4B,
 | 
			
		||||
0XB1,0X32,0X2E,0X2A,0XEB,0X21,0XA9,0X21,0X67,0X19,0X05,0X19,0X04,0X11,0X04,0X11,
 | 
			
		||||
0X04,0X11,0X04,0X11,0X04,0X11,0X05,0X19,0XE4,0X10,0X42,0X00,0XAF,0X73,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0X5D,0XEF,0X09,0X32,0X4C,0X32,0X10,0X4B,0X8F,0X32,0X4F,0X2A,
 | 
			
		||||
0X2E,0X2A,0XCC,0X19,0X89,0X19,0X89,0X21,0X47,0X19,0X05,0X19,0X04,0X11,0X04,0X11,
 | 
			
		||||
0XC4,0X10,0XC4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,0XE4,0X10,0X42,0X00,0X31,0X84,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XEC,0X52,0X47,0X19,0X4C,0X32,0X0B,0X2A,0XEC,0X21,0XEC,0X21,
 | 
			
		||||
0X0C,0X22,0X91,0X5B,0XEE,0X4A,0X06,0X11,0X26,0X19,0X04,0X19,0XE4,0X10,0XE4,0X10,
 | 
			
		||||
0XA7,0X29,0X66,0X21,0XA3,0X08,0X05,0X19,0X04,0X11,0X04,0X11,0XE4,0X10,0X82,0X00,
 | 
			
		||||
0XF7,0XBD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0X35,0XA5,0X83,0X08,0X88,0X21,0X88,0X21,0X89,0X21,0XAA,0X21,0X8A,0X21,
 | 
			
		||||
0X6B,0X42,0X71,0X8C,0XFF,0XFF,0X72,0X8C,0X83,0X08,0X04,0X11,0XC4,0X08,0X29,0X42,
 | 
			
		||||
0XFB,0XDE,0X5D,0XEF,0XEC,0X5A,0X83,0X08,0X04,0X11,0X04,0X11,0X04,0X11,0X83,0X08,
 | 
			
		||||
0XE8,0X31,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XBE,0XF7,0XC7,0X31,0XC4,0X10,0X25,0X19,0X26,0X19,0X47,0X19,0X47,0X19,0XA8,0X29,
 | 
			
		||||
0X8A,0X52,0X28,0X4A,0X55,0XAD,0XFF,0XFF,0XE8,0X31,0XA3,0X08,0X05,0X19,0X4D,0X6B,
 | 
			
		||||
0X4D,0X6B,0XFF,0XFF,0X7D,0XEF,0X45,0X21,0XC4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,
 | 
			
		||||
0X62,0X00,0X76,0XAD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0X96,0XB5,0X62,0X00,0X04,0X11,0X04,0X19,0X05,0X11,0X05,0X19,0XC4,0X08,0X8B,0X4A,
 | 
			
		||||
0XB6,0XB5,0X5D,0XEF,0XF7,0XBD,0XFF,0XFF,0X8E,0X6B,0X62,0X00,0X29,0X42,0XAA,0X5A,
 | 
			
		||||
0X08,0X42,0XFF,0XFF,0XFF,0XFF,0XCC,0X52,0X83,0X08,0X04,0X11,0X04,0X11,0X04,0X11,
 | 
			
		||||
0XA3,0X08,0XAD,0X52,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1C,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0X4E,0X63,0X62,0X00,0X04,0X11,0X04,0X11,0X04,0X11,0XE4,0X10,0X62,0X00,0X8E,0X63,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XCF,0X73,0X01,0X00,0XF3,0X9C,0X2C,0X63,
 | 
			
		||||
0X96,0XB5,0XFF,0XFF,0XFF,0XFF,0X2D,0X5B,0X83,0X00,0X04,0X11,0X04,0X11,0X04,0X11,
 | 
			
		||||
0XE4,0X10,0X67,0X21,0X3D,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XF8,0XBD,0XB7,0XB5,0X9E,0XEF,0XCB,0X52,0XB3,0X94,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,
 | 
			
		||||
0XE8,0X31,0XA3,0X08,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X11,0XA3,0X08,0X49,0X42,
 | 
			
		||||
0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0X6A,0X4A,0X01,0X00,0X72,0X84,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XF7,0XDF,0XEF,0X09,0X3A,0XA3,0X08,0X04,0X11,0X04,0X11,0X04,0X11,
 | 
			
		||||
0X04,0X11,0X05,0X11,0X18,0XBE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XF0,0X7B,0X62,0X00,0XE8,0X31,0XC7,0X31,0X41,0X00,0X35,0XA5,0XFF,0XFF,0X5D,0XEF,
 | 
			
		||||
0X46,0X21,0XC4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X11,0XE4,0X10,0XA3,0X08,
 | 
			
		||||
0X76,0X9D,0XFF,0XF7,0XFF,0XFF,0XB7,0XAD,0XA3,0X08,0XA3,0X08,0XC7,0X31,0X9E,0XE7,
 | 
			
		||||
0XFF,0XF7,0XFF,0XF7,0X76,0XA5,0XA3,0X08,0XE4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,
 | 
			
		||||
0X05,0X11,0X05,0X11,0X35,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XDB,0XDE,0XA7,0X29,0X83,0X00,0XC4,0X10,0XC4,0X10,0XC4,0X10,0X1C,0XE7,0X9E,0XEF,
 | 
			
		||||
0X05,0X11,0XE4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X19,0XC4,0X08,
 | 
			
		||||
0XE5,0X10,0XD1,0X6B,0XD1,0X6B,0XC5,0X08,0X64,0X00,0XA5,0X08,0X43,0X00,0X2B,0X32,
 | 
			
		||||
0X77,0X9D,0XB3,0X84,0X25,0X19,0XC4,0X10,0X04,0X11,0X04,0X11,0X04,0X11,0X04,0X11,
 | 
			
		||||
0X25,0X19,0X26,0X09,0X35,0X9D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XAF,0X73,0X62,0X00,0X04,0X19,0X05,0X19,0X82,0X00,0X0D,0X5B,0X8E,0X9B,
 | 
			
		||||
0X62,0X10,0X05,0X11,0X04,0X11,0X04,0X11,0X04,0X19,0XE4,0X10,0X85,0X00,0X05,0X11,
 | 
			
		||||
0XC4,0X39,0X81,0X5A,0X40,0X7B,0X22,0X9C,0X43,0XAC,0X03,0XA4,0X83,0X9B,0X82,0X72,
 | 
			
		||||
0X82,0X49,0XC2,0X18,0XA4,0X00,0XC5,0X00,0XE4,0X10,0X04,0X19,0X04,0X11,0X05,0X19,
 | 
			
		||||
0X47,0X19,0X67,0X11,0XEC,0X5A,0XBE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XDF,0XFF,0XDB,0XDE,0XC4,0X10,0XE4,0X10,0X04,0X11,0X05,0X11,0XA4,0X18,0X01,0XC0,
 | 
			
		||||
0X83,0X88,0XE4,0X00,0X05,0X19,0X04,0X19,0XC5,0X08,0X44,0X21,0X43,0X83,0X23,0XD5,
 | 
			
		||||
0X42,0XFE,0XE4,0XFE,0X27,0XFF,0X07,0XFF,0XA4,0XFE,0X64,0XFE,0X03,0XFE,0XA3,0XFD,
 | 
			
		||||
0XE2,0XFC,0X42,0XEC,0X83,0XB3,0X24,0X62,0XE5,0X10,0XC4,0X08,0X04,0X19,0X26,0X19,
 | 
			
		||||
0XA8,0X19,0X87,0X21,0X00,0X90,0XD3,0XBC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XDF,0XFF,0XFF,0XFF,0X10,0X7C,0X42,0X00,0X05,0X19,0X05,0X11,0X83,0X28,0X01,0XD0,
 | 
			
		||||
0X44,0XF8,0XA3,0X48,0XE4,0X00,0XC5,0X08,0X44,0X5A,0X02,0XED,0XE2,0XFD,0X02,0XFE,
 | 
			
		||||
0X66,0XFE,0X74,0XFF,0XB8,0XFF,0X73,0XFF,0XE7,0XF6,0XA6,0XF6,0X45,0XF6,0XA4,0XF5,
 | 
			
		||||
0XC3,0XFC,0X62,0XFC,0XC2,0XFC,0XC2,0XFC,0XE3,0XCB,0XC4,0X49,0X06,0X11,0X88,0X19,
 | 
			
		||||
0X87,0X01,0XA4,0X90,0X01,0XF8,0XEC,0X9A,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XBE,0XF7,0XE8,0X31,0X83,0X00,0X05,0X09,0X82,0X40,0X01,0XC0,
 | 
			
		||||
0X23,0XF8,0X85,0XF0,0XA3,0X48,0XA4,0X00,0X44,0X5A,0X02,0XFD,0X23,0XCC,0XC2,0XDC,
 | 
			
		||||
0X04,0XFE,0X28,0XFE,0X48,0XF6,0X46,0XF6,0X24,0XF6,0XE4,0XF5,0X64,0XFD,0XE3,0XFC,
 | 
			
		||||
0X62,0XFC,0XC2,0XFC,0X02,0XE4,0X02,0XDC,0XE2,0XFC,0XA4,0X7A,0X48,0X01,0X67,0X01,
 | 
			
		||||
0XC4,0X78,0X24,0XF8,0X02,0XF8,0X84,0XB0,0X7D,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDB,0XDE,0X25,0X19,0XA3,0X00,0XC4,0X38,0X02,0XE0,
 | 
			
		||||
0X22,0XD8,0X44,0XF8,0XA6,0XF8,0XA4,0X78,0X63,0X00,0X43,0X21,0X83,0X72,0X83,0X39,
 | 
			
		||||
0X82,0X9B,0X21,0XF5,0X61,0XFD,0X22,0XFD,0XE2,0XFC,0XA2,0XFC,0X42,0XFC,0X42,0XFC,
 | 
			
		||||
0X42,0XFC,0X22,0XAB,0X83,0X41,0XC3,0X92,0X04,0X52,0X26,0X01,0X25,0X19,0XA4,0X98,
 | 
			
		||||
0X44,0XF8,0X23,0XF8,0X02,0XF8,0XA4,0XD0,0X9E,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9A,0XD6,0X87,0X29,0XA5,0X00,0X43,0XB8,
 | 
			
		||||
0X22,0XF8,0X23,0XE0,0X65,0XF8,0XE8,0XF8,0X07,0XC9,0X83,0X48,0X42,0X00,0XA3,0X00,
 | 
			
		||||
0X84,0X00,0X63,0X29,0XA2,0X7A,0X62,0XB3,0XA2,0XCB,0X62,0XD3,0X02,0XBB,0X82,0X8A,
 | 
			
		||||
0X83,0X39,0XA4,0X00,0XE5,0X00,0XE5,0X00,0XE5,0X08,0XC4,0X60,0X64,0XD8,0X44,0XF8,
 | 
			
		||||
0X24,0XF8,0X23,0XF8,0X02,0XF8,0X83,0X88,0XDB,0XC6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X3D,0XE7,0X50,0X5B,0X08,0X31,
 | 
			
		||||
0X23,0XE8,0X43,0XF8,0X44,0XF0,0X65,0XF8,0X09,0XF9,0XAB,0XF9,0X89,0XD1,0X06,0X89,
 | 
			
		||||
0XA3,0X48,0X42,0X18,0X02,0X00,0X42,0X00,0X61,0X00,0X82,0X00,0X62,0X00,0X62,0X00,
 | 
			
		||||
0X83,0X00,0XA3,0X20,0XC4,0X50,0XA5,0X88,0X85,0XD8,0X65,0XF8,0X44,0XF8,0X44,0XF8,
 | 
			
		||||
0X23,0XF8,0X23,0XF8,0X03,0XD0,0X82,0X10,0XC7,0X29,0X5D,0XEF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X6C,0X32,
 | 
			
		||||
0XA5,0X38,0X02,0XD8,0X23,0XF8,0X65,0XF8,0X66,0XF8,0XA7,0XF8,0X4A,0XF9,0X0C,0XFA,
 | 
			
		||||
0X4D,0XFA,0X4C,0XEA,0X0B,0XD2,0XA9,0XB9,0X68,0XB1,0X47,0XA9,0X27,0XB1,0X07,0XB9,
 | 
			
		||||
0X07,0XD1,0XE7,0XE8,0XC7,0XF8,0XA7,0XF8,0X65,0XF8,0X65,0XF8,0X44,0XF8,0X23,0XF8,
 | 
			
		||||
0X03,0XF8,0X02,0XD0,0XA3,0X28,0X05,0X09,0XC4,0X08,0XEC,0X5A,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XDE,0X05,0X19,
 | 
			
		||||
0XC4,0X00,0XA7,0X41,0XE6,0XC0,0X03,0XF8,0X86,0XF8,0XA7,0XF8,0X87,0XF8,0X86,0XF8,
 | 
			
		||||
0XC7,0XF8,0X29,0XF9,0X8A,0XF9,0XAB,0XF9,0XAB,0XF9,0X8B,0XF9,0X6A,0XF9,0X29,0XF9,
 | 
			
		||||
0X08,0XF9,0XC7,0XF8,0XA6,0XF8,0X86,0XF8,0X65,0XF8,0X64,0XF8,0X23,0XF8,0X02,0XF0,
 | 
			
		||||
0X06,0XB1,0X25,0X29,0XE4,0X00,0XE4,0X10,0X25,0X19,0X25,0X19,0X14,0X9D,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X96,0XAD,0X62,0X00,
 | 
			
		||||
0X82,0X08,0X35,0X95,0XBA,0XCE,0X8B,0XA2,0X44,0XD0,0X25,0XF8,0X87,0XF8,0XA7,0XF8,
 | 
			
		||||
0XC7,0XF8,0XA7,0XF8,0X87,0XF8,0X86,0XF8,0X86,0XF8,0X86,0XF8,0X87,0XF8,0XA7,0XF8,
 | 
			
		||||
0XA7,0XF8,0XA6,0XF8,0X85,0XF8,0X65,0XF8,0X64,0XF8,0X24,0XF0,0X64,0XB8,0X0D,0X93,
 | 
			
		||||
0XBB,0XB6,0XCF,0X63,0X83,0X08,0X04,0X11,0XE4,0X10,0X66,0X21,0X49,0X3A,0X5D,0XEF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XD3,0X94,0X42,0X00,
 | 
			
		||||
0XE4,0X10,0XBB,0XCE,0XFF,0XFF,0XBE,0XE7,0X76,0XB5,0XCC,0XAA,0X07,0XC1,0X45,0XE0,
 | 
			
		||||
0X45,0XF8,0X46,0XF8,0X66,0XF8,0X86,0XF8,0X86,0XF8,0X86,0XF8,0X86,0XF8,0X65,0XF8,
 | 
			
		||||
0X45,0XF8,0X65,0XF8,0X65,0XE8,0X44,0XD0,0X43,0XA8,0X01,0X88,0X82,0X90,0X3C,0XD7,
 | 
			
		||||
0XFF,0XEF,0X55,0X95,0X83,0X08,0X04,0X11,0X04,0X11,0X05,0X19,0X46,0X19,0XB3,0X94,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XB3,0X94,0X41,0X00,
 | 
			
		||||
0X86,0X21,0X5D,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XE7,0X7A,0XC6,0XD3,0XB4,
 | 
			
		||||
0X4E,0XB3,0X2A,0XC2,0X68,0XD1,0XE6,0XE0,0XA6,0XE8,0XA5,0XE8,0XA5,0XE8,0XE6,0XD8,
 | 
			
		||||
0X88,0XC9,0X06,0XA9,0X22,0XA8,0X02,0XA8,0X00,0XA0,0X00,0XC8,0X00,0XD8,0XF7,0XE5,
 | 
			
		||||
0XFF,0XE7,0XF8,0XAD,0XC4,0X10,0XE4,0X10,0X04,0X11,0XE4,0X10,0X05,0X11,0X8B,0X4A,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X55,0XA5,0X41,0X00,
 | 
			
		||||
0XA7,0X29,0X5D,0XDF,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XEF,0X7D,0XDF,0XDB,0XCE,0X59,0XCE,0XF8,0XCD,0XD7,0XCD,0XF7,0XC5,0X79,0XCE,
 | 
			
		||||
0XFB,0XBE,0XAB,0XA2,0X03,0XF0,0X45,0XF8,0X42,0XD0,0X43,0XE8,0X00,0XF0,0X72,0XD4,
 | 
			
		||||
0XFF,0XDF,0X39,0XAE,0XE4,0X10,0XE4,0X10,0X04,0X11,0XE4,0X10,0X05,0X11,0X87,0X29,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X59,0XCE,0X83,0X08,
 | 
			
		||||
0X46,0X21,0X1C,0XD7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XEF,0X8B,0XBA,0X04,0XF8,0X45,0XF8,0X62,0XE0,0X44,0XF0,0X00,0XF8,0X8E,0XDB,
 | 
			
		||||
0XFF,0XDF,0XF8,0XA5,0XC4,0X10,0XE4,0X10,0XE4,0X10,0X04,0X11,0XE4,0X10,0X25,0X19,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0XF7,0X87,0X29,
 | 
			
		||||
0X83,0X08,0X39,0XB6,0XFF,0XF7,0XDF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XBE,0XE7,0X4A,0XBA,0X03,0XF8,0X45,0XF8,0X64,0XF8,0X44,0XF8,0X00,0XF8,0X6E,0XE3,
 | 
			
		||||
0XFF,0XD7,0XF4,0X8C,0X83,0X08,0X04,0X11,0XE4,0X10,0XE4,0X10,0XE4,0X10,0X05,0X19,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XEF,0X73,
 | 
			
		||||
0X00,0X00,0X72,0X84,0XFF,0XEF,0XBE,0XEF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XDF,0XE7,0X8B,0XBA,0X03,0XF8,0X45,0XF8,0X45,0XF8,0X23,0XF8,0X00,0XF8,0XD3,0XD4,
 | 
			
		||||
0XFF,0XD7,0X4E,0X5B,0X21,0X00,0X29,0X3A,0X55,0XA5,0X83,0X08,0XC4,0X10,0X25,0X19,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XDE,
 | 
			
		||||
0XA3,0X08,0XE8,0X31,0X9E,0XDF,0X9E,0XE7,0XBF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XF7,0X51,0XBC,0X02,0XE0,0X03,0XF8,0X03,0XF0,0X43,0XE0,0XEC,0XC2,0X7E,0XCF,
 | 
			
		||||
0XFC,0XBE,0X46,0X21,0X21,0X00,0XD3,0X94,0XFF,0XFF,0X51,0X84,0X00,0X00,0X87,0X29,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0X51,0X84,0X00,0X00,0XF4,0X8C,0XFF,0XEF,0X9E,0XE7,0XBF,0XEF,0XDF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0X3D,0XDF,0X55,0XBD,0X52,0XBC,0X72,0XBC,0XB7,0XB5,0X5D,0XC7,0XFF,0XDF,
 | 
			
		||||
0XF0,0X6B,0X00,0X00,0X09,0X3A,0XBF,0XF7,0XFF,0XFF,0XFF,0XFF,0X14,0X9D,0X55,0XA5,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XAC,0X4A,0XA4,0X08,0XBB,0XBE,0XDF,0XE7,0X7E,0XE7,0XBE,0XEF,0XDF,0XF7,
 | 
			
		||||
0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XDF,0XFF,0XDF,0XF7,0XFF,0XEF,0XDF,0XDF,0XBF,0XD7,0X9E,0XD7,0XDF,0XDF,0XD8,0XA5,
 | 
			
		||||
0X83,0X08,0X26,0X11,0XDB,0XD6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0X79,0XEE,0X8B,0XDC,0X21,0X31,0XA9,0X21,0X3D,0XCF,0XBF,0XDF,0X7E,0XDF,0X9E,0XE7,
 | 
			
		||||
0XBE,0XEF,0XBF,0XEF,0XDF,0XF7,0XDF,0XF7,0XDF,0XF7,0XDF,0XF7,0XDF,0XF7,0XBF,0XEF,
 | 
			
		||||
0XBE,0XEF,0X9E,0XE7,0X7E,0XDF,0X5E,0XD7,0X5E,0XD7,0XDF,0XDF,0X9A,0XB6,0X26,0X19,
 | 
			
		||||
0X42,0X08,0XED,0XA3,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X74,0XDD,
 | 
			
		||||
0XC0,0XDB,0X00,0XFE,0X42,0XEE,0X02,0X42,0X89,0X21,0X7B,0XB6,0XDF,0XDF,0X7E,0XD7,
 | 
			
		||||
0X7E,0XDF,0X7E,0XDF,0X9E,0XE7,0X9E,0XE7,0X9E,0XE7,0X9E,0XE7,0X9E,0XE7,0X7E,0XDF,
 | 
			
		||||
0X7E,0XDF,0X5D,0XD7,0X5D,0XD7,0X9E,0XDF,0XFF,0XE7,0XF8,0XA5,0X07,0X11,0XE3,0X18,
 | 
			
		||||
0X02,0XC5,0X60,0XFD,0XE6,0XD3,0XDB,0XEE,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9E,0XF7,0X84,0XBA,
 | 
			
		||||
0XC1,0XFC,0X42,0XFE,0X82,0XFE,0XA2,0XFE,0X81,0X83,0X45,0X21,0X74,0X74,0X5E,0XC7,
 | 
			
		||||
0XDF,0XDF,0X7E,0XD7,0X5E,0XD7,0X5D,0XD7,0X5E,0XD7,0X5E,0XD7,0X5D,0XD7,0X5D,0XD7,
 | 
			
		||||
0X5E,0XD7,0X9E,0XDF,0XFF,0XE7,0X3D,0XC7,0XF1,0X63,0X84,0X08,0X42,0X52,0X26,0XE6,
 | 
			
		||||
0X29,0XFF,0X86,0XFE,0XE0,0XF3,0X6A,0XC3,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X18,0XDE,0XC1,0XD2,
 | 
			
		||||
0XA2,0XFD,0X22,0XFE,0X42,0XFE,0X42,0XFE,0X62,0XFE,0XE2,0XD4,0X41,0X6A,0X49,0X42,
 | 
			
		||||
0X53,0X74,0X3B,0XA6,0X3E,0XC7,0XBF,0XD7,0XBF,0XD7,0XBF,0XD7,0XBF,0XDF,0XBF,0XD7,
 | 
			
		||||
0X3E,0XC7,0X1A,0XA6,0XF2,0X63,0XA7,0X29,0X82,0X41,0X22,0XB4,0X62,0XFE,0X83,0XFE,
 | 
			
		||||
0XAA,0XFE,0X0F,0XFF,0X67,0XFD,0X63,0XBA,0X3C,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9A,0XE6,0X80,0XD2,
 | 
			
		||||
0X21,0XFD,0XC2,0XFD,0XE2,0XF5,0XC2,0XF5,0X82,0XF5,0X82,0XFD,0X62,0XFD,0X61,0XDC,
 | 
			
		||||
0X21,0X9B,0X84,0X6A,0XE9,0X6A,0X2C,0X63,0XAF,0X63,0X11,0X74,0X6E,0X63,0X2C,0X63,
 | 
			
		||||
0X89,0X5A,0X04,0X52,0X81,0X7A,0XC2,0XCB,0XE2,0XFC,0X62,0XFD,0X82,0XFD,0XC2,0XFD,
 | 
			
		||||
0XC2,0XFD,0XE4,0XFD,0X24,0XFD,0X62,0XCA,0X1C,0XE7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XB1,0XCC,
 | 
			
		||||
0X81,0XD2,0XC0,0XF3,0XC1,0XFC,0X02,0XFD,0X02,0XFD,0XE2,0XFC,0XC2,0XFC,0XC2,0XFC,
 | 
			
		||||
0X81,0XFC,0X80,0XFB,0XC0,0XC9,0XA4,0X81,0X35,0XAD,0X59,0XCE,0X71,0X9C,0X21,0X81,
 | 
			
		||||
0X00,0XDA,0XA1,0XFB,0X82,0XFC,0XA2,0XFC,0X82,0XFC,0XA2,0XFC,0X02,0XFD,0X22,0XFD,
 | 
			
		||||
0XE2,0XFC,0X00,0XFC,0X60,0XDA,0X90,0XCC,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
0X59,0XDE,0X0D,0XC4,0X06,0XCB,0XE4,0XD2,0X03,0XDB,0X03,0XDB,0XE3,0XDA,0XC3,0XD2,
 | 
			
		||||
0XA4,0XC2,0X09,0XB3,0XD2,0XBC,0X9E,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFB,0XE6,
 | 
			
		||||
0X0E,0XB4,0XA6,0XBA,0X83,0XD2,0XE3,0XE2,0X02,0XEB,0X22,0XEB,0X22,0XE3,0X03,0XDB,
 | 
			
		||||
0XE4,0XD2,0X6A,0XC3,0XB6,0XD5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
 | 
			
		||||
};
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										50
									
								
								FinalHomework/Core/Inc/test.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								FinalHomework/Core/Inc/test.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,50 @@
 | 
			
		||||
/****************************************************************************************************
 | 
			
		||||
//=========================================电源接线================================================//
 | 
			
		||||
//     LCD模块                STM32单片机
 | 
			
		||||
//      VCC          接        DC5V/3.3V      //电源
 | 
			
		||||
//      GND          接          GND          //电源地
 | 
			
		||||
//=======================================液晶屏数据线接线==========================================//
 | 
			
		||||
//本模块默认数据总线类型为SPI总线
 | 
			
		||||
//     LCD模块                STM32单片机    
 | 
			
		||||
//       SDA         接          PB15         //液晶屏SPI总线数据写信号
 | 
			
		||||
//=======================================液晶屏控制线接线==========================================//
 | 
			
		||||
//     LCD模块 					      STM32单片机 
 | 
			
		||||
//       LED         接          PB9          //液晶屏背光控制信号,如果不需要控制,接5V或3.3V
 | 
			
		||||
//       SCK         接          PB13         //液晶屏SPI总线时钟信号
 | 
			
		||||
//       A0          接          PB10         //液晶屏数据/命令控制信号
 | 
			
		||||
//       RESET       接          PB12         //液晶屏复位控制信号
 | 
			
		||||
//       CS          接          PB11         //液晶屏片选控制信号
 | 
			
		||||
//=========================================触摸屏触接线=========================================//
 | 
			
		||||
//如果模块不带触摸功能或者带有触摸功能,但是不需要触摸功能,则不需要进行触摸屏接线
 | 
			
		||||
//	   LCD模块                STM32单片机 
 | 
			
		||||
//      T_IRQ        接          PC10         //触摸屏触摸中断信号
 | 
			
		||||
//      T_DO         接          PC2          //触摸屏SPI总线读信号
 | 
			
		||||
//      T_DIN        接          PC3          //触摸屏SPI总线写信号
 | 
			
		||||
//      T_CS         接          PC13         //触摸屏片选控制信号
 | 
			
		||||
//      T_CLK        接          PC0          //触摸屏SPI总线时钟信号
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
 /* @attention
 | 
			
		||||
  *
 | 
			
		||||
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 | 
			
		||||
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 | 
			
		||||
  * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
 | 
			
		||||
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 | 
			
		||||
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 | 
			
		||||
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
#ifndef __TEST_H__
 | 
			
		||||
#define __TEST_H__
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
void DrawTestPage(uint8_t *str);
 | 
			
		||||
void Test_Color(void);
 | 
			
		||||
void Test_FillRec(void);
 | 
			
		||||
void Test_Circle(void);
 | 
			
		||||
void Test_Triangle(void);
 | 
			
		||||
void English_Font_test(void);
 | 
			
		||||
void Chinese_Font_test(void);
 | 
			
		||||
void Pic_test(void);
 | 
			
		||||
void Load_Drow_Dialog(void);
 | 
			
		||||
void main_test(void);
 | 
			
		||||
void Rotate_Test(void);
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										20
									
								
								FinalHomework/Core/Inc/variable.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								FinalHomework/Core/Inc/variable.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#ifndef __VARIABLE_H
 | 
			
		||||
#define __VARIABLE_H
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    uint8_t mMilSecCount;           // 毫秒计数
 | 
			
		||||
    uint8_t bTenMilSecOk;           // 10毫秒标志位
 | 
			
		||||
    uint8_t mTimeCount;             // 秒计数
 | 
			
		||||
    uint8_t bTimeOk;                // 秒标志位
 | 
			
		||||
} stSysTickTimer;
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __VARIABLE_H */
 | 
			
		||||
							
								
								
									
										762
									
								
								FinalHomework/Core/Src/gui.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										762
									
								
								FinalHomework/Core/Src/gui.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,762 @@
 | 
			
		||||
/****************************************************************************************************
 | 
			
		||||
//=========================================电源接线================================================//
 | 
			
		||||
//     LCD模块                STM32单片机
 | 
			
		||||
//      VCC          接        DC5V/3.3V      //电源
 | 
			
		||||
//      GND          接          GND          //电源地
 | 
			
		||||
//=======================================液晶屏数据线接线==========================================//
 | 
			
		||||
//本模块默认数据总线类型为SPI总线
 | 
			
		||||
//     LCD模块                STM32单片机    
 | 
			
		||||
//       SDA         接          PB15         //液晶屏SPI总线数据写信号
 | 
			
		||||
//=======================================液晶屏控制线接线==========================================//
 | 
			
		||||
//     LCD模块 					      STM32单片机 
 | 
			
		||||
//       LED         接          PB9          //液晶屏背光控制信号,如果不需要控制,接5V或3.3V
 | 
			
		||||
//       SCK         接          PB13         //液晶屏SPI总线时钟信号
 | 
			
		||||
//       A0          接          PB10         //液晶屏数据/命令控制信号
 | 
			
		||||
//       RESET       接          PB12         //液晶屏复位控制信号
 | 
			
		||||
//       CS          接          PB11         //液晶屏片选控制信号
 | 
			
		||||
//=========================================触摸屏触接线=========================================//
 | 
			
		||||
//如果模块不带触摸功能或者带有触摸功能,但是不需要触摸功能,则不需要进行触摸屏接线
 | 
			
		||||
//	   LCD模块                STM32单片机 
 | 
			
		||||
//      T_IRQ        接          PC10         //触摸屏触摸中断信号
 | 
			
		||||
//      T_DO         接          PC2          //触摸屏SPI总线读信号
 | 
			
		||||
//      T_DIN        接          PC3          //触摸屏SPI总线写信号
 | 
			
		||||
//      T_CS         接          PC13         //触摸屏片选控制信号
 | 
			
		||||
//      T_CLK        接          PC0          //触摸屏SPI总线时钟信号
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
 /* @attention
 | 
			
		||||
  *
 | 
			
		||||
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 | 
			
		||||
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 | 
			
		||||
  * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
 | 
			
		||||
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 | 
			
		||||
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 | 
			
		||||
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
#include "lcd.h"
 | 
			
		||||
#include "string.h"
 | 
			
		||||
#include "font.h" 
 | 
			
		||||
#include "gui.h"
 | 
			
		||||
 | 
			
		||||
/*******************************************************************
 | 
			
		||||
 * @name       :void GUI_DrawPoint(uint16_t x,uint16_t y,uint16_t color)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :draw a point in LCD screen
 | 
			
		||||
 * @parameters :x:the x coordinate of the point
 | 
			
		||||
                y:the y coordinate of the point
 | 
			
		||||
								color:the color value of the point
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
********************************************************************/
 | 
			
		||||
void GUI_DrawPoint(uint16_t x,uint16_t y,uint16_t color)
 | 
			
		||||
{
 | 
			
		||||
	LCD_SetCursor(x,y);//设置光标位置 
 | 
			
		||||
	Lcd_WriteData_16Bit(color); 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*******************************************************************
 | 
			
		||||
 * @name       :void LCD_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t color)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :fill the specified area
 | 
			
		||||
 * @parameters :sx:the bebinning x coordinate of the specified area
 | 
			
		||||
                sy:the bebinning y coordinate of the specified area
 | 
			
		||||
								ex:the ending x coordinate of the specified area
 | 
			
		||||
								ey:the ending y coordinate of the specified area
 | 
			
		||||
								color:the filled color value
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
********************************************************************/
 | 
			
		||||
void LCD_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t color)
 | 
			
		||||
{  	
 | 
			
		||||
	uint16_t i,j;			
 | 
			
		||||
	uint16_t width=ex-sx+1; 		//得到填充的宽度
 | 
			
		||||
	uint16_t height=ey-sy+1;		//高度
 | 
			
		||||
	LCD_SetWindows(sx,sy,ex,ey);	//设置显示窗口
 | 
			
		||||
	for(i=0;i<height;i++)
 | 
			
		||||
	{
 | 
			
		||||
		for(j=0;j<width;j++)
 | 
			
		||||
		Lcd_WriteData_16Bit(color);	//写入数据 	 
 | 
			
		||||
	}
 | 
			
		||||
	LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口设置为全屏
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*******************************************************************
 | 
			
		||||
 * @name       :void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Draw a line between two points
 | 
			
		||||
 * @parameters :x1:the bebinning x coordinate of the line
 | 
			
		||||
                y1:the bebinning y coordinate of the line
 | 
			
		||||
								x2:the ending x coordinate of the line
 | 
			
		||||
								y2:the ending y coordinate of the line
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
********************************************************************/
 | 
			
		||||
void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
 | 
			
		||||
{
 | 
			
		||||
	uint16_t t; 
 | 
			
		||||
	int xerr=0,yerr=0,delta_x,delta_y,distance; 
 | 
			
		||||
	int incx,incy,uRow,uCol; 
 | 
			
		||||
 | 
			
		||||
	delta_x=x2-x1; //计算坐标增量 
 | 
			
		||||
	delta_y=y2-y1; 
 | 
			
		||||
	uRow=x1; 
 | 
			
		||||
	uCol=y1; 
 | 
			
		||||
	if(delta_x>0)incx=1; //设置单步方向 
 | 
			
		||||
	else if(delta_x==0)incx=0;//垂直线 
 | 
			
		||||
	else {incx=-1;delta_x=-delta_x;} 
 | 
			
		||||
	if(delta_y>0)incy=1; 
 | 
			
		||||
	else if(delta_y==0)incy=0;//水平线 
 | 
			
		||||
	else{incy=-1;delta_y=-delta_y;} 
 | 
			
		||||
	if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴 
 | 
			
		||||
	else distance=delta_y; 
 | 
			
		||||
	for(t=0;t<=distance+1;t++ )//画线输出 
 | 
			
		||||
	{  
 | 
			
		||||
		LCD_DrawPoint(uRow,uCol);//画点 
 | 
			
		||||
		xerr+=delta_x ; 
 | 
			
		||||
		yerr+=delta_y ; 
 | 
			
		||||
		if(xerr>distance) 
 | 
			
		||||
		{ 
 | 
			
		||||
			xerr-=distance; 
 | 
			
		||||
			uRow+=incx; 
 | 
			
		||||
		} 
 | 
			
		||||
		if(yerr>distance) 
 | 
			
		||||
		{ 
 | 
			
		||||
			yerr-=distance; 
 | 
			
		||||
			uCol+=incy; 
 | 
			
		||||
		} 
 | 
			
		||||
	}  
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Draw a rectangle
 | 
			
		||||
 * @parameters :x1:the bebinning x coordinate of the rectangle
 | 
			
		||||
                y1:the bebinning y coordinate of the rectangle
 | 
			
		||||
								x2:the ending x coordinate of the rectangle
 | 
			
		||||
								y2:the ending y coordinate of the rectangle
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
 | 
			
		||||
{
 | 
			
		||||
	LCD_DrawLine(x1,y1,x2,y1);
 | 
			
		||||
	LCD_DrawLine(x1,y1,x1,y2);
 | 
			
		||||
	LCD_DrawLine(x1,y2,x2,y2);
 | 
			
		||||
	LCD_DrawLine(x2,y1,x2,y2);
 | 
			
		||||
}  
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_DrawFillRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Filled a rectangle
 | 
			
		||||
 * @parameters :x1:the bebinning x coordinate of the filled rectangle
 | 
			
		||||
                y1:the bebinning y coordinate of the filled rectangle
 | 
			
		||||
								x2:the ending x coordinate of the filled rectangle
 | 
			
		||||
								y2:the ending y coordinate of the filled rectangle
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/  
 | 
			
		||||
void LCD_DrawFillRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
 | 
			
		||||
{
 | 
			
		||||
	LCD_Fill(x1,y1,x2,y2,POINT_COLOR);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void _draw_circle_8(int xc, int yc, int x, int y, uint16_t c)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :8 symmetry circle drawing algorithm (internal call)
 | 
			
		||||
 * @parameters :xc:the x coordinate of the Circular center 
 | 
			
		||||
                yc:the y coordinate of the Circular center 
 | 
			
		||||
								x:the x coordinate relative to the Circular center 
 | 
			
		||||
								y:the y coordinate relative to the Circular center 
 | 
			
		||||
								c:the color value of the circle
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/  
 | 
			
		||||
void _draw_circle_8(int xc, int yc, int x, int y, uint16_t c)
 | 
			
		||||
{
 | 
			
		||||
	GUI_DrawPoint(xc + x, yc + y, c);
 | 
			
		||||
 | 
			
		||||
	GUI_DrawPoint(xc - x, yc + y, c);
 | 
			
		||||
 | 
			
		||||
	GUI_DrawPoint(xc + x, yc - y, c);
 | 
			
		||||
 | 
			
		||||
	GUI_DrawPoint(xc - x, yc - y, c);
 | 
			
		||||
 | 
			
		||||
	GUI_DrawPoint(xc + y, yc + x, c);
 | 
			
		||||
 | 
			
		||||
	GUI_DrawPoint(xc - y, yc + x, c);
 | 
			
		||||
 | 
			
		||||
	GUI_DrawPoint(xc + y, yc - x, c);
 | 
			
		||||
 | 
			
		||||
	GUI_DrawPoint(xc - y, yc - x, c);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void gui_circle(int xc, int yc,uint16_t c,int r, int fill)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Draw a circle of specified size at a specified location
 | 
			
		||||
 * @parameters :xc:the x coordinate of the Circular center 
 | 
			
		||||
                yc:the y coordinate of the Circular center 
 | 
			
		||||
								r:Circular radius
 | 
			
		||||
								fill:1-filling,0-no filling
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/  
 | 
			
		||||
void gui_circle(int xc, int yc,uint16_t c,int r, int fill)
 | 
			
		||||
{
 | 
			
		||||
	int x = 0, y = r, yi, d;
 | 
			
		||||
 | 
			
		||||
	d = 3 - 2 * r;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	if (fill) 
 | 
			
		||||
	{
 | 
			
		||||
		// 如果填充(画实心圆)
 | 
			
		||||
		while (x <= y) {
 | 
			
		||||
			for (yi = x; yi <= y; yi++)
 | 
			
		||||
				_draw_circle_8(xc, yc, x, yi, c);
 | 
			
		||||
 | 
			
		||||
			if (d < 0) {
 | 
			
		||||
				d = d + 4 * x + 6;
 | 
			
		||||
			} else {
 | 
			
		||||
				d = d + 4 * (x - y) + 10;
 | 
			
		||||
				y--;
 | 
			
		||||
			}
 | 
			
		||||
			x++;
 | 
			
		||||
		}
 | 
			
		||||
	} else 
 | 
			
		||||
	{
 | 
			
		||||
		// 如果不填充(画空心圆)
 | 
			
		||||
		while (x <= y) {
 | 
			
		||||
			_draw_circle_8(xc, yc, x, y, c);
 | 
			
		||||
			if (d < 0) {
 | 
			
		||||
				d = d + 4 * x + 6;
 | 
			
		||||
			} else {
 | 
			
		||||
				d = d + 4 * (x - y) + 10;
 | 
			
		||||
				y--;
 | 
			
		||||
			}
 | 
			
		||||
			x++;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Draw_Triangel(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Draw a triangle at a specified position
 | 
			
		||||
 * @parameters :x0:the bebinning x coordinate of the triangular edge 
 | 
			
		||||
                y0:the bebinning y coordinate of the triangular edge 
 | 
			
		||||
								x1:the vertex x coordinate of the triangular
 | 
			
		||||
								y1:the vertex y coordinate of the triangular
 | 
			
		||||
								x2:the ending x coordinate of the triangular edge 
 | 
			
		||||
								y2:the ending y coordinate of the triangular edge 
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void Draw_Triangel(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)
 | 
			
		||||
{
 | 
			
		||||
	LCD_DrawLine(x0,y0,x1,y1);
 | 
			
		||||
	LCD_DrawLine(x1,y1,x2,y2);
 | 
			
		||||
	LCD_DrawLine(x2,y2,x0,y0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void _swap(uint16_t *a, uint16_t *b)
 | 
			
		||||
{
 | 
			
		||||
	uint16_t tmp;
 | 
			
		||||
  tmp = *a;
 | 
			
		||||
	*a = *b;
 | 
			
		||||
	*b = tmp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Fill_Triangel(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :filling a triangle at a specified position
 | 
			
		||||
 * @parameters :x0:the bebinning x coordinate of the triangular edge 
 | 
			
		||||
                y0:the bebinning y coordinate of the triangular edge 
 | 
			
		||||
								x1:the vertex x coordinate of the triangular
 | 
			
		||||
								y1:the vertex y coordinate of the triangular
 | 
			
		||||
								x2:the ending x coordinate of the triangular edge 
 | 
			
		||||
								y2:the ending y coordinate of the triangular edge 
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void Fill_Triangel(uint16_t x0,uint16_t y0,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2)
 | 
			
		||||
{
 | 
			
		||||
	uint16_t a, b, y, last;
 | 
			
		||||
	int dx01, dy01, dx02, dy02, dx12, dy12;
 | 
			
		||||
	long sa = 0;
 | 
			
		||||
	long sb = 0;
 | 
			
		||||
 	if (y0 > y1) 
 | 
			
		||||
	{
 | 
			
		||||
    _swap(&y0,&y1); 
 | 
			
		||||
		_swap(&x0,&x1);
 | 
			
		||||
 	}
 | 
			
		||||
 	if (y1 > y2) 
 | 
			
		||||
	{
 | 
			
		||||
    _swap(&y2,&y1); 
 | 
			
		||||
		_swap(&x2,&x1);
 | 
			
		||||
 	}
 | 
			
		||||
  if (y0 > y1) 
 | 
			
		||||
	{
 | 
			
		||||
    _swap(&y0,&y1); 
 | 
			
		||||
		_swap(&x0,&x1);
 | 
			
		||||
  }
 | 
			
		||||
	if(y0 == y2) 
 | 
			
		||||
	{ 
 | 
			
		||||
		a = b = x0;
 | 
			
		||||
		if(x1 < a)
 | 
			
		||||
    {
 | 
			
		||||
			a = x1;
 | 
			
		||||
    }
 | 
			
		||||
    else if(x1 > b)
 | 
			
		||||
    {
 | 
			
		||||
			b = x1;
 | 
			
		||||
    }
 | 
			
		||||
    if(x2 < a)
 | 
			
		||||
    {
 | 
			
		||||
			a = x2;
 | 
			
		||||
    }
 | 
			
		||||
		else if(x2 > b)
 | 
			
		||||
    {
 | 
			
		||||
			b = x2;
 | 
			
		||||
    }
 | 
			
		||||
		LCD_Fill(a,y0,b,y0,POINT_COLOR);
 | 
			
		||||
    return;
 | 
			
		||||
	}
 | 
			
		||||
	dx01 = x1 - x0;
 | 
			
		||||
	dy01 = y1 - y0;
 | 
			
		||||
	dx02 = x2 - x0;
 | 
			
		||||
	dy02 = y2 - y0;
 | 
			
		||||
	dx12 = x2 - x1;
 | 
			
		||||
	dy12 = y2 - y1;
 | 
			
		||||
	
 | 
			
		||||
	if(y1 == y2)
 | 
			
		||||
	{
 | 
			
		||||
		last = y1; 
 | 
			
		||||
	}
 | 
			
		||||
  else
 | 
			
		||||
	{
 | 
			
		||||
		last = y1-1; 
 | 
			
		||||
	}
 | 
			
		||||
	for(y=y0; y<=last; y++) 
 | 
			
		||||
	{
 | 
			
		||||
		a = x0 + sa / dy01;
 | 
			
		||||
		b = x0 + sb / dy02;
 | 
			
		||||
		sa += dx01;
 | 
			
		||||
    sb += dx02;
 | 
			
		||||
    if(a > b)
 | 
			
		||||
    {
 | 
			
		||||
			_swap(&a,&b);
 | 
			
		||||
		}
 | 
			
		||||
		LCD_Fill(a,y,b,y,POINT_COLOR);
 | 
			
		||||
	}
 | 
			
		||||
	sa = dx12 * (y - y1);
 | 
			
		||||
	sb = dx02 * (y - y0);
 | 
			
		||||
	for(; y<=y2; y++) 
 | 
			
		||||
	{
 | 
			
		||||
		a = x1 + sa / dy12;
 | 
			
		||||
		b = x0 + sb / dy02;
 | 
			
		||||
		sa += dx12;
 | 
			
		||||
		sb += dx02;
 | 
			
		||||
		if(a > b)
 | 
			
		||||
		{
 | 
			
		||||
			_swap(&a,&b);
 | 
			
		||||
		}
 | 
			
		||||
		LCD_Fill(a,y,b,y,POINT_COLOR);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_ShowChar(uint16_t x,uint16_t y,uint16_t fc, uint16_t bc, uint8_t num,uint8_t size,uint8_t mode)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Display a single English character
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the Character display position
 | 
			
		||||
                y:the bebinning y coordinate of the Character display position
 | 
			
		||||
								fc:the color value of display character
 | 
			
		||||
								bc:the background color of display character
 | 
			
		||||
								num:the ascii code of display character(0~94)
 | 
			
		||||
								size:the size of display character
 | 
			
		||||
								mode:0-no overlying,1-overlying
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void LCD_ShowChar(uint16_t x,uint16_t y,uint16_t fc, uint16_t bc, uint8_t num,uint8_t size,uint8_t mode)
 | 
			
		||||
{  
 | 
			
		||||
    uint8_t temp;
 | 
			
		||||
    uint8_t pos,t;
 | 
			
		||||
	uint16_t colortemp=POINT_COLOR;      
 | 
			
		||||
		   
 | 
			
		||||
	num=num-' ';//得到偏移后的值
 | 
			
		||||
	LCD_SetWindows(x,y,x+size/2-1,y+size-1);//设置单个文字显示窗口
 | 
			
		||||
	if(!mode) //非叠加方式
 | 
			
		||||
	{		
 | 
			
		||||
		for(pos=0;pos<size;pos++)
 | 
			
		||||
		{
 | 
			
		||||
			if(size==12)temp=asc2_1206[num][pos];//调用1206字体
 | 
			
		||||
			else temp=asc2_1608[num][pos];		 //调用1608字体
 | 
			
		||||
			for(t=0;t<size/2;t++)
 | 
			
		||||
		    {                 
 | 
			
		||||
		        if(temp&0x01)Lcd_WriteData_16Bit(fc); 
 | 
			
		||||
				else Lcd_WriteData_16Bit(bc); 
 | 
			
		||||
				temp>>=1; 
 | 
			
		||||
				
 | 
			
		||||
		    }
 | 
			
		||||
			
 | 
			
		||||
		}	
 | 
			
		||||
	}else//叠加方式
 | 
			
		||||
	{
 | 
			
		||||
		for(pos=0;pos<size;pos++)
 | 
			
		||||
		{
 | 
			
		||||
			if(size==12)temp=asc2_1206[num][pos];//调用1206字体
 | 
			
		||||
			else temp=asc2_1608[num][pos];		 //调用1608字体
 | 
			
		||||
			for(t=0;t<size/2;t++)
 | 
			
		||||
		    {   
 | 
			
		||||
				POINT_COLOR=fc;              
 | 
			
		||||
		        if(temp&0x01)LCD_DrawPoint(x+t,y+pos);//画一个点    
 | 
			
		||||
		        temp>>=1; 
 | 
			
		||||
		    }
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	POINT_COLOR=colortemp;	
 | 
			
		||||
	LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏    	   	 	  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_ShowString(uint16_t x,uint16_t y,uint8_t size,uint8_t *p,uint8_t mode)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Display English string
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the English string
 | 
			
		||||
                y:the bebinning y coordinate of the English string
 | 
			
		||||
								p:the start address of the English string
 | 
			
		||||
								size:the size of display character
 | 
			
		||||
								mode:0-no overlying,1-overlying
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/   	  
 | 
			
		||||
void LCD_ShowString(uint16_t x,uint16_t y,uint8_t size,uint8_t *p,uint8_t mode)
 | 
			
		||||
{         
 | 
			
		||||
    while((*p<='~')&&(*p>=' '))//判断是不是非法字符!
 | 
			
		||||
    {   
 | 
			
		||||
		if(x>(lcddev.width-1)||y>(lcddev.height-1)) 
 | 
			
		||||
		return;     
 | 
			
		||||
        LCD_ShowChar(x,y,POINT_COLOR,BACK_COLOR,*p,size,mode);
 | 
			
		||||
        x+=size/2;
 | 
			
		||||
        p++;
 | 
			
		||||
    }  
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :uint32_t mypow(uint8_t m,uint8_t n)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :get the nth power of m (internal call)
 | 
			
		||||
 * @parameters :m:the multiplier
 | 
			
		||||
                n:the power
 | 
			
		||||
 * @retvalue   :the nth power of m
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
uint32_t mypow(uint8_t m,uint8_t n)
 | 
			
		||||
{
 | 
			
		||||
	uint32_t result=1;	 
 | 
			
		||||
	while(n--)result*=m;    
 | 
			
		||||
	return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_ShowNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len,uint8_t size)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Display number
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the number
 | 
			
		||||
                y:the bebinning y coordinate of the number
 | 
			
		||||
								num:the number(0~4294967295)
 | 
			
		||||
								len:the length of the display number
 | 
			
		||||
								size:the size of display number
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/  			 
 | 
			
		||||
void LCD_ShowNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len,uint8_t size)
 | 
			
		||||
{         	
 | 
			
		||||
	uint8_t t,temp;
 | 
			
		||||
	uint8_t enshow=0;						   
 | 
			
		||||
	for(t=0;t<len;t++)
 | 
			
		||||
	{
 | 
			
		||||
		temp=(num/mypow(10,len-t-1))%10;
 | 
			
		||||
		if(enshow==0&&t<(len-1))
 | 
			
		||||
		{
 | 
			
		||||
			if(temp==0)
 | 
			
		||||
			{
 | 
			
		||||
				LCD_ShowChar(x+(size/2)*t,y,POINT_COLOR,BACK_COLOR,' ',size,0);
 | 
			
		||||
				continue;
 | 
			
		||||
			}else enshow=1; 
 | 
			
		||||
		 	 
 | 
			
		||||
		}
 | 
			
		||||
	 	LCD_ShowChar(x+(size/2)*t,y,POINT_COLOR,BACK_COLOR,temp+'0',size,0); 
 | 
			
		||||
	}
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void GUI_DrawFont16(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Display a single 16x16 Chinese character
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the Chinese character
 | 
			
		||||
                y:the bebinning y coordinate of the Chinese character
 | 
			
		||||
								fc:the color value of Chinese character
 | 
			
		||||
								bc:the background color of Chinese character
 | 
			
		||||
								s:the start address of the Chinese character
 | 
			
		||||
								mode:0-no overlying,1-overlying
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void GUI_DrawFont16(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t i,j;
 | 
			
		||||
	uint16_t k;
 | 
			
		||||
	uint16_t HZnum;
 | 
			
		||||
	uint16_t x0=x;
 | 
			
		||||
	HZnum=sizeof(tfont16)/sizeof(typFNT_GB16);	//自动统计汉字数目
 | 
			
		||||
	
 | 
			
		||||
			
 | 
			
		||||
	for (k=0;k<HZnum;k++) 
 | 
			
		||||
	{
 | 
			
		||||
	  if ((tfont16[k].Index[0]==*(s))&&(tfont16[k].Index[1]==*(s+1)))
 | 
			
		||||
	  { 	LCD_SetWindows(x,y,x+16-1,y+16-1);
 | 
			
		||||
		    for(i=0;i<16*2;i++)
 | 
			
		||||
		    {
 | 
			
		||||
				for(j=0;j<8;j++)
 | 
			
		||||
		    	{	
 | 
			
		||||
					if(!mode) //非叠加方式
 | 
			
		||||
					{
 | 
			
		||||
						if(tfont16[k].Msk[i]&(0x80>>j))	Lcd_WriteData_16Bit(fc);
 | 
			
		||||
						else Lcd_WriteData_16Bit(bc);
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						POINT_COLOR=fc;
 | 
			
		||||
						if(tfont16[k].Msk[i]&(0x80>>j))	LCD_DrawPoint(x,y);//画一个点
 | 
			
		||||
						x++;
 | 
			
		||||
						if((x-x0)==16)
 | 
			
		||||
						{
 | 
			
		||||
							x=x0;
 | 
			
		||||
							y++;
 | 
			
		||||
							break;
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
				}
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			
 | 
			
		||||
		}				  	
 | 
			
		||||
		continue;  //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏  
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void GUI_DrawFont24(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Display a single 24x24 Chinese character
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the Chinese character
 | 
			
		||||
                y:the bebinning y coordinate of the Chinese character
 | 
			
		||||
								fc:the color value of Chinese character
 | 
			
		||||
								bc:the background color of Chinese character
 | 
			
		||||
								s:the start address of the Chinese character
 | 
			
		||||
								mode:0-no overlying,1-overlying
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void GUI_DrawFont24(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t i,j;
 | 
			
		||||
	uint16_t k;
 | 
			
		||||
	uint16_t HZnum;
 | 
			
		||||
	uint16_t x0=x;
 | 
			
		||||
	HZnum=sizeof(tfont24)/sizeof(typFNT_GB24);	//自动统计汉字数目
 | 
			
		||||
		
 | 
			
		||||
			for (k=0;k<HZnum;k++) 
 | 
			
		||||
			{
 | 
			
		||||
			  if ((tfont24[k].Index[0]==*(s))&&(tfont24[k].Index[1]==*(s+1)))
 | 
			
		||||
			  { 	LCD_SetWindows(x,y,x+24-1,y+24-1);
 | 
			
		||||
				    for(i=0;i<24*3;i++)
 | 
			
		||||
				    {
 | 
			
		||||
							for(j=0;j<8;j++)
 | 
			
		||||
							{
 | 
			
		||||
								if(!mode) //非叠加方式
 | 
			
		||||
								{
 | 
			
		||||
									if(tfont24[k].Msk[i]&(0x80>>j))	Lcd_WriteData_16Bit(fc);
 | 
			
		||||
									else Lcd_WriteData_16Bit(bc);
 | 
			
		||||
								}
 | 
			
		||||
							else
 | 
			
		||||
							{
 | 
			
		||||
								POINT_COLOR=fc;
 | 
			
		||||
								if(tfont24[k].Msk[i]&(0x80>>j))	LCD_DrawPoint(x,y);//画一个点
 | 
			
		||||
								x++;
 | 
			
		||||
								if((x-x0)==24)
 | 
			
		||||
								{
 | 
			
		||||
									x=x0;
 | 
			
		||||
									y++;
 | 
			
		||||
									break;
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					
 | 
			
		||||
				}				  	
 | 
			
		||||
				continue;  //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
	LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void GUI_DrawFont32(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Display a single 32x32 Chinese character
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the Chinese character
 | 
			
		||||
                y:the bebinning y coordinate of the Chinese character
 | 
			
		||||
								fc:the color value of Chinese character
 | 
			
		||||
								bc:the background color of Chinese character
 | 
			
		||||
								s:the start address of the Chinese character
 | 
			
		||||
								mode:0-no overlying,1-overlying
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void GUI_DrawFont32(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t i,j;
 | 
			
		||||
	uint16_t k;
 | 
			
		||||
	uint16_t HZnum;
 | 
			
		||||
	uint16_t x0=x;
 | 
			
		||||
	HZnum=sizeof(tfont32)/sizeof(typFNT_GB32);	//自动统计汉字数目
 | 
			
		||||
	for (k=0;k<HZnum;k++) 
 | 
			
		||||
			{
 | 
			
		||||
			  if ((tfont32[k].Index[0]==*(s))&&(tfont32[k].Index[1]==*(s+1)))
 | 
			
		||||
			  { 	LCD_SetWindows(x,y,x+32-1,y+32-1);
 | 
			
		||||
				    for(i=0;i<32*4;i++)
 | 
			
		||||
				    {
 | 
			
		||||
						for(j=0;j<8;j++)
 | 
			
		||||
				    	{
 | 
			
		||||
							if(!mode) //非叠加方式
 | 
			
		||||
							{
 | 
			
		||||
								if(tfont32[k].Msk[i]&(0x80>>j))	Lcd_WriteData_16Bit(fc);
 | 
			
		||||
								else Lcd_WriteData_16Bit(bc);
 | 
			
		||||
							}
 | 
			
		||||
							else
 | 
			
		||||
							{
 | 
			
		||||
								POINT_COLOR=fc;
 | 
			
		||||
								if(tfont32[k].Msk[i]&(0x80>>j))	LCD_DrawPoint(x,y);//画一个点
 | 
			
		||||
								x++;
 | 
			
		||||
								if((x-x0)==32)
 | 
			
		||||
								{
 | 
			
		||||
									x=x0;
 | 
			
		||||
									y++;
 | 
			
		||||
									break;
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					
 | 
			
		||||
					
 | 
			
		||||
				}				  	
 | 
			
		||||
				continue;  //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响
 | 
			
		||||
			}
 | 
			
		||||
	
 | 
			
		||||
	LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏  
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Show_Str(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str,uint8_t size,uint8_t mode)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Display Chinese and English strings
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the Chinese and English strings
 | 
			
		||||
                y:the bebinning y coordinate of the Chinese and English strings
 | 
			
		||||
								fc:the color value of Chinese and English strings
 | 
			
		||||
								bc:the background color of Chinese and English strings
 | 
			
		||||
								str:the start address of the Chinese and English strings
 | 
			
		||||
								size:the size of Chinese and English strings
 | 
			
		||||
								mode:0-no overlying,1-overlying
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/	   		   
 | 
			
		||||
void Show_Str(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str,uint8_t size,uint8_t mode)
 | 
			
		||||
{					
 | 
			
		||||
	uint16_t x0=x;							  	  
 | 
			
		||||
  	uint8_t bHz=0;     //字符或者中文 
 | 
			
		||||
    while(*str!=0)//数据未结束
 | 
			
		||||
    { 
 | 
			
		||||
        if(!bHz)
 | 
			
		||||
        {
 | 
			
		||||
			if(x>(lcddev.width-size/2)||y>(lcddev.height-size)) 
 | 
			
		||||
			return; 
 | 
			
		||||
	        if(*str>0x80)bHz=1;//中文 
 | 
			
		||||
	        else              //字符
 | 
			
		||||
	        {          
 | 
			
		||||
		        if(*str==0x0D)//换行符号
 | 
			
		||||
		        {         
 | 
			
		||||
		            y+=size;
 | 
			
		||||
					x=x0;
 | 
			
		||||
		            str++; 
 | 
			
		||||
		        }  
 | 
			
		||||
		        else
 | 
			
		||||
				{
 | 
			
		||||
					if(size>16)//字库中没有集成12X24 16X32的英文字体,用8X16代替
 | 
			
		||||
					{  
 | 
			
		||||
					LCD_ShowChar(x,y,fc,bc,*str,16,mode);
 | 
			
		||||
					x+=8; //字符,为全字的一半 
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
					LCD_ShowChar(x,y,fc,bc,*str,size,mode);
 | 
			
		||||
					x+=size/2; //字符,为全字的一半 
 | 
			
		||||
					}
 | 
			
		||||
				} 
 | 
			
		||||
				str++; 
 | 
			
		||||
		        
 | 
			
		||||
	        }
 | 
			
		||||
        }else//中文 
 | 
			
		||||
        {   
 | 
			
		||||
			if(x>(lcddev.width-size)||y>(lcddev.height-size)) 
 | 
			
		||||
			return;  
 | 
			
		||||
            bHz=0;//有汉字库    
 | 
			
		||||
			if(size==32)
 | 
			
		||||
			GUI_DrawFont32(x,y,fc,bc,str,mode);	 	
 | 
			
		||||
			else if(size==24)
 | 
			
		||||
			GUI_DrawFont24(x,y,fc,bc,str,mode);	
 | 
			
		||||
			else
 | 
			
		||||
			GUI_DrawFont16(x,y,fc,bc,str,mode);
 | 
			
		||||
				
 | 
			
		||||
	        str+=2; 
 | 
			
		||||
	        x+=size;//下一个汉字偏移	    
 | 
			
		||||
        }						 
 | 
			
		||||
    }   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Gui_StrCenter(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str,uint8_t size,uint8_t mode)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Centered display of English and Chinese strings
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the Chinese and English strings
 | 
			
		||||
                y:the bebinning y coordinate of the Chinese and English strings
 | 
			
		||||
								fc:the color value of Chinese and English strings
 | 
			
		||||
								bc:the background color of Chinese and English strings
 | 
			
		||||
								str:the start address of the Chinese and English strings
 | 
			
		||||
								size:the size of Chinese and English strings
 | 
			
		||||
								mode:0-no overlying,1-overlying
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void Gui_StrCenter(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str,uint8_t size,uint8_t mode)
 | 
			
		||||
{
 | 
			
		||||
	uint16_t len=strlen((const char *)str);
 | 
			
		||||
	uint16_t x1=(lcddev.width-len*8)/2;
 | 
			
		||||
	Show_Str(x1,y,fc,bc,str,size,mode);
 | 
			
		||||
} 
 | 
			
		||||
 
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Gui_Drawbmp16(uint16_t x,uint16_t y,const unsigned char *p)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Display a 16-bit BMP image
 | 
			
		||||
 * @parameters :x:the bebinning x coordinate of the BMP image
 | 
			
		||||
                y:the bebinning y coordinate of the BMP image
 | 
			
		||||
								p:the start address of image array
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void Gui_Drawbmp16(uint16_t x,uint16_t y,const unsigned char *p) //显示40*40 QQ图片
 | 
			
		||||
{
 | 
			
		||||
  	int i; 
 | 
			
		||||
	unsigned char picH,picL; 
 | 
			
		||||
	LCD_SetWindows(x,y,x+40-1,y+40-1);//窗口设置
 | 
			
		||||
    for(i=0;i<40*40;i++)
 | 
			
		||||
	{	
 | 
			
		||||
	 	picL=*(p+i*2);	//数据低位在前
 | 
			
		||||
		picH=*(p+i*2+1);				
 | 
			
		||||
		Lcd_WriteData_16Bit(picH<<8|picL);  						
 | 
			
		||||
	}	
 | 
			
		||||
	LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复显示窗口为全屏	
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										384
									
								
								FinalHomework/Core/Src/lcd.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										384
									
								
								FinalHomework/Core/Src/lcd.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,384 @@
 | 
			
		||||
/****************************************************************************************************
 | 
			
		||||
//=========================================电源接线================================================//
 | 
			
		||||
//     LCD模块                STM32单片机
 | 
			
		||||
//      VCC          接        DC5V/3.3V      //电源
 | 
			
		||||
//      GND          接          GND          //电源地
 | 
			
		||||
//=======================================液晶屏数据线接线==========================================//
 | 
			
		||||
//本模块默认数据总线类型为SPI总线
 | 
			
		||||
//     LCD模块                STM32单片机    
 | 
			
		||||
//       SDA         接          PB15         //液晶屏SPI总线数据写信号
 | 
			
		||||
//=======================================液晶屏控制线接线==========================================//
 | 
			
		||||
//     LCD模块 					      STM32单片机 
 | 
			
		||||
//       SCK         接          PB13         //液晶屏SPI总线时钟信号
 | 
			
		||||
//       A0          接          PB10         //液晶屏数据/命令控制信号
 | 
			
		||||
//       RESET       接          PB12         //液晶屏复位控制信号
 | 
			
		||||
//       CS          接          PB11         //液晶屏片选控制信号
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
 /* @attention
 | 
			
		||||
  *
 | 
			
		||||
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 | 
			
		||||
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 | 
			
		||||
  * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
 | 
			
		||||
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 | 
			
		||||
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 | 
			
		||||
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
#include "lcd.h"
 | 
			
		||||
#include "stdlib.h"
 | 
			
		||||
 | 
			
		||||
#include "spi.h"
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
	   
 | 
			
		||||
//管理LCD重要参数
 | 
			
		||||
//默认为竖屏
 | 
			
		||||
_lcd_dev lcddev;
 | 
			
		||||
 | 
			
		||||
//画笔颜色,背景颜色
 | 
			
		||||
uint16_t POINT_COLOR = 0x0000,BACK_COLOR = 0xFFFF;  
 | 
			
		||||
uint16_t DeviceCode;	 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :u8 SPI_WriteByte(x,u8 Byte)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Write a byte of data using STM32's hardware SPI
 | 
			
		||||
 * @parameters : Byte:Data to be written
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
uint8_t SPI2_ReadWriteByte( uint8_t TxData)
 | 
			
		||||
{
 | 
			
		||||
    uint8_t Rxdata;
 | 
			
		||||
    HAL_SPI_TransmitReceive(&hspi2,&TxData,&Rxdata,1, 1000);       
 | 
			
		||||
 	return Rxdata;		
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_WR_REG(uint8_t data)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Write an 8-bit command to the LCD screen
 | 
			
		||||
 * @parameters :data:Command value to be written
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void LCD_WR_REG(uint8_t data)
 | 
			
		||||
{ 
 | 
			
		||||
   LCD_CS_CLR;     
 | 
			
		||||
	LCD_RS_CLR;	  
 | 
			
		||||
	SPI2_ReadWriteByte(data);
 | 
			
		||||
   LCD_CS_SET;	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_WR_DATA(uint8_t data)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Write an 8-bit data to the LCD screen
 | 
			
		||||
 * @parameters :data:data value to be written
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void LCD_WR_DATA(uint8_t data)
 | 
			
		||||
{
 | 
			
		||||
   LCD_CS_CLR;
 | 
			
		||||
	 LCD_RS_SET;
 | 
			
		||||
	SPI2_ReadWriteByte(data);
 | 
			
		||||
   LCD_CS_SET;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Write data into registers
 | 
			
		||||
 * @parameters :LCD_Reg:Register address
 | 
			
		||||
                LCD_RegValue:Data to be written
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void LCD_WriteReg(uint8_t LCD_Reg, uint16_t LCD_RegValue)
 | 
			
		||||
{	
 | 
			
		||||
	LCD_WR_REG(LCD_Reg);  
 | 
			
		||||
	LCD_WR_DATA(LCD_RegValue);	    		 
 | 
			
		||||
}	   
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_WriteRAM_Prepare(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Write GRAM
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/	 
 | 
			
		||||
void LCD_WriteRAM_Prepare(void)
 | 
			
		||||
{
 | 
			
		||||
	LCD_WR_REG(lcddev.wramcmd);
 | 
			
		||||
}	 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Lcd_WriteData_16Bit(uint16_t Data)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Write an 16-bit command to the LCD screen
 | 
			
		||||
 * @parameters :Data:Data to be written
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/	 
 | 
			
		||||
void Lcd_WriteData_16Bit(uint16_t Data)
 | 
			
		||||
{	
 | 
			
		||||
   LCD_CS_CLR;
 | 
			
		||||
   LCD_RS_SET;  
 | 
			
		||||
   //SPI_WriteByte(SPI2,Data>>8);
 | 
			
		||||
	SPI2_ReadWriteByte(Data>>8);
 | 
			
		||||
	SPI2_ReadWriteByte(Data);
 | 
			
		||||
   LCD_CS_SET;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_DrawPoint(uint16_t x,uint16_t y)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Write a pixel data at a specified location
 | 
			
		||||
 * @parameters :x:the x coordinate of the pixel
 | 
			
		||||
                y:the y coordinate of the pixel
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/	
 | 
			
		||||
void LCD_DrawPoint(uint16_t x,uint16_t y)
 | 
			
		||||
{
 | 
			
		||||
	LCD_SetCursor(x,y);//设置光标位置 
 | 
			
		||||
	Lcd_WriteData_16Bit(POINT_COLOR); 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_Clear(uint16_t Color)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Full screen filled LCD screen
 | 
			
		||||
 * @parameters :color:Filled color
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/	
 | 
			
		||||
void LCD_Clear(uint16_t Color)
 | 
			
		||||
{
 | 
			
		||||
  unsigned int i,m;  
 | 
			
		||||
	LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);   
 | 
			
		||||
	LCD_CS_CLR;
 | 
			
		||||
	LCD_RS_SET;
 | 
			
		||||
	for(i=0;i<lcddev.height;i++)
 | 
			
		||||
	{
 | 
			
		||||
		for(m=0;m<lcddev.width;m++)
 | 
			
		||||
		{	
 | 
			
		||||
			Lcd_WriteData_16Bit(Color);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	 LCD_CS_SET;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_RESET(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Reset LCD screen
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/	
 | 
			
		||||
void LCD_RESET(void)
 | 
			
		||||
{
 | 
			
		||||
	LCD_RST_CLR;
 | 
			
		||||
	HAL_Delay(100);	
 | 
			
		||||
	LCD_RST_SET;
 | 
			
		||||
	HAL_Delay(50);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_RESET(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Initialization LCD screen
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/	 	 
 | 
			
		||||
void LCD_Init(void)
 | 
			
		||||
{  								 
 | 
			
		||||
 	LCD_RESET(); //LCD 复位	
 | 
			
		||||
//************* ST7735S初始化**********//	
 | 
			
		||||
	LCD_WR_REG(0x11);//Sleep exit 
 | 
			
		||||
	HAL_Delay (120);	
 | 
			
		||||
	
 | 
			
		||||
	//ST7735R Frame Rate
 | 
			
		||||
	LCD_WR_REG(0xB1); 
 | 
			
		||||
	LCD_WR_DATA(0x01); 
 | 
			
		||||
	LCD_WR_DATA(0x2C); 
 | 
			
		||||
	LCD_WR_DATA(0x2D); 
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xB2); 
 | 
			
		||||
	LCD_WR_DATA(0x01); 
 | 
			
		||||
	LCD_WR_DATA(0x2C); 
 | 
			
		||||
	LCD_WR_DATA(0x2D); 
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xB3); 
 | 
			
		||||
	LCD_WR_DATA(0x01); 
 | 
			
		||||
	LCD_WR_DATA(0x2C); 
 | 
			
		||||
	LCD_WR_DATA(0x2D); 
 | 
			
		||||
	LCD_WR_DATA(0x01); 
 | 
			
		||||
	LCD_WR_DATA(0x2C); 
 | 
			
		||||
	LCD_WR_DATA(0x2D); 
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xB4); //Column inversion 
 | 
			
		||||
	LCD_WR_DATA(0x07); 	
 | 
			
		||||
	//ST7735R Power Sequence
 | 
			
		||||
	LCD_WR_REG(0xC0); 
 | 
			
		||||
	LCD_WR_DATA(0xA2); 
 | 
			
		||||
	LCD_WR_DATA(0x02); 
 | 
			
		||||
	LCD_WR_DATA(0x84); 
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xC1); 
 | 
			
		||||
	LCD_WR_DATA(0xC5);
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xC2); 
 | 
			
		||||
	LCD_WR_DATA(0x0A); 
 | 
			
		||||
	LCD_WR_DATA(0x00); 
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xC3); 
 | 
			
		||||
	LCD_WR_DATA(0x8A); 
 | 
			
		||||
	LCD_WR_DATA(0x2A);
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xC4); 
 | 
			
		||||
	LCD_WR_DATA(0x8A); 
 | 
			
		||||
	LCD_WR_DATA(0xEE); 
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xC5); //VCOM 
 | 
			
		||||
	LCD_WR_DATA(0x0E); 	
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0x36); //MX, MY, RGB mode 
 | 
			
		||||
	LCD_WR_DATA(0xC0); 
 | 
			
		||||
	
 | 
			
		||||
	//ST7735R Gamma Sequence
 | 
			
		||||
	LCD_WR_REG(0xe0); 
 | 
			
		||||
	LCD_WR_DATA(0x0f); 
 | 
			
		||||
	LCD_WR_DATA(0x1a); 
 | 
			
		||||
	LCD_WR_DATA(0x0f); 
 | 
			
		||||
	LCD_WR_DATA(0x18); 
 | 
			
		||||
	LCD_WR_DATA(0x2f); 
 | 
			
		||||
	LCD_WR_DATA(0x28); 
 | 
			
		||||
	LCD_WR_DATA(0x20); 
 | 
			
		||||
	LCD_WR_DATA(0x22); 
 | 
			
		||||
	LCD_WR_DATA(0x1f); 
 | 
			
		||||
	LCD_WR_DATA(0x1b); 
 | 
			
		||||
	LCD_WR_DATA(0x23); 
 | 
			
		||||
	LCD_WR_DATA(0x37); 
 | 
			
		||||
	LCD_WR_DATA(0x00); 	
 | 
			
		||||
	LCD_WR_DATA(0x07); 
 | 
			
		||||
	LCD_WR_DATA(0x02); 
 | 
			
		||||
	LCD_WR_DATA(0x10);
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xe1); 
 | 
			
		||||
	LCD_WR_DATA(0x0f); 
 | 
			
		||||
	LCD_WR_DATA(0x1b); 
 | 
			
		||||
	LCD_WR_DATA(0x0f); 
 | 
			
		||||
	LCD_WR_DATA(0x17); 
 | 
			
		||||
	LCD_WR_DATA(0x33); 
 | 
			
		||||
	LCD_WR_DATA(0x2c); 
 | 
			
		||||
	LCD_WR_DATA(0x29); 
 | 
			
		||||
	LCD_WR_DATA(0x2e); 
 | 
			
		||||
	LCD_WR_DATA(0x30); 
 | 
			
		||||
	LCD_WR_DATA(0x30); 
 | 
			
		||||
	LCD_WR_DATA(0x39); 
 | 
			
		||||
	LCD_WR_DATA(0x3f); 
 | 
			
		||||
	LCD_WR_DATA(0x00); 
 | 
			
		||||
	LCD_WR_DATA(0x07); 
 | 
			
		||||
	LCD_WR_DATA(0x03); 
 | 
			
		||||
	LCD_WR_DATA(0x10); 
 | 
			
		||||
 	
 | 
			
		||||
	LCD_WR_REG(0x2a);
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(0x7f);
 | 
			
		||||
	LCD_WR_REG(0x2b);
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(0x9f);
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xF0); //Enable test command  
 | 
			
		||||
	LCD_WR_DATA(0x01); 
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0xF6); //Disable ram power save mode 
 | 
			
		||||
	LCD_WR_DATA(0x00); 	
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0x3A); //65k mode 
 | 
			
		||||
	LCD_WR_DATA(0x05); 
 | 
			
		||||
	
 | 
			
		||||
	LCD_WR_REG(0x29);//Display on	
 | 
			
		||||
 	
 | 
			
		||||
	LCD_direction(USE_HORIZONTAL);//设置LCD显示方向	 
 | 
			
		||||
	LCD_Clear(WHITE);//清全屏白色
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_SetWindows(uint16_t xStar, uint16_t yStar,uint16_t xEnd,uint16_t yEnd)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Setting LCD display window
 | 
			
		||||
 * @parameters :xStar:the bebinning x coordinate of the LCD display window
 | 
			
		||||
								yStar:the bebinning y coordinate of the LCD display window
 | 
			
		||||
								xEnd:the endning x coordinate of the LCD display window
 | 
			
		||||
								yEnd:the endning y coordinate of the LCD display window
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void LCD_SetWindows(uint16_t xStar, uint16_t yStar,uint16_t xEnd,uint16_t yEnd)
 | 
			
		||||
{	
 | 
			
		||||
	LCD_WR_REG(lcddev.setxcmd);	//LCD_WR_REG(0x2a);//列地址设置
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(xStar);		
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(xEnd);
 | 
			
		||||
 | 
			
		||||
	LCD_WR_REG(lcddev.setycmd);	//LCD_WR_REG(0x2b);//行地址设置
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(yStar);		
 | 
			
		||||
	LCD_WR_DATA(0x00);
 | 
			
		||||
	LCD_WR_DATA(yEnd);
 | 
			
		||||
 | 
			
		||||
	LCD_WriteRAM_Prepare(); 	//开始写入GRAM			
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Set coordinate value
 | 
			
		||||
 * @parameters :Xpos:the  x coordinate of the pixel
 | 
			
		||||
								Ypos:the  y coordinate of the pixel
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos)
 | 
			
		||||
{	  	    			
 | 
			
		||||
	LCD_SetWindows(Xpos,Ypos,Xpos,Ypos);	
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void LCD_direction(uint8_t direction)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Setting the display direction of LCD screen
 | 
			
		||||
 * @parameters :direction:		0-0 degree
 | 
			
		||||
								1-90 degree
 | 
			
		||||
								2-180 degree
 | 
			
		||||
								3-270 degree
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void LCD_direction(uint8_t direction)
 | 
			
		||||
{ 
 | 
			
		||||
	lcddev.setxcmd=0x2A;
 | 
			
		||||
	lcddev.setycmd=0x2B;
 | 
			
		||||
	lcddev.wramcmd=0x2C;
 | 
			
		||||
	switch(direction)
 | 
			
		||||
	{		  
 | 
			
		||||
		case 0:						 	 		
 | 
			
		||||
			lcddev.width=LCD_W;
 | 
			
		||||
			lcddev.height=LCD_H;		
 | 
			
		||||
			LCD_WriteReg(0x36,(0<<3)|(1<<6)|(1<<7));//BGR==1,MY==0,MX==0,MV==0
 | 
			
		||||
		break;
 | 
			
		||||
		case 1:
 | 
			
		||||
			lcddev.width=LCD_H;
 | 
			
		||||
			lcddev.height=LCD_W;
 | 
			
		||||
			LCD_WriteReg(0x36,(0<<3)|(1<<7)|(1<<5));//BGR==1,MY==1,MX==0,MV==1
 | 
			
		||||
		break;
 | 
			
		||||
		case 2:						 	 		
 | 
			
		||||
			lcddev.width=LCD_W;
 | 
			
		||||
			lcddev.height=LCD_H;	
 | 
			
		||||
			LCD_WriteReg(0x36,(0<<3)|(0<<6)|(0<<7));//BGR==1,MY==0,MX==0,MV==0
 | 
			
		||||
		break;
 | 
			
		||||
		case 3:
 | 
			
		||||
			lcddev.width= LCD_H;
 | 
			
		||||
			lcddev.height=LCD_W;
 | 
			
		||||
			LCD_WriteReg(0x36,(0<<3)|(0<<7)|(1<<6)|(1<<5));//BGR==1,MY==1,MX==0,MV==1
 | 
			
		||||
		break;	
 | 
			
		||||
		default:break;
 | 
			
		||||
	}		
 | 
			
		||||
}	 
 | 
			
		||||
@ -23,7 +23,9 @@
 | 
			
		||||
 | 
			
		||||
/* Private includes ----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
 | 
			
		||||
#include "variable.h"
 | 
			
		||||
#include "lcd.h"
 | 
			
		||||
#include "test.h"
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
 | 
			
		||||
/* Private typedef -----------------------------------------------------------*/
 | 
			
		||||
@ -44,7 +46,11 @@
 | 
			
		||||
/* Private variables ---------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN PV */
 | 
			
		||||
 | 
			
		||||
stSysTickTimer sSysTickTimer = {
 | 
			
		||||
  0, 0, 0, 0
 | 
			
		||||
};
 | 
			
		||||
uint16_t mSecCount = 0;
 | 
			
		||||
uint16_t bSecondIsOk = 0;
 | 
			
		||||
/* USER CODE END PV */
 | 
			
		||||
 | 
			
		||||
/* Private function prototypes -----------------------------------------------*/
 | 
			
		||||
@ -89,7 +95,7 @@ int main(void)
 | 
			
		||||
  MX_GPIO_Init();
 | 
			
		||||
  MX_SPI2_Init();
 | 
			
		||||
  /* USER CODE BEGIN 2 */
 | 
			
		||||
 | 
			
		||||
  LCD_Init();
 | 
			
		||||
  /* USER CODE END 2 */
 | 
			
		||||
 | 
			
		||||
  /* Infinite loop */
 | 
			
		||||
@ -99,6 +105,19 @@ int main(void)
 | 
			
		||||
    /* USER CODE END WHILE */
 | 
			
		||||
 | 
			
		||||
    /* USER CODE BEGIN 3 */
 | 
			
		||||
    main_test();
 | 
			
		||||
    Test_Color();
 | 
			
		||||
    Test_FillRec();
 | 
			
		||||
    Test_Circle();
 | 
			
		||||
    Test_Triangle();
 | 
			
		||||
    English_Font_test();
 | 
			
		||||
    Chinese_Font_test();
 | 
			
		||||
    Pic_test();
 | 
			
		||||
    Rotate_Test();
 | 
			
		||||
    if (sSysTickTimer.bTimeOk) {
 | 
			
		||||
      sSysTickTimer.bTimeOk = 0;
 | 
			
		||||
      HAL_GPIO_TogglePin(TickLed_GPIO_Port, TickLed_Pin);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE END 3 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -40,7 +40,7 @@ void MX_SPI2_Init(void)
 | 
			
		||||
  hspi2.Instance = SPI2;
 | 
			
		||||
  hspi2.Init.Mode = SPI_MODE_MASTER;
 | 
			
		||||
  hspi2.Init.Direction = SPI_DIRECTION_2LINES;
 | 
			
		||||
  hspi2.Init.DataSize = SPI_DATASIZE_4BIT;
 | 
			
		||||
  hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
 | 
			
		||||
  hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
 | 
			
		||||
  hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
 | 
			
		||||
  hspi2.Init.NSS = SPI_NSS_SOFT;
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@
 | 
			
		||||
#include "stm32g4xx_it.h"
 | 
			
		||||
/* Private includes ----------------------------------------------------------*/
 | 
			
		||||
/* USER CODE BEGIN Includes */
 | 
			
		||||
#include "variable.h"
 | 
			
		||||
/* USER CODE END Includes */
 | 
			
		||||
 | 
			
		||||
/* Private typedef -----------------------------------------------------------*/
 | 
			
		||||
@ -57,7 +58,9 @@
 | 
			
		||||
/* External variables --------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/* USER CODE BEGIN EV */
 | 
			
		||||
 | 
			
		||||
extern stSysTickTimer sSysTickTimer;
 | 
			
		||||
extern uint16_t mSecCount;
 | 
			
		||||
extern uint16_t bSecondIsOk;
 | 
			
		||||
/* USER CODE END EV */
 | 
			
		||||
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
@ -187,7 +190,19 @@ void SysTick_Handler(void)
 | 
			
		||||
  /* USER CODE END SysTick_IRQn 0 */
 | 
			
		||||
  HAL_IncTick();
 | 
			
		||||
  /* USER CODE BEGIN SysTick_IRQn 1 */
 | 
			
		||||
  if (++mSecCount >= 100) {
 | 
			
		||||
    mSecCount = 0;
 | 
			
		||||
    bSecondIsOk = 1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (++sSysTickTimer.mMilSecCount >= 10) {
 | 
			
		||||
    sSysTickTimer.mMilSecCount = 0;
 | 
			
		||||
    sSysTickTimer.bTenMilSecOk = 1;
 | 
			
		||||
    if (++sSysTickTimer.mTimeCount >= 100) {
 | 
			
		||||
      sSysTickTimer.mTimeCount = 0;
 | 
			
		||||
      sSysTickTimer.bTimeOk = 1;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  /* USER CODE END SysTick_IRQn 1 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										271
									
								
								FinalHomework/Core/Src/test.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										271
									
								
								FinalHomework/Core/Src/test.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,271 @@
 | 
			
		||||
/****************************************************************************************************
 | 
			
		||||
//=========================================电源接线================================================//
 | 
			
		||||
//     LCD模块                STM32单片机
 | 
			
		||||
//      VCC          接        DC5V/3.3V      //电源
 | 
			
		||||
//      GND          接          GND          //电源地
 | 
			
		||||
//=======================================液晶屏数据线接线==========================================//
 | 
			
		||||
//本模块默认数据总线类型为SPI总线
 | 
			
		||||
//     LCD模块                STM32单片机    
 | 
			
		||||
//       SDA         接          PB15         //液晶屏SPI总线数据写信号
 | 
			
		||||
//=======================================液晶屏控制线接线==========================================//
 | 
			
		||||
//     LCD模块 					      STM32单片机 
 | 
			
		||||
//       LED         接          PB9          //液晶屏背光控制信号,如果不需要控制,接5V或3.3V
 | 
			
		||||
//       SCK         接          PB13         //液晶屏SPI总线时钟信号
 | 
			
		||||
//       A0          接          PB10         //液晶屏数据/命令控制信号
 | 
			
		||||
//       RESET       接          PB12         //液晶屏复位控制信号
 | 
			
		||||
//       CS          接          PB11         //液晶屏片选控制信号
 | 
			
		||||
//=========================================触摸屏触接线=========================================//
 | 
			
		||||
//如果模块不带触摸功能或者带有触摸功能,但是不需要触摸功能,则不需要进行触摸屏接线
 | 
			
		||||
//	   LCD模块                STM32单片机 
 | 
			
		||||
//      T_IRQ        接          PC10         //触摸屏触摸中断信号
 | 
			
		||||
//      T_DO         接          PC2          //触摸屏SPI总线读信号
 | 
			
		||||
//      T_DIN        接          PC3          //触摸屏SPI总线写信号
 | 
			
		||||
//      T_CS         接          PC13         //触摸屏片选控制信号
 | 
			
		||||
//      T_CLK        接          PC0          //触摸屏SPI总线时钟信号
 | 
			
		||||
**************************************************************************************************/	
 | 
			
		||||
 /* @attention
 | 
			
		||||
  *
 | 
			
		||||
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
 | 
			
		||||
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
 | 
			
		||||
  * TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
 | 
			
		||||
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
 | 
			
		||||
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
 | 
			
		||||
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
 | 
			
		||||
**************************************************************************************************/		
 | 
			
		||||
#include "lcd.h"
 | 
			
		||||
#include "gui.h"
 | 
			
		||||
#include "test.h"
 | 
			
		||||
#include "pic.h"
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
//========================variable==========================//
 | 
			
		||||
uint16_t ColorTab[5]={RED,GREEN,BLUE,YELLOW,BRED};//定义颜色数组
 | 
			
		||||
//=====================end of variable======================//
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void DrawTestPage(uint8_t *str)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Drawing test interface
 | 
			
		||||
 * @parameters :str:the start address of the Chinese and English strings
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/ 
 | 
			
		||||
void DrawTestPage(uint8_t *str)
 | 
			
		||||
{
 | 
			
		||||
//绘制固定栏up
 | 
			
		||||
LCD_Clear(WHITE);
 | 
			
		||||
LCD_Fill(0,0,lcddev.width,20,BLUE);
 | 
			
		||||
//绘制固定栏down
 | 
			
		||||
LCD_Fill(0,lcddev.height-20,lcddev.width,lcddev.height,BLUE);
 | 
			
		||||
POINT_COLOR=WHITE;
 | 
			
		||||
Gui_StrCenter(0,2,WHITE,BLUE,str,16,1);//居中显示
 | 
			
		||||
Gui_StrCenter(0,lcddev.height-18,WHITE,BLUE,"www.lcdwiki.com",16,1);//居中显示
 | 
			
		||||
//绘制测试区域
 | 
			
		||||
//LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void main_test(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Drawing the main Interface of the Comprehensive Test Program
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void main_test(void)
 | 
			
		||||
{
 | 
			
		||||
	DrawTestPage("综合测试程序");	
 | 
			
		||||
	Gui_StrCenter(0,23,RED,BLUE,"全动电子",16,1);//居中显示
 | 
			
		||||
	Gui_StrCenter(0,40,RED,BLUE,"综合测试程序",16,1);//居中显示	
 | 
			
		||||
	Gui_StrCenter(0,57,GREEN,BLUE,"1.8\" ST7735S",16,1);//居中显示
 | 
			
		||||
	Gui_StrCenter(0,74,GREEN,BLUE,"128X160",16,1);//居中显示
 | 
			
		||||
	Gui_StrCenter(0,91,BLUE,BLUE,"2018-08-22",16,1);//居中显示
 | 
			
		||||
	HAL_Delay(1500);		
 | 
			
		||||
	HAL_Delay(1500);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Test_Color(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Color fill test(white,black,red,green,blue)
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void Test_Color(void)
 | 
			
		||||
{
 | 
			
		||||
	//DrawTestPage("测试1:纯色填充测试");
 | 
			
		||||
	LCD_Fill(0,0,lcddev.width,lcddev.height,WHITE);
 | 
			
		||||
	Show_Str(20,30,BLUE,YELLOW,"BL Test",16,1);HAL_Delay(800);
 | 
			
		||||
	LCD_Fill(0,0,lcddev.width,lcddev.height,RED);
 | 
			
		||||
	Show_Str(20,30,BLUE,YELLOW,"RED ",16,1);HAL_Delay(800);
 | 
			
		||||
	LCD_Fill(0,0,lcddev.width,lcddev.height,GREEN);
 | 
			
		||||
	Show_Str(20,30,BLUE,YELLOW,"GREEN ",16,1);HAL_Delay(800);
 | 
			
		||||
	LCD_Fill(0,0,lcddev.width,lcddev.height,BLUE);
 | 
			
		||||
	Show_Str(20,30,RED,YELLOW,"BLUE ",16,1);HAL_Delay(800);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Test_FillRec(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :Rectangular display and fill test
 | 
			
		||||
								Display red,green,blue,yellow,pink rectangular boxes in turn,
 | 
			
		||||
								1500 milliseconds later,
 | 
			
		||||
								Fill the rectangle in red,green,blue,yellow and pink in turn
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void Test_FillRec(void)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t i=0;
 | 
			
		||||
	DrawTestPage("GUI矩形填充测试");
 | 
			
		||||
	LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
 | 
			
		||||
	for (i=0; i<5; i++) 
 | 
			
		||||
	{
 | 
			
		||||
		POINT_COLOR=ColorTab[i];
 | 
			
		||||
		LCD_DrawRectangle(lcddev.width/2-40+(i*16),lcddev.height/2-40+(i*13),lcddev.width/2-40+(i*16)+30,lcddev.height/2-40+(i*13)+30); 
 | 
			
		||||
	}
 | 
			
		||||
	HAL_Delay(1500);	
 | 
			
		||||
	LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE); 
 | 
			
		||||
	for (i=0; i<5; i++) 
 | 
			
		||||
	{
 | 
			
		||||
		POINT_COLOR=ColorTab[i];
 | 
			
		||||
		LCD_DrawFillRectangle(lcddev.width/2-40+(i*16),lcddev.height/2-40+(i*13),lcddev.width/2-40+(i*16)+30,lcddev.height/2-40+(i*13)+30); 
 | 
			
		||||
	}
 | 
			
		||||
	HAL_Delay(1500);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Test_Circle(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :circular display and fill test
 | 
			
		||||
								Display red,green,blue,yellow,pink circular boxes in turn,
 | 
			
		||||
								1500 milliseconds later,
 | 
			
		||||
								Fill the circular in red,green,blue,yellow and pink in turn
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void Test_Circle(void)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t i=0;
 | 
			
		||||
	DrawTestPage("GUI画圆填充测试");
 | 
			
		||||
	LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
 | 
			
		||||
	for (i=0; i<5; i++)  
 | 
			
		||||
		gui_circle(lcddev.width/2-40+(i*15),lcddev.height/2-25+(i*13),ColorTab[i],15,0);
 | 
			
		||||
	HAL_Delay(1500);	
 | 
			
		||||
	LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE); 
 | 
			
		||||
	for (i=0; i<5; i++) 
 | 
			
		||||
	  	gui_circle(lcddev.width/2-40+(i*15),lcddev.height/2-25+(i*13),ColorTab[i],15,1);
 | 
			
		||||
	HAL_Delay(1500);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void English_Font_test(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :English display test
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void English_Font_test(void)
 | 
			
		||||
{
 | 
			
		||||
	DrawTestPage("英文显示测试");
 | 
			
		||||
	Show_Str(10,22,BLUE,YELLOW,"6X12:abcdefgh01234567",12,0);
 | 
			
		||||
	Show_Str(10,34,BLUE,YELLOW,"6X12:ABCDEFGH01234567",12,1);
 | 
			
		||||
	Show_Str(10,47,BLUE,YELLOW,"6X12:~!@#$%^&*()_+{}:",12,0);
 | 
			
		||||
	Show_Str(10,60,BLUE,YELLOW,"8X16:abcde01234",16,0);
 | 
			
		||||
	Show_Str(10,76,BLUE,YELLOW,"8X16:ABCDE01234",16,1);
 | 
			
		||||
	Show_Str(10,92,BLUE,YELLOW,"8X16:~!@#$%^&*()",16,0); 
 | 
			
		||||
	HAL_Delay(1200);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Test_Triangle(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :triangle display and fill test
 | 
			
		||||
								Display red,green,blue,yellow,pink triangle boxes in turn,
 | 
			
		||||
								1500 milliseconds later,
 | 
			
		||||
								Fill the triangle in red,green,blue,yellow and pink in turn
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void Test_Triangle(void)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t i=0;
 | 
			
		||||
	DrawTestPage("GUI Tri填充测试");
 | 
			
		||||
	LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
 | 
			
		||||
	for(i=0;i<5;i++)
 | 
			
		||||
	{
 | 
			
		||||
		POINT_COLOR=ColorTab[i];
 | 
			
		||||
		Draw_Triangel(lcddev.width/2-40+(i*15),lcddev.height/2-12+(i*11),lcddev.width/2-25-1+(i*15),lcddev.height/2-12-26-1+(i*11),lcddev.width/2-10-1+(i*15),lcddev.height/2-12+(i*11));
 | 
			
		||||
	}
 | 
			
		||||
	HAL_Delay(1500);	
 | 
			
		||||
	LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE); 
 | 
			
		||||
	for(i=0;i<5;i++)
 | 
			
		||||
	{
 | 
			
		||||
		POINT_COLOR=ColorTab[i];
 | 
			
		||||
		Fill_Triangel(lcddev.width/2-40+(i*15),lcddev.height/2-12+(i*11),lcddev.width/2-25-1+(i*15),lcddev.height/2-12-26-1+(i*11),lcddev.width/2-10-1+(i*15),lcddev.height/2-12+(i*11));
 | 
			
		||||
	}
 | 
			
		||||
	HAL_Delay(1500);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Chinese_Font_test(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :chinese display test
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void Chinese_Font_test(void)
 | 
			
		||||
{	
 | 
			
		||||
	DrawTestPage("中文显示测试");
 | 
			
		||||
	Show_Str(10,25,BLUE,YELLOW,"16X16:全动电子欢迎",16,0);
 | 
			
		||||
	Show_Str(10,45,BLUE,YELLOW,"24X24:中文测试",24,1);
 | 
			
		||||
	Show_Str(10,70,BLUE,YELLOW,"32X32:字体测试",32,1);
 | 
			
		||||
	HAL_Delay(1200);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Pic_test(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :picture display test
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void Pic_test(void)
 | 
			
		||||
{
 | 
			
		||||
	DrawTestPage("图片显示测试");
 | 
			
		||||
	//LCD_Fill(0,20,lcddev.width,lcddev.height-20,WHITE);
 | 
			
		||||
	Gui_Drawbmp16(20,30,gImage_qq);
 | 
			
		||||
	Show_Str(20+12,75,BLUE,YELLOW,"QQ",16,1);
 | 
			
		||||
	Gui_Drawbmp16(70,30,gImage_qq);
 | 
			
		||||
	Show_Str(70+12,75,BLUE,YELLOW,"QQ",16,1);
 | 
			
		||||
//	Gui_Drawbmp16(150,30,gImage_qq);
 | 
			
		||||
//	Show_Str(150+12,75,BLUE,YELLOW,"QQ",16,1);
 | 
			
		||||
	HAL_Delay(1200);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * @name       :void Rotate_Test(void)
 | 
			
		||||
 * @date       :2018-08-09 
 | 
			
		||||
 * @function   :rotate test
 | 
			
		||||
 * @parameters :None
 | 
			
		||||
 * @retvalue   :None
 | 
			
		||||
******************************************************************************/
 | 
			
		||||
void Rotate_Test(void)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t i=0;
 | 
			
		||||
	uint8_t *Direction[4]={"Rotation:0","Rotation:90","Rotation:180","Rotation:270"};
 | 
			
		||||
	
 | 
			
		||||
	for(i=0;i<4;i++)
 | 
			
		||||
	{
 | 
			
		||||
	LCD_direction(i);
 | 
			
		||||
	DrawTestPage("屏幕旋转测试");
 | 
			
		||||
	Show_Str(20,30,BLUE,YELLOW,Direction[i],16,1);
 | 
			
		||||
	Gui_Drawbmp16(30,50,gImage_qq);
 | 
			
		||||
	HAL_Delay(1000);HAL_Delay(1000);
 | 
			
		||||
	}
 | 
			
		||||
	LCD_direction(USE_HORIZONTAL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -162,8 +162,9 @@ RCC.VCOInputFreq_Value=4000000
 | 
			
		||||
RCC.VCOOutputFreq_Value=340000000
 | 
			
		||||
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8
 | 
			
		||||
SPI2.CalculateBaudRate=21.25 MBits/s
 | 
			
		||||
SPI2.DataSize=SPI_DATASIZE_8BIT
 | 
			
		||||
SPI2.Direction=SPI_DIRECTION_2LINES
 | 
			
		||||
SPI2.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate
 | 
			
		||||
SPI2.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate,DataSize
 | 
			
		||||
SPI2.Mode=SPI_MODE_MASTER
 | 
			
		||||
SPI2.VirtualType=VM_MASTER
 | 
			
		||||
VP_SYS_VS_DBSignals.Mode=DisableDeadBatterySignals
 | 
			
		||||
 | 
			
		||||
@ -1,39 +1,46 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="project_projx.xsd">
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
 | 
			
		||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
 | 
			
		||||
 | 
			
		||||
  <SchemaVersion>2.1</SchemaVersion>
 | 
			
		||||
 | 
			
		||||
  <Header>### uVision Project, (C) Keil Software</Header>
 | 
			
		||||
 | 
			
		||||
  <Targets>
 | 
			
		||||
    <Target>
 | 
			
		||||
      <TargetName>FinalHomework</TargetName>
 | 
			
		||||
      <ToolsetNumber>0x4</ToolsetNumber>
 | 
			
		||||
      <ToolsetName>ARM-ADS</ToolsetName>
 | 
			
		||||
      <pCCUsed>6160000::V6.16::ARMCLANG</pCCUsed>
 | 
			
		||||
      <uAC6>1</uAC6>
 | 
			
		||||
      <TargetOption>
 | 
			
		||||
        <TargetCommonOption>
 | 
			
		||||
          <Device>STM32G473RCTx</Device>
 | 
			
		||||
          <Vendor>STMicroelectronics</Vendor>
 | 
			
		||||
          <PackID>Keil.STM32G4xx_DFP.1.5.0</PackID>
 | 
			
		||||
          <PackURL>https://www.keil.com/pack/</PackURL>
 | 
			
		||||
          <Cpu>IRAM(0x20000000-0x2001FFFF) IROM(0x8000000-0x803FFFF)  CLOCK(8000000) FPU2 CPUTYPE("Cortex-M4") TZ</Cpu>
 | 
			
		||||
          <FlashUtilSpec />
 | 
			
		||||
          <StartupFile />
 | 
			
		||||
          <FlashDriverDll />
 | 
			
		||||
          <FlashUtilSpec></FlashUtilSpec>
 | 
			
		||||
          <StartupFile></StartupFile>
 | 
			
		||||
          <FlashDriverDll></FlashDriverDll>
 | 
			
		||||
          <DeviceId>0</DeviceId>
 | 
			
		||||
          <RegisterFile />
 | 
			
		||||
          <MemoryEnv />
 | 
			
		||||
          <Cmp />
 | 
			
		||||
          <Asm />
 | 
			
		||||
          <Linker />
 | 
			
		||||
          <OHString />
 | 
			
		||||
          <InfinionOptionDll />
 | 
			
		||||
          <SLE66CMisc />
 | 
			
		||||
          <SLE66AMisc />
 | 
			
		||||
          <SLE66LinkerMisc />
 | 
			
		||||
          <SFDFile />
 | 
			
		||||
          <RegisterFile></RegisterFile>
 | 
			
		||||
          <MemoryEnv></MemoryEnv>
 | 
			
		||||
          <Cmp></Cmp>
 | 
			
		||||
          <Asm></Asm>
 | 
			
		||||
          <Linker></Linker>
 | 
			
		||||
          <OHString></OHString>
 | 
			
		||||
          <InfinionOptionDll></InfinionOptionDll>
 | 
			
		||||
          <SLE66CMisc></SLE66CMisc>
 | 
			
		||||
          <SLE66AMisc></SLE66AMisc>
 | 
			
		||||
          <SLE66LinkerMisc></SLE66LinkerMisc>
 | 
			
		||||
          <SFDFile>$$Device:STM32G473RCTx$CMSIS\SVD\STM32G473xx.svd</SFDFile>
 | 
			
		||||
          <bCustSvd>0</bCustSvd>
 | 
			
		||||
          <UseEnv>0</UseEnv>
 | 
			
		||||
          <BinPath />
 | 
			
		||||
          <IncludePath />
 | 
			
		||||
          <LibPath />
 | 
			
		||||
          <RegisterFilePath />
 | 
			
		||||
          <DBRegisterFilePath />
 | 
			
		||||
          <BinPath></BinPath>
 | 
			
		||||
          <IncludePath></IncludePath>
 | 
			
		||||
          <LibPath></LibPath>
 | 
			
		||||
          <RegisterFilePath></RegisterFilePath>
 | 
			
		||||
          <DBRegisterFilePath></DBRegisterFilePath>
 | 
			
		||||
          <TargetStatus>
 | 
			
		||||
            <Error>0</Error>
 | 
			
		||||
            <ExitCodeStop>0</ExitCodeStop>
 | 
			
		||||
@ -48,15 +55,15 @@
 | 
			
		||||
          <CreateHexFile>1</CreateHexFile>
 | 
			
		||||
          <DebugInformation>1</DebugInformation>
 | 
			
		||||
          <BrowseInformation>1</BrowseInformation>
 | 
			
		||||
          <ListingPath>./FinalHomework/</ListingPath>
 | 
			
		||||
          <ListingPath></ListingPath>
 | 
			
		||||
          <HexFormatSelection>1</HexFormatSelection>
 | 
			
		||||
          <Merge32K>0</Merge32K>
 | 
			
		||||
          <CreateBatchFile>0</CreateBatchFile>
 | 
			
		||||
          <BeforeCompile>
 | 
			
		||||
            <RunUserProg1>0</RunUserProg1>
 | 
			
		||||
            <RunUserProg2>0</RunUserProg2>
 | 
			
		||||
            <UserProg1Name />
 | 
			
		||||
            <UserProg2Name />
 | 
			
		||||
            <UserProg1Name></UserProg1Name>
 | 
			
		||||
            <UserProg2Name></UserProg2Name>
 | 
			
		||||
            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
 | 
			
		||||
            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
 | 
			
		||||
            <nStopU1X>0</nStopU1X>
 | 
			
		||||
@ -65,8 +72,8 @@
 | 
			
		||||
          <BeforeMake>
 | 
			
		||||
            <RunUserProg1>0</RunUserProg1>
 | 
			
		||||
            <RunUserProg2>0</RunUserProg2>
 | 
			
		||||
            <UserProg1Name />
 | 
			
		||||
            <UserProg2Name />
 | 
			
		||||
            <UserProg1Name></UserProg1Name>
 | 
			
		||||
            <UserProg2Name></UserProg2Name>
 | 
			
		||||
            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
 | 
			
		||||
            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
 | 
			
		||||
            <nStopB1X>0</nStopB1X>
 | 
			
		||||
@ -75,15 +82,15 @@
 | 
			
		||||
          <AfterMake>
 | 
			
		||||
            <RunUserProg1>0</RunUserProg1>
 | 
			
		||||
            <RunUserProg2>1</RunUserProg2>
 | 
			
		||||
            <UserProg1Name />
 | 
			
		||||
            <UserProg2Name />
 | 
			
		||||
            <UserProg1Name></UserProg1Name>
 | 
			
		||||
            <UserProg2Name></UserProg2Name>
 | 
			
		||||
            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
 | 
			
		||||
            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
 | 
			
		||||
            <nStopA1X>0</nStopA1X>
 | 
			
		||||
            <nStopA2X>0</nStopA2X>
 | 
			
		||||
          </AfterMake>
 | 
			
		||||
          <SelectedForBatchBuild>1</SelectedForBatchBuild>
 | 
			
		||||
          <SVCSIdString />
 | 
			
		||||
          <SVCSIdString></SVCSIdString>
 | 
			
		||||
        </TargetCommonOption>
 | 
			
		||||
        <CommonProperty>
 | 
			
		||||
          <UseCPPCompiler>0</UseCPPCompiler>
 | 
			
		||||
@ -97,8 +104,8 @@
 | 
			
		||||
          <AssembleAssemblyFile>0</AssembleAssemblyFile>
 | 
			
		||||
          <PublicsOnly>0</PublicsOnly>
 | 
			
		||||
          <StopOnExitCode>3</StopOnExitCode>
 | 
			
		||||
          <CustomArgument />
 | 
			
		||||
          <IncludeLibraryModules />
 | 
			
		||||
          <CustomArgument></CustomArgument>
 | 
			
		||||
          <IncludeLibraryModules></IncludeLibraryModules>
 | 
			
		||||
          <ComprImg>0</ComprImg>
 | 
			
		||||
        </CommonProperty>
 | 
			
		||||
        <DllOption>
 | 
			
		||||
@ -131,11 +138,11 @@
 | 
			
		||||
          </Flash1>
 | 
			
		||||
          <bUseTDR>1</bUseTDR>
 | 
			
		||||
          <Flash2>BIN\UL2V8M.DLL</Flash2>
 | 
			
		||||
          <Flash3 />
 | 
			
		||||
          <Flash4 />
 | 
			
		||||
          <pFcarmOut />
 | 
			
		||||
          <pFcarmGrp />
 | 
			
		||||
          <pFcArmRoot />
 | 
			
		||||
          <Flash3></Flash3>
 | 
			
		||||
          <Flash4></Flash4>
 | 
			
		||||
          <pFcarmOut></pFcarmOut>
 | 
			
		||||
          <pFcarmGrp></pFcarmGrp>
 | 
			
		||||
          <pFcArmRoot></pFcArmRoot>
 | 
			
		||||
          <FcArmLst>0</FcArmLst>
 | 
			
		||||
        </Utilities>
 | 
			
		||||
        <TargetArmAds>
 | 
			
		||||
@ -168,7 +175,7 @@
 | 
			
		||||
            <RvctClst>0</RvctClst>
 | 
			
		||||
            <GenPPlst>0</GenPPlst>
 | 
			
		||||
            <AdsCpuType>"Cortex-M4"</AdsCpuType>
 | 
			
		||||
            <RvctDeviceName />
 | 
			
		||||
            <RvctDeviceName></RvctDeviceName>
 | 
			
		||||
            <mOS>0</mOS>
 | 
			
		||||
            <uocRom>0</uocRom>
 | 
			
		||||
            <uocRam>0</uocRam>
 | 
			
		||||
@ -180,7 +187,7 @@
 | 
			
		||||
            <RvdsMve>0</RvdsMve>
 | 
			
		||||
            <RvdsCdeCp>0</RvdsCdeCp>
 | 
			
		||||
            <hadIRAM2>0</hadIRAM2>
 | 
			
		||||
            <hadIROM2>1</hadIROM2>
 | 
			
		||||
            <hadIROM2>0</hadIROM2>
 | 
			
		||||
            <StupSel>8</StupSel>
 | 
			
		||||
            <useUlib>0</useUlib>
 | 
			
		||||
            <EndSel>0</EndSel>
 | 
			
		||||
@ -199,7 +206,7 @@
 | 
			
		||||
            <Ro2Chk>0</Ro2Chk>
 | 
			
		||||
            <Ro3Chk>0</Ro3Chk>
 | 
			
		||||
            <Ir1Chk>1</Ir1Chk>
 | 
			
		||||
            <Ir2Chk>1</Ir2Chk>
 | 
			
		||||
            <Ir2Chk>0</Ir2Chk>
 | 
			
		||||
            <Ra1Chk>0</Ra1Chk>
 | 
			
		||||
            <Ra2Chk>0</Ra2Chk>
 | 
			
		||||
            <Ra3Chk>0</Ra3Chk>
 | 
			
		||||
@ -238,13 +245,13 @@
 | 
			
		||||
              </Ocm6>
 | 
			
		||||
              <IRAM>
 | 
			
		||||
                <Type>0</Type>
 | 
			
		||||
                <StartAddress>0x0</StartAddress>
 | 
			
		||||
                <Size>0x0</Size>
 | 
			
		||||
                <StartAddress>0x20000000</StartAddress>
 | 
			
		||||
                <Size>0x20000</Size>
 | 
			
		||||
              </IRAM>
 | 
			
		||||
              <IROM>
 | 
			
		||||
                <Type>1</Type>
 | 
			
		||||
                <StartAddress>0x0</StartAddress>
 | 
			
		||||
                <Size>0x0</Size>
 | 
			
		||||
                <StartAddress>0x8000000</StartAddress>
 | 
			
		||||
                <Size>0x40000</Size>
 | 
			
		||||
              </IROM>
 | 
			
		||||
              <XRAM>
 | 
			
		||||
                <Type>0</Type>
 | 
			
		||||
@ -268,8 +275,8 @@
 | 
			
		||||
              </OCR_RVCT3>
 | 
			
		||||
              <OCR_RVCT4>
 | 
			
		||||
                <Type>1</Type>
 | 
			
		||||
                <StartAddress />
 | 
			
		||||
                <Size />
 | 
			
		||||
                <StartAddress>0x8000000</StartAddress>
 | 
			
		||||
                <Size>0x40000</Size>
 | 
			
		||||
              </OCR_RVCT4>
 | 
			
		||||
              <OCR_RVCT5>
 | 
			
		||||
                <Type>1</Type>
 | 
			
		||||
@ -293,8 +300,8 @@
 | 
			
		||||
              </OCR_RVCT8>
 | 
			
		||||
              <OCR_RVCT9>
 | 
			
		||||
                <Type>0</Type>
 | 
			
		||||
                <StartAddress>0x0</StartAddress>
 | 
			
		||||
                <Size>0x0</Size>
 | 
			
		||||
                <StartAddress>0x20000000</StartAddress>
 | 
			
		||||
                <Size>0x20000</Size>
 | 
			
		||||
              </OCR_RVCT9>
 | 
			
		||||
              <OCR_RVCT10>
 | 
			
		||||
                <Type>0</Type>
 | 
			
		||||
@ -302,11 +309,11 @@
 | 
			
		||||
                <Size>0x0</Size>
 | 
			
		||||
              </OCR_RVCT10>
 | 
			
		||||
            </OnChipMemories>
 | 
			
		||||
            <RvctStartVector />
 | 
			
		||||
            <RvctStartVector></RvctStartVector>
 | 
			
		||||
          </ArmAdsMisc>
 | 
			
		||||
          <Cads>
 | 
			
		||||
            <interw>1</interw>
 | 
			
		||||
            <Optim>4</Optim>
 | 
			
		||||
            <Optim>2</Optim>
 | 
			
		||||
            <oTime>0</oTime>
 | 
			
		||||
            <SplitLS>0</SplitLS>
 | 
			
		||||
            <OneElfS>1</OneElfS>
 | 
			
		||||
@ -315,13 +322,13 @@
 | 
			
		||||
            <PlainCh>0</PlainCh>
 | 
			
		||||
            <Ropi>0</Ropi>
 | 
			
		||||
            <Rwpi>0</Rwpi>
 | 
			
		||||
            <wLevel>2</wLevel>
 | 
			
		||||
            <wLevel>3</wLevel>
 | 
			
		||||
            <uThumb>0</uThumb>
 | 
			
		||||
            <uSurpInc>0</uSurpInc>
 | 
			
		||||
            <uC99>1</uC99>
 | 
			
		||||
            <uGnu>0</uGnu>
 | 
			
		||||
            <useXO>0</useXO>
 | 
			
		||||
            <v6Lang>5</v6Lang>
 | 
			
		||||
            <v6Lang>3</v6Lang>
 | 
			
		||||
            <v6LangP>3</v6LangP>
 | 
			
		||||
            <vShortEn>1</vShortEn>
 | 
			
		||||
            <vShortWch>1</vShortWch>
 | 
			
		||||
@ -329,9 +336,9 @@
 | 
			
		||||
            <v6WtE>0</v6WtE>
 | 
			
		||||
            <v6Rtti>0</v6Rtti>
 | 
			
		||||
            <VariousControls>
 | 
			
		||||
              <MiscControls />
 | 
			
		||||
              <MiscControls></MiscControls>
 | 
			
		||||
              <Define>USE_HAL_DRIVER,STM32G473xx</Define>
 | 
			
		||||
              <Undefine />
 | 
			
		||||
              <Undefine></Undefine>
 | 
			
		||||
              <IncludePath>../Core/Inc;../Drivers/STM32G4xx_HAL_Driver/Inc;../Drivers/STM32G4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32G4xx/Include;../Drivers/CMSIS/Include</IncludePath>
 | 
			
		||||
            </VariousControls>
 | 
			
		||||
          </Cads>
 | 
			
		||||
@ -347,10 +354,10 @@
 | 
			
		||||
            <useXO>0</useXO>
 | 
			
		||||
            <ClangAsOpt>1</ClangAsOpt>
 | 
			
		||||
            <VariousControls>
 | 
			
		||||
              <MiscControls />
 | 
			
		||||
              <Define />
 | 
			
		||||
              <Undefine />
 | 
			
		||||
              <IncludePath />
 | 
			
		||||
              <MiscControls></MiscControls>
 | 
			
		||||
              <Define></Define>
 | 
			
		||||
              <Undefine></Undefine>
 | 
			
		||||
              <IncludePath></IncludePath>
 | 
			
		||||
            </VariousControls>
 | 
			
		||||
          </Aads>
 | 
			
		||||
          <LDads>
 | 
			
		||||
@ -360,15 +367,15 @@
 | 
			
		||||
            <noStLib>0</noStLib>
 | 
			
		||||
            <RepFail>1</RepFail>
 | 
			
		||||
            <useFile>0</useFile>
 | 
			
		||||
            <TextAddressRange />
 | 
			
		||||
            <DataAddressRange />
 | 
			
		||||
            <pXoBase />
 | 
			
		||||
            <ScatterFile />
 | 
			
		||||
            <IncludeLibs />
 | 
			
		||||
            <IncludeLibsPath />
 | 
			
		||||
            <Misc />
 | 
			
		||||
            <LinkerInputFile />
 | 
			
		||||
            <DisabledWarnings />
 | 
			
		||||
            <TextAddressRange></TextAddressRange>
 | 
			
		||||
            <DataAddressRange></DataAddressRange>
 | 
			
		||||
            <pXoBase></pXoBase>
 | 
			
		||||
            <ScatterFile></ScatterFile>
 | 
			
		||||
            <IncludeLibs></IncludeLibs>
 | 
			
		||||
            <IncludeLibsPath></IncludeLibsPath>
 | 
			
		||||
            <Misc></Misc>
 | 
			
		||||
            <LinkerInputFile></LinkerInputFile>
 | 
			
		||||
            <DisabledWarnings></DisabledWarnings>
 | 
			
		||||
          </LDads>
 | 
			
		||||
        </TargetArmAds>
 | 
			
		||||
      </TargetOption>
 | 
			
		||||
@ -386,6 +393,51 @@
 | 
			
		||||
        <Group>
 | 
			
		||||
          <GroupName>Application/User/Core</GroupName>
 | 
			
		||||
          <Files>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>gui.c</FileName>
 | 
			
		||||
              <FileType>1</FileType>
 | 
			
		||||
              <FilePath>..\Core\Src\gui.c</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>lcd.c</FileName>
 | 
			
		||||
              <FileType>1</FileType>
 | 
			
		||||
              <FilePath>..\Core\Src\lcd.c</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>test.c</FileName>
 | 
			
		||||
              <FileType>1</FileType>
 | 
			
		||||
              <FilePath>..\Core\Src\test.c</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>lcd.h</FileName>
 | 
			
		||||
              <FileType>5</FileType>
 | 
			
		||||
              <FilePath>..\Core\Inc\lcd.h</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>test.h</FileName>
 | 
			
		||||
              <FileType>5</FileType>
 | 
			
		||||
              <FilePath>..\Core\Inc\test.h</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>FONT.H</FileName>
 | 
			
		||||
              <FileType>5</FileType>
 | 
			
		||||
              <FilePath>..\Core\Inc\FONT.H</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>GUI.h</FileName>
 | 
			
		||||
              <FileType>5</FileType>
 | 
			
		||||
              <FilePath>..\Core\Inc\GUI.h</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>pic.h</FileName>
 | 
			
		||||
              <FileType>5</FileType>
 | 
			
		||||
              <FilePath>..\Core\Inc\pic.h</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>variable.h</FileName>
 | 
			
		||||
              <FileType>5</FileType>
 | 
			
		||||
              <FilePath>..\Core\Inc\variable.h</FilePath>
 | 
			
		||||
            </File>
 | 
			
		||||
            <File>
 | 
			
		||||
              <FileName>main.c</FileName>
 | 
			
		||||
              <FileType>1</FileType>
 | 
			
		||||
@ -513,14 +565,18 @@
 | 
			
		||||
            </File>
 | 
			
		||||
          </Files>
 | 
			
		||||
        </Group>
 | 
			
		||||
        <Group>
 | 
			
		||||
          <GroupName>::CMSIS</GroupName>
 | 
			
		||||
        </Group>
 | 
			
		||||
      </Groups>
 | 
			
		||||
    </Target>
 | 
			
		||||
  </Targets>
 | 
			
		||||
 | 
			
		||||
  <RTE>
 | 
			
		||||
    <apis/>
 | 
			
		||||
    <components>
 | 
			
		||||
      <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="4.3.0" condition="CMSIS Core">
 | 
			
		||||
        <package name="CMSIS" schemaVersion="1.3" url="http://www.keil.com/pack/" vendor="ARM" version="4.5.0" />
 | 
			
		||||
      <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.6.0" condition="ARMv6_7_8-M Device">
 | 
			
		||||
        <package name="CMSIS" schemaVersion="1.7.7" url="http://www.keil.com/pack/" vendor="ARM" version="5.9.0"/>
 | 
			
		||||
        <targetInfos>
 | 
			
		||||
          <targetInfo name="FinalHomework"/>
 | 
			
		||||
        </targetInfos>
 | 
			
		||||
@ -528,5 +584,5 @@
 | 
			
		||||
    </components>
 | 
			
		||||
    <files/>
 | 
			
		||||
  </RTE>
 | 
			
		||||
</Project>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user