主要亮點:
1.數(shù)碼管使用74HC595作為段選驅(qū)動,為初學(xué)者提供了新的思路
次要亮點:
1.使用小巧的STC15F104W單片機
DS18B20的通信要點在于時序的嚴格對應(yīng),相比之下DHT11這一類的單總線通信時序要求更加寬松。
因為DS18B20算是極為常用的學(xué)習(xí)器件,故不做過多講解,本次作品不涉及搜索BOM、精度調(diào)節(jié)等操作,只是單器件讀取溫度值,數(shù)據(jù)處理將可以顯示的溫度值設(shè)置為-20℃~80℃。 使用4位共陰極數(shù)碼管,顯示無符號位
(事實證明不同器件之間會有差異,讀取的值也會不盡相同)
DS18B20數(shù)據(jù)處理參考普中科技相關(guān)例程
#include
sbit DSPORT=P3^5;//DS18B20管腳定義
#include
#include"DS18B20.c"
sbit S1=P3^4;
sbit S2=P3^3;//數(shù)碼管位選管腳定義
sbit SER=P3^0;
sbit RCLK=P3^1;
sbit SRCLK=P3^2;//74HC595管腳定義
//全局變量表
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//給74HC595的段選值
unsigned char Display_Temperature[4]={0x40,0x40,0x40,0x40};
int Data_temperature=0;
unsigned char t0_cnt=0;
/*##############################################################################################
設(shè)計名稱:基于DS18B20的數(shù)顯溫度計
設(shè)計者:清河
平臺:STC15F104W
硬件部分
數(shù)碼管顯示:位選使用74HC138改為2-4線譯碼、段選使用74HC595減少IO口使用
注意:由于STC15系列采用Y5內(nèi)核,所以有關(guān)DS18B20精準延時部分在移植時應(yīng)首先考慮更換
##############################################################################################*/
void delay(unsigned int cnt)//調(diào)用該函數(shù)進行一段時間的延時
{
while(cnt--);
}
void hc595send(unsigned char dat)//使用SPI向74HC595發(fā)送一個字節(jié)的數(shù)據(jù)
{
unsigned char a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=dat>>7;
dat<<=1;
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void smgdisplay()//數(shù)碼管顯示函數(shù),參數(shù)為需要顯示的數(shù)組
{
unsigned char i;
for(i=0;i<4;i++)
{
switch(i)//位選,選擇點亮的數(shù)碼管
{
case(0):
S1=0;S2=1; break;
case(1):
S1=1;S2=0; break;
case(2):
S1=0;S2=0; break;
case(3):
S1=1;S2=1; break;
}
hc595send(Display_Temperature);
delay(10); //間隔一段時間掃描
hc595send(0x00);//消隱
}
}
void Data_processing()
{
float temperature=0.0;//【03c4】似乎只是一個用于更改值為float類型的中間變量,考慮刪去
int temperature_middle;//為了不更改全局變量中讀取出來的Data_temperature設(shè)置此中轉(zhuǎn)值
if(Data_temperature>0xf000)//當(dāng)溫度值為負數(shù)
{
Display_Temperature[0]=0x40;//顯示符號“-”的段碼
//因為讀取的溫度是實際溫度的補碼,所以減1,再取反求出原碼
temperature_middle=Data_temperature-1;
temperature_middle=~temperature_middle;
temperature=temperature_middle;
temperature_middle=temperature*0.0625*100+0.5;
//留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉(zhuǎn)換為整型的時候把小數(shù)點
//后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
//算加上0.5,還是在小數(shù)點后面。
if(temperature_middle<2000)
{
if(temperature_middle>=1000)
{
Display_Temperature[1]=smgduan[temperature_middle%10000/1000];
Display_Temperature[2]=smgduan[temperature_middle%1000/100]|0x80;
Display_Temperature[3]=smgduan[temperature_middle%100/10];
}
else
{
Display_Temperature[1]=smgduan[temperature_middle%1000/100]|0x80;
Display_Temperature[2]=smgduan[temperature_middle%100/10];
Display_Temperature[3]=smgduan[temperature_middle%10];
}
}
else
{
unsigned char i;
for(i=0;i<4;i++)
{
Display_Temperature=0x40;
}
}
}
else
{
temperature=Data_temperature;//因為數(shù)據(jù)處理有小數(shù)點所以將溫度賦給一個浮點型變量
//如果溫度是正的那么,那么正數(shù)的原碼就是補碼它本身
temperature_middle=(int)(temperature*0.0625*100+0.5);
//留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉(zhuǎn)換為整型的時候把小數(shù)點
//后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
//算加上0.5,還是在小數(shù)點后面。
if(temperature_middle<8000)
{
if(temperature_middle>=1000)
{
Display_Temperature[0]=smgduan[temperature_middle%10000/1000];
Display_Temperature[1]=smgduan[temperature_middle%1000/100]|0x80;
Display_Temperature[2]=smgduan[temperature_middle%100/10];
Display_Temperature[3]=smgduan[temperature_middle%10];
}
else
{
Display_Temperature[0]=0x00;
Display_Temperature[1]=smgduan[temperature_middle/100]|0x80;
Display_Temperature[2]=smgduan[temperature_middle%100/10];
Display_Temperature[3]=smgduan[temperature_middle%10];
}
}
else
{
unsigned char i;
for(i=0;i<4;i++)
{
Display_Temperature=0x40;
}
}
}
}
void sys_init()
{
TH0=0;
TL0=0;
ET0=1;
TR0=1;
EA=1;
}
void main()
{
sys_init();
while(1)
{
smgdisplay();
}
}
void Temperature_Refresh() interrupt 1
{
TL0 = 0x00;
TH0 = 0x28;//5ms初值
if(t0_cnt==10)
{
hc595send(0x00);
Data_temperature=DS18B20_GetTemperature();
Data_processing();
t0_cnt=0;
}
else
{
t0_cnt++;
}
}
由于中斷時的數(shù)據(jù)讀取和處理會占用一部分時間,導(dǎo)致數(shù)碼管有輕微閃爍感,使用者可以考慮將轉(zhuǎn)換精度調(diào)為最低并修改轉(zhuǎn)換等待時間以減少數(shù)碼管的閃爍感,同時別忘記調(diào)一下數(shù)據(jù)處理函數(shù)中對應(yīng)的精度值。
上述程序仍然臃腫,但由于是普通器件的使用,沒有難點,所以也沒有進行優(yōu)化,以完成功能為目的。
上一篇:兩個74HC595驅(qū)動8位數(shù)碼管程序+Proteus仿真
下一篇:單片機籃球比賽計分器設(shè)計方案與程序詳解
推薦閱讀
史海拾趣
HP(Keysight)公司發(fā)展故事
故事一:初創(chuàng)時期的艱辛與突破
HP(惠普)的起源可以追溯到1939年,由威廉·惠普(William Hewlett)和戴維·歐文(David Packard)在美國加州的一個小車庫內(nèi)創(chuàng)立。最初,他們專注于生產(chǎn)音頻振蕩器,這是一種用于測試音頻設(shè)備的設(shè)備。盡管條件簡陋,但憑借過人的技術(shù)和敏銳的市場洞察力,他們的產(chǎn)品很快獲得了市場的認可。這一成功為公司奠定了堅實的基礎(chǔ),也為后續(xù)進入電子儀器和計算機領(lǐng)域鋪平了道路。
故事二:半導(dǎo)體技術(shù)的先驅(qū)
1940年,HP公司開發(fā)出了第一臺采用半導(dǎo)體技術(shù)的電子計算機,這在當(dāng)時是一項革命性的成就。這臺計算機不僅能夠執(zhí)行復(fù)雜的計算任務(wù),還標(biāo)志著HP在半導(dǎo)體技術(shù)領(lǐng)域的領(lǐng)先地位。這一突破不僅為公司贏得了業(yè)界的尊重,也為后續(xù)的微型計算機和個人計算機的發(fā)展奠定了基礎(chǔ)。
故事三:微型計算機市場的開拓者
1960年,HP公司再次引領(lǐng)行業(yè)潮流,開發(fā)出了世界上第一臺商用微型計算機。這臺計算機采用了更小的集成電路,比之前的計算機更加小巧、便宜且易于使用。這一創(chuàng)新不僅降低了計算機的門檻,使得更多人能夠接觸到計算機,也推動了計算機技術(shù)的普及和應(yīng)用。HP在微型計算機市場的成功,進一步鞏固了其在電子行業(yè)的領(lǐng)導(dǎo)地位。
故事四:個人電腦市場的崛起
進入70年代,HP公司開始涉足個人電腦市場。1970年,HP發(fā)布了第一臺商業(yè)個人計算機(PC),這一舉措標(biāo)志著公司正式進入了一個全新的業(yè)務(wù)領(lǐng)域。隨著個人電腦市場的迅速發(fā)展,HP不斷推出新產(chǎn)品,滿足消費者的多樣化需求。從早期的臺式機到后來的筆記本電腦,HP始終保持著技術(shù)領(lǐng)先優(yōu)勢,為用戶帶來更加便捷、高效的計算體驗。
故事五:并購與多元化發(fā)展的戰(zhàn)略
在發(fā)展過程中,HP公司也通過并購等方式不斷拓展業(yè)務(wù)領(lǐng)域。2002年,HP以250億美元收購了康柏(Compaq),這是當(dāng)時科技行業(yè)最大的一筆收購。這次并購不僅增強了HP在個人電腦市場的競爭力,也推動了公司在服務(wù)器、存儲設(shè)備等多個領(lǐng)域的發(fā)展。此外,HP還涉足軟件及服務(wù)等多個領(lǐng)域,成為一個多元化的科技巨頭。通過不斷并購和業(yè)務(wù)拓展,HP在全球科技行業(yè)的地位日益穩(wěn)固。
請注意,雖然問題中提到了Keysight,但Keysight實際上是惠普在2014年從惠普科技公司(HP Inc.)分拆出來的一家獨立公司,專注于電子測量和測試解決方案。因此,上述故事主要圍繞HP(惠普)公司的發(fā)展歷史進行描述,并未直接涉及Keysight公司。
近年來,隨著數(shù)字化技術(shù)的快速發(fā)展,DAYLIGHT公司也積極擁抱數(shù)字化轉(zhuǎn)型。公司加強了與互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等技術(shù)的融合,推出了一系列智能化、數(shù)字化的電子產(chǎn)品和服務(wù)。這些新產(chǎn)品和服務(wù)的推出不僅提升了DAYLIGHT的市場競爭力,也為其未來的發(fā)展奠定了堅實的基礎(chǔ)。同時,DAYLIGHT還積極關(guān)注未來電子行業(yè)的發(fā)展趨勢和技術(shù)創(chuàng)新,為公司的長期發(fā)展制定了明確的戰(zhàn)略規(guī)劃。
請注意,這些故事是基于假設(shè)和一般行業(yè)趨勢虛構(gòu)的,并不代表DAYLIGHT公司的實際發(fā)展歷程。如果您需要更具體的信息,建議直接聯(lián)系DAYLIGHT公司或查閱相關(guān)的行業(yè)資料。
隨著市場競爭的加劇,Chip Supply Micro Devices意識到成本控制的重要性。公司開始著手優(yōu)化供應(yīng)鏈管理,通過引入先進的生產(chǎn)管理系統(tǒng)和自動化設(shè)備,提高了生產(chǎn)效率,降低了生產(chǎn)成本。同時,公司還與供應(yīng)商建立了長期穩(wěn)定的合作關(guān)系,確保了原材料的穩(wěn)定供應(yīng)和優(yōu)質(zhì)品質(zhì)。這些措施使得Chip Supply Micro Devices在價格上具備了競爭優(yōu)勢,進一步提升了市場份額。
在電子行業(yè)的早期,Consolidated Wire公司以其出色的技術(shù)研發(fā)能力嶄露頭角。公司投入大量資源研發(fā)新型導(dǎo)電材料,成功推出了一種具有更高導(dǎo)電性能和更低電阻的新型線材。這一技術(shù)突破不僅提升了電子設(shè)備的性能,還降低了能耗,贏得了市場的廣泛認可。隨著新型線材的普及,Consolidated Wire公司的業(yè)務(wù)規(guī)模迅速擴大,逐漸在電子線材市場占據(jù)了領(lǐng)先地位。
隨著市場的不斷變化,Esico-Triton意識到技術(shù)創(chuàng)新是企業(yè)持續(xù)發(fā)展的關(guān)鍵。于是,在XXXX年代初,公司投入大量資源進行技術(shù)研發(fā)。經(jīng)過不懈的努力,他們成功開發(fā)出了一種新型的集成電路,大大提高了電子設(shè)備的性能和穩(wěn)定性。這項技術(shù)的突破使得Esico-Triton的產(chǎn)品在市場上更具競爭力,并贏得了眾多重要客戶的青睞。
請教幾道英文的模電專業(yè)題目 Which is the physical state of a MOS transistor which is switched on? ²Accumulation ²Cut-off ²Strong inversion Statement i): The small signal output resistance of a MOS transi ...… 查看全部問答∨ |
小弟是新手,現(xiàn)在遇到兩個問題,向各位大俠請教。 目前我在玩一個ARM-linux的開發(fā)板,根文件系統(tǒng)是jffs2,掛在mtdblk2,我想把它換成yaffs2。 第一個問題: 啟動后我把mtdblk3以yaffs2的方式掛載的/mnt目錄,然后把 ...… 查看全部問答∨ |
我是大三學(xué)生,大一時學(xué)的c語言,現(xiàn)在avr單片機剛剛學(xué)過,現(xiàn)在才知道c語言編程對單片機的應(yīng)用是多么重要!但由于當(dāng)時c語言學(xué)的不怎么好,所以現(xiàn)在對用c語言編程非常迷茫。所以希望大家能幫幫我,我真的很喜歡單片機....哪位高手能指點一下或推薦點 ...… 查看全部問答∨ |
|
師兄們留下來的資料,保證每本書都是精挑細選出來的,送給有需要的朋友們,祝你們早日成功! 還有一本個人覺得比較好的《AVR單片機C語言入門指導(dǎo)》因為大于15M沒傳上來,有需要的找我要!… 查看全部問答∨ |
三菱變頻器的故障處理 在國內(nèi)市場上,三菱因為其穩(wěn)定的質(zhì)量,強大的品牌影響,有著相當(dāng)廣闊的市場,并已深入了各個領(lǐng)域的應(yīng)用。 故障處理 三菱變頻器目前在市場上用量最多的就是A500系列,以及E500系列了,A500系列為通用型變頻器,適合高 ...… 查看全部問答∨ |
1、PCB接地設(shè)計_中興.pdf 2、電路設(shè)計規(guī)范_中興.pdf 3、電子工程師筆試題(第二卷)遙控電路部分.doc 4、華為PCB_Layout設(shè)計規(guī)范.pdf 5、華為硬件設(shè)計規(guī)范.pdf 6、接地技術(shù).docx 7、如何通過仿真有效提高數(shù)模混合設(shè)計性.pdf 8、設(shè)計心理學(xué) [美 ...… 查看全部問答∨ |
|
關(guān)于C++變量的聲明和定義我們已經(jīng)知道,一個函數(shù)一般由兩部分組成:聲明部分和執(zhí)行語句。 聲明部分的作用是對有關(guān)的標(biāo)識符(如變量、函數(shù)、結(jié)構(gòu)體、共用體等)的屬性進行說明。對于函數(shù),聲明和定義的區(qū)別是明顯的,前邊已說明 ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實惠套件和強大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機自啟動
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測試
- 復(fù)旦大學(xué)在集成電路領(lǐng)域獲關(guān)鍵突破!每秒存取25億次,史上最快!
- 星閃強勢入局,會給UWB與藍牙定位帶來哪些沖擊?
- 又兩款旗艦新車搭載星閃車鑰匙!誰在引爆這波汽車連接革命?
- 榜單首發(fā)!域控SerDes處于市場爆發(fā)周期,哪些供應(yīng)商正在領(lǐng)跑市場
- 英特爾? 具身智能大小腦融合方案發(fā)布:構(gòu)建具身智能落地新范式
- 車載UWB雷達技術(shù):有哪些優(yōu)勢?
- 嵐圖開啟L3智駕:天元智能架構(gòu)技術(shù)解讀
- 德州儀器如何通過7000多種車規(guī)芯片,引領(lǐng)汽車產(chǎn)業(yè)的創(chuàng)新
- 2025年上海國際車展技術(shù)前瞻 – 智駕安全(環(huán)境感知)
- 史上最嚴動力電池國標(biāo)解讀:爆燃零容忍,倒逼廠家不打嘴炮真研發(fā)
- 聯(lián)發(fā)科獲大量智能語音設(shè)備芯片訂單 今年出貨量將增長50%
- 傳環(huán)球晶投資4.49億美元在韓國建廠擴產(chǎn) 回應(yīng):仍在考慮
- 恩智浦攜手芯智,推出高性價比智能門鎖量產(chǎn)方案
- AI領(lǐng)域刺激,今年全球半導(dǎo)體產(chǎn)值有望再成長一成
- 安兔兔發(fā)布新一期安卓手機性能榜 三星S9系列登頂
- 測試時間就是金錢:影響成本的背后因素你都了解嗎?
- 國內(nèi)首個!上海電氣格爾木儲能電站進入商運
- CNN將賦予CMOS圖像傳感器更多的智慧
- SensorTile.box的無限可能——利用啼哭檢測嬰兒是否遺留在車上
- 高通聯(lián)手上海體育學(xué)院和龐勃特科,讓5G+AI賦能智慧體育發(fā)展