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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

DS18B20高精度溫度測(cè)量C程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:76127 發(fā)表于 2015-4-5 01:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

顯示現(xiàn)在的室內(nèi)溫度是:26度(在這里要感謝"科美圖--黃工,印制板做得很好!)
很高興經(jīng)過7天的調(diào)試,我的溫度測(cè)量程序終于成功了,經(jīng)過本次溫度測(cè)量硬件的設(shè)計(jì)和軟件的設(shè)計(jì),我有一點(diǎn)心得和大家一同分享!
1、              作為單片機(jī)智能電子產(chǎn)品的開發(fā),首先要撐握電子硬件的設(shè)計(jì),在硬件設(shè)計(jì)中要對(duì)所使用的單片機(jī)特點(diǎn)進(jìn)行綜合了解,怎么良好地去配合傳感器工作是設(shè)計(jì)的重點(diǎn);
2、              當(dāng)我們確認(rèn)好硬件正確后就進(jìn)入到軟件開發(fā)設(shè)計(jì),在軟件開發(fā)過程中會(huì)出現(xiàn)非常多的問題,如晶振的偏差在時(shí)序上的影響,用軟件延時(shí)和定時(shí)器延時(shí)的效果在C語言上有著相當(dāng)大的計(jì)算偏差;對(duì)于時(shí)序性很強(qiáng)的單總線I2C器件,最好采用定時(shí)器進(jìn)行最小1微秒的精確時(shí)間延時(shí),從而提高了時(shí)間的較強(qiáng)的可控性也提高了成功的概率。如果你一定要用軟件延時(shí)的話,那你手上最好要有臺(tái)“示波器”,C語言編譯后的時(shí)間誤差讓我在這個(gè)溫度測(cè)量程序上走了很多的彎路,用軟件進(jìn)行時(shí)間防真時(shí),延時(shí)時(shí)間是15微秒,然而當(dāng)一用示波器來測(cè)量時(shí)卻可能達(dá)到了30微秒或者10微秒,對(duì)于“I2C協(xié)議”則是非常大的誤差了,注定不能成功。
3、              硬件設(shè)計(jì)確認(rèn)了調(diào)試仍不成功的,不要一味的懷疑是硬件有問題,或者說花大量時(shí)間去找硬件問題;因?yàn)閱栴}根本不是在硬件上。當(dāng)我調(diào)這款程序時(shí)怎么調(diào)都沒有反映,就連CPU不能識(shí)別有傳感器存在,讓我郁悶了幾天!結(jié)果靈機(jī)一動(dòng),想到試驗(yàn)室有一臺(tái)RIGOL/100MHZ的示波器,然后將程序分解成若干個(gè)功能段分批調(diào)試,終于發(fā)現(xiàn)是延時(shí)不準(zhǔn)確造成的。
4、              盡信書等于沒書;這個(gè)程序讓我真正的體會(huì)到了這一點(diǎn)!我在做這個(gè)項(xiàng)目的時(shí)間最初是參考書上的程序來寫,但是怎么也調(diào)不成功,百思不得其解啊!暈!!!!程序?qū)懙脹]有任何的語法錯(cuò)誤啊!Keil軟件也通過了編譯沒有錯(cuò)誤!但還是不行??最終當(dāng)我將程序分段進(jìn)行防真時(shí)發(fā)現(xiàn)書上的程序還是寫錯(cuò)了,他錯(cuò)在語句的時(shí)序上有問題,當(dāng)然Keil軟件是不能發(fā)現(xiàn)這個(gè)錯(cuò)誤的,因?yàn)?font face="Times New Roman">Keil軟件只能發(fā)現(xiàn)語法上的錯(cuò)誤,而不能發(fā)現(xiàn)語句時(shí)序安排上的錯(cuò)誤。
5、              在寫程序調(diào)試中,軟件編寫者應(yīng)該對(duì)硬件電路結(jié)構(gòu)了解,不要你做你的硬件,我做我的軟件大家互不相干!一個(gè)智能電子產(chǎn)品,是硬件和軟件的結(jié)晶,少了誰都不能統(tǒng)一!在設(shè)計(jì)軟件的功能時(shí),應(yīng)盡量將程序簡(jiǎn)單化,需要觀察的變量或輸出觀察的變量,最好先用8LED指示燈來顯示,這樣不僅可能看到有沒有數(shù)據(jù)的變化,而且還可以通過LED位顯示來自己計(jì)算數(shù)據(jù)是不是自己想要的東東!如果是的話,恭喜你,你的程序調(diào)試好一段了喲!
6、              我認(rèn)為單片機(jī)學(xué)習(xí)者還是要先學(xué)習(xí)匯編語言,然后再升華到C語言!對(duì)于這兩種語言我是深有體會(huì)的,當(dāng)你學(xué)會(huì)C語言那再學(xué)VB語言就輕松得很。初學(xué)時(shí)應(yīng)該要了解單片機(jī)內(nèi)部的結(jié)構(gòu),如ROM是什么意思,有什么作用;RAM是什么意思,有什么作用等等;然后用匯編指令時(shí)行一步步的編寫程序;匯編語言的特點(diǎn)是必須對(duì)單片機(jī)內(nèi)部結(jié)構(gòu)很了解才能針對(duì)性的開發(fā)程序,而且精度是很高的,因?yàn)閰R編語言的編程方式用一個(gè)小例子來說明:如平時(shí)我們計(jì)算2*10=20,我們一下就心算出來了;但用匯編語言呢它是這樣算的:2+2+2一直加10個(gè)2等于20,也就是用了10步才完成計(jì)算的,這樣你就要寫10步程序;而C語言的算法就和我們?nèi)艘粯樱徊礁愣ǎ坏?font face="Times New Roman">C語言時(shí)卻不如匯編來的精確,因而對(duì)于一個(gè)程序高手來說采用混編的辦法來設(shè)計(jì)程序,又用C又用匯編用到極致!
             最后!通過大量的設(shè)計(jì)和編程,我的第一塊單片機(jī)開發(fā)板終于問世了!!!我的開發(fā)板上面的功能如下:
1)、在線ISP下載程序;
2)、USB接口下載和電源二合一功能;
3)、LCD1602液晶顯示(漂亮的藍(lán)色底白色字喲!)
4)、32個(gè)I/O口全部擴(kuò)展,讓您想怎么用就怎么用;
5)、三位紅字?jǐn)?shù)碼管顯示同時(shí)帶小數(shù)點(diǎn);
6)、電磁式蜂嗚器,可以用來作提示音或放音樂喲!
7)、6位帶位選的LED顯示功能,讓你的設(shè)計(jì)調(diào)試不再寂寞;
8)、5個(gè)獨(dú)立按鍵,在電路板上還標(biāo)有箭頭呢,讓你做電子鐘,或調(diào)光程序更直接明了;
9)、一個(gè)EEPROM非易失存儲(chǔ)器,讓你學(xué)會(huì)用I2C協(xié)議;這個(gè)協(xié)議很有用喲!什么照相機(jī)、打印機(jī)、U盤、MP3、數(shù)字收間機(jī)都用這個(gè)協(xié)議呢!你說用處大不大?
10)、一體化紅外接收頭,可以用這個(gè)實(shí)現(xiàn)紅外控制,讓控制電器變得更簡(jiǎn)單;
11)、都用了高品質(zhì)的電子元件,還配了光盤,里面有安裝軟件、教學(xué)程序,一條USB數(shù)據(jù)線,還有送二個(gè)高品質(zhì)的STC單片機(jī)喲!
下面是我寫的室溫測(cè)量程序:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. sbit DQ=P3^7;
  5. sbit D1=P0^1;
  6. sbit D2=P0^2;
  7. sbit D3=P0^3;
  8. uchar code table[]={0x03,0xf3,0x25,0x0d,//0,1,2,3
  9.           0x99,0x49,0x41,0x1b,//4,5,6,7
  10.           0x01,0x09};//8,9,.,段碼表
  11.          
  12. /////////////////////////////////////////////////////////////
  13. void delay(unsigned int us)
  14. {
  15. while(us--);
  16. }
  17. ////////////////////////////////////////////
  18. void reset()// DS18B20復(fù)位OK
  19. {
  20. uchar x=0;
  21. DQ=1;
  22. delay(8);
  23. DQ=0;
  24. delay(330);
  25. DQ=1;
  26. delay(100);
  27. x=DQ;
  28. delay(20);
  29. }
  30. ////////////////////////////////////////////從DS18B20讀一字節(jié)
  31. uchar readbyte()
  32. {
  33. uchar i=0;
  34. uchar dat=0;
  35. for(i=8;i>0;i--)
  36. {
  37.   DQ=0;
  38.   dat>>=1;
  39.   DQ=1;
  40.   if(DQ)
  41.   dat|=0x80;
  42.   delay(28);//41us
  43. }
  44.   return(dat);
  45. }
  46. /////////////////////////////////////////////向DS18B20寫一字節(jié)
  47. void writebyte(unsigned char dat)
  48. {
  49. uchar i=0;
  50. for(i=8;i>0;i--)
  51. {
  52.   DQ=0;
  53.   DQ=dat&0x01;
  54.   delay(8);
  55.   if(DQ==0)
  56.      {
  57.      delay(28);//41us
  58.      DQ=1;
  59.    }
  60.   else
  61.    {
  62.     DQ=1;
  63.     delay(28);//41us
  64.      }
  65.         dat>>=1;
  66. }
  67. }
  68. ////////////////////////////////////////////MCU讀取溫度值
  69. uchar readtemp()
  70. {
  71. uchar a=0;
  72. uchar b=0;
  73. reset();
  74. writebyte(0xcc);
  75. writebyte(0x44);
  76. reset();
  77. writebyte(0xcc);
  78. writebyte(0xbe);
  79. a=readbyte();
  80. b=readbyte();
  81. ////////////////////////
  82. b<<=4;
  83. b+=(a&0xf0)>>4;
  84. return(b);
  85. }
  86. //////////////////////////////////////////顯示程序
  87. void shanshi(uchar dat)
  88. {
  89. uchar a,b;
  90. a=dat/10;
  91. b=dat%10;
  92. D1=0;
  93. P1=table[a];
  94. delay(60);
  95.   D1=1;
  96. /////////////////
  97. D2=0;
  98.   P1=table[b];
  99. delay(60);
  100. D2=1;
  101. }
  102. ////////////////////////////////////////////主函數(shù)
  103. void main()
  104. {
  105. uchar temp;

  106. while(1)
  107. {
  108.   temp=readtemp();
  109.   shanshi(temp);
  110.    delay(100);
  111. }
  112. }
復(fù)制代碼








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

使用道具 舉報(bào)

沙發(fā)
ID:82175 發(fā)表于 2015-6-6 10:23 | 只看該作者
make an effort
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产在线精品一区二区三区 | 91资源在线观看 | 国产高清视频一区 | 精品美女 | 欧美久久一级特黄毛片 | 成人欧美一区二区三区色青冈 | 国产三级网站 | 国产成人综合久久 | 涩涩视频大全 | 九九久久国产 | 亚洲一区不卡在线 | 亚洲精品久久久一区二区三区 | 中文字幕在线看第二 | 亚洲欧美激情精品一区二区 | 欧美视频在线播放 | 九色91视频 | 精品国产伦一区二区三区观看方式 | 亚洲福利一区 | 欧美一区二区三区视频在线观看 | 成人在线视频看看 | www.日韩欧美 | 亚洲成人av一区二区 | 亚洲 欧美 另类 综合 偷拍 | 国产精品视频偷伦精品视频 | 久草a√ | 日韩精品在线视频免费观看 | 国产丝袜一区二区三区免费视频 | 91久久国产综合久久 | 国产成人高清成人av片在线看 | 91在线影院 | 亚洲一二三在线 | 精品久久国产 | 国产sm主人调教女m视频 | 久久久久国产精品www | 欧美一级二级在线观看 | 婷婷久久五月 | 国产黄色免费网站 | 久久亚洲二区 | 日本久久综合网 | 国产在线观看一区二区 | 操射视频|