找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4863|回复: 4
收起左侧

单片机课设带农历的万年历

[复制链接]
ID:368502 发表于 2018-7-10 10:49 | 显示全部楼层 |阅读模式
万年历仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.png

单片机源程序如下:
  1. #include <reg51.h>


  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define NoUpLine         1
  5. #define UpLine           0
  6. #define NoUnderLine 1
  7. #define UnderLine        0
  8. #define FALSE        0
  9. #define TRUE    1
  10. /*--------------------------------------------------------------------------
  11. REG51.H

  12. Header file for generic 80C51 and 80C31 microcontroller.
  13. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
  14. All rights reserved.
  15. --------------------------------------------------------------------------*/

  16. #ifndef __REG51_H__
  17. #define __REG51_H__

  18. /*  BYTE Register  */
  19. sfr P0   = 0x80;
  20. sfr P1   = 0x90;
  21. sfr P2   = 0xA0;
  22. sfr P3   = 0xB0;
  23. sfr PSW  = 0xD0;
  24. sfr ACC  = 0xE0;
  25. sfr B    = 0xF0;
  26. sfr SP   = 0x81;
  27. sfr DPL  = 0x82;
  28. sfr DPH  = 0x83;
  29. sfr PCON = 0x87;
  30. sfr TCON = 0x88;
  31. sfr TMOD = 0x89;
  32. sfr TL0  = 0x8A;
  33. sfr TL1  = 0x8B;
  34. sfr TH0  = 0x8C;
  35. sfr TH1  = 0x8D;
  36. sfr IE   = 0xA8;
  37. sfr IP   = 0xB8;
  38. sfr SCON = 0x98;
  39. sfr SBUF = 0x99;


  40. /*  BIT Register  */
  41. /*  PSW   */
  42. sbit CY   = 0xD7;
  43. sbit AC   = 0xD6;
  44. sbit F0   = 0xD5;
  45. sbit RS1  = 0xD4;
  46. sbit RS0  = 0xD3;
  47. sbit OV   = 0xD2;
  48. sbit P    = 0xD0;

  49. /*  TCON  */
  50. sbit TF1  = 0x8F;
  51. sbit TR1  = 0x8E;
  52. sbit TF0  = 0x8D;
  53. sbit TR0  = 0x8C;
  54. sbit IE1  = 0x8B;
  55. sbit IT1  = 0x8A;
  56. sbit IE0  = 0x89;
  57. sbit IT0  = 0x88;

  58. /*  IE   */
  59. sbit EA   = 0xAF;
  60. sbit ES   = 0xAC;
  61. sbit ET1  = 0xAB;
  62. sbit EX1  = 0xAA;
  63. sbit ET0  = 0xA9;
  64. sbit EX0  = 0xA8;

  65. /*  IP   */
  66. sbit PS   = 0xBC;
  67. sbit PT1  = 0xBB;
  68. sbit PX1  = 0xBA;
  69. sbit PT0  = 0xB9;
  70. sbit PX0  = 0xB8;

  71. /*  P3  */
  72. sbit RD   = 0xB7;
  73. sbit WR   = 0xB6;
  74. sbit T1   = 0xB5;
  75. sbit T0   = 0xB4;
  76. sbit INT1 = 0xB3;
  77. sbit INT0 = 0xB2;
  78. sbit TXD  = 0xB1;
  79. sbit RXD  = 0xB0;

  80. /*  SCON  */
  81. sbit SM0  = 0x9F;
  82. sbit SM1  = 0x9E;
  83. sbit SM2  = 0x9D;
  84. sbit REN  = 0x9C;
  85. sbit TB8  = 0x9B;
  86. sbit RB8  = 0x9A;
  87. sbit TI   = 0x99;
  88. sbit RI   = 0x98;

  89. #endif

  90. /*-----------------------------------------------------------*/
  91. #define LCD_OFF 0x3E
  92. #define LCD_ON  0x3F

  93. #define Add_X 0xB8     //the start address of the page 0 ;(0~7)
  94. #define Add_Y 0x40     //the start address of the Y counter ; (0~64)
  95. #define Add_Z 0xC0     //the start address of the DDRAM ; (0~64)

  96. #define UPLINE      0x01
  97. #define UNDERLINE        0x80
  98. /*-----------------------------------------------------------*/
  99. #define  LCD12864_DATA_PORT  P0

  100. sbit  LCD12864_EN         =P2^4;
  101. sbit  LCD12864_RW         =P2^3;       //0:write ; 1:read
  102. sbit  LCD12864_RS         =P2^2;           //0:the command .1:the data
  103. sbit  LCD12864_CS_L       =P2^0;       //select the left of the lcd when 1
  104. sbit  LCD12864_CS_R       =P2^1;  
  105. sbit  LCD12864_RST                      =P2^5;
  106. /*------------------------------------------------------------*/
  107. void delayus(unsigned int us){
  108.    while(us--);
  109. }

  110. /*--------------------------select the LCD--------------------*/
  111. void LCDSel(unsigned char sel){
  112.     switch(sel)        {
  113.            case 0: LCD12864_CS_L=0;LCD12864_CS_R=0;break;          
  114.            case 1: LCD12864_CS_L=1;LCD12864_CS_R=0;break;       //left
  115.            case 2: LCD12864_CS_L=0;LCD12864_CS_R=1;break;                //right
  116.            default:;
  117.         };
  118. }

  119. /*------------------------------------------------------------*/
  120. void WaitLCD(){
  121.    unsigned char flag;

  122.    LCD12864_DATA_PORT=0xFF;
  123.    LCD12864_RW=1;
  124.    LCD12864_RS=0;
  125.    LCD12864_EN=1;
  126.    LCD12864_EN=1;
  127.    LCD12864_EN=0;

  128.    LCD12864_DATA_PORT=0xFF;                //读有效数据
  129.    LCD12864_RW=1;
  130.    LCD12864_RS=0;

  131.    LCD12864_EN=1;
  132.    do{
  133.       flag=LCD12864_DATA_PORT;
  134.           LCD12864_DATA_PORT=0xFF;
  135.    }while(!((flag&0x80)==0x80));

  136.    LCD12864_EN=0;
  137. }                               

  138. /*-------------------------------------------------------------*/
  139. void WriteDatToLCD12864(unsigned char dat){
  140. //   WaitLCD();
  141.    LCD12864_RS=1;   //the data
  142.    LCD12864_RW=0;   //write
  143.    LCD12864_DATA_PORT=dat;
  144.    LCD12864_EN=1;
  145.    LCD12864_EN=0;
  146. }

  147. /*-------------------------------------------------------------*/
  148. void WriteCmdToLCD12864(unsigned char cmd){
  149. //   WaitLCD();
  150.    LCD12864_RS=0;   //the command
  151.    LCD12864_RW=0;        //write
  152.    LCD12864_DATA_PORT=cmd;
  153.    LCD12864_EN=1;
  154.    LCD12864_EN=0;
  155. }

  156. /*-------------------------------------------------------------*/
  157. unsigned char ReadDatFromLCD12864(void){
  158.    unsigned char dat;
  159.    WaitLCD();
  160.    LCD12864_DATA_PORT=0xFF;                      //读空操作
  161.    LCD12864_RS=1;    //the data
  162.    LCD12864_RW=1;     //read
  163.    LCD12864_EN=1;
  164.    LCD12864_EN=1;
  165.    LCD12864_EN=0;

  166.    LCD12864_DATA_PORT=0xFF;                          //读有效数据
  167.    LCD12864_RS=1;   
  168.    LCD12864_RW=1;     
  169.    LCD12864_EN=1;
  170.    dat=LCD12864_DATA_PORT;
  171.    LCD12864_EN=0;
  172.    return dat;
  173. }       

  174. /*--------------------------------------------------------------*/
  175. //from the chip manual
  176. void LCD12864_init(void){
  177.     LCD12864_RST=0;
  178.         delayus(50);
  179.         LCD12864_RST=1;
  180.         LCDSel(0);       //left and right
  181.         WriteCmdToLCD12864(LCD_OFF);
  182.         WriteCmdToLCD12864(LCD_ON);
  183. }

  184. /*------------------------------------------------------------*/
  185. //x:0~7
  186. void SetX(unsigned char x){
  187.     WriteCmdToLCD12864(Add_X+x);
  188. }

  189. /*------------------------------------------------------------*/
  190. //y:0~127
  191. void SetY(unsigned char y){
  192.     WriteCmdToLCD12864(Add_Y+y);
  193. }         

  194. /*------------------------------------------------------------*/
  195. //z:0~63
  196. void SetZ(unsigned char z){
  197.     WriteCmdToLCD12864(Add_Z+z);
  198. }

  199. /*------------------------------------------------------------*/
  200. void ClearLCD(){
  201.     int i,j;
  202.     LCDSel(0);
  203.         for(j=0;j<8;j++)        {
  204.            WriteCmdToLCD12864(LCD_ON);
  205.        SetX(j);  
  206.        WriteCmdToLCD12864(Add_Y);  //diffrent from SetY(0),SetY(64);     
  207.            SetZ(0);
  208.            for (i=0;i<64;i++)           {
  209.               WriteDatToLCD12864(0x00);
  210.            }
  211.         }       
  212. }

  213. /*------------------------------------------------------------*/
  214. //左上角第一个点为原点,向下Y为轴,向右为X轴
  215. //x:0~63~127    y:0~63
  216. //flag :  0:擦除某个点
  217. //        1:显示某个点
  218. unsigned char code Tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  219. void Dot(char x,char y,bit flag){
  220.     unsigned char dat;
  221.     if(x<64){
  222.             LCDSel(1);
  223.                 SetX(y/8);   //set the page address
  224.                 SetY(x);         //set the Y adress
  225.                 dat=ReadDatFromLCD12864();
  226.                 if(flag)
  227.                   dat=dat|(Tab[y%8]);
  228.                 else
  229.                   dat=dat&(~(Tab[y%8]));
  230.                 SetY(x);         //set the Y adress
  231.                 WriteDatToLCD12864(dat);
  232.         }
  233.         else if(x<128){
  234.             LCDSel(2);
  235.                 SetX(y/8);
  236.                 SetY(x-64);
  237.                 dat=ReadDatFromLCD12864();
  238.                 if(flag)
  239.                   dat=dat|(Tab[y%8]);
  240.                 else
  241.                   dat=dat&(~(Tab[y%8]));
  242.                 SetY(x-64);
  243.                 WriteDatToLCD12864(dat);
  244.         }     
  245. }
  246.           
  247. /*------------------------------------------------------------*/
  248. //draw a line between point(x1,y1) and point(x2,y2)
  249. //flag   0:erase the line    1:draw a line
  250. void Line(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit flag){
  251.     unsigned char i;
  252.         unsigned char temp;
  253.         float k;
  254.         if(x1==x2){
  255.            if(y1>y2){
  256.                       temp=x1;x1=x2;x2=temp;
  257.                temp=y1;y1=y2;y2=temp;
  258.                 }
  259.            for(i=y1;i<=y2;i++){
  260.                Dot(x1,i,flag);
  261.            }
  262.         }else{
  263.             if(x1>x2){
  264.                temp=x1;x1=x2;x2=temp;
  265.                temp=y1;y1=y2;y2=temp;
  266.               }
  267.          k=(float)(y2-y1)/(float)(x2-x1);
  268.          for(i=0;i<x2-x1;i++){
  269.            Dot(x1+i,(unsigned char)(y1+k*i),flag);
  270.          }
  271.         }
  272. }          

  273. /*-------------------------------------------------------------*/
  274. void Rect(unsigned char x1,unsigned char y1,unsigned char x2,unsigned char y2,bit flag){
  275.     Line(x1,y1,x2,y1,flag);
  276.         Line(x2,y1,x2,y2,flag);
  277.         Line(x2,y2,x1,y2,flag);
  278.         Line(x1,y2,x1,y1,flag);
  279. }

  280. /*-------------------------------------------------------------*/
  281. //16*16
  282. //x行  0~7      y列 0~127
  283. //flag 0:汉字反白显示
  284. //upline: 0表示有上划线
  285. //underline: 0表示有下划线
  286. void hz_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code * hz,bit flag,bit upline,bit underline){
  287.     unsigned char i,j;
  288.         for (j=0;j<n;j++){
  289.             //显示上半个汉字
  290.             for(i=0;i<16;i++){
  291.                     //点的位置是在左还是右
  292.                         if(y+16*j+i<64){
  293.                             LCDSel(1);
  294.                                 WriteCmdToLCD12864(LCD_ON);
  295.                                 SetX(x);
  296.                                 SetZ(0);
  297.                                 SetY(y+16*j+i);
  298.                                 if(upline){
  299.                                         if(flag)
  300.                                             WriteDatToLCD12864(hz[32*j+i]);
  301.                                     else
  302.                                             WriteDatToLCD12864(~hz[32*j+i]);
  303.                                 }
  304.                                 else{
  305.                                         if(flag)
  306.                                             WriteDatToLCD12864(hz[32*j+i]|UPLINE);
  307.                                     else
  308.                                             WriteDatToLCD12864(~hz[32*j+i]|UPLINE);       
  309.                                 }
  310.                         }
  311.                         else if(y+16*j+i<128){
  312.                             LCDSel(2);
  313.                                 WriteCmdToLCD12864(LCD_ON);
  314.                                 SetX(x);
  315.                                 SetZ(0);
  316.                                 SetY(y+16*j+i-64);
  317.                                 if(upline){
  318.                                         if(flag)
  319.                                             WriteDatToLCD12864(hz[32*j+i]);
  320.                                     else
  321.                                             WriteDatToLCD12864(~hz[32*j+i]);
  322.                                 }
  323.                                 else{
  324.                                         if(flag)
  325.                                             WriteDatToLCD12864(hz[32*j+i]|UPLINE);
  326.                                     else
  327.                                             WriteDatToLCD12864(~hz[32*j+i]|UPLINE);       
  328.                                 }
  329.                         }
  330.                 }
  331.                 //显示下半个汉字
  332.                 for(i=16;i<32;i++){
  333.                     //先判断点是在左还是在右
  334.                         if(y+16*j+i-16<64){
  335.                                 if(x+1<8){               //最后一行显示上半个字
  336.                                 LCDSel(1);
  337.                                     WriteCmdToLCD12864(LCD_ON);
  338.                                     SetX(x+1);
  339.                                     SetZ(0);
  340.                                     SetY(y+16*j+i-16);
  341.                                 if(underline){
  342.                                         if(flag)
  343.                                             WriteDatToLCD12864(hz[32*j+i]);
  344.                                     else
  345.                                             WriteDatToLCD12864(~hz[32*j+i]);
  346.                                 }
  347.                                 else{
  348.                                         if(flag)
  349.                                             WriteDatToLCD12864(hz[32*j+i]|UNDERLINE);
  350.                                     else
  351.                                             WriteDatToLCD12864(~hz[32*j+i]|UNDERLINE);       
  352.                                 }
  353.                                 }
  354.                         }else if(y+16*j+i-16<127){
  355.                             if(x+1<8){               //最后一行
  356.                                 LCDSel(2);
  357.                                     WriteCmdToLCD12864(LCD_ON);
  358.                                     SetX(x+1);
  359.                                     SetZ(0);
  360.                                     SetY(y+16*j+i-16-64);
  361.                                 if(underline){
  362.                                         if(flag)
  363.                                             WriteDatToLCD12864(hz[32*j+i]);
  364.                                     else
  365.                                             WriteDatToLCD12864(~hz[32*j+i]);
  366.                                 }
  367.                                 else{
  368.                                         if(flag)
  369.                                             WriteDatToLCD12864(hz[32*j+i]|UNDERLINE);
  370.                                     else
  371.                                             WriteDatToLCD12864(~hz[32*j+i]|UNDERLINE);       
  372.                                 }
  373.                                 }
  374.                         }
  375.                 }
  376.         }
  377. }                                  
  378. /*-------------------------------------------------------------*/
  379. //x:行0~7
  380. //y:列0~127
  381. //asc: 指向标准交换码
  382. //string: 指向要显示的字符串
  383. //flag:  0 反白显示
  384. //online: 0 带上划线
  385. //underline : 0带下划线
  386. //n: the number of the string
  387. void en_disp(unsigned char x,unsigned char y,unsigned char n,unsigned char code *asc,unsigned char *string,bit flag,bit online,bit underline){
  388.     unsigned char i,j,loc;
  389.         for (j=0;j<n;j++){
  390.             loc=string[j]-0x20;            //确定要显示的字符在asc表中的位置(乘上16)
  391.             //显示上半个字母
  392.             for(i=0;i<8;i++){
  393.                     //点的位置是在左还是右
  394.                         if(y+8*j+i<64){
  395.                             LCDSel(1);
  396.                                 WriteCmdToLCD12864(LCD_ON);
  397.                                 SetX(x);
  398.                                 SetZ(0);
  399.                                 SetY(y+8*j+i);
  400.                                 if(online){
  401.                                         if(flag)
  402.                                             WriteDatToLCD12864(asc[16*loc+i]);
  403.                                     else
  404.                                             WriteDatToLCD12864(~asc[16*loc+i]);
  405.                                 }
  406.                                 else{
  407.                                         if(flag)
  408.                                             WriteDatToLCD12864(asc[16*loc+i]|UPLINE);
  409.                                     else
  410.                                             WriteDatToLCD12864(~asc[16*loc+i]|UPLINE);
  411.                                 }
  412.                         }
  413.                         else if(y+8*j+i<128){
  414.                             LCDSel(2);
  415.                                 WriteCmdToLCD12864(LCD_ON);
  416.                                 SetX(x);
  417.                                 SetZ(0);
  418.                                 SetY(y+8*j+i-64);
  419.                                 if(online){
  420.                                         if(flag)
  421.                                             WriteDatToLCD12864(asc[16*loc+i]);
  422.                                     else
  423.                                             WriteDatToLCD12864(~asc[16*loc+i]);
  424.                                 }
  425.                                 else {
  426.                                           if(flag)
  427.                                             WriteDatToLCD12864(asc[16*loc+i]|UPLINE);
  428.                                     else
  429.                                             WriteDatToLCD12864(~asc[16*loc+i]|UPLINE);
  430.                                 }
  431.                         }
  432.                 }
  433.                 //显示下半个字母
  434.                 for(i=8;i<16;i++){
  435.                     //先判断点是在左还是在右
  436.                         if(y+8*j+i-8<64){  
  437.                             if(x+1<8){        //最后一行
  438.                                LCDSel(1);
  439.                                    WriteCmdToLCD12864(LCD_ON);
  440.                                    SetX(x+1);
  441.                                    SetZ(0);
  442.                                    SetY(y+8*j+i-8);
  443.                                          if(underline){
  444.                                                 if(flag)
  445.                                                     WriteDatToLCD12864(asc[16*loc+i]);
  446.                                             else
  447.                                                     WriteDatToLCD12864(~asc[16*loc+i]);
  448.                                         }
  449.                                         else{
  450.                                                   if(flag)
  451.                                                     WriteDatToLCD12864(asc[16*loc+i]|UNDERLINE);
  452.                                             else
  453.                                                     WriteDatToLCD12864(~asc[16*loc+i]|UNDERLINE);
  454.                                         }

  455.                                 }
  456.                         }
  457.                         else if(y+8*j+i-8<128){
  458.                             if(x+1<8){               //最后一行
  459.                                 LCDSel(2);
  460.                                     WriteCmdToLCD12864(LCD_ON);
  461.                                     SetX(x+1);
  462.                                     SetZ(0);
  463.                                     SetY(y+8*j+i-8-64);
  464.                                         if(underline){
  465.                                                 if(flag)
  466.                                                     WriteDatToLCD12864(asc[16*loc+i]);
  467.                                             else
  468.                                                     WriteDatToLCD12864(~asc[16*loc+i]);
  469.                                         }
  470.                                         else{
  471.                                                   if(flag)
  472.                                                     WriteDatToLCD12864(asc[16*loc+i]|UNDERLINE);
  473.                                             else
  474.                                                     WriteDatToLCD12864(~asc[16*loc+i]|UNDERLINE);
  475.                                         }
  476.                                 }
  477.                         }
  478.                 }
  479.         }  
  480. }


  481. //亦木明 2008.2.23
  482. //显示一个16X32的字符
  483. void Show16X32(unsigned char line,unsigned char column, unsigned char code *pt,bit flag){
  484.         unsigned char i,column_temp1,column_temp2,column_temp3;
  485.         column_temp1=column;
  486.         column_temp2=column;
  487.         column_temp3=column;
  488.         LCDSel(1);                         //选通左屏
  489.         SetY(column);                      //设置起始列
  490.         SetX(line);                          //设置行
  491.         for(i=0;i<16;i++){
  492.                 if(column>=64){                      //如果列>=64,则选通右屏
  493.                         LCDSel(2);
  494.                         column=column%64;               //设置右屏起始列
  495.                         SetY(column);
  496.                         SetX(line);
  497.                 }
  498.                 if(flag)       
  499.                 WriteDatToLCD12864(*pt);                     //写数据
  500.                 else
  501.                 WriteDatToLCD12864(~(*pt));
  502.                 pt++;
  503.                 column++;
  504.         }
  505.         LCDSel(1);
  506.         SetX(line+1);
  507.         column=column_temp1;
  508.         SetY(column);
  509.         for(i=0;i<16;i++){
  510.                 if(column>=64){
  511.                         LCDSel(2);
  512.                         column=column%64;
  513.                         SetY(column);
  514.                         SetX(line+1);
  515.                 }       
  516.                 if(flag)       
  517.                 WriteDatToLCD12864(*pt);                     //写数据
  518.                 else
  519.                 WriteDatToLCD12864(~(*pt));
  520.                 pt++;
  521.                 column++;
  522.         }
  523.         LCDSel(1);
  524.         SetX(line+2);
  525.         column=column_temp2;
  526.         SetY(column);
  527.         for(i=0;i<16;i++){
  528.                 if(column>=64){
  529.                         LCDSel(2);
  530.                         column=column%64;
  531.                         SetY(column);
  532.                         SetX(line+2);
  533.                 }       
  534.                 if(flag)       
  535.                 WriteDatToLCD12864(*pt);                     //写数据
  536.                 else
  537.                 WriteDatToLCD12864(~(*pt));
  538.                 pt++;
  539.                 column++;
  540.         }
  541.         LCDSel(1);
  542.         SetX(line+3);
  543.         column=column_temp3;
  544.         SetY(column);
  545.         for(i=0;i<16;i++){
  546.                 if(column>=64){
  547.                         LCDSel(2);
  548.                         column=column%64;
  549.                         SetY(column);
  550.                         SetX(line+3);
  551.                 }       
  552.                 if(flag)       
  553.                 WriteDatToLCD12864(*pt);                     //写数据
  554.                 else
  555.                 WriteDatToLCD12864(~(*pt));
  556.                 pt++;
  557.                 column++;
  558.         }
  559. }
  560. /*-------------------------------------------------------*/




  561. /*从第一列开始向下取8个点作为一个字节,然后从第二列开始向下取8个点作为第二个
  562. 字节...依此类推。如果最后不足8个点就补满8位.取模顺序是从低到高,即第一个点作为最
  563. 低位。如*-------取为00000001 */          

  564. unsigned char   code uMod[][32]=
  565. {  
  566. 0x40,0x20,0x10,0x0C,0xE3,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0x02,0x00,0x00,
  567. 0x04,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//年

  568. /*--  文字:  月  --*/
  569. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  570. 0x00,0x00,0x00,0x00,0x00,0xFF,0x11,0x11,0x11,0x11,0x11,0xFF,0x00,0x00,0x00,0x00,
  571. 0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x01,0x01,0x21,0x41,0x3F,0x00,0x00,0x00,0x00,

  572. /*--  文字:  日  --*/
  573. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  574. 0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,
  575. 0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00,

  576. /*--  文字:  时  --*/
  577. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  578. 0x00,0xFC,0x44,0x44,0xFC,0x20,0x24,0x24,0x24,0x3F,0x24,0xE4,0x24,0x24,0x20,0x00,
  579. 0x00,0x1F,0x08,0x08,0x1F,0x01,0x01,0x05,0x19,0x41,0x81,0x7F,0x01,0x01,0x01,0x00,

  580. /*--  文字:  分  --*/
  581. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  582. 0x80,0x40,0x20,0x98,0x87,0x82,0x80,0x80,0x83,0x84,0x98,0x30,0x60,0xC0,0x40,0x00,
  583. 0x00,0x80,0x40,0x20,0x10,0x0F,0x00,0x00,0x20,0x40,0x3F,0x00,0x00,0x00,0x00,0x00,

  584. /*--  文字:  秒  --*/
  585. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  586. 0x12,0x12,0xD2,0xFE,0x91,0x11,0xC0,0x38,0x10,0x00,0xFF,0x00,0x08,0x10,0x60,0x00,
  587. 0x04,0x03,0x00,0xFF,0x00,0x83,0x80,0x40,0x40,0x20,0x23,0x10,0x08,0x04,0x03,0x00,

  588. };
  589. unsigned char code ucLunar[][32]=
  590. {
  591. //"初"
  592. 0x10,0x10,0x91,0xD6,0x30,0x98,0x00,0x08, 0x08,0xF8,0x08,0x08,0x08,0xFC,0x08,0x00,
  593. 0x02,0x01,0x00,0xFF,0x01,0x82,0x40,0x20,0x18,0x07,0x40,0x80,0x40,0x3F,0x00,0x00,

  594. /*--  文字:  一  --*/
  595. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  596. 0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,
  597. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  598. /*--  文字:  二  --*/
  599. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  600. 0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00,
  601. 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00,

  602. /*--  文字:  三  --*/
  603. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  604. 0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,
  605. 0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

  606. /*--  文字:  四  --*/
  607. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  608. 0x00,0xFE,0x02,0x02,0x02,0xFE,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
  609. 0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x7F,0x00,0x00,

  610. /*--  文字:  五  --*/
  611. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  612. 0x00,0x02,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0xC2,0x82,0x02,0x00,0x00,0x00,
  613. 0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x30,0x20,0x00,

  614. /*--  文字:  六  --*/
  615. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  616. 0x10,0x10,0x10,0x10,0x10,0x91,0x12,0x1E,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x00,
  617. 0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x00,0x00,0x01,0x02,0x0C,0x78,0x30,0x00,0x00,

  618. /*--  文字:  七  --*/
  619. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  620. 0x00,0x40,0x40,0x40,0x40,0x40,0x40,0xFE,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
  621. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x38,0x00,0x00,

  622. /*--  文字:  八  --*/
  623. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  624. 0x00,0x00,0x00,0x00,0x80,0x7C,0x08,0x00,0x00,0x7E,0x84,0x00,0x00,0x00,0x00,0x00,
  625. 0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x18,0x30,0x10,0x00,

  626. /*--  文字:  九  --*/
  627. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  628. 0x00,0x10,0x10,0x10,0x10,0x90,0x7F,0x10,0x10,0x10,0xF8,0x10,0x00,0x00,0x00,0x00,
  629. 0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x78,0x20,0x00,

  630. /*--  文字:  十  --*/
  631. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  632. 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
  633. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  634. /*--  文字:  农  --*/         
  635. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  636. 0x00,0x20,0x18,0x08,0x88,0xE8,0x1F,0x6A,0x88,0x08,0x88,0xC8,0xA8,0x1C,0x08,0x00,
  637. 0x08,0x04,0x02,0x41,0xFF,0x40,0x20,0x10,0x01,0x02,0x0D,0x18,0x70,0x20,0x20,0x00,

  638. /*--  文字:  历  --*/
  639. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  640. 0x00,0x00,0xFE,0x02,0x22,0x22,0x22,0x22,0xFA,0x22,0x22,0x22,0xE2,0x02,0x02,0x00,
  641. 0x40,0x30,0x0F,0x00,0x40,0x20,0x18,0x06,0x01,0x00,0x20,0x60,0x3F,0x00,0x00,0x00,

  642. /*--  文字:  星  --*/
  643. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  644. 0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00,
  645. 0x00,0x48,0x46,0x41,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x49,0x41,0x40,0x00,

  646. /*--  文字:  期  --*/
  647. /*--  Times New Roman12;  此字体下对应的点阵为:宽x高=16x16   --*/
  648. 0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,
  649. 0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00,

  650. //"正"            15
  651. 0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0xC2,0x83,0x02,0x00,0x00,
  652. 0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00,

  653. //"冬",           16
  654. 0x00,0x00,0x20,0x10,0x08,0x17,0xA4,0x44,0xA4,0x94,0x0C,0x04,0x00,0x00,0x00,0x00,
  655. 0x04,0x04,0x02,0x02,0x01,0x25,0x24,0x48,0x48,0x80,0x01,0x01,0x02,0x06,0x02,0x00,

  656. //"腊",           17
  657. 0x00,0xFE,0x22,0x22,0xFF,0x42,0x48,0x48,0x7F,0x48,0x48,0x7F,0xC8,0x68,0x40,0x00,
  658. 0x40,0x3F,0x02,0x82,0xFF,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0xFF,0x01,0x00,0x00,

  659. //"℃",           18
  660. 0x00,0x06,0x09,0x09,0xE6,0xF0,0x18,0x08,0x08,0x08,0x18,0x30,0x78,0x00,0x00,0x00,
  661. 0x00,0x00,0x00,0x00,0x07,0x0F,0x18,0x30,0x20,0x20,0x20,0x10,0x08,0x00,0x00,0x00,

  662. //"廿",    19
  663. 0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x30,0x20,0x00,
  664. 0x00,0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00,0x00
  665. };

  666. unsigned char code SX[][32] =          // 数据表
  667. {

  668. //"猴",
  669.           0x22,0x14,0x08,0xF4,0x42,0x21,0xF8,0x17,
  670.       0xD2,0x92,0x92,0x92,0xDF,0x92,0x10,0x00,
  671.       0x04,0x42,0x81,0x7F,0x00,0x00,0xFF,0x85,
  672.       0x44,0x24,0x1F,0x24,0x44,0xC6,0x44,0x00,

  673. //"鸡",
  674.           0x08,0x28,0x48,0x88,0x68,0x18,0x00,0xFC,
  675.       0x06,0x15,0x44,0x84,0x7E,0x04,0x00,0x00,
  676.       0x10,0x08,0x06,0x01,0x02,0x14,0x10,0x13,
  677.       0x12,0x12,0x1A,0x52,0x82,0x7F,0x02,0x00,

  678. //"狗",
  679.           0x00,0x22,0x14,0x08,0xF4,0x03,0x20,0x98,
  680.       0x8F,0x88,0xC8,0x88,0x08,0xFC,0x08,0x00,
  681.       0x08,0x44,0x82,0x41,0x3F,0x00,0x00,0x1F,
  682.       0x08,0x08,0x4F,0x80,0x40,0x3F,0x00,0x00,

  683. //"猪",
  684.       0x40,0x22,0x14,0x08,0xF4,0x02,0x25,0xA4,
  685.       0x64,0x3F,0x34,0x2C,0xA4,0x32,0x20,0x00,
  686.       0x08,0x04,0x42,0x81,0x7F,0x02,0x01,0xFF,
  687.       0x49,0x49,0x49,0x49,0xFF,0x01,0x00,0x00,

  688. //"鼠",
  689.       0x00,0xBE,0x2A,0xAA,0x29,0x29,0xE0,0x22,
  690.       0xAA,0x2A,0x2A,0xAA,0x3F,0x02,0x00,0x00,
  691.       0x40,0x7F,0x20,0x24,0x09,0x40,0x7F,0x20,
  692.       0x24,0x09,0x00,0x1F,0x60,0x80,0xE0,0x00,

  693. //"牛",
  694.       0x00,0x40,0x30,0x0E,0x08,0x08,0x08,0xFF,
  695.       0x08,0x08,0x08,0x0C,0x08,0x80,0x00,0x00,
  696.       0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
  697.       0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,

  698. //"虎",
  699.       0x00,0x00,0xF8,0x48,0x48,0x48,0xF8,0x4F,
  700.       0x4A,0x2A,0x2B,0x0A,0xA8,0x18,0x00,0x00,
  701.       0x80,0x40,0x3F,0x80,0x40,0x3C,0x04,0x05,
  702.       0x05,0x7F,0x85,0x81,0x81,0xE0,0x00,0x00,

  703. //"兔",
  704.       0x20,0x10,0xF8,0x14,0x13,0x12,0x12,0xF2,
  705.       0x1A,0x16,0x12,0x10,0xF8,0x10,0x00,0x00,
  706.       0x00,0x80,0x83,0x41,0x21,0x19,0x07,0x01,
  707.       0x3F,0x41,0x45,0x59,0x43,0x40,0x70,0x00,

  708. //"龙",
  709.       0x10,0x10,0x10,0x10,0x10,0x90,0x7F,0x10,
  710.       0xF0,0x12,0x14,0x10,0xD0,0x18,0x10,0x00,
  711.       0x00,0x80,0x40,0x30,0x0C,0x23,0x20,0x10,
  712.       0x3F,0x44,0x42,0x41,0x40,0x40,0x78,0x00,

  713. //"蛇",
  714.       0x00,0xF0,0x10,0xFF,0x10,0xF0,0x20,0x18,
  715.       0xC8,0x09,0x0E,0x08,0x88,0x28,0x18,0x00,
  716.       0x20,0x67,0x22,0x1F,0x12,0x3B,0x00,0x00,
  717.       0x3F,0x44,0x42,0x41,0x41,0x40,0x70,0x00,

  718. //"马",
  719.       0x00,0x00,0x02,0x02,0xFA,0x02,0x02,0x02,
  720.       0x02,0x02,0xFF,0x02,0x00,0x80,0x00,0x00,
  721.       0x08,0x08,0x08,0x08,0x09,0x09,0x09,0x09,
  722.       0x09,0x09,0x4D,0x89,0x41,0x3F,0x01,0x00,

  723. //"羊",
  724.       0x00,0x08,0x88,0x88,0x89,0x8A,0x8C,0xF8,
  725.       0x8C,0x8A,0x89,0xC8,0x8C,0x08,0x00,0x00,
  726.       0x08,0x08,0x08,0x08,0x08,0x08,0x08,0xFF,
  727.       0x08,0x08,0x08,0x08,0x08,0x0C,0x08,0x00
  728. };

  729. unsigned char code TianGan[][32] =          // 数据表
  730. {
  731. //"庚",
  732.           0x00,0x00,0xFC,0x84,0xA4,0xA4,0xA4,0xA5,
  733.       0xFE,0xA4,0xA4,0xA4,0xF4,0xA6,0x84,0x00,
  734.       0x40,0x30,0x0F,0x80,0x82,0x42,0x22,0x1A,
  735.       0x07,0x1A,0x22,0x22,0x47,0xC0,0x40,0x00,

  736. //"辛",
  737.       0x40,0x40,0x44,0x44,0x4C,0x74,0x45,0xC6,
  738.       0x44,0x64,0x5C,0x46,0x44,0x60,0x40,0x00,
  739.       0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,
  740.       0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,

  741. //"壬",
  742.       0x00,0x00,0x04,0x04,0x04,0x04,0x04,0xFC,
  743.       0x04,0x02,0x02,0x03,0x02,0x80,0x00,0x00,
  744.       0x01,0x01,0x41,0x41,0x41,0x41,0x41,0x7F,
  745.       0x41,0x41,0x41,0x61,0x41,0x01,0x01,0x00,

  746. //"癸",
  747.       0x00,0x80,0x4A,0x32,0x92,0x8A,0x86,0x80,
  748.       0x87,0x98,0xA4,0x52,0x88,0x80,0x80,0x00,
  749.       0x01,0x80,0x84,0x44,0x44,0x24,0x14,0x0F,
  750.       0x14,0x14,0x24,0x66,0xC4,0x01,0x00,0x00,

  751. //"甲",
  752.       0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,
  753.       0x22,0x22,0x22,0x22,0xFF,0x02,0x00,0x00,
  754.       0x00,0x00,0x07,0x02,0x02,0x02,0x02,0xFF,
  755.       0x02,0x02,0x02,0x02,0x07,0x00,0x00,0x00,

  756. //"乙",
  757.       0x00,0x04,0x04,0x04,0x04,0x84,0x44,0x24,
  758.       0x14,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,
  759.       0x00,0x00,0x38,0x46,0x41,0x40,0x40,0x40,
  760.       0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00,

  761. //"丙",
  762.       0x04,0x04,0xC4,0x44,0x44,0x44,0x44,0xFC,
  763.       0x44,0x44,0x44,0x44,0xE4,0x46,0x04,0x00,
  764.       0x00,0x00,0xFF,0x00,0x10,0x08,0x04,0x03,
  765.       0x02,0x04,0x58,0x80,0x7F,0x00,0x00,0x00,

  766. //"丁",
  767.       0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,
  768.       0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,
  769.       0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,
  770.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  771. //"戊",
  772.       0x00,0x00,0xF8,0x08,0x08,0x08,0x08,0x08,
  773.       0x7F,0x88,0x0A,0x0C,0x08,0xC8,0x00,0x00,
  774.       0x40,0x30,0x0F,0x00,0x00,0x00,0x40,0x40,
  775.       0x20,0x13,0x1C,0x24,0x43,0x80,0xE0,0x00,

  776. //"已",
  777.       0x00,0x02,0xF2,0x42,0x42,0x42,0x42,0x42,
  778.       0x42,0x42,0x42,0xFF,0x02,0x00,0x00,0x00,
  779.       0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,
  780.       0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00
  781. };

  782. unsigned char code DiZhi[][32] =          // 数据表
  783. {
  784. //"申",
  785.       0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,
  786.       0x88,0x88,0x88,0x88,0xFC,0x08,0x00,0x00,
  787.       0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0xFF,
  788.       0x08,0x08,0x08,0x08,0x1F,0x00,0x00,0x00,

  789. //"酉",
  790.       0x02,0x02,0xF2,0x12,0x12,0xFE,0x12,0x12,
  791.       0x12,0xFE,0x12,0x12,0xFA,0x13,0x02,0x00,
  792.       0x00,0x00,0xFF,0x44,0x4A,0x49,0x48,0x48,
  793.       0x48,0x4D,0x49,0x41,0xFF,0x00,0x00,0x00,

  794. //"戌",
  795.       0x00,0x00,0xF8,0x08,0x08,0x88,0x08,0x08,
  796.       0x7F,0x88,0x0A,0x0C,0x08,0xC8,0x00,0x00,
  797.       0x40,0x30,0x0F,0x01,0x01,0x01,0x41,0x40,
  798.       0x20,0x13,0x1C,0x24,0x43,0x80,0xE0,0x00,

  799. //"亥",
  800.       0x08,0x08,0x08,0x08,0x88,0x48,0x29,0x1E,
  801.       0x88,0x48,0x68,0x08,0x08,0x0C,0x08,0x00,
  802.       0x00,0x80,0x90,0x51,0x49,0x25,0x23,0x11,
  803.       0x08,0x0C,0x12,0x23,0x40,0xC0,0x00,0x00,

  804. //"子",
  805.       0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,
  806.       0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,
  807.       0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,
  808.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  809. //"丑",
  810.       0x00,0x00,0x02,0x82,0x82,0x82,0xFE,0x82,
  811.       0x82,0x82,0x82,0xFF,0x02,0x00,0x00,0x00,
  812.       0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,
  813.       0x40,0x40,0x40,0x7F,0x40,0x60,0x40,0x00,

  814. //"寅",  
  815.       0x10,0x0C,0xA4,0xA4,0xA4,0xA4,0xA5,0xE6,
  816.       0xA4,0xA4,0xA4,0xB4,0xA4,0x14,0x0C,0x00,
  817.       0x00,0x80,0x4F,0x4A,0x2A,0x2A,0x0A,0x0F,
  818.       0x0A,0x2A,0x2A,0x4A,0x4F,0x80,0x00,0x00,

  819. //"卯",
  820.           0x00,0x00,0xFC,0x04,0x02,0x03,0xFA,0x00,
  821.       0x00,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,
  822.       0x00,0x40,0x47,0x24,0x22,0x12,0x0F,0x00,
  823.       0x00,0xFF,0x02,0x04,0x08,0x07,0x00,0x00,

  824. //"辰",
  825.       0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,
  826.       0x92,0x92,0x9A,0x93,0xC2,0x80,0x00,0x00,
  827.       0x40,0x30,0x0F,0x00,0x00,0xFF,0x40,0x23,
  828.       0x04,0x08,0x14,0x12,0x20,0x60,0x20,0x00,

  829. //"巳",
  830.       0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,
  831.       0x42,0x42,0x42,0x42,0xFF,0x02,0x00,0x00,
  832.       0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,
  833.       0x40,0x40,0x40,0x40,0x40,0x40,0x70,0x00,

  834. //"午",
  835.       0x00,0x40,0x20,0x18,0x07,0x04,0x04,0xFC,
  836.       0x04,0x04,0x04,0x06,0x04,0x80,0x00,0x00,
  837.       0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
  838.       0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,

  839. //"未",
  840.       0x80,0x88,0x88,0x88,0x88,0x88,0x88,0xFF,
  841.       0x88,0x88,0x88,0x88,0x8C,0xC8,0x80,0x00,
  842.       0x00,0x20,0x10,0x08,0x04,0x02,0x01,0xFF,
  843.       0x01,0x02,0x04,0x08,0x10,0x30,0x10,0x00
  844. };



  845. unsigned char code Asc[] =                    // ASCII
  846. {       
  847.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // - -
  848.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  849.         0x00,0x00,0x38,0xFC,0xFC,0x38,0x00,0x00,  // -!-
  850.         0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00,

  851.         0x00,0x0E,0x1E,0x00,0x00,0x1E,0x0E,0x00,  // -"-
  852.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  853.                                                                                           
  854.         0x20,0xF8,0xF8,0x20,0xF8,0xF8,0x20,0x00,  // -#-
  855.         0x02,0x0F,0x0F,0x02,0x0F,0x0F,0x02,0x00,

  856.         0x38,0x7C,0x44,0x47,0x47,0xCC,0x98,0x00,  // -$-
  857.         0x03,0x06,0x04,0x1C,0x1C,0x07,0x03,0x00,

  858.         0x30,0x30,0x00,0x80,0xC0,0x60,0x30,0x00,  // -%-
  859.         0x0C,0x06,0x03,0x01,0x00,0x0C,0x0C,0x00,

  860.         0x80,0xD8,0x7C,0xE4,0xBC,0xD8,0x40,0x00,  // -&-
  861.         0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,

  862.         0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,0x00,  // -'-
  863.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  864.         0x00,0x00,0xF0,0xF8,0x0C,0x04,0x00,0x00,  // -(-
  865.         0x00,0x00,0x03,0x07,0x0C,0x08,0x00,0x00,

  866.         0x00,0x00,0x04,0x0C,0xF8,0xF0,0x00,0x00,  // -)-
  867.         0x00,0x00,0x08,0x0C,0x07,0x03,0x00,0x00,

  868.         0x80,0xA0,0xE0,0xC0,0xC0,0xE0,0xA0,0x80,  // -*-
  869.         0x00,0x02,0x03,0x01,0x01,0x03,0x02,0x00,

  870.         0x00,0x80,0x80,0xE0,0xE0,0x80,0x80,0x00,  // -+-
  871.         0x00,0x00,0x00,0x03,0x03,0x00,0x00,0x00,

  872.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -,-
  873.         0x00,0x00,0x10,0x1E,0x0E,0x00,0x00,0x00,

  874.         0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,  // ---
  875.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  876.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -.-
  877.         0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,

  878.         0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x00,  // -/-
  879.         0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,

  880.         0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00,  // -0-
  881.         0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00,

  882.         0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,  // -1-
  883.         0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,

  884.         0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,  // -2-
  885.         0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,

  886.         0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,  // -3-
  887.         0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,

  888.         0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00,  // -4-
  889.         0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,

  890.         0x7C,0x7C,0x44,0x44,0xC4,0xC4,0x84,0x00,  // -5-
  891.         0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00,

  892.         0xF0,0xF8,0x4C,0x44,0x44,0xC0,0x80,0x00,  // -6-
  893.         0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,

  894.         0x0C,0x0C,0x04,0x84,0xC4,0x7C,0x3C,0x00,  // -7-
  895.         0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00,

  896.         0xB8,0xFC,0x44,0x44,0x44,0xFC,0xB8,0x00,  // -8-
  897.         0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,

  898.         0x38,0x7C,0x44,0x44,0x44,0xFC,0xF8,0x00,  // -9-
  899.         0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00,

  900.         0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,  // -:-
  901.         0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,

  902.         0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,  // -;-
  903.         0x00,0x00,0x08,0x0E,0x06,0x00,0x00,0x00,

  904.         0x00,0x80,0xC0,0x60,0x30,0x18,0x08,0x00,  // -<-
  905.         0x00,0x00,0x01,0x03,0x06,0x0C,0x08,0x00,

  906.         0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,  // -=-
  907.         0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,

  908.         0x00,0x08,0x18,0x30,0x60,0xC0,0x80,0x00,  // ->-
  909.         0x00,0x08,0x0C,0x06,0x03,0x01,0x00,0x00,

  910.         0x18,0x1C,0x04,0xC4,0xE4,0x3C,0x18,0x00,  // -?-
  911.         0x00,0x00,0x00,0x0D,0x0D,0x00,0x00,0x00,

  912.         0xF0,0xF8,0x08,0xC8,0xC8,0xF8,0xF0,0x00,  // -@-
  913.         0x07,0x0F,0x08,0x0B,0x0B,0x0B,0x01,0x00,

  914.         0xE0,0xF0,0x98,0x8C,0x98,0xF0,0xE0,0x00,  // -A-
  915.         0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,

  916.         0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00,  // -B-
  917.         0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00,

  918.         0xF0,0xF8,0x0C,0x04,0x04,0x0C,0x18,0x00,  // -C-
  919.         0x03,0x07,0x0C,0x08,0x08,0x0C,0x06,0x00,

  920.         0x04,0xFC,0xFC,0x04,0x0C,0xF8,0xF0,0x00,  // -D-
  921.         0x08,0x0F,0x0F,0x08,0x0C,0x07,0x03,0x00,

  922.         0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,  // -E-
  923.         0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00,

  924.         0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,  // -F-
  925.         0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,

  926.         0xF0,0xF8,0x0C,0x84,0x84,0x8C,0x98,0x00,  // -G-
  927.         0x03,0x07,0x0C,0x08,0x08,0x07,0x0F,0x00,

  928.         0xFC,0xFC,0x40,0x40,0x40,0xFC,0xFC,0x00,  // -H-
  929.         0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,

  930.         0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00,  // -I-
  931.         0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,

  932.         0x00,0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,  // -J-
  933.         0x07,0x0F,0x08,0x08,0x0F,0x07,0x00,0x00,

  934.         0x04,0xFC,0xFC,0xC0,0xF0,0x3C,0x0C,0x00,  // -K-
  935.         0x08,0x0F,0x0F,0x00,0x01,0x0F,0x0E,0x00,

  936.         0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,  // -L-
  937.         0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00,

  938.         0xFC,0xFC,0x38,0x70,0x38,0xFC,0xFC,0x00,  // -M-
  939.         0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,

  940.         0xFC,0xFC,0x38,0x70,0xE0,0xFC,0xFC,0x00,  // -N-
  941.         0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,

  942.         0xF0,0xF8,0x0C,0x04,0x0C,0xF8,0xF0,0x00,  // -O-
  943.         0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00,

  944.         0x04,0xFC,0xFC,0x44,0x44,0x7C,0x38,0x00,  // -P-
  945.         0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,

  946.         0xF8,0xFC,0x04,0x04,0x04,0xFC,0xF8,0x00,  // -Q-
  947.         0x07,0x0F,0x08,0x0E,0x3C,0x3F,0x27,0x00,

  948.         0x04,0xFC,0xFC,0x44,0xC4,0xFC,0x38,0x00,  // -R-
  949.         0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,

  950.         0x18,0x3C,0x64,0x44,0xC4,0x9C,0x18,0x00,  // -S-
  951.         0x06,0x0E,0x08,0x08,0x08,0x0F,0x07,0x00,

  952.         0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00,  // -T-
  953.         0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,

  954.         0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,  // -U-
  955.         0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,

  956.         0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,  // -V-
  957.         0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00,

  958.         0xFC,0xFC,0x00,0x80,0x00,0xFC,0xFC,0x00,  // -W-
  959.         0x03,0x0F,0x0E,0x03,0x0E,0x0F,0x03,0x00,

  960.         0x0C,0x3C,0xF0,0xC0,0xF0,0x3C,0x0C,0x00,  // -X-
  961.         0x0C,0x0F,0x03,0x00,0x03,0x0F,0x0C,0x00,

  962.         0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00,  // -Y-
  963.         0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,

  964.         0x1C,0x0C,0x84,0xC4,0x64,0x3C,0x1C,0x00,  // -Z-
  965.         0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0E,0x00,

  966.         0x00,0x00,0xFC,0xFC,0x04,0x04,0x00,0x00,  // -[-
  967.         0x00,0x00,0x0F,0x0F,0x08,0x08,0x00,0x00,

  968.         0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00,  // -\-
  969.         0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x00,

  970.         0x00,0x00,0x04,0x04,0xFC,0xFC,0x00,0x00,  // -]-
  971.         0x00,0x00,0x08,0x08,0x0F,0x0F,0x00,0x00,

  972.         0x08,0x0C,0x06,0x03,0x06,0x0C,0x08,0x00,  // -^-
  973.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  974.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -_-
  975.         0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,

  976.         0x00,0x00,0x03,0x07,0x04,0x00,0x00,0x00,  // -`-
  977.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  978.         0x00,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,  // -a-
  979.         0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,

  980.         0x04,0xFC,0xFC,0x20,0x60,0xC0,0x80,0x00,  // -b-
  981.         0x08,0x0F,0x07,0x08,0x08,0x0F,0x07,0x00,

  982.         0xC0,0xE0,0x20,0x20,0x20,0x60,0x40,0x00,  // -c-
  983.         0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00,

  984.         0x80,0xC0,0x60,0x24,0xFC,0xFC,0x00,0x00,  // -d-
  985.         0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,

  986.         0xC0,0xE0,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,  // -e-
  987.         0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00,

  988.         0x40,0xF8,0xFC,0x44,0x0C,0x18,0x00,0x00,  // -f-
  989.         0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,

  990.         0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00,  // -g-
  991.         0x27,0x6F,0x48,0x48,0x7F,0x3F,0x00,0x00,

  992.         0x04,0xFC,0xFC,0x40,0x20,0xE0,0xC0,0x00,  // -h-
  993.         0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,

  994.         0x00,0x00,0x20,0xEC,0xEC,0x00,0x00,0x00,  // -i-
  995.         0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,

  996.         0x00,0x00,0x00,0x00,0x20,0xEC,0xEC,0x00,  // -j-
  997.         0x00,0x30,0x70,0x40,0x40,0x7F,0x3F,0x00,

  998.         0x04,0xFC,0xFC,0x80,0xC0,0x60,0x20,0x00,  // -k-
  999.         0x08,0x0F,0x0F,0x01,0x03,0x0E,0x0C,0x00,

  1000.         0x00,0x00,0x04,0xFC,0xFC,0x00,0x00,0x00,  // -l-
  1001.         0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,

  1002.         0xE0,0xE0,0x60,0xC0,0x60,0xE0,0xC0,0x00,  // -m-
  1003.         0x0F,0x0F,0x00,0x0F,0x00,0x0F,0x0F,0x00,

  1004.         0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00,  // -n-
  1005.         0x00,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,

  1006.         0xC0,0xE0,0x20,0x20,0x20,0xE0,0xC0,0x00,  // -o-
  1007.         0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00,

  1008.         0x20,0xE0,0xC0,0x20,0x20,0xE0,0xC0,0x00,  // -p-
  1009.         0x40,0x7F,0x7F,0x48,0x08,0x0F,0x07,0x00,

  1010.         0xC0,0xE0,0x20,0x20,0xC0,0xE0,0x20,0x00,  // -q-
  1011.         0x07,0x0F,0x08,0x48,0x7F,0x7F,0x40,0x00,

  1012.         0x20,0xE0,0xC0,0x60,0x20,0x60,0xC0,0x00,  // -r-
  1013.         0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,

  1014.         0x40,0xE0,0xA0,0x20,0x20,0x60,0x40,0x00,  // -s-
  1015.         0x04,0x0C,0x09,0x09,0x0B,0x0E,0x04,0x00,

  1016.         0x20,0x20,0xF8,0xFC,0x20,0x20,0x00,0x00,  // -t-
  1017.         0x00,0x00,0x07,0x0F,0x08,0x0C,0x04,0x00,

  1018.         0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0x00,  // -u-
  1019.         0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,

  1020.         0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,  // -v-
  1021.         0x00,0x03,0x07,0x0C,0x0C,0x07,0x03,0x00,

  1022.         0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,  // -w-
  1023.         0x07,0x0F,0x0C,0x07,0x0C,0x0F,0x07,0x00,

  1024.         0x20,0x60,0xC0,0x80,0xC0,0x60,0x20,0x00,  // -x-
  1025.         0x08,0x0C,0x07,0x03,0x07,0x0C,0x08,0x00,

  1026.         0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,  // -y-
  1027.         0x47,0x4F,0x48,0x48,0x68,0x3F,0x1F,0x00,

  1028.         0x60,0x60,0x20,0xA0,0xE0,0x60,0x20,0x00,  // -z-
  1029.         0x0C,0x0E,0x0B,0x09,0x08,0x0C,0x0C,0x00,

  1030.         0x00,0x40,0x40,0xF8,0xBC,0x04,0x04,0x00,  // -{-
  1031.         0x00,0x00,0x00,0x07,0x0F,0x08,0x08,0x00,

  1032.         0x00,0x00,0x00,0xBC,0xBC,0x00,0x00,0x00,  // -|-
  1033.         0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,

  1034.         0x00,0x04,0x04,0xBC,0xF8,0x40,0x40,0x00,  // -}-
  1035.         0x00,0x08,0x08,0x0F,0x07,0x00,0x00,0x00,

  1036.         0x08,0x0C,0x04,0x0C,0x08,0x0C,0x04,0x00,  // -~-
  1037.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  1038.         0x80,0xC0,0x60,0x30,0x60,0xC0,0x80,0x00,  // --
  1039.         0x07,0x07,0x04,0x04,0x04,0x07,0x07,0x00,

  1040. };
  1041. /*--------------------------------32X16-----------------------------------------*/
  1042. unsigned char code ucNum3216[][64]=
  1043. {0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,
  1044. 0x00,0xF0,0xFE,0xFF,0x0F,0x01,0x00,0x00,0x00,0x00,0x01,0x0F,0xFF,0xFE,0xF0,0x00,
  1045. 0x00,0x1F,0x7F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x1F,0x00,
  1046. 0x00,0x00,0x00,0x01,0x03,0x07,0x06,0x06,0x06,0x06,0x07,0x03,0x01,0x00,0x00,0x00,/*"0",0*/

  1047. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
  1048. 0x00,0x00,0x00,0x0C,0x0C,0x0C,0x0E,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  1049. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  1050. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,/*"1",1*/

  1051. 0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,
  1052. 0x00,0x00,0x00,0x3C,0x3F,0x3F,0x03,0x00,0x00,0x00,0xC1,0xFF,0xFF,0x7E,0x00,0x00,
  1053. 0x00,0x00,0x00,0xC0,0xE0,0xF0,0x78,0x1C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x00,
  1054. 0x00,0x00,0x07,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00,/*"2",2*/

  1055. 0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,
  1056. 0x00,0x00,0x0C,0x0F,0x0F,0x03,0x00,0x80,0x80,0xC1,0xFF,0x7F,0x3E,0x00,0x00,0x00,
  1057. 0x00,0x70,0xF0,0xF0,0x80,0x00,0x00,0x01,0x01,0x03,0x87,0xFF,0xFE,0xFC,0x00,0x00,
  1058. 0x00,0x00,0x01,0x03,0x03,0x07,0x06,0x06,0x06,0x06,0x03,0x03,0x01,0x00,0x00,0x00,/*"3",3*/

  1059. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0x00,0x00,0x00,0x00,
  1060. 0x00,0x00,0x00,0x80,0xE0,0xF0,0x3C,0x0E,0x07,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
  1061. 0x00,0x1C,0x1E,0x1F,0x19,0x18,0x18,0x18,0x18,0xFF,0xFF,0xFF,0x18,0x18,0x18,0x00,
  1062. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x07,0x00,0x00,0x00,0x00,/*"4",4*/

  1063. 0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,0x00,
  1064. 0x00,0x00,0xF8,0xFF,0xCF,0xC0,0x60,0x60,0x60,0xE0,0xE0,0xC0,0x80,0x00,0x00,0x00,
  1065. 0x00,0xE0,0xE1,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x7E,0x00,0x00,
  1066. 0x00,0x00,0x03,0x07,0x07,0x0E,0x0C,0x0C,0x0C,0x0E,0x07,0x07,0x01,0x00,0x00,0x00,/*"5",5*/

  1067. 0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,
  1068. 0x00,0x00,0xF0,0xFC,0xFF,0x8F,0xC1,0x60,0x60,0x60,0xE0,0xE1,0xC7,0x87,0x06,0x00,
  1069. 0x00,0x00,0x3F,0xFF,0xFF,0x81,0x00,0x00,0x00,0x00,0x00,0x81,0xFF,0xFF,0x7E,0x00,
  1070. 0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x06,0x06,0x06,0x07,0x07,0x03,0x01,0x00,0x00,/*"6",6*/

  1071. 0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x00,0x00,
  1072. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFE,0xFF,0x1F,0x03,0x00,0x00,
  1073. 0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF8,0xFF,0x3F,0x07,0x00,0x00,0x00,0x00,0x00,
  1074. 0x00,0x00,0x00,0x00,0x00,0x06,0x07,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"7",7*/

  1075. 0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,
  1076. 0x00,0x00,0x3E,0x7F,0xFF,0xC1,0x80,0x80,0x80,0xC1,0xFF,0x7F,0x3E,0x00,0x00,0x00,
  1077. 0x00,0xF8,0xFE,0xFE,0x87,0x03,0x01,0x01,0x01,0x03,0x87,0xFE,0xFE,0xF8,0x00,0x00,
  1078. 0x00,0x00,0x01,0x03,0x03,0x07,0x06,0x06,0x06,0x07,0x03,0x03,0x01,0x00,0x00,0x00,/*"8",8*/

  1079. 0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,
  1080. 0x00,0x00,0xFC,0xFF,0xFF,0x83,0x01,0x00,0x00,0x00,0x01,0x83,0xFF,0xFE,0xF8,0x00,
  1081. 0x00,0x00,0xC0,0xC1,0xC3,0x07,0x06,0x06,0x06,0x06,0x83,0xE1,0xFF,0x7F,0x1F,0x00,
  1082. 0x00,0x00,0x00,0x01,0x03,0x07,0x06,0x06,0x06,0x07,0x03,0x03,0x01,0x00,0x00,0x00,/*"9",9*/

  1083. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1084. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1085. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1086. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};


  1087. #ifndef _COLINLUAN_DS1302_H_
  1088. #define _COLINLUAN_DS1302_H_
  1089. #define uchar unsigned char

  1090. typedef struct systime
  1091. {
  1092.         uchar         cYear;
  1093.         uchar        cMon;
  1094.         uchar        cDay;
  1095.         uchar        cHour;
  1096.         uchar        cMin;
  1097.         uchar        cSec;
  1098.         uchar        cWeek;
  1099. }SYSTIME;

  1100. extern void DS1302_Write(uchar ucData);
  1101. extern uchar DS1302_Read();
  1102. extern void DS1302_Init();
  1103. extern uchar WDS1302(uchar ucAddr,uchar ucDar);
  1104. extern uchar RDS1302(uchar ucAddr);
  1105. extern void  SetTime(SYSTIME sys);
  1106. extern void  GetTime(SYSTIME *sys);

  1107. #endif

  1108. #ifndef _COLINLUAN_LUNAR_H_
  1109. #define _COLINLUAN_LUNAR_H_
  1110. #define uchar unsigned char
  1111. #define uint unsigned int

  1112. typedef struct spdate
  1113. {
  1114.         char         cYear;
  1115.         char        cMon;
  1116.         char        cDay;
  1117. }SPDATE;

  1118. extern SPDATE GetSpringDay(uchar GreYear,uchar GreMon,uchar GreDay);                  //获得农历日期
  1119. extern bit YearFlag(uchar cYear);                                                                                         //判断平年,闰年
  1120. extern uchar GetWeekDay(uchar cYear,uchar cMon,uchar cDay);                                         //判断当前天是星期几

  1121. #endif

  1122. #define int8 unsigned char
  1123. #define  KEY1     0
  1124. #define  KEY2     1
  1125. #define  KEY3     2
  1126. #define  KEY4     3

  1127. //键值定义
  1128. #define   KEY_NONE               0x00
  1129. #define   KEY_ONOFF               0x10
  1130. #define   KEY_ACCU               0x20
  1131. #define   KEY_BUZZER              0x40     
  1132. #define   KEY_BACKLED              0x80     

  1133. #define   KEYCOUNT_DEF                 1                     //10ms*1=10ms  去抖时间

  1134. int8  keyvalue=KEY_NONE;
  1135. int8  key1count_dn =0,key1count_up =0;                //按键去抖计数器
  1136. int8  key2count_dn =0,key2count_up =0;
  1137. int8  key3count_dn =0,key3count_up =0;
  1138. int8  key4count_dn =0,key4count_up =0;

  1139. void keyinput(void){  
  1140.         int8  portb_temp;
  1141.     portb_temp=P3;
  1142.     if(!(portb_temp&0x10)){  //SET键按下处理
  1143.             if (key1count_up<KEYCOUNT_DEF) key1count_up= 0;        //清弹起计数器,保证弹起的脉宽必须大于2*KEYCOUNT_DEF
  1144.             key1count_dn++;
  1145.              if (key1count_dn==KEYCOUNT_DEF)         { keyvalue|=0x10;key1count_up= 0; }  
  1146.              if (key1count_dn> KEYCOUNT_DEF)         key1count_dn = KEYCOUNT_DEF;        //保持按下计数器
  1147.         }
  1148.         else{         //SET键弹起处理
  1149.                 if (key1count_dn<KEYCOUNT_DEF) key1count_dn=0; //清按下计数器,保证按下的脉宽必须大于2*KEYCOUNT_DEF
  1150.                 key1count_up++;
  1151.                  if (key1count_up==KEYCOUNT_DEF)         { keyvalue&=0xef;key1count_dn=0;}
  1152.              if (key1count_up>KEYCOUNT_DEF)                key1count_up = KEYCOUNT_DEF;       
  1153.         }   
  1154.     if(!(portb_temp&0x20)){  //INC键按下处理
  1155.             if (key2count_up<KEYCOUNT_DEF) key2count_up= 0;        //清弹起计数器,保证弹起的脉宽必须大于2*KEYCOUNT_DEF
  1156.             key2count_dn++;
  1157.              if (key2count_dn==KEYCOUNT_DEF)         { keyvalue|=0x20;key2count_up= 0; }  
  1158.              if (key2count_dn> KEYCOUNT_DEF)         key2count_dn = KEYCOUNT_DEF;        //保持按下计数器
  1159.         }
  1160.         else{         //INC键弹起处理
  1161.                 if (key2count_dn<KEYCOUNT_DEF) key2count_dn=0; //清按下计数器,保证按下的脉宽必须大于2*KEYCOUNT_DEF
  1162.                 key2count_up++;
  1163.                  if (key2count_up==KEYCOUNT_DEF)         { keyvalue&=0xdf;key2count_dn=0;}
  1164.              if (key2count_up>KEYCOUNT_DEF)                key2count_up = KEYCOUNT_DEF;       
  1165.         }      
  1166.      
  1167.     if(!(portb_temp&0x40)){  //DEC键按下处理
  1168.             if (key3count_up<KEYCOUNT_DEF) key3count_up= 0;        //清弹起计数器,保证弹起的脉宽必须大于2*KEYCOUNT_DEF
  1169.             key3count_dn++;
  1170.              if (key3count_dn==KEYCOUNT_DEF)         { keyvalue|=0x40; key3count_up= 0;}  
  1171.              if (key3count_dn> KEYCOUNT_DEF)         key3count_dn = KEYCOUNT_DEF;        //保持按下计数器
  1172.         }
  1173.         else{        //DEC键弹起处理
  1174.        
  1175.                 if (key3count_dn<KEYCOUNT_DEF) key3count_dn=0; //清按下计数器,保证按下的脉宽必须大于2*KEYCOUNT_DEF
  1176.                 key3count_up++;
  1177.                  if (key3count_up==KEYCOUNT_DEF)         { keyvalue&=0xbf;key3count_dn=0;}
  1178.              if (key3count_up>KEYCOUNT_DEF)                key3count_up = KEYCOUNT_DEF;       
  1179.         }      
  1180. }

  1181. uchar dispBuf[7];
  1182. uchar T0_Count=0,Tmp_Count=0;
  1183. bit T0_Flag,Tmp_Flag,Flash_Flag;

  1184. SYSTIME sys;                   //系统日期
  1185. SPDATE SpDat;                   //农历日期

  1186. bit Hour_Flag=TRUE,Min_Flag=TRUE,Sec_Flag=TRUE;           //设置时间标志
  1187. bit Year_Flag=TRUE,Mon_Flag=TRUE,Day_Flag=TRUE;

  1188. uchar State_Set=0;     //设置时、分、秒、日、月、年等状态

  1189. bit State_Flag=FALSE,Inc_Flag=FALSE,Dec_Flag=FALSE;        //三个按键是否按下的标志

  1190. uchar code Mon2[2][13]={0,31,28,31,30,31,30,31,31,30,31,30,31,
  1191.                                   0,31,29,31,30,31,30,31,31,30,31,30,31};

  1192. /*****************************LCD显示函数******************************
  1193. 入口参数:
  1194.                 cDat:                要显示的数
  1195.                 X:                        行数 0~7
  1196.                 Y:          列数 0~127
  1197.                 show_flag:  是否反白显示,0反白,1不反白
  1198.                 upline:         上划线, 0表示带上划线
  1199.                 underline:  下划线, 0表示带下划线
  1200. ***********************************************************************/
  1201. void LCD_ShowTime(char cDat,uchar X,uchar Y,bit show_flag,bit up,bit under){
  1202.         uchar s[2];
  1203.            s[0]=cDat/10+'0';
  1204.         s[1]=cDat%10+'0';
  1205.         en_disp(X,Y,2,Asc,s,show_flag,up,under);
  1206. }
  1207.                                                                                                                                   
  1208. void Show_YMD(){          //年、月、日、星期、显示函数
  1209.         uchar uiTempDat;
  1210.            uiTempDat=RDS1302(0x88|0x01);
  1211.         sys.cMon=((uiTempDat&0x1f)>>4)*10+(uiTempDat&0x0f);       
  1212.         LCD_ShowTime(sys.cMon,2,5,Mon_Flag,NoUpLine,NoUnderLine);       
  1213.         hz_disp(4,5,1,uMod[1],1,NoUpLine,NoUnderLine);                                //月
  1214.         Show16X32(2,27,ucNum3216[sys.cDay/10],Day_Flag);                        //日
  1215.         Show16X32(2,43,ucNum3216[sys.cDay%10],Day_Flag);                         
  1216.         hz_disp(6,8,2,ucLunar[13],1,UpLine,UnderLine);                                            
  1217.         if(sys.cWeek==7)
  1218.         hz_disp(6,40,1,uMod[2],1,UpLine,UnderLine);                                        //星期
  1219.         else
  1220.     hz_disp(6,40,1,ucLunar[sys.cWeek],1,UpLine,UnderLine);                //星期
  1221.     LCD_ShowTime(20,0,9,1,UpLine,UnderLine);
  1222.           LCD_ShowTime(sys.cYear,0,25,Year_Flag,UpLine,UnderLine);
  1223.     hz_disp(0,41,1,uMod[0],1,UpLine,UnderLine);                                        //年

  1224.         SpDat=GetSpringDay(sys.cYear,sys.cMon,sys.cDay);                        //获得农历
  1225.     if(SpDat.cMon==1)                                                                                           //显示农历月
  1226.           hz_disp(4,64,1,ucLunar[15],1,UpLine,NoUnderLine);                        //"正"
  1227.         else if(SpDat.cMon==11)
  1228.           hz_disp(4,64,1,ucLunar[16],1,UpLine,NoUnderLine);                        //"冬"
  1229.         else if(SpDat.cMon==12)
  1230.           hz_disp(4,64,1,ucLunar[17],1,UpLine,NoUnderLine);                        //"腊"
  1231.         else
  1232.           hz_disp(4,63,1,ucLunar[SpDat.cMon],1,UpLine,NoUnderLine); //"二"~"十"
  1233.          if(SpDat.cDay/10==1 && SpDat.cDay%10>0)                                        //显示"十" 例如"十四"而不是"一四"
  1234.          hz_disp(4,95,1,ucLunar[10],1,UpLine,NoUnderLine);
  1235.          else if(SpDat.cDay/10==2 && SpDat.cDay%10>0)               //显示"廿" 例如"廿三"而不是"二四"
  1236.          hz_disp(4,95,1,ucLunar[19],1,UpLine,NoUnderLine);
  1237.          else
  1238.          hz_disp(4,95,1,ucLunar[SpDat.cDay/10],1,UpLine,NoUnderLine);  //正常数字
  1239.         if(!(SpDat.cDay%10))                                                                        //"十"
  1240.          hz_disp(4,111,1,ucLunar[10],1,UpLine,NoUnderLine);
  1241.         else                                                                                                                //正常数字
  1242.          hz_disp(4,111,1,ucLunar[SpDat.cDay%10],1,UpLine,NoUnderLine);

  1243.          hz_disp(0,104,1,SX[(uint)(2000+SpDat.cYear)%12],1,UpLine,UnderLine);   //生肖
  1244.      
  1245.          hz_disp(2,95,1,TianGan[(uint)(2000+SpDat.cYear)%10],1,NoUpLine,NoUnderLine); //天干
  1246.          hz_disp(2,111,1,DiZhi[(uint)(2000+SpDat.cYear)%12],1,NoUpLine,NoUnderLine);  //地支
  1247.      
  1248.          }

  1249. void LCD_ShowWNL(){          //万年历显示函数
  1250.         LCD_ShowTime(sys.cSec,6,111,Sec_Flag,UpLine,UnderLine);                 //秒,每秒钟刷新
  1251.         if(!sys.cSec || State_Set)                                                                     //分,普通模式每分钟刷新
  1252.         LCD_ShowTime(sys.cMin,6,87,Min_Flag,UpLine,UnderLine);                 //    设置模式每次刷新
  1253.          
  1254.         if(!sys.cSec && !sys.cMin || State_Set)                                                 //时,普通模式每小时刷新
  1255.     LCD_ShowTime(sys.cHour,6,63,Hour_Flag,UpLine,UnderLine);     //    设置模式每次刷新
  1256.        
  1257.         if(!sys.cSec && !sys.cMin && !sys.cHour || State_Set ){      //公历农历的年、月、日、星期
  1258.                 Show_YMD();                                                                                                 //普通模式每天刷新
  1259.                 if(State_Set==7) State_Set=0;                                                         //设置模式每次刷新
  1260.         }       
  1261. }

  1262. void CAL_Init(){        //日期初始化函数
  1263.         sys.cYear=0x13;        //BCD码表示的日历时间值
  1264.         sys.cMon=0x06;
  1265.         sys.cDay=0x030;
  1266.         sys.cHour=0x23;
  1267.         sys.cMin=0x59;
  1268.         sys.cSec=0x55;
  1269.         sys.cWeek=GetWeekDay(sys.cYear,sys.cMon,sys.cDay);
  1270. }

  1271. void SFR_Init(){                 //定时器1初始化函数
  1272.         Flash_Flag=FALSE;
  1273.         TMOD=0x11;
  1274.         ET1=1;
  1275.         TH1= (-10000)/256;
  1276.         TL1= (-10000)%256;
  1277.         EA=1;
  1278. }

  1279. void GUI_Init(){         //LCD图形初始化函数
  1280.          LCD12864_init();
  1281.          ClearLCD();
  1282.          Rect(0,0,127,63,1);   //描绘框架
  1283.          Line(62,0,62,62,1);
  1284.          Line(0,48,127,48,1);
  1285.          Line(0,15,127,15,1);
  1286.          Line(24,15,24,48,1);
  1287.          Line(63,32,128,32,1);

  1288.          SetTime(sys);                                   //设置时间
  1289.          GetTime(&sys);                                   //获得时间
  1290.          
  1291.          Show_YMD();
  1292.          LCD_ShowTime(sys.cSec,6,111,Sec_Flag,UpLine,UnderLine);
  1293.          en_disp(6,103,1,Asc,":",1,UpLine,UnderLine);
  1294.          LCD_ShowTime(sys.cMin,6,87,Min_Flag,UpLine,UnderLine);
  1295.          en_disp(6,79,1,Asc,":",1,UpLine,UnderLine);         
  1296.      LCD_ShowTime(sys.cHour,6,63,Hour_Flag,UpLine,UnderLine);

  1297.          hz_disp(2,64,1,ucLunar[11],1,NoUpLine,NoUnderLine);           //"农"
  1298.          hz_disp(2,80,1,ucLunar[12],1,NoUpLine,NoUnderLine);           //"历"
  1299.          hz_disp(4,79,1,uMod[1],1,UpLine,NoUnderLine);                           //"月"
  1300. }

  1301. void DecToBCD(){   //二-十进制转换函数
  1302.         sys.cHour=(((sys.cHour)/10)<<4)+((sys.cHour)%10);
  1303.         sys.cMin=(((sys.cMin)/10)<<4)+((sys.cMin)%10);
  1304.         sys.cSec=((sys.cSec/10)<<4)+((sys.cSec)%10);
  1305.           sys.cYear=((sys.cYear/10)<<4)+((sys.cYear)%10);
  1306.         sys.cMon=((sys.cMon/10)<<4)+((sys.cMon)%10);
  1307.         sys.cDay=((sys.cDay/10)<<4)+((sys.cDay)%10);
  1308. }

  1309. void Time_Set(){   //时间设置函数
  1310.         if(State_Flag){                                        //设置键按下
  1311.                 State_Flag=FALSE;
  1312.                 State_Set++;
  1313.                 if(State_Set==8) State_Set=0;
  1314.         }

  1315.         Hour_Flag=TRUE;Min_Flag=TRUE;Sec_Flag=TRUE;
  1316.     Year_Flag=TRUE;Mon_Flag=TRUE;Day_Flag=TRUE;

  1317.         switch(State_Set){              //设置类型
  1318.                         case 0:                 //无设置
  1319.                                 break;
  1320.                         case 1:                                        //设置时
  1321.                                 Hour_Flag=FALSE;
  1322.                                 break;
  1323.                         case 2:                                           //设置分
  1324.                                 Min_Flag=FALSE;
  1325.                                 break;
  1326.                         case 3:                                         //设置秒
  1327.                                 Sec_Flag=FALSE;
  1328.                                 break;
  1329.                         case 4:                                        //设置天
  1330.                                  Day_Flag=FALSE;
  1331.                                 break;
  1332.                         case 5:
  1333.                                  Mon_Flag=FALSE;     //设置月
  1334.                                 break;
  1335.                         case 6:
  1336.                                  Year_Flag=FALSE;        //设置年
  1337.                             break;
  1338.                         case 7:                                        //无动作,设置此值为让"年"的反白消失。
  1339.                                 break;
  1340.           }          
  1341.           
  1342.         if(Inc_Flag){                                        //加键被按下
  1343.                 Inc_Flag=FALSE;
  1344.                 switch(State_Set)                {
  1345.                         case 0:
  1346.                                 break;
  1347.                         case 1:                                            //小时加
  1348.                                 sys.cHour++;
  1349.                                 (sys.cHour)%=24;
  1350.                                 break;
  1351.                         case 2:                                            //分加1
  1352.                                 sys.cMin++;
  1353.                                 sys.cMin%=60;
  1354.                                 break;
  1355.                         case 3:                                         //秒加1
  1356.                             sys.cSec++;
  1357.                                 sys.cSec%=60;
  1358.                                 break;
  1359.                         case 4:                                         //天加1
  1360.                                 (sys.cDay)=(sys.cDay%Mon2[YearFlag(sys.cYear)][sys.cMon])+1;                  
  1361.                                 break;
  1362.                         case 5:                                         //月加1
  1363.                                 sys.cMon=(sys.cMon%12)+1;
  1364.                                 break;
  1365.                         case 6:
  1366.                                 sys.cYear++;                 //年加1
  1367.                                 sys.cYear=sys.cYear%100;
  1368.                         break;
  1369.                   }       
  1370.                 DecToBCD();                                        //转为BCD数
  1371.                 sys.cWeek=GetWeekDay(sys.cYear,sys.cMon,sys.cDay);    //算出星期
  1372.                 SetTime(sys);                            //存入DS1302
  1373.         }

  1374.         if(Dec_Flag){                                         //减键按下
  1375.                 Dec_Flag=FALSE;
  1376.                 switch(State_Set){
  1377.                         case 0:
  1378.                                 break;
  1379.                         case 1:          
  1380.                                 sys.cHour=(sys.cHour+23)%24;  //时减1
  1381.                                 break;
  1382.                         case 2:                                                            //分减1
  1383.                                 sys.cMin=(sys.cMin+59)%60;
  1384.                                 break;
  1385.                         case 3:                                                          //秒减1
  1386.                                 sys.cSec=(sys.cSec+59)%60;
  1387.                                 break;
  1388.                         case 4:                                                          //天减1
  1389.                                 sys.cDay=((sys.cDay+Mon2[YearFlag(sys.cYear)][sys.cMon]-1)%Mon2[YearFlag(sys.cYear)][sys.cMon]);                  
  1390.                                 if(sys.cDay==0) sys.cDay=Mon2[YearFlag(sys.cYear)][sys.cMon];
  1391.                                 break;
  1392.                         case 5:                                                          //月减1
  1393.                                 sys.cMon=(sys.cMon+11)%12;
  1394.                                 if(sys.cMon==0) sys.cMon=12;
  1395.                                 break;
  1396.                         case 6:                                                          //年减1
  1397.                                 sys.cYear=(sys.cYear+99)%100;
  1398.                                 break;
  1399.                   }       
  1400.                 DecToBCD();
  1401.                 sys.cWeek=GetWeekDay(sys.cYear,sys.cMon,sys.cDay);              
  1402.                 SetTime(sys);       
  1403.         }
  1404. }

  1405. void  main(){        //主函数
  1406.          SFR_Init();
  1407.          CAL_Init();
  1408.          GUI_Init();
  1409.          TR1=1;
  1410.          while(1){
  1411.                 GetTime(&sys);                //获得时间
  1412.                 LCD_ShowWNL();                //显示万年历
  1413.                 Time_Set();         //时间设置
  1414.          }       
  1415. }

  1416. void timer1() interrupt  3 {  //定时器1中断服务函数
  1417.         TH1= (-10000)/256;
  1418.         TL1= (-10000)%256;
  1419.         keyinput();                                        //读取按键
  1420.         if (keyvalue&0x10){       
  1421.                 State_Flag=TRUE;
  1422.                 keyvalue &= 0xef;                //清键值,保证一直按下只执行一次按键动作。
  1423.         }       
  1424.         if (keyvalue&0x20 ){                //加
  1425.                 Inc_Flag=TRUE;
  1426.                 keyvalue &= 0xdf;                //清键值,保证一直按下只执行一次按键动作。
  1427.         }       
  1428.         if (keyvalue&0x40){                        //减
  1429.                 Dec_Flag=TRUE;
  1430.                 keyvalue &= 0xbf;                //清键值,保证一直按下只执行一次按键动作。
  1431.         }
  1432.        
  1433. }
复制代码

所有资料51hei提供下载:
带农历的万年历.rar (39.21 KB, 下载次数: 66)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:44037 发表于 2018-7-12 21:55 | 显示全部楼层
谢谢分享  下载试用 学习一下  很成功  程序如果模块编写  就更加清晰明了  感谢
回复

使用道具 举报

ID:367948 发表于 2018-7-31 09:14 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

ID:310680 发表于 2018-12-28 22:08 | 显示全部楼层
楼主,阳历转阴历的代码部分跟你一样,然后实际转化有问题,例如2018.12.28转为阴历出来月份日期十月二十一日,实际是十一月二十二才对,这个问题不知咋解决,代码走了一遭没找到问题所在。
回复

使用道具 举报

ID:711624 发表于 2020-3-20 11:12 | 显示全部楼层
参考一下
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表