找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1268|回复: 1
收起左侧

我的这个程序总是出现一些看不懂的问题。怎么调啊 求帮助

[复制链接]
ID:313631 发表于 2018-4-22 12:27 | 显示全部楼层 |阅读模式
主程序

  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4. #include"GPS.H"                 
  5. #include"LCD.H"
  6. #include"DISPLAY.H"

  7. char  xdata rev_buf[80]; //接收缓存
  8. uchar xdata rev_start=0; //接收开始标志
  9. uchar xdata rev_stop=0; //接收停止标志
  10. uchar xdata gps_flag=0; //GPS处理标志
  11. uchar xdata change_page=0; //换页显示标志
  12. uchar xdata num=0;

  13.         void Uart_Init(void)
  14.         {
  15.                 TMOD=0x21;//0010 0001
  16.                 PCON=0X00;
  17.                 TH0=0x3c;
  18.                 TL0=0xb0;
  19.                 TH1=0xFA;//1111 1010
  20.                 TL1=0xFA;//1111 1010
  21.                 TR1=1; //开启定时器1
  22.                 REN=1; //允许接收数据
  23.                 SM0=0;
  24.                 SM1=1;


  25.                 TI=0;
  26.                 RI=0;
  27.                 EA=1;//开总中断
  28.                 ES=1;//串口1中断允许
  29.                 ET0=1;//定时器1中断允许
  30.         }
  31.         void main(void)//主函数
  32.         {
  33.                 uchar error_num=0;
  34.                 Lcd_Init();//初始化LCD
  35.                 GPS_Init();//初始化GPS
  36.                 rev_stop=0;
  37.                 REV_NO;
  38.                 while(1)
  39.                 {
  40.                         if(rev_stop) //如果接收完一行
  41.                         {
  42.                                 TR0=1; //开启定时器
  43.                                 REV_YES;
  44.                                 if(GPS_RMC_Parse(rev_buf,&GPS)) //解析GPRMC
  45.                                 {
  46.                                         RMC_YES;
  47.                                         GPS_DisplayOne(); //显示GPS信息
  48.                                         error_num=0;
  49.                                         gps_flag=0;
  50.                                         rev_stop=0;
  51.                                 }
  52.                                 else
  53.                                 {
  54.                                         error_num++;
  55.                                         if(error_num>=20) //如果数据无效超过20次
  56.                                         {
  57.                                                 RMC_NO;
  58.                                                 error_num=20;
  59.                                                 GPS_Init();         //返回初始化
  60.                                           }   
  61.                                    gps_flag=0;   
  62.                              rev_stop=0;  
  63.                             REV_NO;   
  64.                                  }
  65.                         }
  66.                 }  
  67.          void timer0(void)interrupt 1
  68.           {
  69.                    static uchar count=0;
  70.              TH0=0x3c;
  71.                  TL0=0xb0;
  72.                  count++;
  73.                  if(count==200)  //2*5秒钟
  74.                  {  
  75.                           count=0;
  76.                            change_page++;  //换页  
  77.                     if(change_page==10)  
  78.                         change_page=0;
  79.                 }  
  80.         }  
  81.         void Uart_Receive(void)interrupt 2
  82.         {
  83.            uchar ch;
  84.            ES=0;
  85.            if(RI)
  86.                 {  
  87.                    ch = SBUF;  
  88.                    if ((ch==')&&(gps_flag==0))  //如果收到字符‘,便开始接收
  89.                         {
  90.                             rev_start=1;
  91.                                 rev_stop=0;
  92.                         }
  93.                   if(rev_start==1)  //标志位为1,开始接收
  94.                         {   
  95.                                   rev_buf[num++]=ch;  //字符存到数组中
  96.                                   if(ch=='\n')     //如果接收到换行
  97.                                    {   
  98.                                     rev_buf[num]='\0';
  99.                                         rev_start=0;
  100.                                         rev_stop=1;
  101.                                         gps_flag=1;
  102.                                         num=0;
  103.                                 }
  104.                         }
  105.                 }  
  106.                         RI=0;  //RI清0,重新接收
  107.                         ES=1;
  108.           }
  109.         }         


  110. LCD



  111.          #ifndef    _LCD_H_
  112.         #define    _LCD_H_        
  113.          


  114.          #include"LCD.H"

  115.                         void clr_screen()
  116.                         {
  117.                                 Lcd_WriteCmd(0x34); //扩充指令操作
  118.                                 delay(5);
  119.                                 Lcd_WriteCmd(0x30); //基本指令操作
  120.                                 delay(5);
  121.                                 Lcd_WriteCmd(0x01); //清屏
  122.                                  delay(5);
  123.                         }  
  124.                         void Lcd_WriteCmd(uchar cmd)
  125.                         {                        
  126.                                 LCD_RS=0;
  127.                                 LCD_RW=0;
  128.                                 LCD_EN=0;
  129.                                 _nop_();
  130.                                 _nop_();
  131.                                 P0 = cmd;
  132.                                 DelayNOP();
  133.                                 LCD_EN=1;
  134.                                 DelayNOP();
  135.                                 LCD_EN=0;
  136.                         }
  137.                         void Lcd_WriteDat(uchar dat)
  138.                         {
  139.                         LCD_RS = 1;
  140.                         LCD_RW = 0;
  141.                         LCD_EN = 0;
  142.                         P0 = dat;
  143.                         DelayNOP();
  144.                         LCD_EN = 1;
  145.                         DelayNOP();
  146.                         LCD_EN = 0;
  147.                         }
  148.                         void Lcd_Init(void)
  149.                         {
  150.                         Lcd_PSB = 1; //并口方式
  151.                         Lcd_WriteCmd(0x34); //扩充指令操作
  152.                         delay(5);
  153.                         Lcd_WriteCmd(0x30); //基本指令操作
  154.                         delay(5);
  155.                         Lcd_WriteCmd(0x0C);//显示开,关光标
  156.                         delay(5);
  157.                         Lcd_WriteCmd(0x01);//清除LCD的显示内容
  158.                         delay(5);
  159.                 }                        
  160.                 void Lcd_SetPos(uchar X,uchar Y)
  161.                 {
  162.                         uchar pos;
  163.                         if(X==0)
  164.                         {X=0x80;}
  165.                         else if(X==1)
  166.                         {X=0x90;}
  167.                         else if(X==2)
  168.                         {X=0x88;}
  169.                         else if (X==3)
  170.                         {X=0x98;}
  171.                         pos = X+Y ;
  172.                         Lcd_WriteCmd(pos); //显示地址
  173.                 }
  174.                 void Lcd_DispLine(uchar line, uchar pos, uchar *str)
  175.                  {
  176.                         int i = 0;
  177.                         Lcd_SetPos(line, pos);
  178.                         while (str[i] != '\0')
  179.                         {
  180.                                 Lcd_WriteDat(str[i]);
  181.                                 i++;
  182.                         }
  183.                 }

  184.          


  185. GPS





  186.                   #ifndef    _GPS_H_
  187.                 #define    _GPS_H_               
  188.         
  189.         
  190.         
  191.         #include "GPS.h"
  192.           #include "LCD.h"
  193.           #include <string.h>



  194.     uchar code init1[] = {"GPS 显示终端  "};
  195.     uchar code init3[] = {"GPS 初始化......"};
  196.         uchar code init4[] = {"搜索定位卫星...."};

  197.          static uchar GetComma(uchar num,char *str);
  198.          static double Get_Double_Number(char *s);
  199.          static float Get_Float_Number(char *s);
  200.          static void UTC2BTC(DATE_TIME *GPS);

  201.                 void GPS_Init(void)
  202.         {
  203.                 Lcd_DispLine(0,0, init1);
  204.                 Lcd_DispLine(1,0, init3);
  205.                 Lcd_DispLine(2,0, init4);
  206.         }
  207.         int GPS_RMC_Parse(char *line,GPS_INFO*GPS)
  208.         {
  209.         uchar ch, status, tmp;
  210.         float lati_cent_tmp, lati_second_tmp;
  211.         float long_cent_tmp, long_second_tmp;
  212.         char *buf = line;
  213.         ch = buf[5];
  214.         status = buf[GetComma(2, buf)];
  215.         if (ch == 'C')    //如果第五个字符是 C , ($GPRMC)
  216.         {
  217.                 if (status == 'A') //如果数据有效,则分析
  218.                 {
  219.                         GPS-> NS = buf[GetComma(4, buf)];
  220.                         GPS_EW = buf[GetComma(6, buf)];
  221.                         GPS->latitude = Get_Double_Number(&buf[GetComma(3,buf)]);
  222.                         GPS->longitude = Get_Double_Number(&buf[GetComma(5,buf)]);


  223.                         GPS->latitude_Degree = (int)GPS->latitude/100; //分离纬度
  224.                         lati_cent_tmp = (GPS->latitude - GPS->latitude_Degree * 100);
  225.                         GPS->latitude_Cent = (int)lati_cent_tmp;
  226.                         lati_second_tmp = (lati_cent_tmp - GPS->latitude_Cent) * 60;
  227.                          GPS->latitude_Second = (int)lati_second_tmp;


  228.                         GPS->longitude_Degree = (int)GPS->longitude/100; //分离经度
  229.                         long_cent_tmp = (GPS->longitude - GPS->longitude_Degree * 100);
  230.                         GPS->longitude_Cent = (int)long_cent_tmp;
  231.                         long_second_tmp = (long_cent_tmp - GPS->longitude_Cent) * 60;
  232.                          GPS->longitude_Second = (int)long_second_tmp;


  233.                         GPS->D.hour = (buf[7] - '0') * 10 + (buf[8] - '0');//时间
  234.                         GPS->D.minute = (buf[9] - '0') * 10 + (buf[10] - '0');
  235.                         GPS->D.second = (buf[11] - '0') * 10 + (buf[12] - '0');
  236.                         tmp = GetComma(9, buf);

  237.                         GPS->D.day = (buf[tmp + 0] - '0') * 10 + (buf[tmp + 1] - '0'); //日期
  238.                         GPS->D.month = (buf[tmp + 2] - '0') * 10 + (buf[tmp + 3] - '0');
  239.                         GPS->D.year = (buf[tmp + 4] - '0') * 10 + (buf[tmp + 5] - '0')+2000;
  240.                          UTC2BTC(&GPS->D);
  241.                         return 1;
  242.                 }
  243.         }
  244.         return 0;
  245.         }
  246. int GPS_GGA_Parse(char *line,GPS_INFO *GPS)
  247. {
  248.         uchar ch, status;
  249.         char *buf = line;
  250.         ch = buf[4];
  251.         status = buf[GetComma(2, buf)];
  252.         if (ch == 'G') //$GPGGA
  253.         {
  254.         if (status != ',')
  255.                 {
  256.                         return 1;
  257.                 }
  258.         }
  259.         return 0;
  260. }
  261. static float Str_To_Float(char *buf)
  262. {
  263.         float rev = 0;
  264.         float dat;
  265.         int integer = 1;
  266.         char *str = buf;
  267.         int i;
  268.         while(*str != '\0')
  269.         {
  270.                 switch(*str)
  271.                 {
  272.                         case '0':
  273.                                 dat = 0;
  274.                                 break;
  275.                         case '1':
  276.                                 dat = 1;
  277.                                 break;
  278.                         case '2':
  279.                                 dat = 2;
  280.                                 break;
  281.                         case '3':
  282.                                 dat = 3;
  283.                                 break;
  284.                          case '4':
  285.                                 dat = 4;
  286.                                 break;
  287.                         case '5':
  288.                                 dat = 5;
  289.                                 break;
  290.                         case '6':
  291.                                 dat = 6;
  292.                                 break;
  293.                         case '7':
  294.                                 dat = 7;
  295.                                 break;
  296.                         case '8':
  297.                                 dat = 8;
  298.                                 break;
  299.                         case '9':
  300.                                 dat = 9;
  301.                                 break;
  302.                         case '.':
  303.                                 dat = '.';
  304.                                 break;
  305.                 }        
  306.            if(dat == '.')
  307.                 {
  308.                         integer = 0;
  309.                         i = 1;
  310.                         str ++;
  311.                         continue;
  312.                 }
  313.                 if( integer==1 )
  314.                 {
  315.                         rev = rev*10 + dat;
  316.                  }
  317.                         else
  318.                         {
  319.                         rev = rev + dat/(10 * i);
  320.                         i = i * 10 ;
  321.                         }
  322.                         str ++;
  323.                    }
  324.                         return rev;
  325.                 }
  326.                 static float Get_Float_Number(char *s)
  327.                 {
  328.                         char buf[10];
  329.                         uchar i;
  330.                         float rev;
  331.                         i=GetComma(1, s);
  332.                         i = i-1;
  333.                         strncpy(buf, s, i);
  334.                         buf[i] = 0;
  335.                         rev=Str_To_Float(buf);
  336.                         return rev;
  337.                 }
  338. static double Str_To_Double(char *buf)
  339.   {
  340.    double rev = 0;
  341.         double dat;
  342.         int integer = 1;
  343.         char *str = buf;
  344.         int i;
  345.         while(*str != '\0')
  346.         {
  347.                 switch(*str)
  348.                 {
  349.                         case '0':
  350.                                 dat = 0;
  351.                                 break;
  352.                         case '1':
  353.                                 dat = 1;
  354.                                 break;
  355.                          case '2':
  356.                                 dat = 2;
  357.                                 break;
  358.                         case '3':
  359.                                 dat = 3;
  360.                                 break;
  361.                          case '4':
  362.                                 dat = 4;
  363.                                 break;
  364.                         case '5':
  365.                                 dat = 5;
  366.                                 break;
  367.                         case '6':
  368.                                 dat = 6;
  369.                                 break;
  370.                         case '7':
  371.                                 dat = 7;
  372.                                 break;
  373.                         case '8':
  374.                                 dat = 8;
  375.                                 break;
  376.                         case '9':
  377.                                 dat = 9;
  378.                                 break;
  379.                         case '.':
  380.                                 dat = '.';
  381.                                 break;
  382.                 }
  383.                 if(dat == '.')
  384.                 {
  385.                         integer = 0;
  386.                         i = 1;
  387.                         str ++;
  388.                         continue;
  389.                 }
  390.                 if( integer == 1 )
  391.                 {
  392.                         rev = rev * 10 + dat;
  393.                  }
  394.                         else
  395.                         {
  396.                         rev = rev + dat/(10 * i);
  397.                          i = i * 10 ;
  398.                         }
  399.                         str ++;
  400.                         }
  401.                         return rev;
  402.                 }               
  403.                         static double Get_Double_Number(char *s)
  404.                          {
  405.                         char buf[10];
  406.                         uchar i;
  407.                         double rev;
  408.                         i=GetComma(1, s);
  409.                         i = i - 1;
  410.                         strncpy(buf, s, i);
  411.                         buf[i] = 0;
  412.                         rev=Str_To_Double(buf);
  413.                         return rev;
  414.                         }
  415.                         static uchar GetComma(uchar num,char *str)
  416.                          {
  417.                                 uchar i,j = 0;
  418.                                 int len=strlen(str);
  419.                                 for(i = 0;i < len;i ++)
  420.                                 {
  421.                                         if(str[i] == ',')
  422.                                                 j++;
  423.                                         if(j==num)
  424.                                                 return i + 1;
  425.                                 }
  426.                                 return 0;
  427.                         }
  428.                         static void UTC2BTC(DATE_TIME *GPS)
  429.                          {
  430.                                 GPS->second ++;
  431.                                 if(GPS->second > 59)
  432.                                 {
  433.                                         GPS->second = 0;
  434.                                         GPS->minute ++;
  435.                                         if(GPS->minute > 59)
  436.                                         {
  437.                                                 GPS->minute = 0;
  438.                                                 GPS->hour ++;
  439.                                         }
  440.                                 }
  441.                                         GPS->hour = GPS->hour + 8;
  442.                                         if(GPS->hour > 23)
  443.                                         {
  444.                                                 GPS->hour -= 24;
  445.                                                 GPS->day += 1;
  446.                                                 if(GPS->month==2||
  447.                                                 GPS->month==4||
  448.                                                 GPS->month==6||
  449.                                                 GPS->month==9||
  450.                                                 GPS->month==11)
  451.                                                 {
  452.                                                 if(GPS->day>30)
  453.                                                         {
  454.                                                                 GPS->day=1;
  455.                                                                 GPS->month++;
  456.                                                         }
  457.                                                         }
  458.                                                         else
  459.                                            {
  460.                                            if(GPS->day > 31)
  461.                                                         {
  462.                                                         GPS->day = 1;
  463.                                                         GPS->month ++;
  464.                                                         }
  465.                                                 }
  466.                                 if(GPS->year % 4 == 0 )
  467.                                 {
  468.                                         if(GPS->day > 29 && GPS->month == 2)
  469.                                          {
  470.                                                 GPS->day = 1;
  471.                                                 GPS->month ++;
  472.                                         }
  473.                                 }
  474.                                 else
  475.                            {
  476.                                         if(GPS->day > 28 &&GPS->month == 2)
  477.                                          {
  478.                                                 GPS->day = 1;
  479.                                                 GPS->month ++;
  480.                                         }
  481.                                 }
  482.                                 if(GPS->month > 12)
  483.                                 {
  484.                                         GPS->month -= 12;
  485.                                         GPS->year ++;
  486.                                 }
  487.                         }
  488.                 }
  489.                 void Int_To_Str(int x,char *Str)
  490.                 {
  491.                         int;
  492.                         char *Ptr.Buf[5];
  493.                         int i = 0;
  494.                         Ptr = Str;
  495.                         if(x < 10) // 当整数小于 10时 , 转化为 "0x" 的格式
  496.                         {
  497.                                 *Ptr ++ = '0';
  498.                                 *Ptr ++ = x+0x30;
  499.                         }
  500.                         else
  501.                         {
  502.                                 while(x > 0)
  503.                                 {
  504.                                         t = x % 10;
  505.                                         x = x / 10;
  506.                                         Buf[i++] = t+0x30; // 通过计算把数字转化成 ASCII 码形式
  507.                                  }
  508.                                  i -- ;
  509.                                 for(;i >= 0;i --) // 将得到的字符串倒序
  510.                                         {
  511.                                         *(Ptr++) = Buf[i];
  512.                                         }
  513.                                 }
  514.                                 *Ptr = '\0';
  515.                         }

  516.                  

  517.          #endif
  518.                



  519. 显示模块


  520.                     #ifndef _DISPLAY_H_
  521.                 #define _DISPLAY_H_

  522.                 #include "DISPLAY.H"


  523. uchar code beiwei[] = "北纬 ";
  524. uchar code nanwei[] = "南纬 ";
  525. uchar code dongjing[] = "东经 ";
  526. uchar code xijing[] = "西经 ";
  527. uchar code date[] = " 年 月 日 ";
  528. void Show_Float(float fla, uchar x, uchar y);

  529. void GPS_DispTime(void)
  530. {
  531.         uchar i = 0;
  532.         uchar ch;
  533.         char time[5];
  534.         Lcd_DispLine(0, 0, date); //年月日;
  535.         Int_To_Str(GPS.D.year,time); //将年转换成字符串,存在 time 中
  536.          Lcd_SetPos(0, 0); //设置显示地址
  537.         if(strlen(time)==4) //判断接收数据是否有效,有效则显示
  538.         {
  539.         i = 0;
  540.         while(time[i]!= '\0')
  541.         {
  542.                 ch = time[i++];
  543.                 Lcd_WriteDat(ch); //显示年
  544.         }
  545.         }
  546. Int_To_Str(GPS.D.month,time);
  547. Lcd_SetPos(0, 3);
  548. if(strlen(time)==2)
  549.   {
  550.           i = 0;
  551.         while(time[i]!= '\0')
  552.         {
  553.         ch =time[i++];
  554.         Lcd_WriteDat(ch);
  555.         }
  556.         }
  557. Int_To_Str(GPS.D.day,time);
  558. Lcd_SetPos(0, 5);
  559. if(strlen(time)==2)
  560. {
  561.         i = 0;
  562.         while(time[i]!= '\0')
  563.         {
  564.                 ch =time[i++];
  565.                 Lcd_WriteDat(ch);
  566.         }
  567. }
  568.         Int_To_Str(GPS.D.hour,time);
  569.         Lcd_SetPos(1, 1);
  570.         if(strlen(time)==2)
  571. {
  572.         i = 0;
  573.         while(time[i] != '\0')
  574.         {
  575.                 ch =time[i++];
  576.                 Lcd_WriteDat(ch);
  577.         }
  578. }
  579. Lcd_WriteDat('');
  580. Lcd_WriteDat(':');

  581. Int_To_Str(GPS.D.minute,time);
  582.   Lcd_SetPos(1, 3);
  583.         if(strlen(time)==2)
  584. {
  585.         i = 0;
  586.         while(time[i]!= '\0')
  587.         {
  588.                 ch =time[i++];
  589.                 Lcd_WriteDat(ch);
  590.         }
  591. }
  592. Lcd_WriteDat(' ');
  593. Lcd_WriteDat(':');
  594. Int_To_Str(GPS.D.second,time);
  595. Lcd_SetPos(1, 5);
  596.         if(strlen(time)==2)
  597.         {
  598.         i = 0;
  599.         while(time[i]!= '\0')
  600.         {
  601.                 ch =time[i++];
  602.                 Lcd_WriteDat(ch);
  603.         }
  604.         }
  605. }        
  606. void GPS_DisplayOne(void)
  607. {
  608.         uchar ch, i;
  609.         char info[10];
  610.         ET0=0;
  611.         clr_screen();
  612.         Lcd_WriteCmd(0x01); //清屏
  613.         GPS_DispTime(); //显示日期,时间
  614.          if (GPS.NS == 'N') //判断是北纬还是南纬
  615.                   Lcd_DispLine(2, 0, beiwei);
  616.         else if(GPS.NS == 'S')
  617.                 Lcd_DispLine(2, 0, nanwei);
  618.         if (GPS.EW == 'E') //判断是东经还是西经
  619.                  Lcd_DispLine(3, 0, dongjing);
  620.         else if (GPS.EW == 'W')
  621.                 Lcd_DispLine(3, 0, xijing);
  622.         Int_To_Str(GPS.latitude_Degree,info); //纬度
  623.         if(strlen(info)==2)
  624.          {                                 //只有正常显示纬度,才显示纬分
  625.           i = 0;
  626.         while(info[i] != '\0')
  627.         {
  628.                 ch = info[i++];
  629.                 Lcd_WriteDat(ch);
  630.         }
  631. Lcd_WriteDat(' ');
  632. Lcd_WriteDat(' ');
  633. Lcd_WriteDat(0xA1);
  634. Lcd_WriteDat(0xE3);
  635. Int_To_Str(GPS.latitude_Cent,info); //纬分
  636. if(strlen(info)==2)
  637. {       //只有正常显示纬分,才显示纬秒
  638. i = 0;
  639. while(info[i]!= '\0')
  640. {
  641.         ch = info[i++];
  642.         Lcd_WriteDat(ch);
  643. }
  644. Lcd_WriteDat(0xA1);
  645. Lcd_WriteDat(0xE4);
  646. Int_To_Str(GPS.latitude_Second,info); //纬秒
  647. if(strlen(info)==2)
  648. {
  649.         i = 0;
  650.         while(info[i]!='\0')
  651.         {
  652.                 ch = info[i++];
  653.                 Lcd_WriteDat(ch);
  654.         }
  655.    }
  656.    }
  657.    }
  658. Int_To_Str(GPS.longitude_Degree,info); //经度
  659. if(strlen(info)==3)
  660. {     //只有正常显示经度,才显示经分
  661. Lcd_DispLine(3, 2, info);
  662. Lcd_WriteDat(' ');
  663. Lcd_WriteDat(0xA1);
  664. Lcd_WriteDat(0xE3);
  665. Int_To_Str(GPS.longitude_Cent,info); //经分
  666. if(strlen(info)==2)
  667. {                             //只有正常显示经度,才显示经分
  668. Lcd_DispLine(3, 5, info);
  669. Lcd_WriteDat(0xA1);
  670. Lcd_WriteDat(0xE4);
  671. Int_To_Str(GPS.longitude_Second,info); //经秒
  672. if(strlen(info)==2)
  673.         {                                                   //只有正常显示经分,才显示经秒
  674.                  Lcd_DispLine(3, 7, info);
  675.         }
  676.         }
  677. }
  678. ET0=1;
  679. }
  680. void Show_Float(float fla, uchar x, uchar y)
  681. {
  682.         int integar;
  683.         char Info[10],ch;
  684.         uchar i;
  685.         Lcd_SetPos(x, y);
  686.         integar = (int)fla;
  687.         Int_To_Str(fla,Info); //显示整数部分
  688.         i = 0;
  689.         while(Info[i]!='\0')
  690.         {
  691.                 ch=Info[i++];
  692.                 Lcd_WriteDat(ch);
  693.         }
  694.         Lcd_WriteDat('.'); //显示小数点
  695.         fla = fla-integar; //显示小数部分
  696.         fla = fla*10; // 显示 0.1
  697.         integar = (int)fla;
  698.         fla = fla - integar; // 改变 fla 的值 , 使 fla 总是小于 1
  699.         ch = integar + 0x30;
  700.         Lcd_WriteDat(ch);
  701.         fla = fla*10;  // 显示 0.01
  702.         integar = (int)fla;
  703.         fla = fla - integar; // 改变 fla 的值 , 使 fla 总是小于 1
  704.         ch = integar + 0x30 ;
  705.         Lcd_WriteDat(ch);
  706. }         
  707.    #endif        
复制代码
回复

使用道具 举报

ID:303383 发表于 2018-4-22 13:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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