STM32内部AD采样程序--运行通过(测量电压范围0~33V)(运行通过的ARM
stm32 ADC多通道采样例程(HAL库)

Stm32 基于HAL库ADC多通道采样例程1、用cubemx建立工程,cubemx 5.3.0版本,芯片型号:stm32f103zet6(1)开启外部高速时钟HSE,配置系统时钟为72M注意:ADC1时钟配置为9MHz(2)配置串口1,设置好波特率并开启串口中断2、启用ADC1 通道1,3,4,5,6注意要先设置好通道数量才能配置,各自ADC通道的参数。
Rank 是转换顺序,我们按1,2,3,4,5的顺序分别对应ADC1通道0,1,4,5,6。
多通道采样要开启扫描工作模式,在这里我们还有开启连续转换方式,连续转换是在ADC转换按照约定的转换顺序全部通道完成一次转换后,又自动启动下一次转换。
3、启用ADC转换DMA传输,多通道转换时要启用ADC的DMA传输,才能在相应的通道转换完成后,DMA自动去获取转换值。
中断方式没法在多通道采样时使用,因为在多通道扫描模式下,只有在最后一个通道转换结束时才会产生中断请求。
而ADC数据寄存器是共用的,这时候进入中断取值只能得到一个通道的数值。
4、到此,基础配置和ADC通道配置已经完成,接着我们设置工程名称和保存路径等就可以了,一般工程名和保存路径最好不要有中文,不然可能会出现一些意想不到的问题,在测试的过程中就遇到工程名或者保存路径中都用英文但是词组名称之间用空格隔开,在打开生成的工程文件后,向新建的分类文件夹中添加自己写的xxx.c文件,就导致keil软件卡死,不知道是keil软件还是cubemx的问题。
5、设置好工程名称和路径后就可以生成代码了,生成代码后我们选择打开工程。
接着我们开始编写代码(1)首先我们要修改main函数的一个错误,就是在初始化时要把MX_DMA_Init()函数放在MX_ADC1_Init()函数之前执行,cubemx生成代码时MX_DMA_Init()是在ADC初始化函数之后。
如果在后面则转换时打印输出的ADC值,大多数都为0,具体原因就不知道是怎么回事了,应该是cubemx这个版本还不太稳定。
STM32多通道ADC采集详解(DMA模式和非DMA模式)

STM32多通道ADC采集详解(DMA模式和非DMA模式)在非DMA模式下,ADC采集的数据是通过CPU直接读取的,采集效率相对较低,但是编程相对简单。
首先,需要初始化ADC模块的工作模式(单通道、多通道等)和采样时间。
然后,使能ADC模块,并配置所需的通道和采样时间。
接着,设置采样序列,指定要采集的通道和相应的排列顺序。
在采集数据时,首先需要设置ADC转换模式和采样时间,然后开始转换,并等待转换完成。
转换完成后,通过读取ADC_DR寄存器可以获取转换结果。
如果需要采集多个通道的数据,可以通过设置ADCSQR中的SQx位来启动下一次转换。
在DMA模式下,ADC采集的数据是通过DMA控制器传输到指定的内存区域,采集效率较高,适合数据量较大的应用场景。
与非DMA模式相比,DMA模式下的配置需要额外设置DMA控制器的工作模式(单次传输、循环传输等)和传输数据的目的地地址。
在采集数据前,需要设置DMA传输的目的地地址,并使能DMA传输。
在开启ADC转换后,DMA控制器会根据设置的目的地地址来自动传输数据,无需CPU干预。
采集完成后,CPU可以通过检查DMA传输完成标志位来判断数据是否已传输完毕。
总结:
使用非DMA模式的ADC采集相对简单而容易上手,适用于数据量较小且对实时性要求不高的应用场景。
DMA模式下的ADC采集效率更高,适用于数据量较大且对实时性要求较高的应用场景。
无论是DMA模式还是非DMA模式,都需要根据具体的应用需求来选择合适的模式。
在使用DMA模式时,还需要注意合理设置DMA传输的目的地地址和传输模式,以充分发挥DMA的优势。
STM32单片机的ADC多通道采样

如果设计电路图的话,可以参考这种思路。
我的收获
1引脚初始化的时候需要注意
每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,表示
这个引脚(PC0)可以配置为ADC1的通道10,或者是ADC2的通道10,或
者是ADC3的通道10,这个地方非常重要,涉及到后面ADC初始化时函数
STM32单片机的ADC多通道采样
一单通道采样
参考资料:
《STM32库开发实战指南》
原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来
看硬件电路图
这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两
端的电压,这样的电路设计比较简单也容易理解,但是存在一定的弊端,下
的调用。
比如当我们使能ADC时,我们调用的函数是
ADC_Cmd();1
如果我们使用的是ADC1,那幺上面函数的写法就应该是
ADC_Cmd(ADC1,ENABLE);1
相应的如果是ADC2,那幺上面函数的写法就是
ADC_Cmd(ADC2,ENABLE);1
另外需要注意的是,我们这里的ADC使用了DMA,所以如果你使用的
是ADC1,那幺对应DMA就应该是DMA1的通道1
如果使用的是ADC2或者是ADC3就需要自己去查找手册,看看对应的
是哪个DMA的那个通道。
在后面上传的程序中可以看到DMA初始化的时候有这幺一条语句
DMA_Init(DMA1_Channel1);1
这就是初始化DMA1的通道1
相应的
DMA_Cmd(DMA1_Channel1,ENABLE);1
就是使能DMA1的通道1
STM32中AD采样的三种方法分析

STM32中AD采样的三种⽅法分析 在进⾏STM32F中AD采样的学习中,我们知道AD采样的⽅法有多种,按照逻辑程序处理有三种⽅式,⼀种是查询模式,⼀种是中断处理模式,⼀种是DMA模式。
三种⽅法按照处理复杂⽅法DMA模式处理模式效率最⾼,其次是中断处理模式,最差是查询模式,相信很多学者在学习AD采样程序时,很多例程采⽤DMA模式,在这⾥我针对三种程序进⾏分别分析。
1、AD采样查询模式 在AD采样查询模式中,我们需要注意的是IO⼝的初始化配置,这⾥我采⽤PA2作为模拟采集的引脚(AIN2)和串⼝3作为打印输出。
具体如下:建⽴⼀个USART3.C和USART3.H⽂件,其程序为: #include "usart3.h" #include "stdarg.h" u8 SendBuff[SENDBUFF_SIZE]; void USART3_Config(void) { //定义结构体 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; //开启外部时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE ); // USART3 GPIO config GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOAtiNG; GPIO_Init(GPIOB, &GPIO_InitStructure); //USART3 mode config USART_ART_BaudRate = 115200; USART_ART_WordLength = USART_WordLength_8b; USART_ART_StopBits = USART_StopBits_1; USART_ART_Parity = USART_Parity_No; USART_ART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); USART_Cmd(USART3, ENABLE); } 其次建⽴⼀个ADC.C和⼀个ADC.H⽂件,其中ADC.C中程序为: void ADC1_Init(void) { ADC1_GPIO_Config(); ADC1_Mode_Config(); } static void ADC1_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; //开启外部时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA,ENABLE); //配置PA2引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //配置为模拟输⼊ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //调⽤库函数 GPIO_Init(GPIOA, &GPIO_InitStructure); } static void ADC1_Mode_Config(void) { //ADC1_ configuration ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //独⽴ADC模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE; //禁⽌扫描模式 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //开启连续转换模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //不使⽤外部触发转换 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //采集数据右对齐 ADC_InitStructure.ADC_NbrOfChannel = 1; //要转换的通道数⽬1 ADC_Init(ADC1,&ADC_InitStructure); //配置ADC时钟,为PCLK2的8分频,即9Mhz RCC_ADCCLKConfig(RCC_PCLK2_Div8); //配置ADC1的通道2位55.5个采集周期 ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 1, ADC_SampleTime_55Cycles5); ADC_Cmd(ADC1,ENABLE); //复位校准寄存器 ADC_ResetCalibration(ADC1); //等待校准寄存器复位完成 while(ADC_GetResetCalibrationStatus(ADC1)); //ADC校准 ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); //由于没有使⽤外部触发,所以使⽤软件触发ADC转换 ADC_SoftwareStartConvCmd(ADC1,ENABLE); } 然后在主函数main中其程序代码如下: int main(void) { USART3_Config(); ADC1_Init(); printf("输⼊ADC值"); while(1) { ADC_ConvertedValue = ADC_GetConversionValue(ADC1); ADC_ConvertedValueLocal =(float)ADC_ConvertedValue/4096*3.3; //读取ADC转换的值 printf("\r\n the current AD value = 0x%04X \r\n",ADC_ConvertedValue); printf("\r\n the current AD value = %f V \r\n",ADC_ConvertedValueLocal); Delay(0xFFFFEE); } } 这样采⽤查询的⽅法即可以采集ADC的电压值,⼀个值为16进制转换的值,⼀个是转换计算的值。
STM32 ADC采样时间、采样周期、采样频率计算方法

STM32 ADC 采样时间、采样周期、采样频率计算
方法
ADC 转换就是输入模拟的信号量,单片机转换成数字量。
读取数字量必须等转换完成后,完成一个通道的读取叫做采样周期。
采样周期一般来说=转换时间+读取时间。
而转换时间=采样时间+12.5 个时钟周期。
采样时间是你通过寄存器告诉STM32 采样模拟量的时间,设置越长越精确
一STM32 ADC 采样频率的确定
1. :先看一些资料,确定一下ADC 的时钟:
(1),由时钟控制器提供的ADCCLK 时钟和PCLK2(APB2 时钟)同步。
CLK
控制器为ADC 时钟提供一个专用的可编程预分频器。
(2) 一般情况下在程序中将PCLK2 时钟设为与系统时钟相同
/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);。
stm32内部AD采样程序

* Input : None* Output : None* Return : None*******************************************************************************/ void RCC_Configuration(void){ /* RCC system reset(for debug purpose) */RCC_DeInit();/* Enable HSE */RCC_HSEConfig(RCC_HSE_ON);/* Wait till HSE is ready */HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus == SUCCESS){/* HCLK = SYSCLK */RCC_HCLKConfig(RCC_SYSCLK_Div1);/* PCLK2 = HCLK */RCC_PCLK2Config(RCC_HCLK_Div1);/* PCLK1 = HCLK/2 */RCC_PCLK1Config(RCC_HCLK_Div2);/* ADCCLK = PCLK2/4 */RCC_ADCCLKConfig(RCC_PCLK2_Div8);/* Flash 2 wait state */FLASH_SetLatency(FLASH_Latency_2);/* Enable Prefetch Buffer */FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* PLLCLK = 8MHz * 9 = 56 MHz */RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* Enable PLL */RCC_PLLCmd(ENABLE);/* Wait till PLL is ready */while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)}/* Select PLL as system clock source */RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/* Wait till PLL is used as system clock source */while(RCC_GetSYSCLKSource() != 0x08){}}/* Enable peripheral clocks --------------------------------------------------*/ /* Enable DMA clock */RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);/* Enable ADC1 and GPIOC clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);/* Enable USART1 and GPIOA clock */* Input : None* Output : None* Return : None*******************************************************************************/ void GPIO_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;/* Configure (ADC Channel13) as analog input -------------------------*/= GPIO_Pin_3;= GPIO_Mode_AIN;GPIO_Init(GPIOC, &GPIO_InitStructure);as Output push-pull= GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;= GPIO_Speed_50MHz;= GPIO_Mode_Out_PP;GPIO_Init(GPIOF, &GPIO_InitStructure);}#ifdef DEBUG/******************************************************************************** Function Name : assert_failed* Description : Reports the name of the source file and the source line number * where the assert error has occurred.* Input : - file: pointer to the source file name* - line: assert error line source number* Output : None* Return : None*******************************************************************************/ void assert_failed(u8* file, u32 line){/* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) *//* Infinite loop */while (1){}}#endif/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 参考文献:网络。
STM32三个ADC同步规则采样

STM32三个ADC同步规则采样同步采样⼀般应⽤于交流信号中,是指多个ADC的采集时刻完全同步。
在电⼒测量领域,经常会遇到需要同步采样的情况,⽐如同步采样电压电流信号,计算其相位差。
阻抗分析时,也需要对输⼊输出信号进⾏同步采集,分析其相位差和幅度,计算阻抗。
1.Mode选择为三重同步规则模式。
2.使能DMA连续请求。
3.外部触发源选择TIM2触发事件。
配置完成后,打开ADC2和ADC3的配置,可以看到,Mode已经⾃动配置为三重同步规则模式,且外部触发源也已经隐藏⽆法选择,因为三重同步规则模式下,三个ADC必须使⽤同⼀个外部触发源。
同时ADC2和ADC3的DMA也不需要配置,使⽤同⼀个DMA。
ADC2配置如下:ADC配置完成后,打开TIM2定时器,⽤于触发ADC采样。
TIM2时钟选择内部时钟(84MHz),选择触发事件为Update Event,⽤于触发ADC。
配置其分频系数和计数周期如下,则ADC的采样率为84MHz÷(83+1) ÷(199+1)=5000Hz。
uint8_t DMA_Flag = 0;void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){DMA_Flag = 1;}HAL_ADC_Start(&hadc1);HAL_ADC_Start(&hadc2);HAL_ADC_Start(&hadc3);//启动ADCHAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t*)adcbuf1,300);//启动同步规则模式及DMA,3个ADC,每次采样100个点*3 HAL_TIM_Base_Start(&htim2);//启动TIM2,⽤于触发ADC采样/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){if(DMA_Flag == 1)//AD转换完成标准{DMA_Flag = 0;HAL_TIM_Base_Stop(&htim2);HAL_ADCEx_MultiModeStop_DMA(&hadc1);HAL_ADC_Stop(&hadc1);HAL_ADC_Stop(&hadc2);HAL_ADC_Stop(&hadc3);//停⽌采样for(uint8_t i=0;i<100;i++)< span="">{sprintf(str,"$,%d,%d,%d",adcbuf1[i][0],adcbuf1[i][1],adcbuf1[i][2]);HAL_UART_Transmit(&huart1,(uint8_t*)str,strlen(str),100);//串⼝发送到上位机}HAL_ADC_Start(&hadc1);HAL_ADC_Start(&hadc2);HAL_ADC_Start(&hadc3);HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t*)adcbuf1,300);HAL_TIM_Base_Start(&htim2);//重新启动采样}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */。
stm32adc采样频率计算

stm32adc采样频率计算1.前言本文将介绍如何计算S TM32微控制器中的AD C(模拟数字转换器)的采样频率。
我们将从基本原理开始,解释如何通过配置寄存器来实现所需的采样频率。
2.采样频率的定义在开始计算之前,让我们先明确什么是采样频率。
采样频率是指在模拟信号转换为数字信号时,获取模拟信号的速率。
它决定了系统对信号的精细程度和频率响应。
3. ST M32微控制器中的AD C模块S T M32微控制器通过其内置的AD C模块实现模拟信号的转换。
该模块可以设置为不同的采样频率,以满足不同应用的需求。
4. AD C采样频率的计算为了计算所需的A DC采样频率,我们需要考虑以下几个因素:4.1时钟频率A D C模块的时钟频率决定了其工作速度。
在S TM32微控制器中,时钟频率可以通过配置RC C(R es et an dC lo ck C on tr ol)寄存器来设置。
4.2A D C分辨率A D C模块的分辨率表示可以转换的模拟信号范围。
在S TM32微控制器中,分辨率可以通过配置AD C的C R寄存器来设置。
4.3A D C转换时间A D C转换时间表示进行一次模拟信号转换所需的时间。
它可以通过配置A DC的S MP R(Sam p le ti me)寄存器来设置。
4.4定时器的使用为了实现所需的采样频率,我们可以使用定时器来触发AD C的转换。
定时器的时钟频率、预分频因子和自动重装载寄存器的设置将影响AD C的采样频率。
5. AD C采样频率的计算公式根据以上因素,我们可以使用以下公式计算A DC的采样频率:采样频率=A DC时钟频率/(转换时间+12.5个A DC时钟周期)其中,转换时间表示A DC进行一次转换所需的时间(以秒为单位)。
6.示例为了更好地理解A DC采样频率的计算过程,我们来看一个示例。
假设:-A DC时钟频率为10M H z-转换时间为1u s根据以上假设和公式,我们可以计算出采样频率:采样频率=10M Hz/(1u s+12.5*(1/10M Hz))=800kH z因此,在这个示例中,A DC的采样频率为800kH z。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/******************************************************************************* * File Name : main.c* Author : Wuhan R&D Center, Embest* Date First Issued : 08/08/2008* Description : Main program body******************************************************************************** //* Includes ------------------------------------------------------------------*/ #include "stm32f10x_lib.h"#include"stdio.h"/* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ //#define ADC1_DR_Address ((u32)0x4001244C)float AD_value=0.0;u8 adc_1[6]={0};//用来存放经ADC转换后的电压值的每一位数值。
/* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ ADC_InitTypeDef ADC_InitStructure;//DMA_InitTypeDef DMA_InitStructure;//vu16 ADC_ConvertedValue;ErrorStatus HSEStartUpStatus;/* Private function prototypes -----------------------------------------------*/ void RCC_Configuration(void);void GPIO_Configuration(void);void SysTick_Configuration(void);#define LED1ON GPIO_SetBits(GPIOF,GPIO_Pin_0)#define LED1OFF GPIO_ResetBits(GPIOF,GPIO_Pin_0) //片选cs#define LED2ON GPIO_SetBits(GPIOF,GPIO_Pin_1)#define LED2OFF GPIO_ResetBits(GPIOF,GPIO_Pin_1)//复位rest#define LED3ON GPIO_SetBits(GPIOF,GPIO_Pin_2)#define LED3OFF GPIO_ResetBits(GPIOF,GPIO_Pin_2)//数据sdata#define LED4ON GPIO_SetBits(GPIOF,GPIO_Pin_3)#define LED4OFF GPIO_ResetBits(GPIOF,GPIO_Pin_3)//时钟sclk unsigned char Ver='A'; //驱动版本,默认为A版本,一共4个版本unsigned char zifu[]={/*-- 文字: --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: ! --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00,/*-- 文字: " --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x28,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: # --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x28,0x28,0xFC,0x28,0x50,0xFC,0x50,0x50,0x00,0x00,/*-- 文字: $ --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x20,0x78,0xA8,0xA0,0x60,0x30,0x28,0xA8,0xF0,0x20,0x00,/*-- 文字: % --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x48,0xA8,0xB0,0x50,0x28,0x34,0x54,0x48,0x00,0x00,/*-- 文字: & --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x20,0x50,0x50,0x78,0xA8,0xA8,0x90,0x6C,0x00,0x00,/*-- 文字: ' --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: ( --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00,/*-- 文字: ) --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x00,/*-- 文字: * --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00,0x00,0x00,/*-- 文字: + --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x20,0x20,0x20,0xF8,0x20,0x20,0x20,0x00,0x00,0x00,/*-- 文字: , --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x80,/*-- 文字: - --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: . --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,/*-- 文字: / --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0x80,0x00,/*-- 文字: 0 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00,/*-- 文字: 1 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00,/*-- 文字: 2 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,0x00,0x00,/*-- 文字: 3 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,0x00,0x00,/*-- 文字: 4 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x10,0x30,0x50,0x50,0x90,0x78,0x10,0x18,0x00,0x00,/*-- 文字: 5 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70,0x00,0x00,/*-- 文字: 6 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x90,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00,/*-- 文字: 7 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x20,0x20,0x20,0x00,0x00,/*-- 文字: 8 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00, /*-- 文字: 9 --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x48,0x70,0x00,0x00,/*-- 文字: : --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x20,0x00,0x00,/*-- 文字: ; --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x20,0x00,/*-- 文字: < --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00,/*-- 文字: = --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,/*-- 文字: > --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x40,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x40,0x00,0x00,/*-- 文字: ? --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x20,0x00,0x20,0x00,0x00,/*-- 文字: @ --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x98,0xA8,0xA8,0xB8,0x80,0x78,0x00,0x00,/*-- 文字: A --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x20,0x20,0x30,0x50,0x50,0x78,0x48,0xCC,0x00,0x00,/*-- 文字: B --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x00,/*-- 文字: C --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x78,0x88,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00,/*-- 文字: D --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00,/*-- 文字: E --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x48,0xF8,0x00,0x00,/*-- 文字: F --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x40,0xE0,0x00,0x00,/*-- 文字: G --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x38,0x48,0x80,0x80,0x9C,0x88,0x48,0x30,0x00,0x00,/*-- 文字: H --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xCC,0x48,0x48,0x78,0x48,0x48,0x48,0xCC,0x00,0x00,/*-- 文字: I --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,/*-- 文字: J --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0xE0,0x00,/*-- 文字: K --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xEC,0x48,0x50,0x60,0x50,0x50,0x48,0xEC,0x00,0x00,/*-- 文字: L --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x44,0xFC,0x00,0x00,/*-- 文字: M --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xD8,0xD8,0xD8,0xD8,0xA8,0xA8,0xA8,0xA8,0x00,0x00,/*-- 文字: N --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xDC,0x48,0x68,0x68,0x58,0x58,0x48,0xE8,0x00,0x00,/*-- 文字: O --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00,/*-- 文字: P --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF0,0x48,0x48,0x70,0x40,0x40,0x40,0xE0,0x00,0x00,/*-- 文字: Q --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xE8,0x98,0x70,0x18,0x00,/*-- 文字: R --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF0,0x48,0x48,0x70,0x50,0x48,0x48,0xEC,0x00,0x00,/*-- 文字: S --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x78,0x88,0x80,0x60,0x10,0x08,0x88,0xF0,0x00,0x00,/*-- 文字: T --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00,/*-- 文字: U --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xCC,0x48,0x48,0x48,0x48,0x48,0x48,0x30,0x00,0x00,/*-- 文字: V --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xCC,0x48,0x48,0x50,0x50,0x30,0x20,0x20,0x00,0x00,/*-- 文字: W --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xA8,0xA8,0xA8,0x70,0x50,0x50,0x50,0x50,0x00,0x00,/*-- 文字: X --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x50,0x50,0xD8,0x00,0x00,/*-- 文字: Y --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x20,0x20,0x70,0x00,0x00,/*-- 文字: Z --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x40,0x48,0xF8,0x00,0x00,/*-- 文字: [ --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x00,/*-- 文字: \ --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x40,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x00,0x00,/*-- 文字: ] --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00,/*-- 文字: ^ --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: _ --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,/*-- 文字: ` --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: a --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x38,0x48,0x3C,0x00,0x00,/*-- 文字: b --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00,/*-- 文字: c --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x40,0x40,0x38,0x00,0x00,/*-- 文字: d --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x18,0x08,0x08,0x38,0x48,0x48,0x48,0x3C,0x00,0x00, /*-- 文字: e --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x78,0x40,0x38,0x00,0x00,/*-- 文字: f --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x1C,0x20,0x20,0x78,0x20,0x20,0x20,0x78,0x00,0x00,/*-- 文字: g --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0x30,0x40,0x78,0x44,0x38,/*-- 文字: h --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0xEC,0x00,0x00,/*-- 文字: i --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x20,0x00,0x00,0x60,0x20,0x20,0x20,0x70,0x00,0x00,/*-- 文字: j --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x10,0x00,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0xE0,/*-- 文字: k --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xC0,0x40,0x40,0x5C,0x50,0x70,0x48,0xEC,0x00,0x00,/*-- 文字: l --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00,/*-- 文字: m --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xA8,0x00,0x00,/*-- 文字: n --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0xEC,0x00,0x00,/*-- 文字: o --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x30,0x00,0x00,/*-- 文字: p --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x40,0xE0,/*-- 文字: q --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x38,0x08,0x1C,/*-- 文字: r --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xD8,0x60,0x40,0x40,0xE0,0x00,0x00,/*-- 文字: s --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x30,0x08,0x78,0x00,0x00,/*-- 文字: t --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x20,0x20,0x70,0x20,0x20,0x20,0x18,0x00,0x00,/*-- 文字: u --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x48,0x3C,0x00,0x00,/*-- 文字: v --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x00,0x00,/*-- 文字: w --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x70,0x50,0x50,0x00,0x00,/*-- 文字: x --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xD8,0x50,0x20,0x50,0xD8,0x00,0x00,/*-- 文字: y --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x20,0xC0,/*-- 文字: z --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x00,0x00,0x00,0x00,0x78,0x10,0x20,0x20,0x78,0x00,0x00,/*-- 文字: { --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x18,0x10,0x10,0x10,0x20,0x10,0x10,0x10,0x10,0x18,0x00,/*-- 文字: | --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,/*-- 文字: } --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x00,0x60,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x60,0x00,/*-- 文字: ~ --*//*-- 宋体9; 此字体下对应的点阵为:宽x高=6x12 --*//*-- 宽度不是8的倍数,现调整为:宽度x高度=8x12 --*/0x40,0xA4,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, };unsigned char hanzi[]={/*---------------雨----------------*/0x00,0x4F,0xFE,0x4,0x7,0xFC,0x66,0x45,0x54,0x44,0x46,0x64,0x55,0x44,0x44,0x45, 0xC0,0x00,/*---------------亭----------------*/0x04,0x07,0xFC,0x00,0x01,0xF8,0x10,0x8F,0xFE,0x80,0x23,0xF8,0x04,0x00,0x40,0x1C, 0x00,0x00,/*---------------电----------------*/0x04,0x00,0x44,0x7F,0xE4,0x44,0x7F,0xC4,0x44,0x44,0x47,0xFC,0x44,0x00,0x42,0x03, 0xE0,0x00,/*---------------子----------------*/0x7F,0xC0,0x08,0x01,0x00,0x60,0x04,0x4F,0xFE,0x04,0x00,0x40,0x04,0x00,0x40,0x1C, 0x00,0x00,/*---------------我----------------*/0x0A,0x8F,0x24,0x12,0x0F,0xFE,0x12,0x01,0x64,0x3A,0x8D,0x10,0x13,0x21,0xCA,0x70, 0x60,0x00,/*---------------是----------------*/0x1F,0x81,0x08,0x1F,0x81,0x08,0x1F,0x80,0x00,0xFF,0xE2,0x40,0x37,0xC4,0xC0,0x87, 0xE0,0x00,/*---------------企----------------*/0x04,0x00,0x60,0x09,0x01,0x08,0x24,0x6C,0x40,0x17,0x81,0x40,0x14,0x01,0x40,0xFF, 0xE0,0x00,/*---------------鹅----------------*/0x30,0x8D,0xBC,0x52,0x4F,0xB4,0x52,0xC7,0x60,0xDB,0xE5,0x02,0x6B,0xE4,0xA2,0xC6, 0xC0,0x00,/*---------------我----------------*/0x0A,0x8F,0x24,0x12,0x0F,0xFE,0x12,0x01,0x64,0x3A,0x8D,0x10,0x13,0x21,0xCA,0x70, 0x60,0x00,/*---------------怕----------------*/0x21,0x02,0x20,0x27,0xEB,0x42,0xAC,0x2A,0x42,0x27,0xE2,0x42,0x24,0x22,0x42,0x27, 0xE0,0x00,/*---------------谁----------------*/0x45,0x02,0x48,0x0F,0xE0,0xC8,0xD7,0xE4,0x48,0x44,0x84,0x7E,0x54,0x86,0x7E,0x04, 0x00,0x00,/*-------------------------------*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,};void delayms(unsigned int ii)//1ms延时函数{unsigned int i,x;for (x=0;x<ii;x++){for (i=0;i<100;i++);}}void send(unsigned char value, unsigned char cd) //写8位数据 {unsigned char i,dt;LED1OFF;LED4OFF;if(cd == 0)LED3OFF;elseLED3ON;LED4ON;dt=value;for(i=0;i<8;i++){LED4OFF;if(dt&0x80)LED3ON;elseLED3OFF;dt=dt<<1;LED4ON;}LED1ON;//cs=1;}void readdata() //读数据{unsigned char i,j;unsigned char ch[6];send(0x09, 0); // 读数据LED1OFF;//cs=0;LED4OFF;//sclk=0;for (i=0;i<6;i++){ch[i]=0;for (j=0;j<8;j++){LED4ON;//sclk=1;if (!(GPIO_ReadOutputDataBit(GPIOF,GPIO_Pin_2)))//sdata==0){ch[i]=ch[i]|(1<<(7-j));}LED4OFF;//sclk=0;}}switch(ch[0]){case 255:Ver='A';break;case 127:Ver='B';break;case 0:if(ch[1]+ch[2]+ch[3]==0){Ver='D';}else{Ver='C';}break;}LED1ON;//cs=1;}void LCD_Initialize() //LCD初始化{unsigned char i;LED2ON;//rest=1;LED1ON;//cs=1;LED3OFF;//sdata=0;LED4ON;//sclk=1;LED2OFF;//rest=0;delayms(50);LED2ON;//rest=1;delayms(50);send(0x00, 0); // NOPdelayms(5);send(0x01, 0); // LCD Software Resetdelayms(5);send(0xC6, 0); // Initial Escapesend(0xB9, 0); // Refresh setsend(0x00, 1);readdata(); //读出数据send(0xB5, 0); // Gamma Curve Setsend(0x01, 1);send(0xbd, 0); //common driver output select//很重要的 if(Ver=='D'){send(0x04, 1);}else{send(0x00, 1);}send(0xBE, 0); // Power Controlsend(0x03, 1);send(0x11, 0); // Sleep outsend(0xBA, 0); // Power Controlsend(0x7F, 1);send(0x03, 1);send(0x36, 0); // 扫描方式if (Ver=='A'){send(0x00|0x08,1); //RGB}else{send(0x00,1); //RGB}send(0xB7, 0); // Temperature gradient setfor(i=0; i<14; i++){send(0, 1);}send(0x29, 0); //display ONsend(0x03, 0); // Booster Voltage ONdelayms(20); // Booster Voltage stabilisieren lassen send(0x20, 0); //display inversion OFFsend(0x25, 0); // Write contrastswitch(Ver) //对比度设置{case 'A':send(70, 1); //对比度设置break;case 'B':send(67, 1); //对比度设置break;case 'C'://send(74, 1);send(66, 1);// send(64, 1); //对比度设置break;case 'D': //对比度设置send(39, 1);break;}}//************************//颜色模式设置:color=1为4096色模式// :color=0为256色模式//************************void LCD_ColorSet(unsigned char Color){if (Color==1) {send(0x3a, 0); //interface pixel formatsend(0x03, 1); //0x03 为4096色,0x02为256色}else{send(0x3a, 0); //interface pixel formatsend(0x02, 1); //0x03 为4096色,0x02为256色send(0x2d, 0); //调色板设置if (Ver=='B'||Ver=='C'){//redsend(~0x00, 1);send(~0x02, 1);send(~0x03, 1);send(~0x04, 1);send(~0x05, 1);send(~0x06, 1);send(~0x08, 1);send(~0x0f, 1);//greensend(~0x00, 1);send(~0x02, 1);send(~0x03, 1);send(~0x04, 1);send(~0x05, 1);send(~0x06, 1);send(~0x08, 1);send(~0x0f, 1);//bluesend(~0x00, 1);send(~0x03, 1);send(~0x06, 1);send(~0x0f, 1);}else{//redsend(0x00, 1);send(0x02, 1);send(0x03, 1);send(0x04, 1);send(0x05, 1);send(0x06, 1);send(0x08, 1);send(0x0f, 1);//greensend(0x00, 1);send(0x02, 1);send(0x03, 1);send(0x04, 1);send(0x05, 1);send(0x06, 1);send(0x08, 1);send(0x0f, 1);//bluesend(0x00, 1);send(0x03, 1);send(0x06, 1);send(0x0f, 1);}}}void addset(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2) //坐标设置 4个参数依次为开始X,开始Y,结束x,结束Y{send(0x2a,0 );//column address setsend(x1,1 );send(x2,1 );send(0x2B,0 );//page address setsend(y1,1 );send(y2,1 );send(0x2C,0 );//memory write}//************************//清屏:color=1为4096色模式清屏// :color=0为256色模式清屏//************************void LCD_Clear(unsigned int value,unsigned char Color){unsigned char x, y;addset(0,0,97,66);if (Color==1){for(y = 0; y < 67; y ++){for(x = 0; x < 49;x ++){ send(value>>4,1);send(((value&0x0f)<<4)|(value>>8),1);send(value,1);}}}else{for(y = 0; y < 67; y ++){for(x = 0; x < 98; x ++){send(value,1);}}}}//在指定位置显示一个字符(8*12大小)//dcolor为内容颜色,gbcolor为背静颜色void showzifu(unsigned char x,unsigned char y,unsigned char value,unsigned char dcolor,unsigned char bgcolor){unsigned char i,j;unsigned char *temp=zifu;addset(x,y,x+7,y+11); //设置区域temp+=(value-32)*12;for(j=0;j<12;j++){for(i=0;i<8;i++){if((*temp&(1<<(7-i)))!=0){send(dcolor,1);}else{send(bgcolor,1);}}temp++;}}//在指定位置显示一个字符串(8*12大小)//dcolor为内容颜色,gbcolor为背静颜色void showzifustr(unsigned char x,unsigned char y,unsigned char *str,unsigned char dcolor,unsigned char bgcolor){unsigned char x1,y1;x1=x;y1=y;while(*str!='\0'){showzifu(x1,y1,*str,dcolor,bgcolor);x1+=7;str++;}}//在指定位置显示一个汉字(12*12大小)//dcolor为内容颜色,gbcolor为背静颜色void showhanzi(unsigned char x,unsigned char y,unsigned char value,unsigned char dcolor,unsigned char bgcolor){unsigned char i,j;unsigned char *temp=hanzi;addset(x,y,x+11,y+11); //设置区域temp+=value*18;for(j=0;j<18;j++){for(i=0;i<8;i++){if((*temp&(1<<(7-i)))!=0){send(dcolor,1);}else{send(bgcolor,1);}}temp++;}}void showdian(unsigned char x,unsigned char y,unsigned char dcolor,unsigned char bgcolor){addset(x,y,x+1,y+1); //设置区域send(dcolor,1);send(bgcolor,1);}void delay_1ms(unsigned int ii)//1ms延时函数{unsigned int i,x;for (x=0;x<ii;x++){for (i=0;i<12000;i++);//当i=12000时,就实现了1ms的延时。