蜂鳴器源代碼(無(wú)源蜂鳴器代碼)
前沿拓展:
蜂鳴器源代碼
在我的博客里有比較規(guī)范的ds18b20溫度測(cè)量程序,你可看一下,也許有幫助。對(duì)于你的具體要求,你要改寫一下程序。
ELEJCDC1是一款創(chuàng)意型數(shù)字時(shí)鐘(即Creative Digital Clock)。之所以說(shuō)它是創(chuàng)意制作,其實(shí)就是使用常規(guī)的數(shù)碼管和常見元器件,實(shí)現(xiàn)通常時(shí)鐘具備的功能的同時(shí),還通過(guò)硬件改進(jìn)和軟件設(shè)置,巧妙實(shí)現(xiàn)通常時(shí)鐘不具備的功能——人性化用戶體驗(yàn)。
時(shí)鐘太常見了,是生活中極其普通的物品之一,我們只需瞧一下鐘,就能說(shuō)出時(shí)間,而且我們也把這看成是很自然的事情。功能完善的時(shí)鐘可以計(jì)時(shí)間(Clock)和日期(Calendar),即年、月、星期、日、時(shí)、分和秒的實(shí)時(shí)參數(shù)。時(shí)鐘有很多種,按照不同的分類標(biāo)準(zhǔn)可以分為不同的類型,對(duì)于按照模擬數(shù)字量分為傳統(tǒng)的模擬時(shí)鐘和數(shù)字時(shí)鐘,這里主要分析一下數(shù)字時(shí)鐘。
數(shù)字時(shí)鐘可以由模塊化的時(shí)鐘電路實(shí)現(xiàn),可以由數(shù)字門電路+時(shí)鐘發(fā)生電路實(shí)現(xiàn),也可以由控制器(單片機(jī))+定時(shí)器實(shí)現(xiàn),還可以由控制器+RTC芯片實(shí)現(xiàn)等,其實(shí)這里也不用“等”了,因?yàn)樗坪鯖](méi)有其他方法了。你可能會(huì)說(shuō)從網(wǎng)上下載一個(gè)時(shí)鐘軟件不也是嘛,哈哈,告訴你吧,其實(shí)這樣的軟件用的時(shí)鐘信號(hào)是你計(jì)算機(jī)主板上的RTC芯片時(shí)鐘或者集成在某個(gè)大規(guī)模集成電路內(nèi)部的RTC模塊提供的。
RTC即為實(shí)時(shí)時(shí)鐘,它是可提供時(shí)間(通常也提供日期)的時(shí)鐘器件。RTC通常包含一個(gè)可長(zhǎng)期供電的電池,即使在沒(méi)有電源供電的情況下也可以保持時(shí)間的跟蹤。
有很多著名廠商和很多著名的RTC芯片,玩單片機(jī)的應(yīng)該沒(méi)有不知道DS1302、DS12887和PCF8523等芯片的;RTC著名廠商有很多,比如Maxim(美信〈達(dá)拉斯半導(dǎo)體〉)、NXP(恩智浦)、Intersil(英特矽爾)等。筆者曾經(jīng)使用過(guò)美信的DS3231用作智能電表的時(shí)鐘計(jì)量,調(diào)過(guò)英特矽爾的ISL12022M,DS3231和ISL12022M,它們都集成了晶體振蕩器,精度極高,且外圍電路十分簡(jiǎn)單,基本無(wú)需外圍元器件,其實(shí)DS3231和ISL12022M的功能也很相似、性能也差不多。恩智浦的RTC芯片有很多款,比如本文要介紹的ELEJCDC1,使用的是PCF8523。PCF8523性能很不錯(cuò),使用的是I2C總線與控制器連接,且是高速I2C總線(Fm+),可以達(dá)到1MHz,在某些實(shí)時(shí)性要求極高的系統(tǒng)中非常適用。常見的PCF8523有SO8和TSSOP14封裝,TSSOP14引腳間距較小,引腳排列很密,不容易焊接,大家可以選擇SO8封裝的,容易焊接。
制作實(shí)時(shí)時(shí)鐘非常有趣,可以同時(shí)學(xué)會(huì)很多與界面顯示相關(guān)的技術(shù)、控制器接口技術(shù)、數(shù)字處理技術(shù)和按鍵功能實(shí)現(xiàn)技術(shù)等,對(duì)于各種智能家用電器的顯示界面設(shè)計(jì)有參考意義,例如冰箱、洗衣機(jī)、電磁爐等的顯示界面。關(guān)于實(shí)時(shí)數(shù)字顯示器件的選擇,可以是LED、數(shù)碼管、點(diǎn)陣屏、LCD等,實(shí)際學(xué)習(xí)可以逐個(gè)調(diào)試掌握、真正搞懂,然后獨(dú)立開發(fā)基于控制器的項(xiàng)目就不成問(wèn)題了。(不騙你,真的!)
現(xiàn)在,我們就一起開始制作吧!
ELEJCDC1硬件原理ELEJCDC1由6個(gè)模塊電路構(gòu)成:電源電路、控制器電路、RTC電路、數(shù)碼管電路、蜂鳴器電路和按鍵電路,其中電源電路、數(shù)碼管電路、蜂鳴器電路和按鍵電路與ELEJIDBC1智能數(shù)字電池充電器設(shè)計(jì)中的電路設(shè)計(jì)方法和電路原理一樣,只是數(shù)碼管在實(shí)際的排列時(shí)有所不同,而且數(shù)碼管選用的是1位的8段式數(shù)碼管。
下面主要介紹控制器電路、RTC電路和特殊處理的數(shù)碼管電路。
為了大家的制作方便,這個(gè)制作仍然使用STC的51控制器,ELEJCDC1使用的控制器型號(hào)為STC15F204EA,用DIP20封裝,電路連接如圖1.1所示。STC15F204EA內(nèi)部高精度R/C時(shí)鐘,常溫下溫漂5‰,時(shí)鐘從5~35MHz可選,這樣我們就無(wú)需再外置晶體振蕩器了。實(shí)際焊接在“洞洞板”上如圖1.2所示。
RTC芯片用NXP的PCF8523時(shí)鐘芯片,PCF8523電路圖如圖1.3所示。
圖1.3中電阻R11、R16和R17是上拉電阻,因?yàn)镻CF8523的INT2、INT1/CLKOUT引腳都是開漏輸出,所以必須上拉,此外,SDA和SCL也必須上拉。仔細(xì)看看圖1.3,你會(huì)發(fā)現(xiàn)在+5V電源和PCF8523的VDD之間接了VD5、R15和C6,有什么用,不接可以嗎?很多時(shí)鐘芯片都不接的呀!說(shuō)說(shuō)原因吧:仔細(xì)閱讀PCF8523數(shù)據(jù)手冊(cè)的典型應(yīng)用一節(jié),你會(huì)發(fā)現(xiàn)它提供的典型應(yīng)用電路連接有R15和C6,它倆的作用是限制VDD的壓擺率,如果VDD下降得過(guò)快,就不能確保內(nèi)部電路可靠切換到備用電池供電;二極管VD5是為了防止電源反接燒壞PCF8523TS,PCF8523TS不便宜啊,燒的是錢呢!
注 :電壓轉(zhuǎn)換速率(Slew Rate),簡(jiǎn)寫為SR,簡(jiǎn)稱壓擺率,其定義是在1μs或者1ns的時(shí)間里電壓升高的幅度,直觀上講就是方波電壓由波谷升到波峰所需時(shí)間,單位通常有V/s、V/ms、V/μs和V/ns四種。電壓轉(zhuǎn)換速率用示波器就可以測(cè)量。
我使用的是TSSOP14封裝的,由于芯片引腳很密,所以我腐蝕了一塊轉(zhuǎn)接板,實(shí)物如圖1.4所示。注意:在制作中你可以使用SO8封裝的,無(wú)轉(zhuǎn)接板也可以焊接。
圖1.1 控制器電路
圖1.2 控制器實(shí)物圖
圖1.3 PCF8523電路圖
圖1.4 PCF8523腐蝕板
圖1.5 PCF8523腐蝕板焊接實(shí)物
焊接上芯片,通電藍(lán)色LED點(diǎn)亮,如圖1.5所示。
數(shù)碼管電路如圖1.6所示。其實(shí)仔細(xì)看看原理圖,和通常使用的電路沒(méi)有任何區(qū)別,其實(shí)就是驅(qū)動(dòng)電路的設(shè)計(jì)。
圖1.6 數(shù)碼管電路圖
與通常使用不同的是數(shù)碼管的放置方式。如何實(shí)現(xiàn)顯示功能,以下詳細(xì)說(shuō)明一下。
對(duì)于動(dòng)態(tài)掃描顯示技術(shù),幾乎每本書、每個(gè)資料都會(huì)說(shuō)“動(dòng)態(tài)顯示是多個(gè)數(shù)碼管交替顯示,利用人的視覺暫留作用,使人看到多個(gè)數(shù)碼管同時(shí)顯示。在編程時(shí),需要輸出段選和位選信號(hào),位選信號(hào)選中其中一個(gè)數(shù)碼管,然后輸出段碼,使該數(shù)碼管顯示所需要的內(nèi)容,延時(shí)一段時(shí)間后,再選中另一個(gè)數(shù)碼管,再輸出對(duì)應(yīng)的段碼,高速交替。”如果你是初學(xué)者,肯定感到有點(diǎn)迷惑!
那我就用圖來(lái)說(shuō)明一下吧!動(dòng)態(tài)掃描最根本的原理如圖1.7所示。
圖1.7 數(shù)碼管動(dòng)態(tài)掃描原理
4個(gè)數(shù)碼管輪流顯示一遍為一個(gè)周期T,即4個(gè)顯示ton之和,且由于每個(gè)顯示時(shí)間一樣,也即T=4×ton,在軟件實(shí)現(xiàn)手段上,我用的是定時(shí)器中斷,這樣便于main函數(shù)處理多個(gè)任務(wù)。使用的數(shù)碼管為共陽(yáng)極的,所以ton時(shí)間數(shù)碼管的位引腳為低電平(以數(shù)碼管DS1為例:當(dāng)LED_COM1=0,三極管導(dǎo)通,DS1選通,此時(shí)如果有段碼數(shù)據(jù)加到AH引腳,則DS1顯示),即數(shù)碼管顯示,數(shù)碼管會(huì)按照300μs的時(shí)間輪流循環(huán)顯示,即:數(shù)碼管1→數(shù)碼管2→數(shù)碼管3→數(shù)碼管4→數(shù)碼管1……無(wú)限循環(huán)往復(fù),由于“數(shù)碼管1→數(shù)碼管2→數(shù)碼管3→數(shù)碼管4”僅需要1200μs,即掃描頻率833Hz,我們眼睛是分辨不出它們是在逐個(gè)顯示的,我們可以看到的是每個(gè)數(shù)碼管都完整顯示。如果,你想仔細(xì)看看所謂的“掃描”是啥,你可以把T選得大一些,對(duì)應(yīng)的ton=T/4也大些,那樣你就會(huì)看到數(shù)碼管逐個(gè)顯示,顯示的界面會(huì)讓你感覺很不舒服(一個(gè)接一個(gè)地閃爍顯示)。
圖1.8 ELEJCDC1數(shù)碼管實(shí)物
圖1.9 ELEJCDC1整機(jī)焊接面實(shí)物圖
總結(jié)一下:我們調(diào)試數(shù)碼管,說(shuō)白了就是調(diào)試T(根據(jù)實(shí)際調(diào)試數(shù)據(jù)ton≈1ms時(shí),顯示效果也很不錯(cuò),當(dāng)然是越小越好了;掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感),此外還要注意以下兩個(gè)問(wèn)題。
(1)所謂的“消隱”問(wèn)題,當(dāng)你更新顯示的“段”的時(shí)候,顯示的位置還是在前一時(shí)間的“位”上;然后你再更新“位”,這就出現(xiàn)移動(dòng)的效果了。解決方法:顯示下一位時(shí)先讓數(shù)碼管熄滅;在位的數(shù)碼顯示前,先關(guān)閉一下數(shù)碼管,這樣方可消除拖尾現(xiàn)象。
(2)驅(qū)動(dòng)要足夠,例如,我在使用數(shù)碼管時(shí)均使用了三極管驅(qū)動(dòng),盡管STC控制器I/O口可以配置為推挽輸出,但是為了便于硬件移植,即51控制器通用,還是加了驅(qū)動(dòng),在實(shí)際制作調(diào)試時(shí),你也可以選擇用STC控制器直接驅(qū)動(dòng)。
ELEJCDC1創(chuàng)意數(shù)字時(shí)鐘數(shù)碼管實(shí)物如圖1.8所示,焊接面如圖1.9所示。
軟件設(shè)計(jì)思路這里我直接用文字?jǐn)⑹觯涸跊](méi)有任何認(rèn)為“干預(yù)”ELEJCDC1的情況下,ELEJCDC1從用戶接通電源起,工作步驟(也就是軟件執(zhí)行過(guò)程)為控制器初始化、某些系統(tǒng)參數(shù)初始化→配置PCF8523、獲取RTC數(shù)據(jù)(通過(guò)I2C接口讀取)→處理RTC數(shù)據(jù),處理結(jié)果暫時(shí)存儲(chǔ)在控制器緩存中→通過(guò)定時(shí)器中斷技術(shù)使控制器緩存中的RTC數(shù)據(jù)顯示在數(shù)碼管上→再讀取新的RTC數(shù)據(jù),處理數(shù)據(jù),實(shí)時(shí)顯示……就這樣只要用戶不斷電,ELEJCDC1就會(huì)“不知疲倦”地重復(fù)實(shí)時(shí)顯示RTC的實(shí)時(shí)數(shù)據(jù)。
然而,RTC芯片內(nèi)部的數(shù)據(jù)在上電時(shí),一般不會(huì)是當(dāng)前的時(shí)間,怎么辦呢?一般人都知道重新校準(zhǔn)時(shí)間。其實(shí),從PCF8523角度來(lái)看,就是重新向PCF8523內(nèi)部時(shí)鐘寄存器內(nèi)寫入數(shù)據(jù),覆蓋掉原始的不是當(dāng)前時(shí)間的數(shù)據(jù),然后PCF8523就從新的時(shí)間數(shù)據(jù)開始計(jì)時(shí)(時(shí)鐘源就是那個(gè)32768Hz的晶體振蕩器)。這樣,自然就需要一個(gè)校時(shí)程序,而且這個(gè)校時(shí)程序塊不是一直運(yùn)行,只有用戶需要時(shí)才啟動(dòng),所以就需要一個(gè)開關(guān)。開關(guān)?你可能會(huì)驚訝:軟件里面哪里有開關(guān)呢?此時(shí),如果你仔細(xì)想一想數(shù)字電路,是不是想起了0和1,就是啊,這個(gè)開關(guān)就用一個(gè)Bit變量實(shí)現(xiàn),比如,變量為1時(shí)啟動(dòng)校時(shí)程序塊,為0時(shí)運(yùn)行時(shí)鐘。記住一點(diǎn),校時(shí)程序塊和正常走時(shí)程序塊在同一時(shí)間絕不可能同時(shí)運(yùn)行!
至于鬧鐘,也很簡(jiǎn)單,每讀取一次RTC數(shù)據(jù)顯示,程序就判斷一次此時(shí)的時(shí)間和用戶設(shè)定的鬧鐘時(shí)間是否一樣,如果一樣,那就“鬧”吧!鬧多久?程序開發(fā)者自行設(shè)置,如果開發(fā)者愿意,甚至可以讓用戶自行配置;如果你既是開發(fā)者又是用戶,那我就不說(shuō)啥了,隨你的心情,隨意配置吧!
讀到這里,你是不是感覺ELEJCDC1總體脈絡(luò)很清晰了呢!如果真的用心說(shuō)是,那就好,你肯定可以獨(dú)立調(diào)試ELEJCDC1了,而且,你還可以學(xué)習(xí)很多工程設(shè)計(jì)調(diào)試的方法。再說(shuō)得犀利些:如果你僅僅是為了做一個(gè)ELEJCDC1,完全或者基本沒(méi)有什么濃厚實(shí)物興趣驅(qū)使你,你可能在調(diào)試時(shí)非常痛苦,甚至不能讓ELEJCDC1正常運(yùn)行。比如,你在調(diào)試ELEJCDC1時(shí),你會(huì)徹徹底底地明白什么是數(shù)碼管動(dòng)態(tài)顯示,為什么動(dòng)態(tài)顯示要用定時(shí)器中斷,為什么不直接用延時(shí)掃描的方法,數(shù)碼管不同界面切換方法,I2C驅(qū)動(dòng)如何寫(后續(xù)我會(huì)仔細(xì)說(shuō)),甚至蜂鳴器振蕩頻率如何選擇……總之,我們喜歡電,我們可以在興趣中提高能力和扎實(shí)掌握解決實(shí)際工程問(wèn)題的方法。哇!說(shuō)多了,不過(guò)這樣的興趣就是動(dòng)力,可以很隨意地步行10多里路去二手電子市場(chǎng)(偷笑)。
圖1.10 “AL:”界面
圖1.11 “AL:on”界面
圖1.12 “12Hr”和“24Hr”界面
圖1.13 時(shí)間顯示界面
圖1.14 日期顯示界面
圖1.15 星期顯示界面
看幾張數(shù)碼管的界面圖片吧!如圖1.10~1.15所示。
好吧,這個(gè)版本的ELEJCDC1制作就介紹到這里吧,其實(shí)如果想再加其他功能,真的有點(diǎn)難,因?yàn)?K字節(jié)ROM空間的STC15F204EA放不下了,我就遇到此尷尬,不然ELEJCDC1最后一位本來(lái)打算用作“℃”顯示的數(shù)碼管就不會(huì)沒(méi)用上,我的代碼中,數(shù)碼管段碼就沒(méi)有全部放在code內(nèi),否則連鬧鐘功能也沒(méi)了。反正我們以后會(huì)讓ELEJCDC1升級(jí)的!
相關(guān)源程序可以到qq群657864614進(jìn)行下載!
新店開張,為了提升人氣,即日起將開啟前所未有的優(yōu)惠力度,相當(dāng)于免費(fèi)送了!商品限購(gòu),先買先得!所有商品均可以無(wú)理由退換,請(qǐng)放心購(gòu)買!一個(gè)屬于電子工程師的專屬淘寶店,總有一款適合你:首頁(yè)電子工程師小李淘寶網(wǎng)
拓展知識(shí):
- 1電視頻道沒(méi)了怎么恢復(fù)(快速解決方法)
- 2海信42k11p怎么折開(海信42K11P:全方位展示超清畫質(zhì))
- 3Fardior燃?xì)庠钍酆缶S修電話號(hào)碼查詢(Fardior燃?xì)庠钍酆缶S修電話查詢)
- 4艾木歐防盜門沒(méi)電打不開怎么辦(艾木歐防盜門沒(méi)電無(wú)法啟動(dòng)?解決方法總結(jié))
- 5ENS指紋鎖售后熱線(ENS指紋鎖售后熱線-專業(yè)解決您的問(wèn)題)
- 6打電話顯示關(guān)機(jī)是什么原因(如何解決手機(jī)無(wú)法接通問(wèn)題)。
- 7v500hk1 cs5故障維修(v500hk1 cs5故障維修指南)
- 8創(chuàng)維液晶電視的遙控器怎么調(diào)試(創(chuàng)維電視遙控器調(diào)試指南)
- 9林內(nèi)空氣能售后服務(wù)官網(wǎng)熱線(林內(nèi)空氣能售后服務(wù)官網(wǎng)熱線)
- 10朝友精工保險(xiǎn)柜24小時(shí)售后電話(朝友精工保險(xiǎn)柜24小時(shí)售后電話 - 完善24小時(shí)保
-
貼片代碼怎么看(深入解讀貼片代碼:洞悉世界編碼秘密)
2025-06-07
-
怎么拆彩電顯像管管座(拆解彩電顯像管管座技巧——30字以內(nèi))
2025-06-07
-
壁掛爐一天多少方氣(壁掛爐每天消耗幾方氣能?)
2025-06-07
-
海歌壁掛爐官網(wǎng)(海歌壁掛爐:讓溫暖環(huán)繞你)
2025-06-07
-
德能空氣能故障代碼e5(空調(diào)故障代碼E5的原因與解決方法)
2025-06-07


