[活动专区] 【AT-START-F425测评】USART1+TIMER1+KEY+OLED

[复制链接]
2137|0
 楼主| strang 发表于 2022-3-16 21:18 | 显示全部楼层 |阅读模式
                                               雅特力科技AT32F425系列超值型ARM® Cortex®-M4微控制器,高达96MHz的CPU运算速度与内建数字信号处理器(DSP),最高可支持64KB闪存存储器(Flash)及20KB随机存取存储器(SRAM),而系统存储器(4KB)除可作启动加载程序(Bootloader)外,也可一次性配置成一般用户程序和数据区,达到64+4KB的最大空间使用,片上还集成1个OTG控制器(设备模式支持无晶振Xtal-less)、1组CAN总线、4个USART、3个SPI/I²S(可组合全双工模式)、2个I²C、1个16位高级定时器、6个16位通用定时器、1个32位通用定时器、2个16位基本定时器,定时器可组合超过24路PWM独立信道,同时还扩展了1个采样率高达2Msps的12位16通道高速ADC,几乎所有I/O口可容忍5V输入信号,且具有多种端口重映射,超越业界同级USB OTG芯片。
一、串口1测试:
1.硬件连接:
TXD1-----PA9
RXD1-----PA10
2.软件部分代码:
波特率:115200

  1. //宏定义
  2. #define PRINT_UART                       USART1
  3. #define PRINT_UART_CRM_CLK               CRM_USART1_PERIPH_CLOCK
  4. #define PRINT_UART_TX_PIN                GPIO_PINS_9
  5. #define PRINT_UART_TX_GPIO               GPIOA
  6. #define PRINT_UART_TX_GPIO_CRM_CLK       CRM_GPIOA_PERIPH_CLOCK
  7. #define PRINT_UART_TX_PIN_SOURCE         GPIO_PINS_SOURCE9
  8. #define PRINT_UART_TX_PIN_MUX_NUM        GPIO_MUX_1
  9. //串口1初始化
  10. void uart_print_init(uint32_t baudrate)
  11. {
  12.   gpio_init_type gpio_init_struct;

  13.   /* enable the uart and gpio clock */
  14.   crm_periph_clock_enable(PRINT_UART_CRM_CLK, TRUE);
  15.   crm_periph_clock_enable(PRINT_UART_TX_GPIO_CRM_CLK, TRUE);

  16.   gpio_default_para_init(&gpio_init_struct);

  17.   /* configure the uart tx pin */
  18.   gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  19.   gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  20.   gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
  21.   gpio_init_struct.gpio_pins = PRINT_UART_TX_PIN;
  22.   gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  23.   gpio_init(PRINT_UART_TX_GPIO, &gpio_init_struct);

  24.   gpio_pin_mux_config(PRINT_UART_TX_GPIO, PRINT_UART_TX_PIN_SOURCE, PRINT_UART_TX_PIN_MUX_NUM);

  25.   /* configure uart param */
  26.   usart_init(PRINT_UART, baudrate, USART_DATA_8BITS, USART_STOP_1_BIT);
  27.   usart_transmitter_enable(PRINT_UART, TRUE);
  28.   usart_enable(PRINT_UART, TRUE);
  29. }
  30. //重定向c库函数printf到串口1,重定向后可使用printf函数
  31. PUTCHAR_PROTOTYPE
  32. {
  33.   while(usart_flag_get(PRINT_UART, USART_TDBE_FLAG) == RESET);
  34.   usart_data_transmit(PRINT_UART, ch);
  35.   return ch;
  36. }
二、定时器1:
部分代码:
  1. //配置CLKOUT
  2. void clkout_config(void)
  3. {
  4.   gpio_init_type gpio_init_struct;

  5.   /* enable gpio port clock */
  6.   crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);

  7.   /* set default parameter */
  8.   gpio_default_para_init(&gpio_init_struct);

  9.   /* clkout gpio init */
  10.   gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  11.   gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
  12.   gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  13.   gpio_init_struct.gpio_mode = GPIO_MODE_MUX;
  14.   gpio_init_struct.gpio_pins = GPIO_PINS_8;
  15.   gpio_init(GPIOA, &gpio_init_struct);

  16.   /* config clkout division */
  17.   crm_clkout_div_set(CRM_CLKOUT_DIV_1);

  18.   /* config clkout clock */
  19.   crm_clock_out_set(CRM_CLKOUT_PLL_DIV_4);
  20. }
  21. void TMR1_BRK_OVF_TRG_HALL_IRQHandler(void)//定时器中断服务函数
  22. {
  23.   if(tmr_flag_get(TMR1, TMR_OVF_FLAG) != RESET)
  24.   {
  25.     /* add user code... */
  26.                 at32_led_toggle(LED3);//LED3翻转
  27.                 at32_led_toggle(LED4);//LED4翻转
  28.                 printf("usart printf counter: %u\r\n",time_cnt++);
  29.     tmr_flag_clear(TMR1, TMR_OVF_FLAG);
  30.   }
  31. }
三、GPIO模拟SPI驱动OLED屏显示(中景园SSD1306 0.96寸OLED)
1.硬件连接:
D0-----PB12
D1-----PB13
RES----PB14
DC-----PB15
CS------PC6
2. 软件部分:
oled.c

  1. #include "oled.h"
  2. #include "stdlib.h"
  3. #include "oledfont.h"
  4. //OLED的显存
  5. //存放格式如下.
  6. //[0]0 1 2 3 ... 127       
  7. //[1]0 1 2 3 ... 127       
  8. //[2]0 1 2 3 ... 127       
  9. //[3]0 1 2 3 ... 127       
  10. //[4]0 1 2 3 ... 127       
  11. //[5]0 1 2 3 ... 127       
  12. //[6]0 1 2 3 ... 127       
  13. //[7]0 1 2 3 ... 127                           
  14. //void delay_ms(unsigned int ms)
  15. //{                        
  16. //        unsigned int a;
  17. //        while(ms)
  18. //        {
  19. //                a=1800;
  20. //                while(a--);
  21. //                ms--;
  22. //        }
  23. //        return;
  24. //}

  25. #if OLED_MODE==1
  26. //向SSD1106写入一个字节。
  27. //dat:要写入的数据/命令
  28. //cmd:数据/命令标志 0,表示命令;1,表示数据;
  29. void OLED_WR_Byte(unsigned char dat,unsigned char cmd)
  30. {
  31.         DATAOUT(dat);            
  32.         if(cmd)
  33.           OLED_DC_Set();
  34.         else
  35.           OLED_DC_Clr();                  
  36.         OLED_CS_Clr();
  37.         OLED_WR_Clr();         
  38.         OLED_WR_Set();
  39.         OLED_CS_Set();          
  40.         OLED_DC_Set();         
  41. }                         
  42. #else
  43. //向SSD1106写入一个字节。
  44. //dat:要写入的数据/命令
  45. //cmd:数据/命令标志 0,表示命令;1,表示数据;
  46. void OLED_WR_Byte(unsigned char dat,unsigned char cmd)
  47. {       
  48.         unsigned char i;                          
  49.         if(cmd)
  50.           OLED_DC_Set();
  51.         else
  52.           OLED_DC_Clr();                  
  53.         OLED_CS_Clr();
  54.         for(i=0;i<8;i++)
  55.         {                          
  56.                 OLED_SCLK_Clr();
  57.                 if(dat&0x80)
  58.                    OLED_SDIN_Set();
  59.                 else
  60.                    OLED_SDIN_Clr();
  61.                 OLED_SCLK_Set();
  62.                 dat<<=1;   
  63.         }                                                   
  64.         OLED_CS_Set();
  65.         OLED_DC_Set();             
  66. }
  67. #endif

  68. //反显函数
  69. void OLED_ColorTurn(u8 i)
  70. {
  71.         if(i==0)
  72.                 {
  73.                         OLED_WR_Byte(0xA6,OLED_CMD);//正常显示
  74.                 }
  75.         if(i==1)
  76.                 {
  77.                         OLED_WR_Byte(0xA7,OLED_CMD);//反色显示
  78.                 }
  79. }

  80. //屏幕旋转180度
  81. void OLED_DisplayTurn(u8 i)
  82. {
  83.         if(i==0)
  84.                 {
  85.                         OLED_WR_Byte(0xC8,OLED_CMD);//正常显示
  86.                         OLED_WR_Byte(0xA1,OLED_CMD);
  87.                 }
  88.         if(i==1)
  89.                 {
  90.                         OLED_WR_Byte(0xC0,OLED_CMD);//反转显示
  91.                         OLED_WR_Byte(0xA0,OLED_CMD);
  92.                 }
  93. }

  94.         void OLED_Set_Pos(unsigned char x, unsigned char y)
  95. {
  96.         OLED_WR_Byte(0xb0+y,OLED_CMD);
  97.         OLED_WR_Byte(((x&0xf0)>>4)|0x10,OLED_CMD);
  98.         OLED_WR_Byte((x&0x0f)|0x01,OLED_CMD);
  99. }             
  100. //开启OLED显示   
  101. void OLED_Display_On(void)
  102. {
  103.         OLED_WR_Byte(0X8D,OLED_CMD);  //SET DCDC命令
  104.         OLED_WR_Byte(0X14,OLED_CMD);  //DCDC ON
  105.         OLED_WR_Byte(0XAF,OLED_CMD);  //DISPLAY ON
  106. }
  107. //关闭OLED显示     
  108. void OLED_Display_Off(void)
  109. {
  110.         OLED_WR_Byte(0X8D,OLED_CMD);  //SET DCDC命令
  111.         OLED_WR_Byte(0X10,OLED_CMD);  //DCDC OFF
  112.         OLED_WR_Byte(0XAE,OLED_CMD);  //DISPLAY OFF
  113. }                                            
  114. //清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!          
  115. void OLED_Clear(void)  
  116. {  
  117.         unsigned char i,n;                    
  118.         for(i=0;i<8;i++)  
  119.         {  
  120.                 OLED_WR_Byte (0xb0+i,OLED_CMD);    //设置页地址(0~7)
  121.                 OLED_WR_Byte (0x00,OLED_CMD);      //设置显示位置—列低地址
  122.                 OLED_WR_Byte (0x10,OLED_CMD);      //设置显示位置—列高地址   
  123.                 for(n=0;n<128;n++)OLED_WR_Byte(0,OLED_DATA);
  124.         } //更新显示
  125. }


  126. //在指定位置显示一个字符,包括部分字符
  127. //x:0~127
  128. //y:0~63
  129. //mode:0,反白显示;1,正常显示                                 
  130. //size:选择字体 16/12
  131. void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr)
  132. {             
  133.         unsigned char c=0,i=0;       
  134.                 c=chr-' ';//得到偏移后的值                       
  135.                 if(x>Max_Column-1){x=0;y=y+2;}
  136.                 if(SIZE ==16)
  137.                         {
  138.                         OLED_Set_Pos(x,y);       
  139.                         for(i=0;i<8;i++)
  140.                         OLED_WR_Byte(F8X16[c*16+i],OLED_DATA);
  141.                         OLED_Set_Pos(x,y+1);
  142.                         for(i=0;i<8;i++)
  143.                         OLED_WR_Byte(F8X16[c*16+i+8],OLED_DATA);
  144.                         }
  145.                         else {       
  146.                                 OLED_Set_Pos(x,y+1);
  147.                                 for(i=0;i<6;i++)
  148.                                 OLED_WR_Byte(F6x8[c][i],OLED_DATA);
  149.                                
  150.                         }
  151. }
  152. //m^n函数
  153. unsigned int oled_pow(unsigned char m,unsigned char n)
  154. {
  155.         unsigned int result=1;         
  156.         while(n--)result*=m;   
  157.         return result;
  158. }                                  
  159. //显示2个数字
  160. //x,y :起点坐标         
  161. //len :数字的位数
  162. //size:字体大小
  163. //mode:模式        0,填充模式;1,叠加模式
  164. //num:数值(0~4294967295);                           
  165. void OLED_ShowNum(unsigned char x,unsigned char y,unsigned int num,unsigned char len,unsigned char size)
  166. {                
  167.         unsigned char t,temp;
  168.         unsigned char enshow=0;                                                  
  169.         for(t=0;t<len;t++)
  170.         {
  171.                 temp=(num/oled_pow(10,len-t-1))%10;
  172.                 if(enshow==0&&t<(len-1))
  173.                 {
  174.                         if(temp==0)
  175.                         {
  176.                                 OLED_ShowChar(x+(size/2)*t,y,' ');
  177.                                 continue;
  178.                         }else enshow=1;
  179.                           
  180.                 }
  181.                  OLED_ShowChar(x+(size/2)*t,y,temp+'0');
  182.         }
  183. }
  184. //显示一个字符号串
  185. void OLED_ShowString(unsigned char x,unsigned char y,unsigned char *chr)
  186. {
  187.         unsigned char j=0;
  188.         while (chr[j]!='\0')
  189.         {                OLED_ShowChar(x,y,chr[j]);
  190.                         x+=8;
  191.                 if(x>120){x=0;y+=2;}
  192.                         j++;
  193.         }
  194. }
  195. //显示汉字
  196. void OLED_ShowCHinese(unsigned char x,unsigned char y,unsigned char no)
  197. {                                  
  198.         unsigned char t,adder=0;
  199.         OLED_Set_Pos(x,y);       
  200.     for(t=0;t<16;t++)
  201.                 {
  202.                                 OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);
  203.                                 adder+=1;
  204.      }       
  205.                 OLED_Set_Pos(x,y+1);       
  206.     for(t=0;t<16;t++)
  207.                         {       
  208.                                 OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);
  209.                                 adder+=1;
  210.       }                                       
  211. }
  212. /***********功能描述:显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/
  213. void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[])
  214. {        
  215. unsigned int j=0;
  216. unsigned char x,y;
  217.   
  218.   if(y1%8==0) y=y1/8;      
  219.   else y=y1/8+1;
  220.         for(y=y0;y<y1;y++)
  221.         {
  222.                 OLED_Set_Pos(x0,y);
  223.     for(x=x0;x<x1;x++)
  224.             {      
  225.                     OLED_WR_Byte(BMP[j++],OLED_DATA);                   
  226.             }
  227.         }
  228. }


  229. //初始化SSD1306                                            
  230. void OLED_Init(void)
  231. {          
  232.   OLED_RST_Set();
  233.         delay_ms(100);
  234.         OLED_RST_Clr();
  235.         delay_ms(200);
  236.         OLED_RST_Set();
  237.                                           
  238.         OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel
  239.         OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
  240.         OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
  241.         OLED_WR_Byte(0x40,OLED_CMD);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
  242.         OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register
  243.         OLED_WR_Byte(0xCF,OLED_CMD); // Set SEG Output Current Brightness
  244.         OLED_WR_Byte(0xA1,OLED_CMD);//--Set SEG/Column Mapping     0xa0左右反置 0xa1正常
  245.         OLED_WR_Byte(0xC8,OLED_CMD);//Set COM/Row Scan Direction   0xc0上下反置 0xc8正常
  246.         OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display
  247.         OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
  248.         OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
  249.         OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset        Shift Mapping RAM Counter (0x00~0x3F)
  250.         OLED_WR_Byte(0x00,OLED_CMD);//-not offset
  251.         OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency
  252.         OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
  253.         OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period
  254.         OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
  255.         OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration
  256.         OLED_WR_Byte(0x12,OLED_CMD);
  257.         OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh
  258.         OLED_WR_Byte(0x40,OLED_CMD);//Set VCOM Deselect Level
  259.         OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
  260.         OLED_WR_Byte(0x02,OLED_CMD);//
  261.         OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
  262.         OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
  263.         OLED_WR_Byte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)
  264.         OLED_WR_Byte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7)
  265.         OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
  266.        
  267.         OLED_WR_Byte(0xAF,OLED_CMD); /*display ON*/
  268.         OLED_Clear();
  269.         OLED_Set_Pos(0,0);        
  270. }
oled.h
  1. #ifndef __OLED_H
  2. #define __OLED_H


  3. #include "at32f425_board.h"                   

  4. #define  u8 unsigned char
  5. #define  u16 unsigned int
  6. #define  u32 unsigned int
  7.        
  8. //OLED模式设置
  9. //0:4线串行模式
  10. //1:并行8080模式
  11. #define OLED_MODE 0
  12. #define SIZE 16
  13. #define XLevelL                0x00
  14. #define XLevelH                0x10
  15. #define Max_Column        128
  16. #define Max_Row                64
  17. #define        Brightness        0xFF
  18. #define X_WIDTH         128
  19. #define Y_WIDTH         64         

  20. #define OLED_CMD  0        //写命令
  21. #define OLED_DATA 1        //写数据

  22. //-----------------OLED端口定义----------------
  23. #define OLED_SCLK_Clr() gpio_bits_reset(GPIOB,GPIO_PINS_12)//CLK GPIO_PINS_0
  24. #define OLED_SCLK_Set() gpio_bits_set(GPIOB,GPIO_PINS_12)

  25. #define OLED_SDIN_Clr() gpio_bits_reset(GPIOB,GPIO_PINS_13)//DIN
  26. #define OLED_SDIN_Set() gpio_bits_set(GPIOB,GPIO_PINS_13)

  27. #define OLED_RST_Clr() gpio_bits_reset(GPIOB,GPIO_PINS_14)//RES
  28. #define OLED_RST_Set() gpio_bits_set(GPIOB,GPIO_PINS_14)

  29. #define OLED_DC_Clr() gpio_bits_reset(GPIOB,GPIO_PINS_15)//DC
  30. #define OLED_DC_Set() gpio_bits_set(GPIOB,GPIO_PINS_15)
  31.                      
  32. #define OLED_CS_Clr()  gpio_bits_reset(GPIOC,GPIO_PINS_6)//CS
  33. #define OLED_CS_Set()  gpio_bits_set(GPIOC,GPIO_PINS_6)


  34. //OLED控制用函数
  35. //void delay_ms(unsigned int ms);
  36. void OLED_ColorTurn(u8 i);
  37. void OLED_DisplayTurn(u8 i);
  38. void OLED_Clear(void);
  39. void OLED_ShowChar(unsigned char x,unsigned char y,unsigned char chr);
  40. void OLED_ShowNum(unsigned char x,unsigned char y,unsigned int num,unsigned char len,unsigned char size);
  41. void OLED_ShowString(unsigned char x,unsigned char y,unsigned char *chr);
  42. void OLED_ShowCHinese(unsigned char x,unsigned char y,unsigned char no);
  43. void OLED_DrawBMP(unsigned char x0, unsigned char y0,unsigned char x1, unsigned char y1,unsigned char BMP[]);
  44. void OLED_Init(void);

  45. #endif  
oledfont.h
  1. #ifndef __OLEDFONT_H
  2. #define __OLEDFONT_H           
  3. //常用ASCII表
  4. //偏移量32
  5. //ASCII字符集
  6. //偏移量32
  7. //大小:12*6
  8. /************************************6*8的点阵************************************/
  9. const unsigned char F6x8[][6] =               
  10. {
  11. 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
  12. 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
  13. 0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
  14. 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
  15. 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
  16. 0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
  17. 0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
  18. 0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
  19. 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
  20. 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
  21. 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
  22. 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
  23. 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
  24. 0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
  25. 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
  26. 0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
  27. 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
  28. 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
  29. 0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
  30. 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
  31. 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
  32. 0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
  33. 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
  34. 0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
  35. 0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
  36. 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
  37. 0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
  38. 0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
  39. 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
  40. 0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
  41. 0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
  42. 0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
  43. 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
  44. 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
  45. 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
  46. 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
  47. 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
  48. 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
  49. 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
  50. 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
  51. 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
  52. 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
  53. 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
  54. 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
  55. 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
  56. 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
  57. 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
  58. 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
  59. 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
  60. 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
  61. 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
  62. 0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
  63. 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
  64. 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
  65. 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
  66. 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
  67. 0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
  68. 0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
  69. 0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
  70. 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
  71. 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
  72. 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
  73. 0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
  74. 0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
  75. 0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
  76. 0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
  77. 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
  78. 0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
  79. 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
  80. 0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
  81. 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
  82. 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
  83. 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
  84. 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
  85. 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
  86. 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
  87. 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
  88. 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
  89. 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
  90. 0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
  91. 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
  92. 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
  93. 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
  94. 0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
  95. 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
  96. 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
  97. 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
  98. 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
  99. 0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
  100. 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
  101. 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
  102. 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
  103. };
  104. /****************************************8*16的点阵************************************/
  105. const unsigned char F8X16[]=          
  106. {
  107.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
  108.   0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
  109.   0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
  110.   0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
  111.   0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
  112.   0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
  113.   0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
  114.   0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
  115.   0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
  116.   0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
  117.   0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
  118.   0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
  119.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
  120.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
  121.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
  122.   0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
  123.   0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
  124.   0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
  125.   0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
  126.   0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
  127.   0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
  128.   0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
  129.   0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
  130.   0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
  131.   0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
  132.   0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
  133.   0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
  134.   0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
  135.   0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
  136.   0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
  137.   0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
  138.   0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
  139.   0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//[url=home.php?mod=space&uid=72445]@[/url] 32
  140.   0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
  141.   0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
  142.   0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
  143.   0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
  144.   0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
  145.   0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
  146.   0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
  147.   0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
  148.   0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
  149.   0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
  150.   0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
  151.   0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
  152.   0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
  153.   0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
  154.   0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
  155.   0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
  156.   0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
  157.   0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
  158.   0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
  159.   0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
  160.   0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
  161.   0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
  162.   0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
  163.   0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
  164.   0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
  165.   0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
  166.   0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
  167.   0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
  168.   0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
  169.   0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
  170.   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
  171.   0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
  172.   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
  173.   0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
  174.   0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
  175.   0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
  176.   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
  177.   0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
  178.   0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
  179.   0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
  180.   0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
  181.   0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
  182.   0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
  183.   0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
  184.   0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
  185.   0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
  186.   0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
  187.   0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
  188.   0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
  189.   0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
  190.   0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
  191.   0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
  192.   0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
  193.   0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
  194.   0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
  195.   0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
  196.   0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
  197.   0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
  198.   0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
  199.   0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
  200.   0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
  201.   0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
  202. };
  203. char Hzk[][32]={

  204. {0x00,0x04,0xF4,0x84,0x84,0xFC,0xE4,0x30,0xFC,0x92,0x90,0xF6,0x94,0x90,0x10,0x00},
  205. {0x00,0x20,0x18,0x46,0x41,0x7F,0x00,0x00,0xFF,0x24,0x24,0x3F,0x24,0x24,0x20,0x00},/*"雅",0*/

  206. {0x00,0xF8,0x28,0x20,0xFE,0x20,0x20,0x48,0x48,0x48,0x7E,0x48,0xC8,0x48,0x48,0x00},
  207. {0x00,0x04,0x04,0x02,0xFF,0x02,0x02,0x02,0x1A,0x12,0x42,0xC2,0x7F,0x02,0x02,0x00},/*"特",1*/

  208. {0x00,0x00,0x20,0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0x20,0xE0,0x20,0x00},
  209. {0x00,0x40,0xC0,0x60,0x30,0x18,0x0F,0x03,0x00,0x00,0x40,0x40,0x60,0x3F,0x00,0x00},/*"力",2*/

  210. {0x00,0x80,0x84,0x84,0x84,0xFC,0xFC,0x84,0x84,0x84,0xFC,0x84,0x84,0x84,0x80,0x00},
  211. {0x00,0x41,0x41,0x61,0x31,0x1F,0x03,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x00},/*"开",3*/

  212. {0x00,0x00,0x20,0x3C,0x24,0x20,0xE0,0x3E,0x20,0x20,0x24,0x3C,0x28,0x20,0x20,0x00},
  213. {0x00,0x10,0x10,0x48,0xC6,0x43,0x47,0x2D,0x39,0x31,0x29,0x47,0x43,0x40,0x40,0x00},/*"发",4*/

  214. {0x00,0x20,0x20,0xFE,0x20,0x20,0x00,0xFC,0x24,0xE4,0x24,0x24,0x24,0xE4,0x04,0x00},
  215. {0x00,0x0C,0x03,0xFF,0x01,0x43,0x72,0x9F,0xC0,0x63,0x3E,0x18,0x27,0x61,0x40,0x00},/*"板",5*/


  216. };

  217. #endif

四、KEY :  PA0 高电平有效
  1. //获取按键状态
  2. uint8_t at32_button_state(void)
  3. {
  4.   return gpio_input_data_bit_read(USER_BUTTON_PORT, USER_BUTTON_PIN);
  5. }
五、主函数:
  1. int main(void)
  2. {
  3.   system_clock_config();
  4.   at32_board_init();
  5.   uart_print_init(115200);
  6.        
  7.         /* get system clock */
  8.   crm_clocks_freq_get(&crm_clocks_freq_struct);

  9.   /* turn led2/led3/led4 on */
  10.   at32_led_off(LED2);
  11.   at32_led_off(LED3);
  12.   at32_led_off(LED4);
  13.        

  14.   /* enable tmr1 clock */
  15.   crm_periph_clock_enable(CRM_TMR1_PERIPH_CLOCK, TRUE);

  16.   /* tmr1 configuration */
  17.   /* time base configuration */
  18.   /* systemclock/12000/10000 = 1hz */
  19.   tmr_base_init(TMR1, 4999, (crm_clocks_freq_struct.ahb_freq / 10000) - 1);//定时500ms
  20.   tmr_cnt_dir_set(TMR1, TMR_COUNT_UP);

  21.   /* overflow interrupt enable */
  22.   tmr_interrupt_enable(TMR1, TMR_OVF_INT, TRUE);

  23.   /* tmr1 overflow interrupt nvic init */
  24.   nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
  25.   nvic_irq_enable(TMR1_BRK_OVF_TRG_HALL_IRQn, 0, 0);

  26.   /* enable tmr1 */
  27.   tmr_counter_enable(TMR1, TRUE);
  28.   clkout_config();
  29.        
  30.         OLED_GPIO_Init();
  31.         OLED_Init();

  32.   /* output a message on hyperterminal using printf function */
  33.   printf("usart printf example: retarget the c library printf function to the usart\r\n");
  34.         OLED_Clear();
  35.         OLED_ShowCHinese(0,0,0);//雅
  36.         OLED_ShowCHinese(18,0,1);//特
  37.         OLED_ShowCHinese(36,0,2);//力
  38.         OLED_ShowCHinese(54,0,3);//开
  39.         OLED_ShowCHinese(72,0,4);//发
  40.         OLED_ShowCHinese(90,0,5);//板
  41.         OLED_ShowString(3,3,(u8*)"AT-START-F425");       
  42.         OLED_ShowString(3,5,(u8*)"21ic-strang");       
  43.   while(1)
  44.   {
  45.                 if(at32_button_state()==1)//按下用户按键时,LED2亮
  46.                 {
  47.                         at32_led_on(LED2);
  48.                         printf("Button press down !\r\n");
  49.                         delay_ms(500);
  50.                 }
  51.                 else//用户按键弹起时,LED2灭
  52.                 {
  53.                         at32_led_off(LED2);                       
  54.                 }
  55.   }
  56. }

OLED显示效果
394356231e1f1c2069.png
串口1发送的数据:
383876231e21585f80.png




                                       
                               

您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:技术工程师
简介:

48

主题

3294

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部