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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2726|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

求高手指導(dǎo),關(guān)于51單片機(jī)溫度計(jì)的!!!!!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:98222 發(fā)表于 2015-12-3 21:23 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
程序如下:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define unit unsigned int
sbit din=P1^0;                            //MAX7219數(shù)據(jù)串行輸入端
sbit cs=P1^1;                             //MAX7219數(shù)據(jù)輸入允許端
sbit clk=P1^2;                            //MAX7219時(shí)鐘信號
sbit DQ=P1^5;                             //DS18B20端口DQ
uchar dig;
sbit DIN = P0^7;                          //小數(shù)點(diǎn)
bit  list_flag=0;                         //顯示開關(guān)標(biāo)志
uchar code tab[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,
                  0x70,0x7f,0x7b,0x4E,0x63,0x01,0x00};   //表示不譯方式0~9,0x4E為‘C’;0x63為'.';0x01為'-';0x00為不顯示
uchar data  temp_data[2]={0x00,0x00};
unsigned char data  display[]={0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char code  ditab[]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,
                             0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
void Delay(unit ms)                        //延時(shí)函數(shù)
{
  while(ms--);
}
uchar Init_DS18B20(void)                   //初始化DS18B20
{
   uchar status;
   DQ = 1;                              //DQ復(fù)位
   Delay(8);                            //延時(shí)片刻
   DQ = 0;                              //單片機(jī)將DQ拉低
   Delay(90);         //精確延時(shí) 大于 480us
   DQ = 1;          //拉高總線
   Delay(8);
   status=DQ;         //如果為0,則初始化成功;如果為1,則初始化失敗
   Delay(100);
   DQ = 1;
   return(status);
}
uchar ReadOneByte(void)                    //讀一個(gè)字節(jié)
{
   uchar i=0;
   uchar dat=0;
   for(i=8;i>0;i--)
   {
     DQ=0;                       //給脈沖信號
  dat >>=1;
  DQ=1;                                 //給脈沖信號
  _nop_();
  _nop_();
  if(DQ)
  {
    dat|=0x80;
  }
  Delay(4);
  DQ=1;
   }
   return(dat);
}
void WriteOneByte(uchar dat)              //寫一個(gè)字節(jié)
{
   uchar i=0;
   for(i=8;i>0;i--)
   {
     DQ=0;
  DQ = dat&0x01;
  Delay(5);
  DQ=1;
     dat>>=1;
   }
}
void Read_Temperature(void)              //讀取溫度
{
   if(Init_DS18B20()==1)
      {
        list_flag=1;                        //DS18B20不正常
      }
   else
       {         
      list_flag=0;      
   WriteOneByte(0xCC);    //跳過讀序號列號的操作
   WriteOneByte(0X44);    //啟動(dòng)溫度轉(zhuǎn)換
   Init_DS18B20();
      WriteOneByte(0xCC);    //跳過讀序號列號的操作
   WriteOneByte(0xBE);    //讀取溫度寄存器
   temp_data[0]=ReadOneByte();  //溫度低8位
   temp_data[1]=ReadOneByte();  //溫度高8位
    }
}
void Temperature_trans()                    //溫度值處理
{
   uchar  ng=0;
   if((temp_data[1]&0xF8)==0xF8)
   {
      temp_data[1]=~temp_data[1];
   temp_data[0]=~temp_data[0]+1;
   if(temp_data[0]==0x00)
   {
      temp_data[1]++;
   }
   ng=1;
   }
   display[4]=temp_data[0]&0x0f;
   display[0]=ditab[display[4]];            //查表得小數(shù)位的值
   display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
   display[3]=display[4]/100;
   display[1]=display[4]%100;
   display[2]=display[1]/10;
   display[1]=display[1]%10;
   if(ng==1)                                //溫度為零度以下時(shí)
      {
        display[5]=12;                      //顯示“-”
      }
else
   {
     display[5]=13;                      //不顯示“-”
   }
if(!display[3])                         //高位為0,不顯示
  {
    display[3]=13;
    if(!display[2])                     //次高位為0,不顯示
       display[2]=13;
  }
}     
void write_7219(uchar add,uchar date)       //add為接受MAX7219地址:data為要寫的數(shù)據(jù)
{
     uchar i;
  cs=0;
  for(i=0;i<8;i++)
  {
      clk=0;
   din=add&0x80;                      //按照高位在前,低位在后的順序發(fā)送
   add<<=1;                           //先發(fā)送地址
   clk=1;
  }
  for(i=0;i<8;i++)                       //時(shí)鐘上升沿寫入一位
  {
      clk=0;
   din=date&0x80;
   date<<=1;                          //再發(fā)送數(shù)據(jù)
   clk=1;
  }
  cs=1;
}
void int_7219()
{
     write_7219(0x0c,0x01);     //0x0c 為關(guān)斷模式寄存器;0x01 表示顯示器處于工作狀態(tài)
  write_7219(0x0a,0x0f);     //0x0a 為亮度調(diào)節(jié)寄存器;0x0f 使數(shù)碼管顯示亮度為最亮
  write_7219(0x09,0x00);     //oxo9 為譯碼模式選擇寄存器;0x00為非譯碼方式
  write_7219(0x0b,0x07);     //0x0b 為掃描限制寄存器;0x07 表示可將8個(gè)LED數(shù)碼管
}
void disp_Max7219(uchar dig,uchar date)     //指定位,顯示某一數(shù)
{
   write_7219(dig,date);
}
void main()
{
     init_7219();
  while(1)
  {
     Temperature_trans();
  Read_Temperature();
  if(list_flag==0)
    {
      disp_Max7219(1,tab[display[5]]);
   disp_Max7219(2,tab[display[3]]);
   disp_Max7219(3,tab[display[2]]);
   disp_Max7219(4,tab[display[1]]|0x80);        //|0x80為帶上小數(shù)點(diǎn)
   disp_Max7219(5,tab[display[0]]);
   disp_Max7219(7,tab[11]);
   disp_Max7219(8,tab[10]);
    }
  }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:98222 發(fā)表于 2015-12-3 22:50 | 只看該作者
本帖最后由 電飯煲 于 2015-12-3 22:54 編輯

這是電路圖  ,運(yùn)行后沒顯示,不知道哪里錯(cuò)了                                                                                                                                                                                                      


QQ圖片20151203224813.png (167.41 KB, 下載次數(shù): 36)

電路圖

電路圖
回復(fù)

使用道具 舉報(bào)

板凳
ID:98222 發(fā)表于 2015-12-3 22:52 | 只看該作者
運(yùn)行后就是沒顯示,搞了半天實(shí)在不知道哪里不對
回復(fù)

使用道具 舉報(bào)

地板
ID:98251 發(fā)表于 2015-12-4 00:34 | 只看該作者
我也在做
回復(fù)

使用道具 舉報(bào)

5#
ID:98222 發(fā)表于 2015-12-4 08:59 來自手機(jī) | 只看該作者
2997553568 發(fā)表于 2015-12-4 00:34
我也在做

做好了嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:79544 發(fā)表于 2015-12-4 13:32 | 只看該作者
先寫個(gè)液晶顯示的程序看看電路如何,再查電路或程序
回復(fù)

使用道具 舉報(bào)

7#
ID:98251 發(fā)表于 2015-12-5 10:01 | 只看該作者

沒有,已經(jīng)困擾了好幾天
回復(fù)

使用道具 舉報(bào)

8#
ID:96682 發(fā)表于 2015-12-5 10:26 | 只看該作者
干嘛不用 P0口和P2口驅(qū)動(dòng)數(shù)碼管呢?
回復(fù)

使用道具 舉報(bào)

9#
ID:96682 發(fā)表于 2015-12-5 13:01 | 只看該作者
數(shù)碼管點(diǎn)亮倒是沒問題,只是沒有時(shí)鐘信號這溫度計(jì)探頭沒法開工了。
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久 | www久久99 | 精品国模一区二区三区欧美 | 玖玖国产| 狠狠操天天操 | 91福利网| 久草网站| 高清欧美性猛交xxxx黑人猛交 | 小川阿佐美pgd-606在线 | www.操com| 在线观看深夜视频 | 国产三级精品三级在线观看四季网 | 四虎成人av | 亚洲高清视频一区 | 欧美视频免费在线 | 国产精品一区二区免费 | 成人在线视频一区二区三区 | 一区视频在线免费观看 | 成人影院午夜 | 久久av.com| 18gay男同69亚洲网站 | 99久久精品免费看国产四区 | 亚洲第1页| 婷婷久久精品一区二区 | 99热视| 色吊丝2 | 男女爱爱网站 | 欧美成视频 | 成人av免费播放 | 91超碰caoporn97人人 | 国产乱码精品一区二区三区五月婷 | 国产精品99久久久久久www | 农村真人裸体丰满少妇毛片 | 污污的网站在线观看 | 日韩aⅴ在线观看 | 日本欧美国产在线观看 | 国产色在线 | 日韩福利| 国产精品永久久久久 | 日韩在线中文字幕 | 精品久久久久久久久久久久久久 |