久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3389|回復: 4
打印 上一主題 下一主題
收起左側

為什么定義了一個結構體過后1602上面就有一個亂碼

[復制鏈接]
跳轉到指定樓層
樓主
26.8后面的亂碼和字符都是定義了一個結構體過后才有的 ,之前都沒有。
#include <reg52.h>
#include<stdlib.h>
#include<intrins.h>

extern bit Start18B20();
extern bit Get18B20Temp(int *temp);
extern void InitLcd1602();
extern void LcdShowStr(unsigned char *str);
extern void LcdSetCursor(unsigned char addr);
extern void LcdWriteDat(unsigned char dat);
extern void LcdWriteCmd(unsigned char del);
extern void  keyscan();
extern unsigned char key,flag1;
unsigned char a[7];
/**************************************************************就是這個結構體*****/
struct        _pid{
float SV;//用戶設定溫度
float PV; //測量溫度
float KP; //比例常數
float T;  //PID計算周期--采樣周期
float TI;        //積分常數
float TD;         //微分常數               
float EK;  //本次偏差
float EK_1;//上次偏差
float SEK; //歷史偏差之和       
float IOUT;//積分輸出
float POUT; //比例輸出
float DOUT;//微分輸出       
float OUT0; //0值輸出
float OUT;        //pid輸出       
unsigned int  C10ms;//判斷是否滿足PID計算時間       
unsigned int  pwmcycle;//pwm周期       
}PID;

void main()
{       
  unsigned char i,e=0;
  unsigned char IntToString(unsigned char *str, int dat);
  unsigned char m;
  unsigned char code table[]={'0','1','2','3','4','5','6','7','8','9', '.','-',':',' ','=','.'};
  bit res;
  int temp;        //讀取到的當前溫度值
  int intT, decT;  //溫度值的整數和小數部分
  unsigned char len;
  unsigned char str[5];
  unsigned char stt[16] = {"T1:"};
  unsigned char sty[16] = {"T2:"};
       
  EA = 1;            //開總中斷
  Start18B20();      //啟動DS18B20
  InitLcd1602();     //初始化液晶
  LcdWriteCmd(0x0C); //關閉光標閃爍

/*實時溫度*/
  while(1)
   {             
       /*顯示實時溫度標識"T1:"*/
    LcdSetCursor(0x00);               
    m = 0;
    while(stt[m] != '\0')
     {                        
       LcdWriteDat(stt[m]);
       m++;
     }
/*顯示設定溫度標識"T2:"*/
        LcdSetCursor(0x40);               
    m = 0;
    while(sty[m] != '\0')
     {                        
       LcdWriteDat(sty[m]);
       m++;
     }         
     res = Get18B20Temp(&temp);  //讀取當前溫度
     if (res)                    //讀取成功時,刷新當前溫度顯示
      {          
        intT = temp >> 4;             //分離出溫度值整數部分
        decT = temp & 0xF;            //分離出溫度值小數部分
        len = IntToString(str, intT); //整數部分轉換為字符串
        str[len++] = '.';             //添加小數點
        decT = (decT*10) / 16;        //二進制的小數部分轉換為1位十進制位
        str[len++] = decT + '0';      //十進制小數位再轉換為ASCII字符
        LcdShowStr(str);        //顯示到液晶屏上
        Start18B20();               
/*設定溫度*/                      
           keyscan();                                  
           if(flag1==1)  
            {
         if(key<11)      //10以下是數字顯示部分  
          {
               LcdSetCursor(0x43+e++) ;
               LcdWriteDat(table[key]);   
               a=table[key];   
               i++;
              }
             else if(key==11)
              {       
               LcdWriteCmd(0x01) ;         //刪除設定值
                   e=0;
               for(i=0;i<7;i++)
               {         
                    a='0';
               }
              }
             flag1=0;        //鍵盤檢測標志置0進行下一次檢測        
             }
                                                       
  }       

}
}   

/* 整型數轉換為字符串,str-字符串指針,dat-待轉換數,返回值-字符串長度 */
unsigned char IntToString(unsigned char *str, int dat)
{
  signed char i = 0;
  unsigned char len = 0;
  unsigned char buf[6];
  if (dat < 0)  //如果為負數,首先取絕對值,并在指針上添加負號
   {
    dat = -dat;
    *str++ = '-';
    len++;
   }
    do
        {          //先轉換為低位在前的十進制數組
     buf[i++] = dat % 10;
     dat /= 10;
    } while (dat > 0);
    len += i;     //i最后的值就是有效字符的個數
    while (i-- > 0)   //將數組值轉換為ASCII碼反向拷貝到接收指針上
    {
     *str++ = buf + '0';
    }
    *str = '\0';  //添加字符串結束符
    return len;   //返回字符串長度
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:187588 發表于 2017-4-10 19:09 | 只看該作者
本帖最后由 a512520a 于 2017-4-10 19:13 編輯

回復

使用道具 舉報

板凳
ID:187588 發表于 2017-4-10 19:10 | 只看該作者
就這個
回復

使用道具 舉報

地板
ID:187588 發表于 2017-4-10 19:12 | 只看該作者
就這個
回復

使用道具 舉報

5#
ID:187588 發表于 2017-4-10 19:13 | 只看該作者
本帖最后由 a512520a 于 2017-4-10 19:15 編輯

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久草网在线视频 | 日韩欧美福利视频 | 在线免费观看成人 | 国产精品久久久久久妇女6080 | 欧美另类视频 | 欧美一区二区三区视频在线观看 | 国产精品一区二区欧美黑人喷潮水 | 美女国内精品自产拍在线播放 | 国产毛片av | 欧美视频在线一区 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 亚洲精品中文字幕在线观看 | 91国内在线观看 | 亚洲欧美日韩精品久久亚洲区 | 久久久久久久国产精品影院 | 91精品一区| av网站免费 | 日本电影韩国电影免费观看 | 午夜精品久久久久久久久久久久久 | 97日日碰人人模人人澡分享吧 | 国产高清一区二区三区 | 日韩欧美在线一区 | 日韩成人免费视频 | 龙珠z国语版在线观看 | 精品毛片视频 | 国产成人免费观看 | 蜜桃久久 | 91九色在线观看 | 日韩一区在线播放 | 国产区一区 | 欧美日韩在线免费观看 | 殴美成人在线视频 | 日韩欧美在线观看 | 一区二区免费高清视频 | 99精品国产一区二区青青牛奶 | 成人免费区一区二区三区 | 久久中文字幕一区 | 伊人久久国产 | 一区二区三区欧美 | 亚洲人成人一区二区在线观看 | 欧美阿v |