本系統由AT89C51單片機、DS18B20溫度檢測部分、DS1302日期時間記錄部分、數碼管顯示部分、按鍵輸入部分和蜂鳴器報警部分組成。該系統通過按鍵一來調整模式,共五個模式。模式一是DS18B20采集環境溫度并保存在存儲器中通過單片機將溫度顯示在數碼管上,當溫度低于下限或高于上限時蜂鳴器報警;模式二是利用按鍵二和按鍵三調整報警的最高溫度加減;模式三是利用按鍵二和按鍵三調整報警的最低溫度加減;模式四是DS1302記錄的日期通過單片機顯示在數碼管上;模式五是DS1302記錄的時間通過單片機顯示在數碼管上。
仿真原理圖如下
單片機源程序如下:
#include #include"intrins.h" #define uchar unsigned char #define uint unsigned int sbit dula = P2^0; //數碼管引腳定義 sbit wela = P2^1; sbit DQ = P2^2; // sbit key1 = P2^5; sbit key2 = P2^6; sbit key3 = P2^7; sbit buzz = P2^3; sbit led = P3^7; sbit RST=P1^0; sbit DSIO=P1^1; sbit SCLK=P1^2; //定義ds1302使用的IO口 int bai,shi,ge; uchar fuhao,flag; uint ff,Hff=50,Lff=10; uchar count=0,t100ms=0,t500ms,t1s,t2s; uchar cishu=0; uchar jiange=0; uchar biaozhi1=0; //由低于下限到高于下限標志 uchar biaozhi2=0; //有高于上限到低于上限標志 uchar biaozhi3=0; //2s長鳴標志 uchar biaozhi4=0; uchar TIMEBCD[7] = {0x00, 0x00, 0x12, 0x1, 0x01, 0x01, 0x18}; //存儲順序是秒分時日月周年,存儲格式是用BCD碼 uchar TIME[7] = {0}; //十進制時間 //DS1302時鐘初始化2018年1月1日星期一12點00分00秒。 uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c}; //DS1302寫入和讀取時分秒的地址命令(最低位控制讀寫) unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f, 0x6f}; unsigned char code table1[]={ 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87, 0xff, 0xef}; unsigned char code tablefu[]={ 0x40, 0x76 , 0x38 , 0x39 }; //數碼管符號 - H L C /*延時函數*/ void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=114;j>0;j--); } /*****溫度延時*****/ void Delaywendu(int num) { while(num--) ; } /*****初始化DS18B20*****/ void Init_DS18B20() { DQ = 1; //DQ復位 Delaywendu(8); //稍做延時 DQ = 0; //單片機將DQ拉低 Delaywendu(80); //精確延時,大于480us DQ = 1; //拉高總線 Delaywendu(40); } /*****讀一個字節*****/ uchar ReadOneChar() { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) { DQ = 0; // 給脈沖信號 dat>>=1; DQ = 1; // 給脈沖信號 if(DQ) dat|=0x80; Delaywendu(4); } return(dat); } /*****寫一個字節*****/ void WriteOneChar(uchar dat) { uchar i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; Delaywendu(5); DQ = 1; dat>>=1; } } /*****讀取溫度*****/ uint ReadTemperature() { uint a=0,b=0; int temp=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 1100 1100 WriteOneChar(0x44); //啟動溫度轉換 0100 0100 Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器 1011 1110 a=ReadOneChar(); //讀低8位 b=ReadOneChar(); //讀高8位 temp=b; temp<<=8; temp=temp|a; if(temp&0xf800) { temp=~temp+1; fuhao=1; } else fuhao=0; tt=temp*0.0625; temp=tt*10+0.5; //放大10倍輸出并四舍五入 return(temp); } /*****讀取溫度*****/ void check_wendu() { uint f; f=ReadTemperature(); //獲取溫度值并減去DS18B20的溫漂誤差 ff=f; bai=f/100; shi=f %100/10; ge= f%10; } /****讀設定值*****/ void check_v_set(int v_set) { int bb; bb=v_set*10; bai=bb/100; shi=bb %100/10; ge= bb %10; } /*****顯示溫度子程序*****/ void display() { P0=0xff; wela=1; P0=0xfb; wela=0; dula=1; P0=table[bai]; dula=0; delayms(5); P0=0xff; wela=1; P0=0xf7; wela=0; dula=1; P0=table1[shi]; dula=0; delayms(5); P0=0xff; wela=1; P0=0xef; wela=0; dula=1; P0=table[ge]; dula=0; delayms(5); P0=0xff; wela=1; P0=0xdf; wela=0; dula=1; P0=tablefu[3]; dula=0; delayms(5); } void keyscan() { if(key1==0) { delayms(5); if(key1==0) { flag++; if(flag==5) flag=0; while(!key1); } } } int keyad(int num) { if(flag!=0) { if(key2==0) { delayms(5); if(key2==0) { num++; while(!key2); } } if(key3==0) { delayms(5); if(key3==0) { num--; while(!key3); } } } return num; } /**************************************************************/ /**************************日歷計時部分************************/ void Ds1302Write(uchar addr, uchar dat) //向DS1302發送命令(地址+數據) { uchar n; RST = 0; _nop_(); SCLK = 0;//先將SCLK置低電平。 _nop_(); RST = 1; //然后將RST(CE)置高電平。 _nop_(); for (n=0; n<8; n++)//開始傳送八位地址命令 { DSIO = addr & 0x01;//數據從低位開始傳送 addr >>= 1;
上一篇:ESP8266無線18B20溫度手機接收有源代碼和開源
下一篇:51單片機控制LCD12864顯示漢字
推薦閱讀
史海拾趣
除了在工業控制和汽車領域取得顯著成就外,Futaba還將其技術延伸至休閑娛樂領域。公司開發的遙控飛機、車、船等產品,憑借其先進的無線遙控技術和卓越的性能表現,成為戶外休閑運動的熱門選擇。特別是2.4G接收機的推出,進一步豐富了Futaba的產品線,滿足了不同消費者的需求。在航模遙控器市場中,Futaba憑借其獨特的技術優勢和品牌影響力,占據了重要地位。這一領域的拓展不僅為公司帶來了新的增長點,還進一步提升了Futaba在全球電子行業中的知名度和影響力。
為了進一步拓展業務,ABI Electronics公司開始積極尋求全球市場的布局。通過與各地的電子分銷商、代理商建立合作關系,ABI的產品逐漸進入了全球各地的市場。同時,ABI還積極參加各類國際電子展會,展示其最新技術和產品,與全球同行建立了廣泛的聯系和合作。
在環保意識日益增強的今天,Alpha Industries積極響應綠色生產的號召。公司利用電子技術優化生產流程,減少能源消耗和廢棄物排放。此外,Alpha Industries還推出了采用環保材料制成的軍事服裝系列,以實際行動踐行綠色環保理念。這些舉措不僅有助于提升公司的社會形象,也為公司的可持續發展奠定了堅實基礎。
這些故事展示了Alpha Industries如何在電子技術的推動下,不斷創新并適應市場變化,進而在相關領域取得顯著發展。盡管這些故事并未直接涉及電子行業的核心業務,但它們卻充分體現了Alpha Industries在技術創新和市場拓展方面的積極努力和取得的成果。
在電子行業競爭日益激烈的背景下,GI通過一系列的戰略并購和整合,進一步鞏固了其市場地位。公司精心挑選并收購了多家具有技術實力和市場潛力的企業,通過資源整合和優勢互補,實現了技術、產品和市場的全面升級。這些并購不僅為GI帶來了更多的技術專利和市場份額,還為其在未來的競爭中奠定了更加堅實的基礎。
在追求經濟效益的同時,Box Enclosures公司也積極履行社會責任。公司注重環保和可持續發展,采用環保材料和節能技術生產產品。同時,公司還積極參與公益事業,為社會做出貢獻。這種對社會責任的承擔和綠色發展的理念,使得Box Enclosures公司贏得了社會的認可和尊重。
以上是關于Box Enclosures公司發展的5個虛構故事,雖然這些故事是基于虛構的,但它們可能反映了Box Enclosures公司在實際發展中可能遇到的一些情況和挑戰。
隨著市場經濟的高速發展,中國IT業步入了一個人才稀缺的時代。作為最被看好的熱門專業,其迅猛發展有目共睹,從而導致IT人才的培養速度無法跟上IT行業的發展,每年的人才缺口就達數百萬人。為了在激烈的就業競爭中占領一席之地,減小就業壓力, ...… 查看全部問答∨ |
wince下串口問題,平時數據傳輸正常,但鼠標反復點擊移動有時就會使串口數據錯誤,或者是界面切換時。我感覺是系統忙了有時會影響串口讀取。波特率的57600,不算很高吧?緩沖區我也設置的很大了。數據沒有丟失,只是出現錯誤。例如我發送端發的全是 ...… 查看全部問答∨ |
我在編譯、鏈接EVC程序時出現如下錯誤,不知如何解決,請高手指點,謝謝! (1)error C2011: \'_CPs_FileInfo\' : \'struct\' type redefinition (2)error C2440: \'=\' : cannot convert from \'void (__cdecl *)(struct _CPs_CoDecModule *) ...… 查看全部問答∨ |
前些天有朋友和我討論,"感覺TI的M3在網上討論的不多",下面是我的一些看法: 原來luminary平臺比較小,所以當年zlg想把它推廣起來,難度肯定是相當大的,這里面不只是技術問題,還涉及到渠道、產能、服務、信任、品牌等諸多因素,而在這方面l ...… 查看全部問答∨ |
Can\'t Run Target CPU: Can\'t write to data memory 0x950, check memory config [-2184] Can\'t Run Target CPU: Can\'t write to data memory 0x951, check memory config [-2184] … 查看全部問答∨ |
|
請問STM32F10X_MD和STM32F10X_MD_VL區別 請問STM32F10X_MD_VL和STM32F10X_MD有什么區別啊,網上查了查,有如下說明 cl:互聯型產品,stm32f105/107系列vl:超值型產品,stm32f100系列xl:超高密度產品,stm32f101/103系列ld:低密度產品,FLASH小于64Kmd:中等密度產品,FLASH=64 ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 04:04 編輯 本人是新手,將要參加比賽,請問各位好友有哪些性能比較好的集成運放啊,我之前用過LM324 … 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 有獎直播 | 德州儀器基于 Arm 的 AM62 處理器簡介
- 最后一周:免費獲取Pasternack《RF產品選型指南》2018 印刷版!
- 有獎直播|如何借助Mentor Xpedition AMS對汽車CAN總線進行仿真優化分析?
- 如何用3個關鍵步驟,來確保下一代設計安全性,深入解讀嵌入式設備DeepCover加密控制器,看視頻答題贏好禮!
- 好書共讀:《硬件設計指南:從器件認知到手機基帶設計》
- 【預約有禮】全球測量圈大咖直播:驗證5G核心網,確保最佳性能
- 中秋“國宴“ :拍攝板卡上的國產元器件,抽開心小禮品
- Keysight教你如何提高測試精度,答對問題還有禮品相送,速速參與!
- TI 培訓推薦有禮活動
- 【分享成長,10月有獎】EEWORLD優秀主題/回復第15期活動開始啦!!!