单片机/MCU论坛
直播中

uy

7年用户 303经验值
私信 关注
[问答]

使用STC15驱动LCD12864显示的问题


LCD总是会显示一段时间后就不显示了,就是显示屏像处于熄屏状态,每次显示到熄灭的时间长度都不一样,我测试过,程序没有卡死,显示屏的供电也没有问题,请问是什

  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU International Limited ----------------------------------*/
  3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  7. /* --- Web: www.GXWMCU.com --------------------------------------------*/
  8. /* --- QQ:  800003751 -------------------------------------------------*/
  9. /* 如果要在程序中使用此代码,请在程序中注明使用了宏晶科技的资料及程序   */
  10. /*---------------------------------------------------------------------*/



  11. /*************        本程序功能说明        **************



  12. ******************************************/

  13. #define MAIN_Fosc                24000000UL        //定义主时钟  22118400UL
  14. #define LcmXPixel 128 //横向宽度
  15. #define LcmYPixel 64 //纵向高度
  16. #define MIN(A,B) ((A)<(B)?(A):(B))
  17. #define Uchar unsigned char
  18. #define Uint unsigned int
  19. #define        Timer0_Reload        (MAIN_Fosc / 1000)                //Timer 0 中断频率, 1000次/秒

  20. //DS1302地址定义
  21. #define ds1302_sec_add                        0x80                //秒数据地址
  22. #define ds1302_min_add                        0x82                //分数据地址
  23. #define ds1302_hr_add                        0x84                //时数据地址
  24. #define ds1302_date_add                        0x86                //日数据地址
  25. #define ds1302_month_add                0x88                //月数据地址
  26. #define ds1302_day_add                        0x8a                //星期数据地址
  27. #define ds1302_year_add                        0x8c                //年数据地址
  28. #define ds1302_control_add                0x8e                //控制数据地址
  29. #define ds1302_charger_add                0x90                                          
  30. #define ds1302_clkburst_add                0xbe


  31. #include
  32. #include        "STC15Fxxxx.H"


  33. ///


  34. ///
  35. /*************        IO口定义        **************/


  36. ***it CS = P3^6; //片选
  37. ***it SID = P3^4; //数据
  38. ***it SCK = P3^2; //Clock 信号
  39. ***it RS = P3^3; //数据指令选择
  40. ***it Key = P3^4; //测试架锁定按键(测试架专用)
  41. ***it RES = P3^5; //测试架复位是板载 RC 复位,可以不需要 IO 口操作
  42. ***it turn_counter = P4^2;  //电机转圈计数脚

  43. //DS1302引脚定义
  44. ***it RST=P0^0;
  45. ***it IO=P0^1;
  46. ***it DS_SCK=P0^2;

  47. Uchar code ASCIIchardot[];
  48. Uchar code bmp1[];
  49. Uchar code bmp2[];
  50. Uchar code bmp3[];
  51. Uchar code ComTable[]={3,2,1,0,7,6,5,4,};
  52. Uchar second_high;
  53. Uchar second_low;
  54. u8 cnt=0;  //按键延时计时

  55. //
  56. u8        display_index;        //显示位索引
  57. bit        B_1ms;                        //1ms标志

  58. u8        Tday,Thour,Tminute,Tsecond;        //RTC变量
  59. u16        Tmsecond;

  60. u32        Tset;  u32        Tuse;  u32        Tleft;

  61. u32        Tlockm;
  62. int mark=0;
  63. int ds1302_second=0;
  64. //DS1302
  65. Uchar dis_time_buf[16]={0};
  66. Uchar time_buf[8] ={0x20,0x21,0x04,0x02,0x09,0x00,0x00,0x05};//初始时间2021年4月02号09点00分00秒 星期五
  67. Uint t;
  68. Uint motor_turn=0;  //电机转动圈数
  69. Uint counter1, counter2;//电机转动计数1、计数2
  70. Uint interrupt_counter=0;//中断计数
  71. Uint interrupt_counter1=1;




  72. /****************  外部函数声明和外部变量声明 *****************/



  73.   //串口模式下只能写不能读,也不能查忙,因此用户要控制好速度不要太快
  74. void WriteCommand( Uchar CommandByte )
  75. {
  76.         Uchar i;
  77.         CS=0;
  78.         RS=0; //Command
  79.         for(i=0;i<8;i++)
  80.         {         SCK=1;
  81.                 SID=( (CommandByte>>(7-i)) &0x01);
  82.                 SCK=0;
  83.                 _nop_();
  84.                 SCK=1;
  85.         }
  86. }

  87. void WriteData( Uchar DataByte )
  88. {
  89.         Uchar i;
  90.         CS=0;
  91.         RS=1; //Data
  92.         for(i=0;i<8;i++)
  93.         {
  94.                 SCK=1;
  95.                 SID=( (DataByte>>(7-i)) &0x01);
  96.                 SCK=0;
  97.                 _nop_();
  98.                 SCK=1;
  99.         }
  100. }

  101. void DelayMS(unsigned int MS)
  102. {
  103.         unsigned char us,usn;
  104.         while(MS!=0)
  105.         {
  106.                 usn = 2; //for 12M
  107.                 while(usn!=0)
  108.                 {
  109.                         us=0xf6;
  110.                         while (us!=0){us--;};
  111.                         usn--;
  112.                 }
  113.                 MS--;
  114.         }
  115. }


  116. void LcmClear( Uchar FillData )
  117. {
  118.         Uint i,j;
  119.         for(i=0;i<8;i++)
  120.         {
  121.                 WriteCommand(0xB0|ComTable[i]); //Set Page Address
  122.                 WriteCommand(0x10); //Set Column Address = 0
  123.                 WriteCommand(0x01); //Colum from S1 -> S128 auto add
  124.                 for(j=0;j<128;j++)
  125.                 {
  126.                         WriteData( FillData );
  127.                 }
  128.         }
  129. }

  130. void LcmInit( void )
  131. {
  132.         WriteCommand(0xAE); //Display OFF
  133.         WriteCommand(0xA2); //1/64 Duty 1/9 Bias
  134.         WriteCommand(0xA0); //ADC select S0->S131(玻璃设计用 S1-S128)
  135.         WriteCommand(0xC0); //com1 --> com64
  136.         WriteCommand(0x24); //对某些模块没用,用的外部 Rb/Ra
  137.         WriteCommand(0x81); //Sets V0
  138.         WriteCommand(48); //内部电位器调节对比度
  139.         WriteCommand(0x2F); //voltage follower ON regulator ON booster ON
  140.         WriteCommand(0xA6); //Normal Display (not reverse dispplay)
  141.         WriteCommand(0xA4); //Entire Display Disable
  142.         WriteCommand(0x40); //Set Display Start Line = com0
  143.         WriteCommand(0xB0); //Set Page Address = 0
  144.         WriteCommand(0x10); //Set Column Address 4 higher bits = 0
  145.         WriteCommand(0x01); //Set Column Address 4 lower bits = 1 , from IC SEG1 -> SEG128
  146.         LcmClear(0);
  147.         WriteCommand(0xAF); //Display ON
  148. }
  149. //显示 ASICC 字符的函数
  150. void LcmPutChar(Uchar col,Uchar page,Uchar Order)
  151. {
  152.         Uchar i;
  153.         Uint x;
  154.         x = (Order-0x20)*0x10; //ASICC 字符从 0x20 开始,每个 16 byte
  155.         WriteCommand(ComTable[page&0x07]|0xB0); //Set Page Address
  156.         WriteCommand( ((col+1)>>4) | 0x10); //Set Column Address High Byte
  157.         WriteCommand( (col+1)&0x0F ); //Low Byte Colum from S128 -> S1 auto add
  158.         for(i=0;i<8;i++)
  159.         {
  160.                 WriteData( ASCIIchardot[x] );
  161.                 x++;
  162.         }
  163.         page++; //下半字符 page+1
  164.         WriteCommand(ComTable[page&0x07]|0xB0); //Set Page Address
  165.         WriteCommand( ((col+1)>>4) | 0x10); //Set Column Address High Byte
  166.         WriteCommand( (col+1)&0x0F ); //Low Byte Colum from S128 -> S1 auto add
  167.         for(i=0;i<8;i++)
  168.         {
  169.                 WriteData( ASCIIchardot[x] );
  170.                 x++;
  171.         }
  172.         page--; //写完一个字符 page 还原
  173. }
  174. //显示字符串的函数
  175. void LcmPutStr(Uchar col,Uchar page,Uchar *puts)
  176. {
  177.         while(*puts != '\0') //判断字符串时候显示完毕
  178.         {
  179.                 if(col>(LcmXPixel-8)) //判断行末空间是否足够放一个字符,自动换行
  180.                 {
  181.                         page=page+2;
  182.                         col=0;
  183.                 }
  184.                 if(page>(LcmYPixel/8-2)) //到了屏幕最下角,自动返回左上角
  185.                 {
  186.                         page=0;
  187.                         col=0;
  188.                 }
  189.                 LcmPutChar(col,page+4,*puts);
  190.                 puts++;
  191.                 col=col+8; //下一个字符 8 列之后
  192.         }
  193. }
  194. //显示 3 位数的数值(0-999)
  195. void LcmPutNum(Uchar col,Uchar page,u16 Num)
  196. {
  197.         Uchar a,b,c;

  198.         a=Num/100;
  199.         b=(Num%100)/10;
  200.         c=Num%10;

  201.         if(a==0)  //也不写空格,直接跳过去
  202.         LcmPutChar(col,page,0x20);
  203.         else LcmPutChar(col,page+4,a+0x30);
  204.         if(a==0 && b==0) //也不写空格,直接跳过?
  205.         LcmPutChar(col,page,0x20);
  206.         else LcmPutChar(col+8,page+4,b+0x30);
  207.         LcmPutChar(col+16,page+4,c+0x30);
  208.          
  209. }

  210. /********************** RTC演示函数 ************************/
  211. void        RTC(void)       //一轮计数后59到01,没能刷新十位,应该为01,
  212. {       
  213.         if(++Tsecond >=60)
  214.         {
  215.                 LcmClear(0);
  216.                 Tsecond = 0;Tlockm++;
  217.                 if(++Tminute >= 60)
  218.                 {
  219.                         LcmClear(0);       
  220.                         Tminute = 0;
  221.                         if(++Thour >= 24)                       
  222.                         {
  223.                           LcmClear(0);       
  224.                                 Thour = 0;
  225.                           Tday++;
  226.                         }
  227.                 }
  228.         }
  229. }

  230. /*单字节写入一字节数据*/

  231. //向DS1302写入一字节数据
  232. void ds1302_write_byte(Uchar addr, Uchar d)
  233. {
  234.         Uchar i;
  235.         RST=1;                                        //启动DS1302总线       
  236.         //写入目标地址:addr
  237.         addr = addr & 0xFE;   //最低位置零,寄存器0位为0时写,为1时读
  238.         for (i = 0; i < 8; i ++)
  239.         {
  240.                 if (addr & 0x01) {
  241.                         IO=1;
  242.                         }
  243.                 else {
  244.                         IO=0;
  245.                         }
  246.                 DS_SCK=1;      //产生时钟
  247.                 DS_SCK=0;
  248.                 addr = addr >> 1;
  249.                 }       
  250.         //写入数据:d
  251.         for (i = 0; i < 8; i ++) {
  252.                 if (d & 0x01) {
  253.                         IO=1;
  254.                         }
  255.                 else {
  256.                         IO=0;
  257.                         }
  258.                 DS_SCK=1;    //产生时钟
  259.                 DS_SCK=0;
  260.                 d = d >> 1;
  261.                 }
  262.         RST=0;                //停止DS1302总线
  263. }

  264. //从DS1302读出一字节数据
  265. Uchar ds1302_read_byte(Uchar addr)
  266. {

  267.         Uchar i,temp;       
  268.         RST=1;                                        //启动DS1302总线
  269.         //写入目标地址:addr
  270.         addr = addr | 0x01;    //最低位置高,寄存器0位为0时写,为1时读
  271.         for (i = 0; i < 8; i ++) {
  272.                 if (addr & 0x01) {
  273.                         IO=1;
  274.                         }
  275.                 else {
  276.                         IO=0;
  277.                         }
  278.                 DS_SCK=1;
  279.                 DS_SCK=0;
  280.                 addr = addr >> 1;
  281.                 }       
  282.         //输出数据:temp
  283.         for (i = 0; i < 8; i ++) {
  284.                 temp = temp >> 1;
  285.                 if (IO) {
  286.                         temp |= 0x80;
  287.                         }
  288.                 else {
  289.                         temp &= 0x7F;
  290.                         }
  291.                 DS_SCK=1;
  292.                 DS_SCK=0;
  293.                 }       
  294.         RST=0;                                        //停止DS1302总线
  295.         return temp;
  296. }
  297. //向DS302写入时钟数据
  298. void ds1302_write_time(void)
  299. {
  300.         ds1302_write_byte(ds1302_control_add,0x00);                        //关闭写保护
  301.         ds1302_write_byte(ds1302_sec_add,0x80);                                //暂停时钟
  302.         //ds1302_write_byte(ds1302_charger_add,0xa9);            //涓流充电
  303.         ds1302_write_byte(ds1302_year_add,time_buf[1]);                //年
  304.         ds1302_write_byte(ds1302_month_add,time_buf[2]);        //月
  305.         ds1302_write_byte(ds1302_date_add,time_buf[3]);                //日
  306.         ds1302_write_byte(ds1302_hr_add,time_buf[4]);                //时
  307.         ds1302_write_byte(ds1302_min_add,time_buf[5]);                //分
  308.         ds1302_write_byte(ds1302_sec_add,time_buf[6]);                //秒
  309.         ds1302_write_byte(ds1302_day_add,time_buf[7]);                //周
  310.         ds1302_write_byte(ds1302_control_add,0x80);                        //打开写保护     
  311. }
  312. //从DS302读出时钟数据
  313. void ds1302_read_time(void)  
  314. {
  315.         time_buf[1]=ds1302_read_byte(ds1302_year_add);                //年
  316.         time_buf[2]=ds1302_read_byte(ds1302_month_add);                //月
  317.         time_buf[3]=ds1302_read_byte(ds1302_date_add);                //日
  318.         time_buf[4]=ds1302_read_byte(ds1302_hr_add);                //时
  319.         time_buf[5]=ds1302_read_byte(ds1302_min_add);                //分
  320.         time_buf[6]=(ds1302_read_byte(ds1302_sec_add))&0x7f;//秒,屏蔽秒的第7位,避免超出59
  321.         time_buf[7]=ds1302_read_byte(ds1302_day_add);                //周        
  322. }
  323. //DS1302初始化函数
  324. void ds1302_init(void)
  325. {
  326.         RST=0;                        //RST脚置低
  327.         DS_SCK=0;                        //SCK脚置低
  328.         RST=1;                        //RST脚置高
  329.         ds1302_write_byte(0x8e, 0);
  330.         RST=0;                        //RST脚置低

  331. }

  332. void main( void )
  333. {

  334.      //button
  335.       Uchar b0click=0;         Uchar b0cflag=0;          Uchar B0PressOnce=0;
  336.           Uchar b1click=0;         Uchar b1cflag=0;          Uchar B1PressOnce=0;
  337.           Uchar b2click=0;         Uchar b2cflag=0;          Uchar B2PressOnce=0;
  338.           Uchar b3click=0;         Uchar b3cflag=0;          Uchar B3PressOnce=0;
  339.           Uchar b4click=0;         Uchar b4cflag=0;          Uchar B4PressOnce=0;
  340.           Uchar b5click=0;         Uchar b5cflag=0;          Uchar B5PressOnce=0;
  341.           Uchar b6click=0;         Uchar b6cflag=0;          Uchar B6PressOnce=0;

  342.           Uchar LTclick=0;         Uchar LTcflag=0;          Uchar LTPressOnce=0;
  343.          //
  344.          //page1`
  345.          Uchar pagenum=88;          Uchar secodein=191;           Uchar select=1;
  346.          Uchar secode1=0;         Uchar secode2=0;  Uchar secode3=0;
  347.           //

  348.          //page2
  349.          Uchar         select_2=1;
  350.           //

  351.           //page4
  352.          Uchar select_4=1;Uchar secode1_4=5; Uchar secode2_4=0;Uchar secode3_4=0;         u16 VTBI=500;        //        Uchar secode4_4=0;
  353.          //page41
  354.          Uchar seday_4=2;
  355.           //

  356.           //page5
  357.          Uchar select_5=1;
  358.          //

  359.          //page6
  360.          Uchar Bolusvol=15;Uchar BolusTime=1;Uchar select_6=1;
  361.          //

  362.          //page8
  363.          Uchar Demandvol=15;        Uchar LockoutTime=15;Uchar select_8=1; Uchar secode1_8=0;         Uchar secode2_8=1;  Uchar secode3_8=5;
  364.          //

  365.          //page10
  366.          Uchar select_10=1;
  367.           //

  368.           //page11
  369.          Uchar seday_10=1;
  370.          //

  371.           //page21
  372.            u16 delaytime=0;  u16 VINF=0;          u16 lockouttime=0;         u16 runtime=0;         u16 iNFCount=0;           u32 lightcount=0;        u32 bolushandcount=0;
  373.           //


  374.          //start
  375.          Uchar confirmflag=0;        Uchar startcount=0;
  376.          //

  377.             //run
  378.           Uchar run=0;           Uchar beep=0;          u16 bolusrun=0;         u16 bolustime=0;         Uchar bolusflag=0;          Uchar lockflag=0;          Uchar stateflag=0;         Uchar onoffflag=1;
  379.           Uchar onoffstate=1;
  380.          //

  381.          //light switch
  382.           Uchar lighton=0;  
  383.          //


  384.         Uchar contrast=30; //对比度=48(根据我们常用的外部电阻参数来的)
  385.         DelayMS(10);
  386.         RES = 0;
  387.         DelayMS(200);
  388.         RES = 1;
  389.         DelayMS(50);
  390.         LcmInit();
  391. //*********************ds1302实时时钟初始化***************************
  392.   ds1302_init();
  393.         ds1302_write_time(); //写入初始值

  394. //********************************************************************
  395.     P0M1 = 0;        P0M0 = 0;        //设置为准双向口
  396.         P1M1 = 0;        P1M0 = 0;        //设置为准双向口
  397.         P2M1 = 0;        P2M0 = 0;        //设置为准双向口
  398.         P3M1 = 0;        P3M0 = 0;        //设置为准双向口
  399.         P4M1 = 0;        P4M0 = 0;        //设置为准双向口
  400.         P5M1 = 0;        P5M0 = 0;        //设置为准双向口
  401.         P6M1 = 0;        P6M0 = 0;        //设置为准双向口
  402.         P7M1 = 0;        P7M0 = 0;        //设置为准双向口




  403.         //*********************************中断3用于触发开关机************
  404.         INT_CLKO |= 0x20;  //使能外部中断3下降沿中断
  405.         //****************************************************************
  406.         display_index = 0;
  407.         AUXR |= 0x80;        //Timer0 set as 1T, 16 bits timer auto-reload,
  408.         TMOD &= 0xF0;                //设置定时器模式
  409.   TL0 = 0x00;//        TH0 = (u8)(Timer0_Reload / 256);
  410.   TH0 = 0xDC;//        TL0 = (u8)(Timer0_Reload % 256);
  411.         ET0 = 1;        //Timer0 interrupt enable
  412.         TR0 = 1;        //Timer0 run
  413.         EA = 1;                //打开总中断
  414.         TF0 = 0;
  415.         Thour   = 0;        //初始化时间值
  416.         Tminute = 0;
  417.         Tsecond = 0;
  418.         Tday= 0;
  419.         Tset= 0;
  420.         Tuse= 0;
  421.         Tleft= 0;
  422.     //

  423.         while(1)
  424.         {       
  425.   



  426. //        if(B_1ms){B_1ms = 0;if(++Tmsecond >= 75){Tmsecond = 0;RTC();}}//1秒到        250-255        254
  427.                         if(P27==0){b0click=1;}else{b0click=0;b0cflag=0;} if(b0click==1&&b0cflag==0){b0cflag=1;B0PressOnce=1;}  //b6      27
  428.                          if(P24==0){b1click=1;}else{b1click=0;b1cflag=0;} if(b1click==1&&b1cflag==0){b1cflag=1;B1PressOnce=1;beep=0;}  //up      22
  429.                         if(P23==0){b2click=1;}else{b2click=0;b2cflag=0;} if(b2click==1&&b2cflag==0){b2cflag=1;B2PressOnce=1;beep=1;}  //down    23
  430.                   if(P22==0){b3click=1;}else{b3click=0;b3cflag=0;} if(b3click==1&&b3cflag==0){b3cflag=1;B3PressOnce=1;}  //add           24
  431.                         if(P25==0){b4click=1;}else{b4click=0;b4cflag=0;} if(b4click==1&&b4cflag==0){b4cflag=1;B4PressOnce=1;}  //select         25
  432.                         if(P26==0){b5click=1;}else{b5click=0;b5cflag=0;} if(b5click==1&&b5cflag==0){b5cflag=1;B5PressOnce=1;}  //start/stop                26
  433. //                        if(P27==0){b6click=1;}else{b6click=0;b6cflag=0;} if(b6click==1&&b6cflag==0){b6cflag=1;B1PressOnce=1;}  //out bolus btn

  434.                         if(B0PressOnce==1){B0PressOnce=0;if(onoffflag==0){onoffflag=1;}else{onoffflag=0;}}
  435.                   
  436.                     if(onoffflag==1)
  437.                         {if(onoffstate==0){onoffstate=1;contrast=30;}//kaiji
  438.                         }else
  439.                         {if(onoffstate==1){onoffstate=0;contrast=0;}//guanji
  440.                         }

  441.                     if(counter1==1){LTclick=1;}else{LTclick=0;LTcflag=0;} if(LTclick==1&
  442.                         if(beep==0) {P16=1;}        else{P16=0;}
  443.                         if(run==0) {P17=1;}        else{P17=0;}
  444.                         if(bolusrun==0) {P17=1;}        else{P17=0;}
  445. //                        if(P14==0){counter1=0;}else{counter1=1;}//lighton替换为counter1

  446. //                        if(lightcount
  447.                         VINF=infcount*Bolusvol+bolushandcount*Demandvol;
  448. if(motor_turn<170){P17=0;}else{P17=1;}
  449.                


  450.                     WriteCommand(0x81); //Sets V0
  451.                     WriteCommand(contrast); //恢复对比度

  452.                         if(pagenum==88)
  453.                         {         LcmClear(0x00);
  454.                           if(B1PressOnce==1){LcmPutStr(0,0,"1");run=1;}
  455.                           if(B2PressOnce==1){LcmPutStr(50,0,"2");run=0;}
  456.                           if(B3PressOnce==1){LcmPutStr(0,2,"3");}
  457.                           if(B4PressOnce==1){LcmPutStr(50,2,"4");}
  458.                           if(B5PressOnce==1){LcmPutStr(0,4,"5");}
  459.                                 if(lightcount<=20){run=0;}
  460.                                 LcmPutNum(100,6,motor_turn);
  461.                         }

  462.                         if(pagenum==1)
  463.                          {
  464.                           LcmPutStr(0,0,"Security Code");   
  465.                           LcmPutNum(10,3,secode1);
  466.                           LcmPutNum(30,3,secode2);
  467.                           LcmPutNum(50,3,secode3);
  468. //                          
  469.                           if(select==1){LcmPutStr(27,5,"^       ");}
  470.                           if(select==2){LcmPutStr(23,5,"   ^     ");}
  471.                           if(select==3){LcmPutStr(26,5,"     ^  ");}

  472.                           if(B2PressOnce==1)
  473.                           {
  474.                           B2PressOnce=0;
  475.                           if(select==1){if(secode1<9){secode1++; }else{secode1=0;}}
  476.                           if(select==2){if(secode2<9){secode2++; }else{secode2=0;}}
  477.                           if(select==3){if(secode3<9){secode3++; }else{secode3=0;}}
  478.                           }
  479.                           if(B3PressOnce==1)
  480.                           {
  481.                           B3PressOnce=0;
  482.                            if(select==1)      {select=2;}
  483.                             else if(select==2){select=3;}
  484.                                 else if(select==3){select=1;}
  485.                           }
  486.                           if(B4PressOnce==1)
  487.                           {
  488.                                  B4PressOnce=0;
  489.                                   if(secode1==1&&secode2==9&&secode3==1)
  490.                                           {
  491.                                            LcmPutStr(10,5,"Code Right");
  492.                                           DelayMS(20000);
  493.                                          pagenum=2;
  494.                                           LcmClear(0x00);
  495.                                           }
  496.                                 else
  497.                                         {
  498.                                          LcmPutStr(10,5,"Code Worror");
  499.                                           DelayMS(20000);
  500.                                           LcmPutStr(10,5,"           ");
  501.                                         }       
  502.                           }
  503. //                                         LcmPutNum(100,6,motor_turn);
  504.                           }


  505.                          if(pagenum==2)
  506.                         {
  507.                           LcmPutStr(0,0,"New Patient?");
  508.                           LcmPutStr(25,2,"YES");
  509.                           LcmPutStr(25,4,"NO");
  510.                           
  511.                           if(select_2==1){LcmPutStr(5,2,">");LcmPutStr(5,4,"  ");}
  512.                           if(select_2==2){LcmPutStr(5,4,">");LcmPutStr(5,2,"  ");}

  513.                           if(B3PressOnce==1)
  514.                           {
  515.                                   B3PressOnce=0;
  516.                             if(select_2==1)     {select_2=2;}
  517.                             else if(select_2==2){select_2=1;}
  518.                           }

  519.                           if(B4PressOnce==1)
  520.                           {
  521.                                   B4PressOnce=0;
  522.                                  if(select_2==1){pagenum=4;LcmClear(0x00);}
  523.                                  else {pagenum=3;LcmClear(0x00);}
  524.                           }
  525. //               LcmPutNum(100,6,motor_turn);      
  526.                         }



  527.                         if(pagenum==3)
  528.                         {
  529.                           LcmPutStr(0,0,"Review Mode");
  530.                           LcmPutStr(15,2,"Adjust Setting");          
  531.                           LcmPutStr(5,2,">");

  532.                           if(B4PressOnce==1)
  533.                           {
  534.                                   B4PressOnce=0;
  535.                                 pagenum=12;LcmClear(0x00);
  536.                           }
  537. //                 LcmPutNum(100,6,motor_turn);   
  538.                         }


  539.                         if(pagenum==4)
  540.                         {
  541.                           LcmPutStr(0,0,"Vol To Be Inf");
  542.                           LcmPutNum(5,3,secode1_4);
  543.                           LcmPutNum(25,3,secode2_4);
  544.                           LcmPutNum(46,3,secode3_4);
  545. //                          LcmPutNum(65,3,secode4_4);
  546.               LcmPutStr(100,3,"mls");                          

  547.                           if(select_4==1){LcmPutStr(22,5,"^           ");}
  548.                           if(select_4==2){LcmPutStr(18,5,"   ^        ");}
  549.                           if(select_4==3){LcmPutStr(21,5,"     ^      ");}
  550. //                          if(select_4==4){LcmPutStr(18,5,"        ^   ");}

  551.                           if(B2PressOnce==1)
  552.                           {
  553.                           B2PressOnce=0;
  554.                           if(select_4==1){if(secode1_4<9){secode1_4++; }else{secode1_4=0;}}
  555.                           if(select_4==2){if(secode2_4<9){secode2_4++; }else{secode2_4=0;}}
  556.                           if(select_4==3){if(secode3_4<9){secode3_4++; }else{secode3_4=0;}}
  557. //                          if(select_4==4){if(secode4_4<9){secode4_4++; }else{secode4_4=0;}}
  558.                           }
  559.                           VTBI=        secode1_4*100+secode2_4*10+secode3_4;
  560.                           if(B3PressOnce==1)
  561.                           {
  562.                           B3PressOnce=0;
  563.                            if(select_4==1)      {select_4=2;}
  564.                             else if(select_4==2){select_4=3;}
  565.                                 else if(select_4==3){select_4=1;}
  566. //                                else if(select_4==4){select_4=1;}
  567.                           }
  568.                           if(B4PressOnce==1)
  569.                           {
  570.                                  B4PressOnce=0;
  571.                                   if(secode1_4!=0||secode2_4!=0||secode3_4!=0)
  572.                                           {
  573.                                          pagenum=41;
  574.                                           LcmClear(0x00);
  575.                                           }
  576.                                 else
  577.                                         {
  578.                                          LcmPutStr(10,5,"Vol Error");
  579.                                           DelayMS(30000);
  580.                                           LcmPutStr(10,5,"           ");
  581.                                         }       
  582.                           }
  583. //                   LcmPutNum(100,6,motor_turn);  
  584.                         }


  585.                          if(pagenum==41)
  586.                         {
  587.                           LcmPutStr(0,0,"Dutation Days");
  588.                           LcmPutStr(23,3,"  ");
  589.                           LcmPutNum(25,3,seday_4);
  590.               LcmPutStr(80,3,"Days");                          
  591.                           if(B2PressOnce==1)
  592.                           {
  593.                           B2PressOnce=0;

  594.                            if(seday_4<10){seday_4++; }else{seday_4=1;}
  595.                           }

  596.                           if(B4PressOnce==1)
  597.                           {
  598.                                  B4PressOnce=0;
  599.                                 pagenum=5;
  600.                                  LcmClear(0x00);
  601.                           }
  602. //                LcmPutNum(100,6,motor_turn);     
  603.                         }
  604.                        

  605.                          if(pagenum==5)
  606.                         {
  607.                           LcmPutStr(0,0,"Infusion Type");
  608.               LcmPutStr(10,2,"-PIB+Demand");       
  609.                           LcmPutStr(15,4,"-Library");
  610.                           LcmPutStr(20,6,"YES");
  611.                           LcmPutStr(70,6,"NO");                          
  612.                           
  613.                           if(select_5==1){LcmPutStr(5,6,">");LcmPutStr(55,6,"  ");}
  614.                           if(select_5==2){LcmPutStr(55,6,">");LcmPutStr(5,6,"  ");}

  615.                           if(B3PressOnce==1)
  616.                           {
  617.                                   B3PressOnce=0;
  618.                             if(select_5==1)     {select_5=2;}
  619.                             else if(select_5==2){select_5=1;}
  620.                           }

  621.                           if(B4PressOnce==1)
  622.                           {
  623.                                  B4PressOnce=0;
  624.                 if(select_5==1){pagenum=10;LcmClear(0x00);}
  625.                                 else {pagenum=6;LcmClear(0x00);}
  626.                           }
  627. //                LcmPutNum(100,6,motor_turn);   
  628.                         }
  629.                        

  630.                         if(pagenum==6)
  631.                         {
  632.                           LcmPutStr(0,0,"PIB Bolus Volume");
  633.               LcmPutNum(5,2,Bolusvol);       
  634.                           LcmPutStr(60,2,"mls");

  635.                           LcmPutStr(0,4,"PIB Bolus Interval");
  636.                           LcmPutStr(4,6,"  ");
  637.               LcmPutNum(5,6,BolusTime);       
  638.                           LcmPutStr(60,6,"hrs");
  639.                                             
  640.                           if(select_6==1){LcmPutStr(5,2,"> ");LcmPutStr(5,6," ");}
  641.                           if(select_6==2){LcmPutStr(5,6,">");LcmPutStr(5,2," ");}

  642.                           if(B2PressOnce==1)
  643.                           {
  644.                           B2PressOnce=0;
  645.                           if(select_6==1){if(Bolusvol<15){Bolusvol++; }else{Bolusvol=0;}}
  646.                           if(select_6==2){if(BolusTime<12){BolusTime++; }else{BolusTime=1;}}
  647.                           }

  648.                           if(B3PressOnce==1)
  649.                           {
  650.                                   B3PressOnce=0;
  651.                             if(select_6==1)     {select_6=2;}
  652.                             else if(select_6==2){select_6=1;}
  653.                           }

  654.                           if(B4PressOnce==1)
  655.                           {
  656.                                  B4PressOnce=0;
  657.                                 pagenum=8;
  658.                                 LcmClear(0x00);
  659.                           }
  660. //                 LcmPutNum(100,6,motor_turn);   
  661.                         }
  662.                        

  663.                         if(pagenum==8)
  664.                         {
  665.                           LcmPutStr(4,2,"  ");
  666.                           if(select_8==1){LcmPutStr(5,2,">");}else{LcmPutStr(5,2," ");}
  667.                           if(select_8==2){LcmPutStr(21,6,"_");}
  668.                           if(select_8==3){LcmPutStr(41,6,"_");}       
  669.                           if(select_8==4){LcmPutStr(61,6,"_");}       
  670.                           DelayMS(100);//0.01s
  671.                           LcmPutStr(0,0,"Demand Volume");
  672.               LcmPutNum(5,2,Demandvol);       
  673.                           LcmPutStr(80,2,"mls");

  674.                           LcmPutStr(0,4,"Lockout Time");
  675.        
  676.                           LcmPutStr(80,6,"min");

  677.                           LcmPutNum(5,6,secode1_8);
  678.                           LcmPutNum(25,6,secode2_8);
  679.                           LcmPutNum(45,6,secode3_8);
  680.                           DelayMS(300);//0.03s
  681.                                     

  682.                           if(B2PressOnce==1)
  683.                           {
  684.                           B2PressOnce=0;
  685.                           if(select_8==1){if(Demandvol<15){Demandvol++; }else{Demandvol=0;}}
  686.                           if(select_8==2){if(secode1_8<1){secode1_8++; }else{secode1_8=0;}}
  687.                           if(select_8==3){if(secode1_8==1){if(secode2_8<2){secode2_8++; }else{secode2_8=0;}} else if(secode2_8<9){secode2_8++; }else{secode2_8=0;}}
  688.                           if(select_8==4){if(secode1_8==1&&secode2_8==2){secode3_8=0;} else {if(secode3_8<9){secode3_8++; }else{secode3_8=0;}}}
  689.                           }

  690.                           if(secode1_8*100+secode2_8*10+secode3_8>=120)        {secode1_8=1;secode2_8=2;secode3_8=0;}
  691.                           LockoutTime=secode1_8*100+secode2_8*10+secode3_8;



  692.                           if(B3PressOnce==1)
  693.                           {
  694.                                   B3PressOnce=0;
  695.                             if(select_8==1)     {select_8=2;}
  696.                             else if(select_8==2){select_8=3;}
  697.                                 else if(select_8==3){select_8=4;}
  698.                                 else if(select_8==4){select_8=1;}
  699.                           }
  700.                           if(B4PressOnce==1)
  701.                           {
  702.                                  B4PressOnce=0;
  703.                                 pagenum=10;
  704.                                 LcmClear(0x00);
  705.                           }
  706. //         LcmPutNum(100,6,motor_turn);
  707.                         }                                 
  708.                        
  709.                           

  710.                          if(pagenum==10)
  711.                         {
  712.                           LcmPutStr(0,0,"Secondary Porgram?");
  713.                           LcmPutStr(25,4,"YES");
  714.                           LcmPutStr(25,6,"NO");
  715.                           
  716.                           if(select_10==1){LcmPutStr(5,4,">");LcmPutStr(5,6,"  ");}
  717.                           if(select_10==2){LcmPutStr(5,6,">");LcmPutStr(5,4,"  ");}

  718.                           if(B3PressOnce==1)
  719.                           {
  720.                                   B3PressOnce=0;
  721.                             if(select_10==1)     {select_10=2;}
  722.                             else if(select_10==2){select_10=1;}
  723.                           }

  724.                           if(B4PressOnce==1)
  725.                           {
  726.                                   B4PressOnce=0;
  727.                                  if(select_10==1){pagenum=11;LcmClear(0x00);}
  728.                                  else {pagenum=12;LcmClear(0x00);}
  729.                           }
  730. //                 LcmPutNum(100,6,motor_turn);   
  731.                         }


  732.                         if(pagenum==11)
  733.                         {
  734.                           LcmPutStr(0,0,"Set Day To Begin");
  735.                           LcmPutStr(23,3,"  ");
  736.                           LcmPutNum(25,3,seday_10);
  737.               LcmPutStr(80,3,"Days");
  738.                           LcmPutStr(0,6,"PIB+Demand");                          
  739.                           if(B2PressOnce==1)
  740.                           {
  741.                           B2PressOnce=0;

  742.                            if(seday_10<4){seday_10++; }else{seday_10=1;}
  743.                           }

  744.                           if(B4PressOnce==1)
  745.                           {
  746.                                  B4PressOnce=0;
  747.                                 pagenum=12;
  748.                                  LcmClear(0x00);
  749.                                 LcmPutStr(0,2,"confirm your input");
  750.                                 DelayMS(30000);
  751.                                                                                                           
  752.                           }
  753. //                 LcmPutNum(100,6,motor_turn);   
  754.                         }


  755.                         if(pagenum==12)
  756.                         {
  757.                            LcmPutStr(0,0,"Vol To Be Inf");
  758.                            LcmPutNum(25,2,VTBI);

  759.                            LcmPutStr(80,2,"mls");
  760.                            LcmPutStr(90,6,"1/7");
  761.                            if(B4PressOnce==1)
  762.                           {
  763.                                  B4PressOnce=0;
  764.                                 pagenum=13;
  765.                                  LcmClear(0x00);
  766.                           }
  767. //                                 LcmPutNum(100,6,motor_turn);
  768.                         }

  769.                         if(pagenum==13)
  770.                         {

  771.                            LcmPutStr(0,0,"Dutation Days");
  772.                            LcmPutNum(25,2,seday_4);
  773.                            LcmPutStr(80,2,"Days");
  774.                            LcmPutStr(90,6,"2/7");
  775.                            if(B4PressOnce==1)
  776.                           {
  777.                                  B4PressOnce=0;
  778.                                 pagenum=14;
  779.                                  LcmClear(0x00);
  780.                           }
  781. //                                 LcmPutNum(100,6,motor_turn);
  782.                         }

  783.                         if(pagenum==14)
  784.                         {

  785.                            LcmPutStr(0,0,"Bolus Volume");
  786.                            LcmPutNum(25,2,Bolusvol);
  787.                            LcmPutStr(80,2,"mls");
  788.                            LcmPutStr(90,6,"3/7");
  789.                            if(B4PressOnce==1)
  790.                           {
  791.                                  B4PressOnce=0;
  792.                                 pagenum=15;
  793.                                  LcmClear(0x00);
  794.                           }
  795. //                                 LcmPutNum(100,6,motor_turn);
  796.                         }
  797.                         if(pagenum==15)
  798.                         {

  799.                            LcmPutStr(0,0,"Bolus Interval");
  800.                            LcmPutNum(25,2,BolusTime);
  801.                            LcmPutStr(80,2,"hrs");
  802.                            LcmPutStr(90,6,"4/7");
  803.                            if(B4PressOnce==1)
  804.                           {
  805.                                  B4PressOnce=0;
  806.                                 pagenum=16;
  807.                                  LcmClear(0x00);
  808.                           }
  809. //                         LcmPutNum(100,6,motor_turn);
  810.                         }

  811.                         if(pagenum==16)
  812.                         {

  813.                            LcmPutStr(0,0,"Demand Volume");
  814.                            LcmPutNum(25,2,Demandvol);
  815.                            LcmPutStr(80,2,"mls");
  816.                            LcmPutStr(90,6,"5/7");
  817.                            if(B4PressOnce==1)
  818.                           {
  819.                                  B4PressOnce=0;
  820.                                 pagenum=17;
  821.                                  LcmClear(0x00);
  822.                           }
  823. //                         LcmPutNum(100,6,motor_turn);
  824.                         }

  825.                         if(pagenum==17)
  826.                         {

  827.                            LcmPutStr(0,0,"Lockout Time");
  828.                            LcmPutNum(25,2,LockoutTime);
  829.                            LcmPutStr(80,2,"min");
  830.                            LcmPutStr(90,6,"6/7");
  831.                            if(B4PressOnce==1)
  832.                           {
  833.                                  B4PressOnce=0;
  834.                                 pagenum=18;
  835.                                  LcmClear(0x00);
  836.                           }
  837. //                         LcmPutNum(100,6,motor_turn);
  838.                         }

  839.                         if(pagenum==18)
  840.                         {

  841.                            LcmPutStr(0,0,"Set Day To Begin");
  842.                            LcmPutNum(25,2,seday_10);
  843.                            LcmPutStr(80,2,"Days");
  844.                            LcmPutStr(90,6,"7/7");
  845.                            if(B4PressOnce==1)
  846.                           {
  847.                                  B4PressOnce=0;
  848.                                 pagenum=12;
  849.                                  LcmClear(0x00);
  850.                           }
  851.                           confirmflag=1;
  852. //                         LcmPutNum(100,6,motor_turn);
  853.                         }
  854.                           
  855.                          if(b5click==0)
  856.                          {
  857.                          if(pagenum>=12)
  858.                          {
  859.                           confirmflag=1;}startcount=0;
  860.                          }

  861.                          if(b5click==1&&confirmflag==1)
  862.                          {
  863.                          
  864.                          DelayMS(5000);
  865.                          startcount++;

  866.                           if(startcount==6)
  867.                           {

  868.                                
  869.                                 if(stateflag==0)
  870.                                 {
  871.                                         if(select_10==1)
  872.                                                 {
  873.                                                         pagenum=20;Thour=0;Tminute=0;Tsecond=0;Tday=0;
  874.                                 dis_time_buf[13]=0x00;
  875.                                 time_buf[6]=0x00;
  876.                                 ds1302_write_byte(ds1302_control_add,0x00);                        //关闭写保护
  877.                                 ds1302_write_byte(ds1302_sec_add,time_buf[6]);                //秒
  878.                                 ds1302_write_byte(ds1302_control_add,0x80);                        //打开写保护
  879.             }   //ds1302秒置零
  880.                                         else
  881.             {
  882.                                                   pagenum=21;Thour=0;Tminute=0;Tsecond=0;Tday=0;
  883.                                 dis_time_buf[13]=0x00;
  884.                                 time_buf[6]=0x00;
  885.                                 ds1302_write_byte(ds1302_control_add,0x00);                        //关闭写保护
  886.                                 ds1302_write_byte(ds1302_sec_add,time_buf[6]);                //秒
  887.                                 ds1302_write_byte(ds1302_control_add,0x80);                        //打开写保护                                        
  888.                                                 }
  889.                                         stateflag=1;LcmClear(0x00);
  890.                                 }
  891.                                 else if(stateflag==1){TR0 = 0;LcmPutStr(0,6,"SYS IS SUSPEND");stateflag=2;}
  892.                                 else if(stateflag==2){TR0 = 1;LcmPutStr(0,6,"              ");stateflag=1;}
  893.                                
  894.                                 confirmflag=0;
  895.                           }
  896.                           if(b5click==0&&startcount<6)
  897.                           {
  898.                              startcount=0;
  899.                }
  900.                    }





  901.                           if(pagenum==20) //wait for the start secondary program
  902.                         {  
  903.                                  seday_10=4;
  904.                            runtime=Tday*24*60+Thour*60+Tminute;    //u16  u8
  905.                            Tset=seday_10*24*60;       //u32    Uchar
  906.                            Tuse=runtime;             //u32  u16
  907.                            Tleft=Tset-Tuse;
  908.                           
  909.                            if(Tleft>1440){LcmPutNum(30,2,(Tleft/1440));}else{LcmPutNum(30,2,0);}LcmPutStr(55,2,"d");
  910.                             if(Tleft/60>24){LcmPutNum(60,2,(Tleft/60)%24);}else{LcmPutNum(60,2,Tleft/60);}LcmPutStr(85,2,"h");
  911.                                 LcmPutNum(90,2,Tleft%60);LcmPutStr(115,2,"m");


  912.                         LcmPutStr(0,0,"waitforthestart");


  913.                          if(runtime>=seday_10*24*60)
  914.                          {pagenum=21;delaytime=0;LcmClear(0x00);
  915.                          Thour=0;Tminute=0;Tsecond=0;Tday=0;
  916.                                 dis_time_buf[13]=0x00;
  917.                                 time_buf[6]=0x00;
  918.                                 ds1302_write_byte(ds1302_control_add,0x00);                        //关闭写保护
  919.                                 ds1302_write_byte(ds1302_sec_add,time_buf[6]);                //秒
  920.                                 ds1302_write_byte(ds1302_control_add,0x80);                        //打开写保护
  921.                          }
  922. //                         LcmPutNum(100,6,motor_turn);
  923.                         }

  924.                                                                                                                                                                                                                           

  925.                          if(pagenum==21)  
  926.                         {
  927.                           
  928. //                           lighton                          
  929.                            runtime=Tday*24*60+Thour*60+Tminute;
  930.                            Tset=seday_4*24*60;
  931.                            Tuse=runtime;
  932.                            Tleft=Tset-Tuse;

  933.                            if(VINF<=VTBI&&runtime<=(seday_4*24*60))
  934.                            {
  935.                             LcmPutNum(10,0,VINF);        LcmPutStr(50,0,"/");LcmPutNum(70,0,VTBI);LcmPutStr(105,0,"ml");        //has been infused /  to be infuse
  936.                             LcmPutStr(0,2,"PIB");
  937.                             if(Tleft>1440){LcmPutNum(30,2,(Tleft/1440));}else{LcmPutNum(30,2,0);}LcmPutStr(55,2,"d");
  938.                             if(Tleft/60>24){LcmPutNum(60,2,(Tleft/60)%24);}else{LcmPutNum(60,2,Tleft/60);}LcmPutStr(85,2,"h");
  939.                                 LcmPutNum(90,2,Tleft%60);LcmPutStr(115,2,"m");
  940.                                 LcmPutStr(0,4,"Dem");


  941.                                
  942.                                 lockouttime=Tlockm;
  943.                            if(lockouttime>=LockoutTime){lockflag=1;}else{lockflag=0;}
  944.                            if(lockflag==1){LcmPutStr(60,4,"ready   ");}else{LcmPutStr(60,4,"unready");}
  945.                            if(B1PressOnce==1){B1PressOnce=0;if(lockflag==1){Tlockm=0;bolushandcount++;}}
  946.                            if(LTPressOnce==1){LTPressOnce=0;lightcount++;}
  947.                           
  948.                            infcount=runtime/(BolusTime*60);



  949.                           LcmPutNum(10,6,Thour);
  950.                           LcmPutNum(40,6,Tminute);
  951.                           LcmPutNum(70,6,Tsecond);

  952.                                  //                            LcmPutNum(0,6,stateflag);           LcmPutNum(50,6,bolushandcount);  LcmPutNum(90,6,lightcount);





  953.                            }else
  954.                            {
  955.                                 LcmClear(0x00);LcmPutStr(50,0,"Infuse has been finshed");
  956. //                                beep=0;DelayMS(5000);beep=1;DelayMS(5000);
  957.                            }
  958. //                                                   LcmPutNum(100,6,motor_turn);


  959.                         }



  960. //                        LcmPutNum(100,6,pagenum);
  961. //                        LcmClear(0xff);                                                                                                                                  


  962.    
  963.        
  964. }
  965. }

  966.    

  967. /********************** Timer0 1ms中断函数 ************************/
  968. void timer0 (void) interrupt TIMER0_VECTOR
  969. {
  970.         B_1ms = 1;                //1ms标志
  971. }
  972. /********************* INT3中断函数 *************************/
  973. void INT3_int (void) interrupt INT3_VECTOR                //进中断时已经清除标志
  974. {
  975. //  INT_CLKO &= 0xDF; //若需要手动清除中断标志,可先关闭中断,此时系统会自动清除内部中断标志
  976.   interrupt_counter++;  //中断次数计数

  977. }

  978. void tm0_isr() interrupt 1           //中断入口
  979. {
  980. //  interrupt_counter1++;  //中断次数计数
  981.    
  982.   TL0 = 0x00;                        //设定定时器初值
  983.         TH0 = 0xDC;                        //设定定时器初值
  984.   //每500us进行中断,输出取反,即1ms周期的方波
  985.           t++;

  986.          if(t==400)               //间隔200ms(50ms*4)读取一次时间
  987.   {

  988.    t=0;
  989.    ds1302_read_time();  //读取时间
  990. //   dis_time_buf[0]=(time_buf[0]>>4); //年   
  991. //   dis_time_buf[1]=(time_buf[0]&0x0f);
  992. //   
  993. //   dis_time_buf[2]=(time_buf[1]>>4);   
  994. //   dis_time_buf[3]=(time_buf[1]&0x0f);
  995. //  

  996. //   
  997. //   
  998. //   dis_time_buf[4]=(time_buf[2]>>4); //月  
  999. //   dis_time_buf[5]=(time_buf[2]&0x0f);
  1000. //   

  1001. //   dis_time_buf[6]=(time_buf[3]>>4); //日   
  1002. //   dis_time_buf[7]=(time_buf[3]&0x0f);
  1003. //   
  1004. //   dis_time_buf[14]=(time_buf[7]&0x07); //星期
  1005. //   
  1006. //   //第2行显示  
  1007. //   dis_time_buf[8]=(time_buf[4]>>4); //时   
  1008. //   dis_time_buf[9]=(time_buf[4]&0x0f);   

  1009. //  

  1010. //   dis_time_buf[10]=(time_buf[5]>>4); //分   
  1011. //   dis_time_buf[11]=(time_buf[5]&0x0f);   

  1012.    dis_time_buf[12]=(time_buf[6]>>4); //秒   
  1013.    dis_time_buf[13]=(time_buf[6]&0x0f);
  1014.          
  1015.                   if((dis_time_buf[12]+'0')=='0'&&(dis_time_buf[13]+'0')=='1')  
  1016.                         {
  1017.                                 Tmsecond=0;
  1018.                                 RTC();
  1019.                                 dis_time_buf[13]=0x00;
  1020.                                 time_buf[6]=0x00;
  1021.                                 ds1302_write_byte(ds1302_control_add,0x00);                        //关闭写保护
  1022.                                 ds1302_write_byte(ds1302_sec_add,time_buf[6]);                //秒
  1023.                                 ds1302_write_byte(ds1302_control_add,0x80);                        //打开写保护  
  1024.                         }

  1025. // ******************电机转圈计数********************
  1026.         counter2=counter1;//保存上次状态
  1027.         counter1 = turn_counter;
  1028.         if((counter1==0)&&(counter2==1))//下降沿      //电机转动圈数超999时,千位会以字母表示?
  1029.         {
  1030.                 motor_turn++; //电机转动圈数
  1031.         }
  1032. //***************************************************       
  1033.   }
  1034. }



  1035. /* ASICC 字库代码 8x16 点阵 */
  1036. unsigned char code ASCIIchardot[16*96] = {
  1037. /*-- 文字: --*/
  1038. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1039. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1040. /*-- 文字: ! --*/
  1041. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1042. 0x00,0x00,0x0E,0x1F,0x1F,0x0E,0x00,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x00,0x00,
  1043. /*-- 文字: " --*/
  1044. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1045. 0x00,0x1C,0x1C,0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1046. /*-- 文字: # --*/
  1047. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1048. 0x00,0x04,0x1F,0x1F,0x04,0x1F,0x1F,0x04,0x00,0x40,0xF0,0xF0,0x40,0xF0,0xF0,0x40,
  1049. /*-- 文字: $ --*/
  1050. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1051. 0x00,0x0C,0x1E,0x73,0x71,0x18,0x08,0x00,0x00,0x20,0x30,0x1C,0x9C,0xF0,0x60,0x00,
  1052. /*-- 文字: % --*/
  1053. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1054. 0x18,0x3C,0x24,0x3D,0x1B,0x06,0x0C,0x00,0x00,0x60,0xC0,0xB0,0x78,0x48,0x78,0x30,
  1055. /*-- 文字: & --*/
  1056. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1057. 0x00,0x0D,0x1F,0x12,0x1E,0x0C,0x00,0x00,0x00,0xE0,0xF0,0x10,0x90,0xE0,0xF0,0x90,
  1058. /*-- 文字: ' --*/
  1059. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1060. 0x00,0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1061. /*-- 文字: ( --*/
  1062. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1063. 0x00,0x00,0x03,0x0F,0x1C,0x10,0x00,0x00,0x00,0x00,0xE0,0xF8,0x1C,0x04,0x00,0x00,
  1064. /*-- 文字: ) --*/
  1065. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1066. 0x00,0x00,0x10,0x1C,0x0F,0x03,0x00,0x00,0x00,0x00,0x04,0x1C,0xF8,0xE0,0x00,0x00,
  1067. /*-- 文字: * --*/
  1068. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1069. 0x00,0x01,0x05,0x07,0x03,0x07,0x05,0x01,0x00,0x00,0x40,0xC0,0x80,0xC0,0x40,0x00,
  1070. /*-- 文字: + --*/
  1071. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1072. 0x00,0x01,0x01,0x07,0x07,0x01,0x01,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,
  1073. /*-- 文字: , --*/
  1074. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1075. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x3C,0x38,0x00,0x00,
  1076. /*-- 文字: - --*/
  1077. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1078. 0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1079. /*-- 文字: . --*/
  1080. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1081. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x00,0x00,
  1082. /*-- 文字: / --*/
  1083. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1084. 0x00,0x00,0x00,0x01,0x07,0x1E,0x18,0x00,0x00,0x18,0x78,0xE0,0x80,0x00,0x00,0x00,
  1085. /*-- 文字: 0 --*/
  1086. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1087. 0x00,0x00,0x0F,0x1F,0x10,0x16,0x1F,0x0F,0x00,0x00,0xE0,0xF0,0xD0,0x10,0xF0,0xE0,
  1088. /*-- 文字: 1 --*/
  1089. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1090. 0x00,0x04,0x04,0x0C,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x00,
  1091. /*-- 文字: 2 --*/
  1092. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1093. 0x00,0x0C,0x1C,0x10,0x11,0x1F,0x0E,0x00,0x00,0x30,0x70,0xD0,0x90,0x10,0x10,0x00,
  1094. /*-- 文字: 3 --*/
  1095. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1096. 0x00,0x0C,0x1C,0x11,0x11,0x1F,0x0E,0x00,0x00,0x60,0x70,0x10,0x10,0xF0,0xE0,0x00,
  1097. /*-- 文字: 4 --*/
  1098. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1099. 0x00,0x00,0x1F,0x1F,0x00,0x07,0x07,0x00,0x00,0xC0,0xC0,0x40,0x40,0xF0,0xF0,0x40,
  1100. /*-- 文字: 5 --*/
  1101. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1102. 0x00,0x1F,0x1F,0x11,0x11,0x11,0x10,0x00,0x00,0x10,0x10,0x10,0x30,0xE0,0xC0,0x00,
  1103. /*-- 文字: 6 --*/
  1104. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1105. 0x00,0x03,0x07,0x1E,0x1A,0x13,0x01,0x00,0x00,0xE0,0xF0,0x10,0x10,0xF0,0xE0,0x00,
  1106. /*-- 文字: 7 --*/
  1107. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1108. 0x00,0x10,0x10,0x11,0x17,0x1E,0x18,0x00,0x00,0x00,0x70,0xF0,0x80,0x00,0x00,0x00,
  1109. /*-- 文字: 8 --*/
  1110. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1111. 0x00,0x0E,0x1F,0x13,0x11,0x1F,0x0E,0x00,0x00,0xE0,0xF0,0x10,0x90,0xF0,0xE0,0x00,
  1112. /*-- 文字: 9 --*/
  1113. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1114. 0x00,0x0F,0x1F,0x10,0x10,0x1F,0x0F,0x00,0x00,0x00,0x90,0xB0,0xF0,0xC0,0x80,0x00,
  1115. /*-- 文字: : --*/
  1116. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1117. 0x00,0x00,0x00,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x00,0x00,
  1118. /*-- 文字: ; --*/
  1119. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1120. 0x00,0x00,0x00,0x06,0x06,0x06,0x00,0x00,0x00,0x00,0x00,0x34,0x3C,0x38,0x00,0x00,
  1121. /*-- 文字: < --*/
  1122. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1123. 0x00,0x01,0x03,0x06,0x0C,0x18,0x10,0x00,0x00,0x00,0x80,0xC0,0x60,0x30,0x10,0x00,
  1124. /*-- 文字: = --*/
  1125. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1126. 0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
  1127. /*-- 文字: > --*/
  1128. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1129. 0x00,0x10,0x18,0x0C,0x06,0x03,0x01,0x00,0x00,0x10,0x30,0x60,0xC0,0x80,0x00,0x00,
  1130. /*-- 文字: ? --*/
  1131. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1132. 0x00,0x0C,0x1C,0x11,0x13,0x1E,0x0C,0x00,0x00,0x00,0x00,0xB0,0xB0,0x00,0x00,0x00,
  1133. /*-- 文字: @ --*/
  1134. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1135. 0x0F,0x1F,0x10,0x11,0x13,0x12,0x1F,0x0F,0xE0,0xF0,0x10,0x90,0xD0,0x50,0xD0,0xD0,
  1136. /*-- 文字: A --*/
  1137. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1138. 0x00,0x07,0x0F,0x18,0x18,0x0F,0x07,0x00,0x00,0xF0,0xF0,0x80,0x80,0xF0,0xF0,0x00,
  1139. /*-- 文字: B --*/
  1140. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1141. 0x00,0x1F,0x1F,0x11,0x11,0x1F,0x0E,0x00,0x00,0xF0,0xF0,0x10,0x10,0xF0,0xE0,0x00,
  1142. /*-- 文字: C --*/
  1143. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1144. 0x00,0x0F,0x1F,0x10,0x10,0x1C,0x0C,0x00,0x00,0xE0,0xF0,0x10,0x10,0x70,0x60,0x00,
  1145. /*-- 文字: D --*/
  1146. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1147. 0x00,0x1F,0x1F,0x10,0x18,0x0F,0x07,0x00,0x00,0xF0,0xF0,0x10,0x30,0xE0,0xC0,0x00,
  1148. /*-- 文字: E --*/
  1149. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1150. 0x00,0x1F,0x1F,0x11,0x11,0x11,0x10,0x00,0x00,0xF0,0xF0,0x10,0x10,0x10,0x10,0x00,
  1151. /*-- 文字: F --*/
  1152. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1153. 0x00,0x1F,0x1F,0x11,0x11,0x11,0x10,0x00,0x00,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,
  1154. /*-- 文字: G --*/
  1155. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1156. 0x00,0x0F,0x1F,0x10,0x10,0x1C,0x0C,0x00,0x00,0xE0,0xF0,0x10,0x90,0xF0,0xF0,0x00,
  1157. /*-- 文字: H --*/
  1158. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1159. 0x00,0x1F,0x1F,0x01,0x01,0x1F,0x1F,0x00,0x00,0xF0,0xF0,0x00,0x00,0xF0,0xF0,0x00,
  1160. /*-- 文字: I --*/
  1161. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1162. 0x00,0x00,0x10,0x1F,0x1F,0x10,0x00,0x00,0x00,0x00,0x10,0xF0,0xF0,0x10,0x00,0x00,
  1163. /*-- 文字: J --*/
  1164. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1165. 0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x00,0x00,0x60,0x70,0x10,0x10,0xF0,0xE0,0x00,
  1166. /*-- 文字: K --*/
  1167. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1168. 0x00,0x1F,0x1F,0x01,0x07,0x1E,0x18,0x00,0x00,0xF0,0xF0,0x00,0xC0,0xF0,0x30,0x00,
  1169. /*-- 文字: L --*/
  1170. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1171. 0x00,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x10,0x10,0x10,0x10,0x00,
  1172. /*-- 文字: M --*/
  1173. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1174. 0x00,0x1F,0x1F,0x04,0x03,0x04,0x1F,0x1F,0x00,0xF0,0xF0,0x00,0x80,0x00,0xF0,0xF0,
  1175. /*-- 文字: N --*/
  1176. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1177. 0x00,0x1F,0x1F,0x06,0x03,0x01,0x1F,0x1F,0x00,0xF0,0xF0,0x00,0x00,0x80,0xF0,0xF0,
  1178. /*-- 文字: O --*/
  1179. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1180. 0x00,0x0F,0x1F,0x10,0x10,0x1F,0x0F,0x00,0x00,0xE0,0xF0,0x10,0x10,0xF0,0xE0,0x00,
  1181. /*-- 文字: P --*/
  1182. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1183. 0x00,0x1F,0x1F,0x11,0x11,0x1F,0x0E,0x00,0x00,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,
  1184. /*-- 文字: Q --*/
  1185. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1186. 0x00,0x0F,0x1F,0x10,0x10,0x1F,0x0F,0x00,0x00,0xE0,0xF0,0x10,0x18,0xFC,0xE4,0x00,
  1187. /*-- 文字: R --*/
  1188. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1189. 0x00,0x1F,0x1F,0x11,0x11,0x1F,0x0E,0x00,0x00,0xF0,0xF0,0x00,0x80,0xF0,0x70,0x00,
  1190. /*-- 文字: S --*/
  1191. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1192. 0x00,0x0C,0x1E,0x13,0x11,0x18,0x08,0x00,0x00,0x20,0x30,0x10,0x90,0xF0,0x60,0x00,
  1193. /*-- 文字: T --*/
  1194. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1195. 0x00,0x10,0x10,0x1F,0x1F,0x10,0x10,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x00,0x00,
  1196. /*-- 文字: U --*/
  1197. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1198. 0x00,0x1F,0x1F,0x00,0x00,0x1F,0x1F,0x00,0x00,0xE0,0xF0,0x10,0x10,0xF0,0xE0,0x00,
  1199. /*-- 文字: V --*/
  1200. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1201. 0x00,0x1F,0x1F,0x00,0x00,0x1F,0x1F,0x00,0x00,0xC0,0xE0,0x30,0x30,0xE0,0xC0,0x00,
  1202. /*-- 文字: W --*/
  1203. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1204. 0x00,0x1F,0x1F,0x00,0x03,0x00,0x1F,0x1F,0x00,0x80,0xF0,0x70,0x80,0x70,0xF0,0x80,
  1205. /*-- 文字: X --*/
  1206. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1207. 0x00,0x18,0x1C,0x07,0x03,0x1C,0x18,0x00,0x00,0x70,0xF0,0x00,0x80,0xF0,0x70,0x00,
  1208. /*-- 文字: Y --*/
  1209. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1210. 0x00,0x1E,0x1F,0x01,0x01,0x1F,0x1E,0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x00,0x00,
  1211. /*-- 文字: Z --*/
  1212. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1213. 0x00,0x10,0x10,0x11,0x13,0x1E,0x1C,0x00,0x00,0x70,0xF0,0x90,0x10,0x10,0x10,0x00,
  1214. /*-- 文字: [ --*/
  1215. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1216. 0x00,0x00,0x1F,0x1F,0x10,0x10,0x00,0x00,0x00,0x00,0xFE,0xFE,0x02,0x02,0x00,0x00,
  1217. /*-- 文字:  --*/
  1218. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1219. 0x00,0x18,0x1E,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0x78,0x18,0x00,
  1220. /*-- 文字: ] --*/
  1221. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1222. 0x00,0x00,0x10,0x10,0x1F,0x1F,0x00,0x00,0x00,0x00,0x02,0x02,0xFE,0xFE,0x00,0x00,
  1223. /*-- 文字: ^ --*/
  1224. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1225. 0x00,0x10,0x30,0x60,0x60,0x30,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1226. /*-- 文字: _ --*/
  1227. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1228. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
  1229. /*-- 文字: ` --*/
  1230. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1231. 0x00,0x00,0x40,0x60,0x70,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1232. /*-- 文字: a --*/
  1233. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1234. 0x00,0x00,0x04,0x04,0x04,0x07,0x03,0x00,0x00,0x60,0xF0,0x90,0x90,0xF0,0xF0,0x00,
  1235. /*-- 文字: b --*/
  1236. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1237. 0x00,0x1F,0x1F,0x04,0x04,0x07,0x03,0x00,0x00,0xF0,0xF0,0x10,0x10,0xF0,0xE0,0x00,
  1238. /*-- 文字: c --*/
  1239. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1240. 0x00,0x03,0x07,0x04,0x04,0x06,0x02,0x00,0x00,0xE0,0xF0,0x10,0x10,0x30,0x20,0x00,
  1241. /*-- 文字: d --*/
  1242. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1243. 0x00,0x03,0x07,0x04,0x04,0x1F,0x1F,0x00,0x00,0xE0,0xF0,0x10,0x10,0xF0,0xF0,0x00,
  1244. /*-- 文字: e --*/
  1245. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1246. 0x00,0x03,0x07,0x04,0x04,0x07,0x03,0x00,0x00,0xE0,0xF0,0x90,0x90,0x90,0x80,0x00,
  1247. /*-- 文字: f --*/
  1248. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1249. 0x00,0x01,0x0F,0x1F,0x11,0x11,0x11,0x00,0x00,0x00,0xF0,0xF0,0x00,0x00,0x00,0x00,
  1250. /*-- 文字: g --*/
  1251. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1252. 0x00,0x03,0x07,0x04,0x04,0x07,0x07,0x00,0x00,0xE2,0xF2,0x12,0x12,0xFE,0xFC,0x00,
  1253. /*-- 文字: h --*/
  1254. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1255. 0x00,0x1F,0x1F,0x04,0x04,0x07,0x03,0x00,0x00,0xF0,0xF0,0x00,0x00,0xF0,0xF0,0x00,
  1256. /*-- 文字: i --*/
  1257. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1258. 0x00,0x04,0x04,0x37,0x37,0x00,0x00,0x00,0x00,0x10,0x10,0xF0,0xF0,0x10,0x10,0x00,
  1259. /*-- 文字: j --*/
  1260. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1261. 0x00,0x00,0x04,0x04,0x37,0x37,0x00,0x00,0x00,0x02,0x02,0x02,0xFE,0xFC,0x00,0x00,
  1262. /*-- 文字: k --*/
  1263. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1264. 0x00,0x1F,0x1F,0x00,0x01,0x07,0x06,0x00,0x00,0xF0,0xF0,0x80,0xC0,0x70,0x30,0x00,
  1265. /*-- 文字: l --*/
  1266. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1267. 0x00,0x10,0x10,0x1F,0x1F,0x00,0x00,0x00,0x00,0x10,0x10,0xF0,0xF0,0x10,0x10,0x00,
  1268. /*-- 文字: m --*/
  1269. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1270. 0x00,0x07,0x07,0x04,0x07,0x04,0x07,0x03,0x00,0xF0,0xF0,0x00,0xE0,0x00,0xF0,0xF0,
  1271. /*-- 文字: n --*/
  1272. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1273. 0x00,0x07,0x07,0x04,0x04,0x07,0x03,0x00,0x00,0xF0,0xF0,0x00,0x00,0xF0,0xF0,0x00,
  1274. /*-- 文字: o --*/
  1275. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1276. 0x00,0x03,0x07,0x04,0x04,0x07,0x03,0x00,0x00,0xE0,0xF0,0x10,0x10,0xF0,0xE0,0x00,
  1277. /*-- 文字: p --*/
  1278. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1279. 0x00,0x07,0x07,0x04,0x04,0x07,0x03,0x00,0x00,0xFE,0xFE,0x10,0x10,0xF0,0xE0,0x00,
  1280. /*-- 文字: q --*/
  1281. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1282. 0x00,0x03,0x07,0x04,0x04,0x07,0x07,0x00,0x00,0xE0,0xF0,0x10,0x10,0xFE,0xFE,0x00,
  1283. /*-- 文字: r --*/
  1284. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1285. 0x00,0x07,0x07,0x01,0x02,0x06,0x06,0x00,0x00,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,
  1286. /*-- 文字: s --*/
  1287. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1288. 0x00,0x03,0x07,0x04,0x04,0x04,0x04,0x00,0x00,0x10,0x90,0x90,0x90,0xF0,0x60,0x00,
  1289. /*-- 文字: t --*/
  1290. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1291. 0x00,0x04,0x1F,0x1F,0x04,0x04,0x04,0x00,0x00,0x00,0xE0,0xF0,0x10,0x10,0x10,0x00,
  1292. /*-- 文字: u --*/
  1293. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1294. 0x00,0x07,0x07,0x00,0x00,0x07,0x07,0x00,0x00,0xE0,0xF0,0x10,0x10,0xF0,0xF0,0x00,
  1295. /*-- 文字: v --*/
  1296. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1297. 0x00,0x07,0x07,0x00,0x00,0x07,0x07,0x00,0x00,0xC0,0xE0,0x30,0x30,0xE0,0xC0,0x00,
  1298. /*-- 文字: w --*/
  1299. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1300. 0x00,0x07,0x07,0x00,0x03,0x00,0x07,0x07,0x00,0xC0,0xF0,0x30,0xC0,0x30,0xF0,0xC0,
  1301. /*-- 文字: x --*/
  1302. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1303. 0x00,0x06,0x07,0x01,0x01,0x07,0x06,0x00,0x00,0x30,0x70,0xC0,0xC0,0x70,0x30,0x00,
  1304. /*-- 文字: y --*/
  1305. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1306. 0x00,0x07,0x07,0x00,0x00,0x07,0x07,0x00,0x02,0xE2,0xF2,0x16,0x1C,0xF8,0xE0,0x00,
  1307. /*-- 文字: z --*/
  1308. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1309. 0x00,0x04,0x04,0x04,0x05,0x07,0x06,0x00,0x00,0x30,0x70,0xD0,0x90,0x10,0x10,0x00,
  1310. /*-- 文字: { --*/
  1311. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1312. 0x00,0x00,0x01,0x0F,0x1E,0x10,0x00,0x00,0x00,0x80,0xC0,0x78,0x3C,0x04,0x00,0x00,
  1313. /*-- 文字: | --*/
  1314. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1315. 0x00,0x00,0x00,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0x00,0x00,0x00,
  1316. /*-- 文字: } --*/
  1317. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1318. 0x00,0x00,0x10,0x1E,0x0F,0x01,0x00,0x00,0x00,0x00,0x04,0x3C,0x78,0xC0,0x80,0x00,
  1319. /*-- 文字: ~ --*/
  1320. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1321. 0x0C,0x18,0x10,0x18,0x0C,0x04,0x0C,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1322. /*-- 文字:  --*/
  1323. /*-- Fixedsys12; 此字体下对应的点阵为:宽 x 高=8x16 --*/
  1324. 0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,
  1325. };

么问题

更多回帖

发帖
×
20
完善资料,
赚取积分