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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

哪個大佬能給看看我這單片機熱電偶測溫程序哪里有問題嗎?

[復制鏈接]
跳轉到指定樓層
樓主
ID:522478 發表于 2020-5-6 16:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是個52單片機熱電偶測溫的程序,通過MAX6675轉換溫度數據的。
寫到Proteus仿真里面數碼管就從由往左閃爍,不能穩定顯示,然后讀的數據也不對。求大佬幫忙看看是程序哪里有問題嗎 萬分感謝!
#include "reg52.h"
#include "absacc.h"
#include "math.h"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^0;   //數碼管段選
sbit wei=P2^1;    //數碼管位選
sbit S0=P1^0;    //MAX6675位定義
sbit SCK=P1^1;  //
sbit CS=P1^2;   //
sbit beep=P1^3;  //蜂鳴器位定義
sbit Work=P1^4;  //工作LED燈位定義
uint Re_Convert (void);    //熱電偶溫度轉換
void Disp_temp();           //數碼管顯示
void Baojing();              //蜂鳴器報警
void delay(uchar);    ///延時
uint P_Temp;  
uint wendu,t1;
uint ge,shi,bai,qian;
uchar code tab1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};
uchar code tab2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

void main(void)  //主函數
{
beep=0;
  while(1)
  {
  Disp_temp();
  delay(500);
  Baojing();
  P_Temp=0;
  }   
}

void delay(uchar t)   //延時函數
{
uchar x;
uchar y;
for(x=0;x<t;x++)
for(y=0;y<110;y++);
}

uint Re_Convert()    //熱電偶溫度讀取
{
  uchar i;
  unsigned long P_Temp2;
  CS=1;       //MAX6675溫度轉換
  delay(10);    //
  CS=0;       //MAX6675使能
  delay(1);
  SCK=1;    //
  P_Temp2=0;

  for(i=0;i<16;i++)
  {
  SCK =0;    //拉低電平 給一個時鐘信號
  P_Temp2=P_Temp2<<1;
  if(S0==1)   
   P_Temp2|=0x0001;
  else  
   P_Temp2&=0xffff;
  SCK=1;
  delay(10);
}   
  CS =1;
  return(P_Temp2);  
}
void Baojing(void)   //報警函數
{
  if(t1<=100&&t1>=400)   //溫度小于100大于400報警
  {
   delay(20);
   beep=1;
  }
}
void Disp_temp()   //顯示函數
{
   
  P_Temp=Re_Convert();
  P_Temp=P_Temp<<1;   
  P_Temp=P_Temp>>4;
  t1=P_Temp/4;//P_Temp =(1024*P_Temp)/4096

t1=t1*10;
ge=t1%10;
t1=t1/10;
shi=t1%10;
t1=t1/10;
bai=t1%10;
qian=t1/10;

P0=tab1[ge];  
dula=1;
dula=0;
P0=0x08;
wei=1;
wei=0;
delay(10);

P0=tab2[shi];  
dula=1;
dula=0;
P0=0x04;
wei=1;
wei=0;
delay(10);

P0=tab1[bai];
dula=1;
dula=0;
P0=0x02; //0000 0010
  wei=1;
wei=0;
delay(10);

  P0=tab1[qian];  
  dula=1;
dula=0;
P0=0x01;
  wei=1;
wei=0;
delay(10);
}

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

使用道具 舉報

沙發
ID:213173 發表于 2020-5-7 10:41 | 只看該作者
主要是顯示程序有毛病,掃描周期太長,也沒有消隱。改這樣試試。
  1. #include "reg52.h"
  2. #include "absacc.h"
  3. #include "math.h"
  4. #include <intrins.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. sbit dula=P2^0;   //數碼管段選
  8. sbit wei=P2^1;    //數碼管位選
  9. sbit SO=P1^0;    //MAX6675位定義
  10. sbit SCK=P1^1;  //
  11. sbit CS=P1^2;   //
  12. sbit beep=P1^3;  //蜂鳴器位定義
  13. sbit Work=P1^4;  //工作LED燈位定義
  14. uint Re_Convert (void);    //熱電偶溫度轉換
  15. void Disp_temp();           //數碼管顯示
  16. void Baojing();              //蜂鳴器報警
  17. void delay(uchar);    ///延時
  18. uint P_Temp;  
  19. uint wendu,t1;
  20. uint ge,shi,bai,qian;
  21. uchar code tab1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f};//段碼
  22. uchar code tab2[]={0x08,0x04,0x02,0x01};//位碼
  23. uchar tab3[4];//顯示緩存
  24. void main(void)  //主函數
  25. {
  26.         beep=0;
  27.         while(1)
  28.         {
  29.                 Disp_temp();
  30.                 Baojing();
  31.                 P_Temp=0;
  32.         }   
  33. }

  34. void delay(uchar t)   //延時函數
  35. {
  36. uchar x;
  37. uchar y;
  38. for(x=0;x<t;x++)
  39. for(y=0;y<110;y++);
  40. }

  41. uint Re_Convert()    //熱電偶溫度讀取
  42. {
  43.         uchar i;
  44.         unsigned long P_Temp2;
  45.         CS=1;       //MAX6675溫度轉換
  46.         _nop_();    //_nop_();
  47.         CS=0;       //MAX6675使能
  48.         _nop_();
  49.         SCK=1;    //
  50.         P_Temp2=0;
  51.        
  52.         for(i=0;i<16;i++)
  53.         {
  54.                 SCK =0;    //拉低電平 給一個時鐘信號
  55.                 P_Temp2=P_Temp2<<1;
  56.                 if(SO==1)   
  57.                         P_Temp2|=0x0001;
  58.                 else  
  59.                         P_Temp2&=0xffff;
  60.                 SCK=1;
  61.                 _nop_();
  62.         }   
  63.         CS =1;
  64.         return(P_Temp2);  
  65. }
  66. void Baojing(void)   //報警函數
  67. {
  68.   if(t1<=100&&t1>=400)   //溫度小于100大于400報警
  69.   {
  70.    delay(20);
  71.    beep=1;
  72.   }
  73. }
  74. void Disp_temp()   //顯示函數
  75. {
  76.         static uchar i=0;
  77.         P_Temp=Re_Convert();
  78.         P_Temp=P_Temp<<1;   
  79.         P_Temp=P_Temp>>4;
  80.         t1=P_Temp/4;                //P_Temp =(1024*P_Temp)/4096       
  81.         t1=t1*10;
  82.         tab3[0]=t1%10;
  83.         tab3[1]=t1/10%10;
  84.         tab3[2]=t1/100%10;
  85.         tab3[3]=t1/1000%10;
  86.        
  87.         P0=0xff;//消隱  
  88.         dula=1;
  89.         dula=0;
  90.         P0=tab2[i];
  91.         wei=1;
  92.         wei=0;
  93.         if(i==1)
  94.                 P0=tab1[tab3[i]]&0x7f; //加小數點
  95.         else
  96.                 P0=tab1[tab3[i]];  
  97.         dula=1;
  98.         dula=0;
  99.         i++;
  100.         i%=4;
  101. }
復制代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99精品久久久97夜夜嗨 | 99精品国产一区二区青青牛奶 | 国产美女视频黄a视频免费 国产精品福利视频 | 欧美啊v在线观看 | 国产精品一区久久久 | 久久久www成人免费无遮挡大片 | 2018天天干天天操 | 欧美精品在线一区二区三区 | 免费一级黄色录像 | 亚洲高清在线观看 | 97久久精品午夜一区二区 | 一级毛片在线看 | 欧美成人精品一区二区三区 | 在线免费观看色 | 国产精品一区二区三区99 | 日日精品 | 国产精品伦一区二区三级视频 | 亚洲综合在线视频 | 欧美性生活一区二区三区 | 国产精品日韩一区二区 | 国产视频黄色 | 天天玩天天干天天操 | 欧美激情在线观看一区二区三区 | 九九热在线视频 | 一区二区三区在线免费看 | 国产日韩欧美 | 在线观看成人小视频 | 婷婷久久精品一区二区 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 国产精品99久久久久久宅男 | 国产精品美女久久久久aⅴ国产馆 | 国产精品一区二区视频 | 91久久精品一区二区二区 | 欧美猛交| 国产日韩欧美在线一区 | 亚洲欧美在线观看 | 国产1区2区3区 | 成人黄色a | 亚洲欧洲日韩 | 一区二区三区亚洲视频 | 成人精品啪啪欧美成 |