標題: 基于單片機的自動定時開關(guān)插座的設(shè)計文檔與源程序 [打印本頁]
作者: 電子論壇89c52 時間: 2018-5-8 16:16
標題: 基于單片機的自動定時開關(guān)插座的設(shè)計文檔與源程序
自動定時開關(guān)插座的設(shè)計
主要內(nèi)容
以單片機為核心,設(shè)計智能定時開關(guān)插座,該系統(tǒng)可以實現(xiàn)自動按時控制插座的打開、關(guān)閉,以達到控制用電設(shè)備工作,節(jié)省電能的效果。
基本要求
1、獨立完成系統(tǒng)軟、硬件設(shè)計,并搭電路驗證。
2、實現(xiàn)至少十六個時間點。
3、無線打開關(guān)閉插座。
摘要
隨著近年來各個家庭的家用電器的增多,以及各種公共用電設(shè)備的增加,各種智能化控制的功能被附加于產(chǎn)品之內(nèi),但不可忽視的是較為老舊的電器產(chǎn)品缺乏這些基本功能。因此這給生活和工作帶來很大的不便,同時長期的無用工作狀態(tài)也帶來了大量的電力資源的消耗。
本文介紹了一種基于51系列單片機的系統(tǒng)設(shè)計,通過以實時時鐘芯片的時間信息為基準,配合單片機內(nèi)部擴展RAM存儲的時間設(shè)定值,以及液晶顯示屏對各種信息的顯示,從而以達到定時控制開關(guān)插座電路的目的。此外,在該設(shè)計基礎(chǔ)之上,再添加紅外遙控打開/關(guān)閉插座的功能,以進一步使得該設(shè)計更具智能化和實用性。該設(shè)計雖然結(jié)構(gòu)簡單,但能廣泛應(yīng)用于各個用電控制的工作環(huán)境中,具有較強的適用性。
目錄
摘要
Abstract
第1章 緒論
1.1 課題背景
1.2 當前國內(nèi)外研究現(xiàn)狀
1.3 定時開關(guān)的應(yīng)用
1.4 設(shè)計的主要內(nèi)容和章節(jié)安排
第2章 系統(tǒng)總體設(shè)計
2.1 總體結(jié)構(gòu)
2.2 總體結(jié)構(gòu)的工作原理
2.3 本章小結(jié)
第3章 主控制器與外圍器件
3.1 STC12C5A60S2單片機
3.2 LCD1602液晶顯示模塊
3.3 DS1302實時時鐘模塊
3.4 紅外接收模塊
3.4.1 遙控發(fā)射器及其編碼
3.4.2 遙控信號的接收
3.5繼電器控制模塊
3.6 本章小結(jié)
第4章 硬件設(shè)計
4.1 單片機最小系統(tǒng)設(shè)計
4.1.1 單片機
4.1.2 電源電路
4.1.3 復(fù)位電路
4.1.4 晶振電路
4.1.5 RS232接口轉(zhuǎn)USB接口電路
4.2 顯示電路設(shè)計
4.3 時鐘電路設(shè)計
4.4 紅外接收電路設(shè)計
4.5 繼電器控制電路
4.6 按鍵電路
4.7本章小結(jié)
第5章 軟件設(shè)計
5.1 主程序設(shè)計
5.2 LCD1602顯示程序設(shè)計
5.3 DS1302實時時鐘程序設(shè)計
5.4 VS1838B中斷程序設(shè)計
5.5 系統(tǒng)測試
5.6 本章小結(jié)
結(jié)論
參考文獻
致謝
附錄1
附錄2
附錄3
附錄4
附錄5
附錄6
第1章 緒論
1.1 課題背景自單片機誕生以來,其高可靠性,低功耗以及很強和工作運行環(huán)境適應(yīng)能力,以廣泛應(yīng)用于各個生產(chǎn)生活的管理控制領(lǐng)域。而目前基于單片機的自動控制開關(guān)的產(chǎn)品依然未進入大規(guī)模應(yīng)用的階段,其不成熟的產(chǎn)品設(shè)計以及普通大眾對于該類產(chǎn)品的易用性與安全性仍存在一定的憂慮。因此,該課題將著眼于當前市場實際需求和具體設(shè)計平臺性能,力求將該設(shè)計做到創(chuàng)新與實用的結(jié)合。
1.2 當前國內(nèi)外研究現(xiàn)狀 智能定時開關(guān)目前已經(jīng)大規(guī)模的應(yīng)用與汽車、工業(yè)生產(chǎn)和倉儲管理等無人監(jiān)控的領(lǐng)域;同時,雖然目前已有部分的新推出的家用電器也已具備該功能了,但相對于目前數(shù)量更大的傳統(tǒng)舊款的家用電器和老式的公共照明設(shè)施來說,仍停留在機械式的開關(guān)和簡單的電子式定時開關(guān)。但無論以上兩者的性能如何,它們都存在易磨損,安全性較差,需要大量手動操作,且在某些工作環(huán)境中還存在難以接觸操作的問題。
因此,雖然市場上都有各式各樣的替代產(chǎn)品,但就目前來說,這些產(chǎn)品的功能都還存在很多不完善之處。在經(jīng)過對該課題背景下的充分的產(chǎn)品需求的調(diào)研和仔細的可行性分析,該課題存在很大的改進和創(chuàng)新的空間。
1.3 定時開關(guān)的應(yīng)用定時開關(guān)可用于各種需要按時自動開啟和關(guān)閉的電器設(shè)備。廣泛適用于企事業(yè)單位和家庭,尤其是對人體傷害環(huán)境,如醫(yī)院,幼兒園,餐飲等單位的紫外線消毒間,化工場所,及含輻射區(qū)域,避免人員直接進入內(nèi)部開啟和關(guān)閉開關(guān),頻繁遭受傷害。
同時定時開關(guān)還特別適合各種養(yǎng)殖場,孵化間,魚塘供養(yǎng),座位澆灌,魚缸等場所。一次操作,可每天自動循環(huán)保證燈光照射及其投喂飼料的時間和次數(shù),減少了大量人力,且避免因人為失誤而導(dǎo)致的損失。
定時開關(guān)對于學校,軍營尤其需要。每天多個規(guī)定的時間,電鈴、軍號自動響起,學生、軍人按要求上課、出操、熄燈,不需要管理者疲勞操作。
定時開關(guān)還適用于家庭,每天早上太陽升起,窗簾自動緩緩打開,催醒睡夢中的你; 夜幕降臨,窗簾又自動拉合,一個智能溫馨而又奇妙的家全天侯擁抱著你。
定時開關(guān)為充電電池必備。尤其是電動車電池在整輛車中價值比例非常高,長時間充電會大大減少電池壽命。配上本產(chǎn)品,則即保證了滿額充電,也不會在電池充滿電之后仍然處于通電狀態(tài),對電池的保護起到了極大地作用。
定時開關(guān)在人們的生活中扮演著重要的角色,給人們的生活帶來極大的便利。主要使用在提醒,計劃或者規(guī)律化生活、工作上。定時開關(guān)的歷史十分悠久,用途也很廣泛。
從古代的某些建筑、計時器(如滴水計時,當水滴到一定量時會引發(fā)機關(guān)進行報時),到近代及今日的電腦定時開關(guān)機等,都采用了定時開關(guān)。
例子:學校的課鈴就是采用定時器進行定時,當條件滿足(即達到時間設(shè)定的點)時,電源就會接通,使電鈴打開從而達到發(fā)出鈴聲的目的。
1.4 設(shè)計的主要內(nèi)容和章節(jié)安排 綜合該領(lǐng)域的研究現(xiàn)狀與現(xiàn)目前單片機應(yīng)用的性能,該設(shè)計課題將主要圍繞以下內(nèi)容展開:
一、首先,作為課題設(shè)計的第一步,應(yīng)首先完成對該課題的前期調(diào)研,確定其應(yīng)用需求以及對該課題可行性的分析,以求能更好的了解各個設(shè)計細節(jié),解決用戶所需求的問題;
二、定時的開關(guān)控制是該設(shè)計的主要內(nèi)容,因此應(yīng)該在先設(shè)計出能作為時間基準的時鐘模塊,然后在此基礎(chǔ)之上,完成對定時時間設(shè)定,時鐘校時以及模式切換等功能或模塊的設(shè)計。至此,已初步的完成定時時鐘的功能,為后續(xù)功能完善做好基礎(chǔ);
三、在前一步的基礎(chǔ)之上,再完成受控電路的設(shè)計,根據(jù)定時時鐘的開關(guān)判斷結(jié)果,單片機在端口給出控制信號電平,對外圍的受控電路進行控制。
此處,要注意的是,由于可能會存在單片機IO口的電平低于外圍的模擬器件的驅(qū)動電平的問題,因此,對受控期間進行電平上拉是一個必須注意的問題。
四、在以上基本的功能以后,應(yīng)該說該設(shè)計已初具雛形,可進行對一些人性化需求的擴展設(shè)計,故此處規(guī)劃了對該開關(guān)進行紅外遙控控制的擴展。以期能達到該設(shè)計能應(yīng)用于以往的替代產(chǎn)品無法應(yīng)用的應(yīng)用環(huán)境中去,體現(xiàn)其產(chǎn)品的差異化。
五、最后,在完成了以上各個步驟以后,各個模塊也已大部分完成了最后的定型。但仍需要對程序在實際的硬件上運行的效果進行調(diào)試,對于顯示和按鍵反應(yīng)速度,蜂鳴器提示聲音等問題進行最后的完善。
在本文在章節(jié)安排方面,將在第2章對整個系統(tǒng)的構(gòu)思和設(shè)想進行闡述;在接著的第3章對方案中所使用的器件進行必要的介紹說明;后續(xù)在第4章中將對各個器件模塊的硬件電路進行詳細的設(shè)計說明;在完成硬件電路設(shè)計以后,將在第5章中完成對軟件的構(gòu)想流程進行闡述;最后,在第6章中本文將對所設(shè)計的軟硬件進行運行測試,給出實驗效果。在文章結(jié)束時得出結(jié)論。
第2章 系統(tǒng)總體設(shè)計
2.1 總體結(jié)構(gòu)在綜合了各種設(shè)計方案的情況下,考慮了現(xiàn)有產(chǎn)品的缺陷之處的情況之后,最終確定了一STC12C5A60S2單片機為核心,DS1302實時時鐘芯片、LCD1602液晶顯示、TL1838紅外收發(fā)模塊、數(shù)字式繼電器等外圍器件構(gòu)成的模塊電路。這些功能器件不僅具有較好的抗干擾性能和高可靠能力,更由于其大都已經(jīng)大規(guī)模的應(yīng)用于各個應(yīng)用產(chǎn)品中,開發(fā)成本較低,如若進入規(guī)模化生產(chǎn),將進一步的降低生產(chǎn)成本,提高市場的可接受度。
由于這些器件已有成熟的應(yīng)用,故以下圖(圖2-1)的總體設(shè)計結(jié)構(gòu)為藍本,進行具體的系統(tǒng)集成和功能細化。
圖2-1 系統(tǒng)總體結(jié)構(gòu)圖
此外,在核心板的基礎(chǔ)之上只有紅外的接收模塊,而要完成紅外的收發(fā)控制,在此之外還需有紅外的發(fā)射裝置,在此未節(jié)省成本,選用了集成的紅外遙控器,采用電池供電,具有超低功耗,超出待機的特點,十分符合設(shè)計要求。其整個紅外收發(fā)的大致原理結(jié)構(gòu)圖如下圖(圖2-2)所示。
圖2-2 紅外收發(fā)模塊工作原理圖
總體的系統(tǒng)模塊就如上述兩圖所示,整體結(jié)構(gòu)簡單明晰,各個模塊的功能和特性應(yīng)該更夠較為全面的滿足本課題的設(shè)計要求,故選用該方案。
2.2 總體結(jié)構(gòu)的工作原理由于各個模塊的具體工作原理較為復(fù)雜,且對于該設(shè)計課題沒有實際的意義,故不在此贅述,F(xiàn)只將該方案的大體工作的流程以及結(jié)構(gòu)做以概述,以便更清新的闡述該課題。
首先,單片機為本次設(shè)計的核心設(shè)備,它將起著對各個指令的執(zhí)行和對外圍模塊的控制的作用,在邏輯功能上相當于中央控制和調(diào)度的作用,本次將選擇STC12C5A60S2承擔該功能。
其次,作為定時開關(guān)插座的設(shè)計,DS1302實時時鐘芯片將承擔對時間信息的記錄和輸出,同時作為時間基準與設(shè)定的開關(guān)時間做比對,以達到輔助控制的作用。
然后,作為一個交互式的單片機設(shè)計課題,在以單片機為核心的基礎(chǔ)之上,應(yīng)當配合一定的輸入輸出控制設(shè)備。在此設(shè)計中,按鍵將作為對校時,定時,以及模式切換等功能的輸入設(shè)備,輔助DS1302時鐘芯片完成其對時間信息操控的功能。
再者,數(shù)字式時鐘必然要求時間信息的顯示效果。因此在比較了LED數(shù)碼管,普通液晶屏,帶漢字字符顯示的液晶屏幕,以及有觸摸功能的屏幕等等可用的顯示設(shè)備之后,鑒于LCD1602這款液晶屏較低的采購價格,較好的顯示效果和顯示字符數(shù)的規(guī)格均符合設(shè)計需求,故決定采用這款不帶漢字字符字庫和觸摸功能液晶顯示屏幕。其能很好的滿足時間信息,定時信息,和模式狀態(tài)的顯示。
最后,作為擴展功能的紅外接收頭和紅外發(fā)射器,將主要以外部中斷的方式進行對整個開關(guān)系統(tǒng)的閉合和關(guān)閉的控制,以期能達到方便應(yīng)用于大多數(shù)較難手動按鍵控制的應(yīng)用環(huán)境中。
綜上所述,在整個系統(tǒng)中,將以整個單片機為核心,而DS1302時鐘芯片作為時鐘基準,配合按鍵輸入的時間控制信息和紅外遙控裝置的控制信息,以達到定時開關(guān)被控制電路的效果,是典型的以弱電的設(shè)備控制強電電路開關(guān)的應(yīng)用。
2.3 本章小結(jié) 本章主要對整個系統(tǒng)的總體結(jié)構(gòu)進行了大致的描述,給出了整個系統(tǒng)的框圖,并對于選擇該設(shè)計方案進行了簡單的說明。在此基礎(chǔ)之上,對系統(tǒng)總體的結(jié)構(gòu)中的各個部分分別進行了簡單的原理闡述,明確了各個部分在系統(tǒng)中的承擔的功能和作用。
第3章 主控制器與外圍器件
3.1 STC12C5A60S2單片機STC12C5A60S2單片機是中國大陸企業(yè)宏晶科技生產(chǎn)的單時鐘/機器周期(1T)的單片機,是一種高速/低功耗/超強抗干擾的新一代增強型8051單片機,它不但完全兼容傳統(tǒng)8051指令代碼和管腳功能,而且其片內(nèi)具有FLASH工藝的大容量程序存儲器,該款單片機內(nèi)部就自帶高代60K FLASH ROM,這種工藝的存儲器用戶可以用點的方式瞬間擦除、改寫。此外,片上也集成了180字節(jié)的RAM。而且STC系列單片機支持串口程序燒寫。顯而易見,這種單片機對開發(fā)設(shè)備的要求很低,開發(fā)時間也打打縮短。寫入單片機內(nèi)的程序還可以進行加密,又很好的保護了開發(fā)者的勞動成果。
其最大的特點是采用以單時鐘周期作為機器周期進行指令的執(zhí)行,大大的提高了指令的執(zhí)行速度,其速度可快8-12倍。內(nèi)部也集成了MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S),針對電機控制,強干擾場合。
此外,其I/O口在功能上與標準8051通用,復(fù)位后可設(shè)置成四種模式:準雙向口/弱上拉,強推挽/強上拉,僅為輸入/高阻,開漏。每個I/O口驅(qū)動能力可達20mA,但整個芯片不要超過120mA。整體來看,雖為弱電控制器件,但其外部驅(qū)動能力較強,對于大多外圍受控器件,無需再添加模擬放大電路進行驅(qū)動,很大程度上降低了開發(fā)和制造成本。
在定時器方面,共有4個16位定時器,兩個與傳統(tǒng)的8051兼容的定時器/計數(shù)器,16位定時器T0和T1,沒有定時器2,但有獨立波特率發(fā)生器做串行通信的波特率發(fā)生器,再加上2路PCA模塊可再實現(xiàn)2個16位定時器。
在外部中斷方面,外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA模塊,Power Down模式可由外部中斷喚醒.
其有多種的封裝方式,較常用且也為本次設(shè)計所用的芯片如下圖(圖3-1)所示,其采用PDIP(塑料雙列直插式封裝):
圖3-1 STC12C5A60S2單片機封裝引腳圖
3.2 LCD1602液晶顯示模塊LCD1602液晶顯示器,是基于液晶顯示技術(shù)的點陣式顯示屏幕,通過電壓對其顯示區(qū)域進行控制,具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動,且具有低功耗的特點,也大大的降低了發(fā)熱量。而液晶的性能也很大部分是取決于其液晶對于各像素點輸入信號的響應(yīng)時間,顯然在單片機這樣的較低速的控制系統(tǒng)中,LCD1602作為較為簡單的液晶顯示屏幕,也足以能滿足其應(yīng)用需求,只要注意使用延時設(shè)置,基本不會有顯示模糊和閃爍的情況發(fā)生。
具體上來說,1602液晶是一種專用的字符型液晶,它專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5*7或者5*11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。由于其內(nèi)帶字符發(fā)生器,通常使用RAM來存儲相應(yīng)字符的各個像素點的信息,因此,字符發(fā)生器的控制器在顯示時只需要控制顯示的行列號及找到需要顯示字符的RAM對應(yīng)的地址,設(shè)立光標,在此送上該字符對應(yīng)的代碼即可。
字符型液晶顯示器目前常用16*1,16*2,20*2和40*2等規(guī)格的模塊,綜合本設(shè)計的實際需求和成本限制,故在此選擇了16*2規(guī)格(即可以顯示兩行,每行16個字符)的LC1602模塊。
市面上字符型液晶大多數(shù)是基于HD44780液晶芯片的,控制原理也是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用與市面上大部分的字符型液晶。
引腳功能說明
LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表3-1所示:
表3-1 引腳接口說明表
| 符號 | 引腳說明 | 編號 | 符號 | |
| VSS | 電源地 | 9 | D2 | |
| VDD | 電源正極 | 10 | D3 | |
| VL | 液晶顯示偏壓 | 11 | D4 | |
| RS | 數(shù)據(jù)/命令選擇 | 12 | D5 | |
| R/W | 讀/寫選擇 | 13 | D6 | |
| E | 使能信號 | 14 | D7 | |
| D0 | 數(shù)據(jù) | 15 | BLA | |
| D1 | 數(shù)據(jù) | 16 | BLK | |
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。
第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
第15腳:背光源正極。
第16腳:背光源負極。
該設(shè)計所使用的液晶模塊具體如下實物圖(圖3-2)所示:

圖3-2 LCD1602液晶顯示模塊實物圖
3.3 DS1302實時時鐘模塊實時時鐘模塊采用以DS1302實時時鐘芯片為核心的集成化模塊,DS1302是美國DALLAS公司推出的一款高性能、低功耗的實時時鐘芯片,并附加31字節(jié)靜態(tài)RAM,采用SPI三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號和RAM數(shù)據(jù)。
低功耗時鐘芯片DS1302可以對年、月、日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。DS1302用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點的記錄上,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄。這種記錄對長時間的連續(xù)測控系統(tǒng)結(jié)果的分析以及對異常數(shù)據(jù)出現(xiàn)的原因的查找有重要意義。
采用DS1302作為記錄測控系統(tǒng)中的數(shù)據(jù)記錄,其軟硬件設(shè)計簡單,時間記錄準確,既避免了連續(xù)記錄的大工作量,又避免了定時記錄的盲目性,給連續(xù)長時間的測量、控制系統(tǒng)的正常運行及檢查都來了很大的方便,可廣泛應(yīng)用于長時間連續(xù)的測控系統(tǒng)中。在測量控制系統(tǒng)中,特別是長時間無人職守的測控系統(tǒng)中,經(jīng)常需要記錄某些具有特殊意義的數(shù)據(jù)及其出現(xiàn)的時間。記錄及分析這些特殊意義的數(shù)據(jù),對測控系統(tǒng)的性能分析及正常運行具有重要的意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時采樣或定時采樣,沒有具體的時間記錄,因此只能記錄數(shù)據(jù)而無法準確記錄其出現(xiàn)的時間;若采用單片機計時,一方面需要采用計數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費單片機的資源,而且某些測控系統(tǒng)可能不允許。而在系統(tǒng)中采用DS1302則能很好地解決這個問題。
DS1302時鐘芯片包括實時時鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個簡單的串行接口與微處理器通信。實時時鐘/日歷提供秒、分、時、日、周、月和年等信息。對于小于31天的月和月末的日期自動進行調(diào)整,還包括閏年校正的功能。時鐘的運行可以采用24h或帶AM(上午)/PM(下午)的12h格式。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:VCC1 在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;VCC2在雙電源系統(tǒng)中提供主電源,在這種運用方式中,VCC1 連接到備份電源,以便在沒有主電源的情況下能保存時間信息以及數(shù)據(jù)。DS1302由VCC1或VCC2中較大者供電。當VCC2大于VCC1+0.2V時,VCC2給DS1302供電;當VCC2小于VCC1時,DS1302由VCC1供電。
DS1302數(shù)據(jù)操作原理
DS1302在任何數(shù)據(jù)傳送時必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被輸入。無論是讀周期還是寫周期,開始8位指定40個寄存器中哪個被訪問到。在開始8個時鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時鐘周期在讀操作時輸出數(shù)據(jù),在寫操作時寫入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8加8,在多字節(jié)方式下為8加字節(jié)數(shù),最大可達248字節(jié)數(shù)。

圖3-3 DS1302管腳圖
如果在傳送過程中置RST為低電平,則會終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在VCC >=2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。DS1302的管腳圖如圖3-3所示,表3-2為各引腳的功能。
表3-2 DS1302引腳功能表
DS1302的控制字如圖3-4所示?刂谱止(jié)的最高有效位(位7)必須是邏輯1;如果它為邏輯0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時鐘數(shù)據(jù);為1表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如為0,表示要進行寫操作;為1表示進行讀操作?刂谱止(jié)總是從最低位開始輸入/輸出。























圖3-4 控制字節(jié)的含義
為了提高對32個地址的尋址能力(地址/命令位1~5=邏輯1),可以把時鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時鐘或RAM,而位0規(guī)定讀或?qū)。在時鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不能存儲數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個寄存器。但是,當以多字節(jié)方式寫RAM 時,為了傳送數(shù)據(jù)不必寫所有31字節(jié)。不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。數(shù)據(jù)讀寫時序如圖3-5所示。



圖3-5 數(shù)據(jù)讀寫時序圖
DS1302共有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表3-3,其中奇數(shù)為讀操作,偶數(shù)為寫操作。
表3-3 片內(nèi)時鐘數(shù)據(jù)寄存器
3.4 紅外接收模塊
圖3-6 紅外收發(fā)工作流程圖
紅外遙控系統(tǒng)是集光、電于一體的系統(tǒng),。其工作原理是用戶按鍵信號單片機編碼處理后轉(zhuǎn)化為脈沖信號,經(jīng)由紅外發(fā)射頭發(fā)射出去;接收端由紅外一體化接收頭實現(xiàn)對信號的放大解調(diào)并還原數(shù)據(jù)流,經(jīng)由單片機解碼后對相關(guān)I/O口進行操作,從而完成整個遙控操作。整個工作流程圖如圖3-6所示。
紅外控制模塊主要分為兩個部分:紅外發(fā)射端和紅外接收端。而二者之間進行通信的基礎(chǔ)是其共用的編碼方式。
3.4.1 遙控發(fā)射器及其編碼紅外遙控早已進入商用和開發(fā)領(lǐng)域多年,故遙控發(fā)射器的專用芯片很多。根據(jù)編碼的格式可以分為兩大類:NEC碼和RC碼,本設(shè)計以運用比較廣泛,解碼比較容易的日本NEC編碼方式為開發(fā)的基礎(chǔ),F(xiàn)以日本NEC公司的Upd6121G組成的發(fā)射電路為例說明編碼原理。當發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所安的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其波形如圖3-7所示。

圖3-7 Upd6121G的遙控碼
圖3-8遙控信號編碼波形圖
圖3-7所示遙控碼的“0”和“1”(注:所有波形為接收端的與發(fā)射相反),這些“0”和“1”組成的32位二進制碼經(jīng)38kHz的載頻進行二次調(diào)制以提高發(fā)射效率,達到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線像空間發(fā)射,如圖3-8所示。
圖3-9 紅外遙控發(fā)射波形圖
UPD6121G產(chǎn)生的遙控編碼是連續(xù)的32位二進制碼組,其中前16位為用戶識別碼,能區(qū)別不同的電路設(shè)備,以防止不同機種遙控碼互相干擾。該芯片的用戶識別碼固定為十六進制01H;后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多128種不同組合的編碼。遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進制編碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進制“0”和“1”的個數(shù)不同而不同,大約在45 ~63ms之間,圖3-9為發(fā)射波形圖。

當一個按鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個引導(dǎo)碼(9ms)、一個結(jié)果碼(4.5ms)、低八位地址碼(9~18ms)、高八位地址碼(9~18ms)、8為數(shù)據(jù)碼(9~18ms)和這8位數(shù)據(jù)的反碼(9~18ms)組成。如果按鍵按下超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)碼)將僅由起始碼(9ms)和結(jié)束碼(2.25ms)組成。引導(dǎo)碼和連發(fā)碼的格式分別如圖3-10所示和圖3-11所示。
圖3-10 引導(dǎo)碼 圖3-11 連發(fā)碼
3.4.2 遙控信號的接收接收電路可以使用一種集紅外線接收和放大于一體的一體化紅外線接收器,不需要任何的外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。接收器對外只有3個引腳:OUT、GND、Vcc與單片機接口非常方便;其中,脈沖信號輸出直接接單片機的IO口、GND接系統(tǒng)的底線(0V)、Vcc接系統(tǒng)的電源正極(+5V);
3.5繼電器控制模塊繼電器是一種電子控制器件,它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動控制電路中,它實際上是用較小的電流去控制較大電流的一種“自動開關(guān)”。故在電路中起著自動調(diào)節(jié)、安全保護、轉(zhuǎn)換電路等作用,是一種典型的弱電器件控制強電電路的應(yīng)用。
電磁式繼電器的工作原理和特性較為簡單,一般由鐵芯、線圈、銜鐵、觸點簧片等組成的。只要在線圈兩端加上一定的電壓,線圈中就會流過一定的電流,從而產(chǎn)生電磁效應(yīng),銜鐵就會在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動銜鐵的動觸點與靜觸點(常開觸點)吸合。當線圈斷電后,電磁的吸力也隨之消失,銜鐵就會在彈簧的反作用力返回原來的位置,使動觸點與原來的靜觸點(常閉觸點)吸合。這樣吸合、釋放,從而達到了在電路中的導(dǎo)通、切斷的目的。對于繼電器的“常開、常閉”觸點,可以這樣來區(qū)分:繼電器線圈未通電時處于斷開狀態(tài)的靜觸點,稱為“常開觸點”;處于接通狀態(tài)的靜觸點稱為“常閉觸點”。
本次設(shè)計中采用的繼電器為SRD-05VDC-SL-C,繼電器電氣圖如圖3-12所示。
由于繼電器的開啟和關(guān)閉需要一定的機械運動,因此一般的繼電器仍需要較高的驅(qū)動電壓。首先,應(yīng)該查閱繼電器的技術(shù)說明,查明其額定的驅(qū)動電壓值,看單片機的端口能否直接將其驅(qū)動,如若不能直接驅(qū)動或者要串聯(lián)其他期間,應(yīng)當考慮在外圍構(gòu)建放大電路,此繼電器由于其額定的驅(qū)動電壓值為5V,而該款STC單片機的端口電壓值在5V左右,在沒有特殊要求的情況下亦可不必外接放大電路;其次,在設(shè)計過程中應(yīng)當充分的考慮到被控制電路的電壓范圍和最大電流,避免因超過額定值而造成安全隱患。

圖3-12 繼電器電氣圖
3.6 本章小結(jié) 本章十分詳細的介紹了實際方案中所用到的STC12C5A60S2單片機、LCD1602液晶顯示模塊、DS1302實時時鐘模塊、繼電器控制模塊等外圍模塊,對它們各自的功能和性能參數(shù)都有了一個詳盡的了解,保證了后面方案中的硬件設(shè)計和軟件設(shè)計的順利進行。
第3章 主控制器與外圍器件
第4章 硬件設(shè)計
第4章 硬件設(shè)計4.1 單片機最小系統(tǒng)設(shè)計基于單片機的硬件設(shè)計,首先應(yīng)當考慮的是如何構(gòu)建起支撐單片機順利運行的單片機最小系統(tǒng)。單片機最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng)。對于各式各樣的單片機在外圍電路方面有一定的差異,而針對本設(shè)計所用的STC12C5A60S2單片機屬于51系列單片機,其最小系統(tǒng)一般都應(yīng)該包括:單片機、電源電路、復(fù)位電路、晶振電路;此外,針對燒錄程序時所有的接口,本設(shè)計中還添加了RS232轉(zhuǎn)USB接口的電路設(shè)計。
4.1.1 單片機本次設(shè)計采用的這款單片機為STC12C5A60S2,屬于增強型的51系列單片機。其功能屬性及指標都已在第二章中有過介紹了,故在此不作詳細介紹了。以下將主要從其余三個電路部分進行闡述。
4.1.2 電源電路首先,對于一個完整的電子設(shè)計來講,首要問題就是為整個系統(tǒng)提供電源供電模塊,電源模塊的穩(wěn)定可靠是系統(tǒng)平穩(wěn)運行的前提和基礎(chǔ)。51單片機雖然使用時間最早、應(yīng)用范圍最廣,但是在實際使用過程中,一個和典型的問題就是相比其他系列的單片機,51單片機更容易受到干擾而出現(xiàn)程序跑飛的現(xiàn)象,克服這種現(xiàn)象出現(xiàn)的一個重要手段就是為單片機系統(tǒng)配置一個穩(wěn)定可靠的電源供電模塊。
此最小系統(tǒng)中電源模塊的此最小系統(tǒng)中的電源供電模塊的電源可以通過計算機的USB口供給,也可使用外部穩(wěn)定的5V電源供電模塊供給。具體電路原理圖如圖4-1所示。雖然通用的外部變壓器和USB的穩(wěn)壓性能一般均能滿足單片機的運行需要,但仍考慮到可能運用到的極端環(huán)境中去,可能存在電磁干擾以及電源本身的擾動,故在此并聯(lián)了一個47uF和一個0.1uF的濾波電容。經(jīng)實際調(diào)試試驗,其中電容值較大的電容可以很好的過濾掉低頻的雜波,而電容值較小電容可以較好的過濾掉高頻的雜波。經(jīng)此電源退耦電路,Vcc端可以有一個較為平穩(wěn)的供電電源。符合大多數(shù)應(yīng)用環(huán)境,符合本設(shè)計的要求。
圖4-1 電源供電電路
4.1.3 復(fù)位電路單片機的置位和復(fù)位,都是為了把電路初始化到一個確定的狀態(tài),一般來說,單片機復(fù)位電路作用是把一個例如狀態(tài)機初始化到空狀態(tài),而在單片機內(nèi)部,復(fù)位的時候單片機是把一些寄存器以及存儲設(shè)備裝入廠商預(yù)設(shè)的一個值。
單片機復(fù)位電路原理是在單片機的復(fù)位引腳RST上外接電阻和電容,實現(xiàn)上電復(fù)位。當復(fù)位電平持續(xù)兩個機器周期以上時復(fù)位有效。復(fù)位電平的持續(xù)時間必須大于單片機的兩個機器周期。具體數(shù)值可以由RC電路計算出時間常數(shù)。
復(fù)位電路由按鍵復(fù)位和上電復(fù)位兩部分組成。如圖 4-2所示。
上電復(fù)位:STC89系列單片及為高電平復(fù)位,通常在復(fù)位引腳RST上連接一個電容到VCC,再連接一個電阻到GND,由此形成一個RC充放電回路保證單片機在上電時RST腳上有足夠時間的高電平進行復(fù)位,隨后回歸到低電平進入正常工作狀態(tài),這個電阻和電容的典型值為10K和10uF。
按鍵復(fù)位:按鍵復(fù)位就是在復(fù)位電容上并聯(lián)一個開關(guān),當開關(guān)按下時電容被放電、RST也被拉到高電平,而且由于電容的充電,會保持一段時間的高電平來使單片機復(fù)位。
圖4-2 復(fù)位電路原理圖
此外,STC89C51系列單片機自帶有“看門狗”電路。由于單片機的工作有可能會受到來自外界電磁場的干擾,造成程序的跑飛,從而陷入死循環(huán),程序的正常運行被打斷,由單片機控制的系統(tǒng)便無法繼續(xù)工作,這樣會造成整個系統(tǒng)陷入停滯狀態(tài),發(fā)生不可預(yù)料的后果,所以出于對單片機運行狀態(tài)進行實時監(jiān)測的考慮,便產(chǎn)生了“看門狗”電路。其工作過程如下:看門狗芯片和單片機的一個I/O引腳相連,該I/O引腳通過單片機的程序控制,使它定時地往看門狗芯片的這個引腳上送入高電平(或低電平),這一程序語句是分散地放在單片機其他控制語句中間的,一旦單片機由于干擾造成程序跑飛后而陷入某一程序段進入死循環(huán)狀態(tài)時,給看門狗引腳送電平的程序便不能被執(zhí)行到,這時,看門狗電路就會由于得不到單片機送來的信號,便將它和單片機復(fù)位引腳相連的引腳上送出一個復(fù)位信號,使單片機發(fā)生復(fù)位,從而單片機將從程序存儲器的起始位置重新開始執(zhí)行程序,這樣便實現(xiàn)了單片機的自動復(fù)位。從而,“看門狗”電路很好的彌補了上述復(fù)位電路的缺陷,大大的增強了整個系統(tǒng)的可靠性與穩(wěn)定性。
4.1.4 晶振電路單片機系統(tǒng)里都有晶振,在單片機系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,他結(jié)合單片機內(nèi)部電路產(chǎn)生單片機所需的時鐘頻率,單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片接的一切指令的執(zhí)行都是建立在單片機晶振提供的時鐘頻率。
在通常工作條件下,普通的晶振頻率絕對精度可達百萬分之五十。高級的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率,稱為壓控振蕩器(VCO)。晶振用一種能把電能和機械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。
單片機晶振的作用是為系統(tǒng)提供基本的時鐘信號。通常一個系統(tǒng)共用一個晶振,便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調(diào)整頻率的方法保持同步。

晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時鐘頻率。如果不同子系統(tǒng)需要不同頻率的時鐘信號,可以用與同一個晶振相連的不同鎖相環(huán)來提供。
圖4-3 晶振電路原理圖
STC89C51使用外部的晶體振蕩器作為振蕩源,考慮到本次設(shè)計中對時間的精確性和指令執(zhí)行速度的要求,該設(shè)計選用了22.1184MHz的振蕩晶體。由于單片機內(nèi)部有振蕩電路,所以外部只要連接一個晶振和兩個電容。具體電路如圖4-3所示。電容容量一般在15pF至50pF之間,根據(jù)實際使用效果該處選用了30pF的電容,有較高的振蕩穩(wěn)定性。
4.1.5 RS232接口轉(zhuǎn)USB接口電路由于單片機誕生年代較早,而在當時的工業(yè)控制領(lǐng)域大多采用了RS232串行口通信協(xié)議,但其存在著傳輸速率低,傳輸距離有限和信號電平值較高等問題,F(xiàn)在大多的PC設(shè)備基本改用了USB標準協(xié)議的通信串口,故為了方便的燒錄程序,在常規(guī)單片機最小系統(tǒng)的基礎(chǔ)之上,應(yīng)該設(shè)計必要的接口轉(zhuǎn)換電路。具體電路原理如圖4-4所示。

圖4-4 RS232轉(zhuǎn)USB接口電路
該硬件系統(tǒng)由4部分組成:USB接口、CH341T、MAX232和RS232接口。其中,USB接口用于連接USB主機,在此選用USB總線接口的A型連接頭;CH341T用于完成USB接口轉(zhuǎn)RS232接口的所有硬件功能;MAX232用于完成RS232與TLL/CMOS的電平轉(zhuǎn)換;RS232接口用于連接RS232設(shè)備。根據(jù)實際需要,選擇目前廣泛應(yīng)用的DB9連接器。
USB總線包括一對5V電源線和一對數(shù)據(jù)信號線。通常,+5V電源線為紅色;接地線為黑色;D+信號線為綠色;D-信號線為白色。USB總線提供的電源電流最大可以達到500 mA,CH341T芯片可以直接使用USB總線提供的5V電源。C3和C4是高頻瓷片電容,C3容量一般為4700pF~0.02μF,用于CH341T內(nèi)部電源節(jié)點的退耦;C4容量為0.1μF,用于外部電源的退耦。晶振X1、電容C1和C2用于時鐘振蕩電路。X1的頻率是12 MHz,C1和C2是容量為15~30 pF的高頻瓷片電容。MAX232提供電平轉(zhuǎn)換。
4.2 顯示電路設(shè)計 液晶顯示電路選用了LCD1602模塊。從成本和適用性的方面考慮,選用了該集成模塊。具體的引腳功能與所采用的芯片資料都已經(jīng)在3.2節(jié)中做了詳細介紹,在此只做以下電路說明。

由于單片機的IO口資源極為有限,而對于這樣有較多引腳的外圍模塊,應(yīng)當考慮未來是否有擴展的需要,能否直接采用串口連接。對于有擴展必要的設(shè)計,可采用相關(guān)的芯片進行IO口擴展。而此處作為設(shè)計簡潔性與成本方面的考慮,其剩余單片機的端口在未來使用過程中,仍然有較大的空間。因此,該部分的設(shè)計就直接采用了較少使用的串口連接方式。其7—14號8個數(shù)據(jù)端口直接與單片機的P0口相連,P0口可以外擴存儲器作為地址總線,也可以外存儲器擴作為數(shù)據(jù)總線,也可以不外擴直接作為普通IO口,但內(nèi)部無上拉電阻,作為輸入或輸出時應(yīng)在外部接上拉電阻,因此,在與單片機相連是應(yīng)該再添加上拉電路。具體連接如圖4-5所示。
圖4-5 LCD1602連接PO口的上拉電路圖
此外,該液晶模塊的第3腳為液晶對比度調(diào)整端,當接電源時對比度最低,接地時對比度最高,但對比度過高會產(chǎn)生“鬼影”,使用該端口的功能是一般是通過串聯(lián)一個10K的滑動變阻器進行調(diào)節(jié)。但在此處,考慮到顯示畢竟只是一個輔助顯示時間設(shè)置信息的工具,而大部分運行的時間,是沒有不斷調(diào)節(jié)顯示效果的需求的,因此,只在此說明,并不做相應(yīng)設(shè)計。
綜上所述,該模塊功能雖然比較完備和強大,引腳相比于其他模塊也較多,但各個引腳的功能分配比較合理,連接時能夠比較清晰的認識該模塊的基本結(jié)構(gòu)和工作原理,符合預(yù)期設(shè)計目標所要求的原則。
4.3 時鐘電路設(shè)計 實時時鐘功能是本次設(shè)計的一個核心部分,它作為整個設(shè)計部分的時間信息的基準,其設(shè)計的穩(wěn)定性與精確性就基本決定了該設(shè)計的精度與能應(yīng)用的環(huán)境,故其設(shè)計的重要性不言而喻。
本設(shè)計中選用了較為常用的DS1302實時時鐘模塊,其性能屬性基本滿足了所需設(shè)計的要求。其共有Vcc1、Vcc2兩個電源引腳,GND接地端,X1、X2兩個振蕩源連接端,I/O端在三線接口時為雙向串行數(shù)據(jù)線,SCLK為串行時鐘端,此外,也自帶了RST復(fù)位端。具體的電路連接如下圖4-6所示。其連接的說明如下。
首先DS1302的連個電源引腳中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當Vcc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當Vcc2小于Vcc1時,DS1302由Vcc1供電。因此,在如圖所示的電源端連接中,Vcc2直接連接了主板上的5V供電端,而Vcc1和紐扣型電磁相連,作為后備電源,保證了即使在主板斷電的情況下仍然能夠準確的走時,避免了斷電后再次啟動需再次設(shè)置時間起點,體現(xiàn)了其人性化的設(shè)計。
X1、X2為振蕩源連接端口,根據(jù)技術(shù)手冊的說明,此處應(yīng)當外接32.768kHz的晶振。但時鐘芯片要能正常較為精確的計時,則對于晶振的穩(wěn)定性要求極高,故在此處一般是外接兩個6pF的接地電容,能大大的提高其走時準確性。但在此處選用了0.1uF的電容,在實際的測試中發(fā)現(xiàn)有一定的偏移。經(jīng)過查找原因,發(fā)現(xiàn)DS1302 是依靠外部晶振與其內(nèi)部的電容配合來產(chǎn)生時鐘脈沖的。 由于DS1302在芯片本身已經(jīng)集成了6pF 的電容,所以, 為了獲得穩(wěn)定可靠的時鐘,必須選用具有 6pF 負載電容的晶振。然而,在選用晶振時僅僅注意了晶振的額定頻率值,而忽視了晶振的負載電容大小,甚至連許多經(jīng)銷商也不能提供所售晶振的負載電容。所以即使在 使用中選用了符合 32768Hz 的晶振,但如果該晶振的負載電容與 DS1302 提供的 6pF 不一致時,就會影響晶振的起振或?qū)е抡袷庮l率的偏移,出現(xiàn)上述在應(yīng)用中的問題。

I/O、SCLK、RST三個端口構(gòu)成簡單的SPI總線接口,是一般低速外圍器件與CPU進行數(shù)據(jù)傳輸?shù)牡湫徒涌。在主器件的移位脈沖下,數(shù)據(jù)按位傳輸,高位在前,低位在后,為全雙工通信。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST為高電平時,所有的數(shù)據(jù)傳送被初始
圖4-6 DS1302電路圖
化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。在此設(shè)計中,三個端口分別于與單片機P1.4、P1.5、P1.6三個端口相連,十分方便。
4.4 紅外接收電路設(shè)計 本次設(shè)計的中的“無線打開關(guān)閉插座”的功能,采用紅外遙控的方式實現(xiàn),其有效距離和有效接收角度均符合一般的應(yīng)用場景。
在發(fā)送端使用了較為常用的采用日本NEC編碼的一體化紅外遙控按鍵,其超低的發(fā)射功耗和豐富的按鍵資源,已經(jīng)足夠完成該設(shè)計目標。其基本工作原理為利用不同的脈沖時間來編碼信號。
紅外接收電路使用的是紅外一體化接收管VS1838B,它有3個管腳,一個腳接地,還有一個腳接電源,另外一個腳接到單片機的I/O口,本次設(shè)計用的是P3.3口,如圖4-7所示。通常,紅外遙控器將遙控信號(二進制脈沖碼)調(diào)制在40KHZ的載波上,經(jīng)緩沖放大后送至紅外發(fā)光二極管,產(chǎn)生紅外信號發(fā)射出去。經(jīng)過空間的傳送被紅外接收管接收到,在接收過程中,脈沖通過光學濾波器和紅外接收管轉(zhuǎn)換為40KHZ的電信號,此信號經(jīng)過放大,檢波,整形,解調(diào),送到解碼與接口電路,從而完成相應(yīng)的遙控功能
圖4-7紅外接收電路連接圖
需要說明的是,在本設(shè)計中,為了實物產(chǎn)品的緊湊,節(jié)省空間資源。所以DS1302模塊和VS1838B紅外接收模塊是印制在同一塊PCB板上的。電路原理圖如圖4-8所示。實物圖如圖4-9所示。

圖4-8 DS1302和VS1838B整合電路原理圖
圖4-9 DS1302和VS1838B整合電路實物圖
4.5 繼電器控制電路該部分電路是本電路的輸出部分,所選用的繼電器型號為SRD-05VDC-SL-C,按照技術(shù)手冊的說明,其額定的驅(qū)動電壓為5V,而經(jīng)過測試單片機端口的實際電壓在5V±0.2V的范圍內(nèi),因此理論上是可以進行直接驅(qū)動的。但考慮上電路上如果再串聯(lián)一個用于開關(guān)狀態(tài)指示的發(fā)光二極管,會有一定的壓降存在,同時也考慮到要保證被控電路的穩(wěn)定性,保證被控電路上的電器安全,所以在此不適用直接驅(qū)動的連接方式,而是采用了一個三極管的放大電路進行驅(qū)動,以下作詳細說明。
如圖4-10所示,由三極管組成共射極放大電路,二極管D2形成繼電器回路保護,其中,繼電器觸發(fā)信號有單片機P1.3口直接產(chǎn)生,并串聯(lián)有LED-RED發(fā)光二極管作為工作狀態(tài)指示燈。當P1.3口輸出高電平時,指示燈亮,繼電器吸合,被控電路導(dǎo)通;當P1.3口輸出低電平時,繼電器斷開,指示燈熄滅,被控電路斷開。此處,輸出功率由繼電器上所標示的接點容量決定的。

圖4-10 繼電器控制電路
4.6 按鍵電路 由于本設(shè)計中設(shè)計到時間設(shè)置,模式調(diào)整等眾多的信息輸入,故必然

需要較多的按鍵完成該功能。其按鍵本身為機械結(jié)構(gòu),結(jié)構(gòu)十分簡單。且由于該設(shè)計中單片機的I/O口剩余較多,因此,按鍵直接與單片機的I/O口相連。但機械式按鍵最大的問題是按鍵時存在嚴重的信號抖動的問題。對于這個問題,可以直接利用數(shù)字電路器件進行消除抖動,也可用波形整形器件進
圖4-11 按鍵電路
行信號整形。以上二者均可以較好的消除問題,但器件的增加無疑會帶來制造成本的增加和功耗的增加,因此,通常的辦法是采用利用軟件編程進行延時消抖,經(jīng)過實際測試,效果什么良好。連接圖如圖4-11所示。
4.7本章小結(jié) 本章詳細的闡述了硬件電路部分的設(shè)計過程,從電源電路、晶振電路、復(fù)位電路、RS232轉(zhuǎn)USB接口電路開始搭建了單片機最小系統(tǒng),接著完成了對顯示電路部分、實時時鐘電路部分、紅外接收電路部分、繼電器控制電路部分以及按鍵電路部分的詳細設(shè)計,并根據(jù)設(shè)計原理圖詳盡的說明了各個部分的設(shè)計的合理性以及各個部分所需完成的功能。經(jīng)過該章的說明,本設(shè)計在硬件部分已經(jīng)完備,接下來只剩下驅(qū)動其正常工作的軟件設(shè)計部分。
第5章 軟件設(shè)計
5.1 主程序設(shè)計
系統(tǒng)軟件設(shè)計采用模塊化設(shè)計,分為LCD1602顯示模塊、DS1302讀寫
圖5-1 主程序流程圖
模塊、紅外遙控模塊、按鍵處理模塊。通過程序?qū)崿F(xiàn)的可行性分析和軟件架構(gòu)的整體規(guī)劃,其主程序的流程圖大體如下圖5-1所示。
其中,初始化模塊主要是對DS1302時鐘芯片、LCD1602液晶顯示模塊進行任務(wù)初始化設(shè)置,并打開INT0中斷進行紅外按鍵檢測和設(shè)置T0中斷允許狀態(tài),以上流程均在主程序最前端,但并不在循環(huán)體內(nèi),只作為開機啟動時初始化的部分。
接著,進入while( )循環(huán)體內(nèi)以后,因為整個軟件結(jié)構(gòu)中,設(shè)置模式作為了第一級設(shè)置菜單,所以首先應(yīng)進行當前設(shè)置模式的判斷,如果有設(shè)置模式切換的輸入(K5按鍵),要進行相應(yīng)的設(shè)置模式的切換,然后再進行對當前的設(shè)置模式進行顯示。
在顯示當前所處的設(shè)置模式以后,程序繼續(xù)向下判斷應(yīng)該進入哪個對應(yīng)的設(shè)置模式。根據(jù)不同的判定結(jié)果,可進入校時子程序、復(fù)位子程序、定時子程序、運行子程序、運行模式切換子程序這些這些子程序中的一個,執(zhí)行對應(yīng)的子程序,進行相應(yīng)的操作。若要進行各個子程序間的切換,可利用設(shè)置模式切換的程序進行切換。
在正常工作狀態(tài)時,系統(tǒng)會一直在運行子程序中進行循環(huán),根據(jù)當前運行模式的設(shè)定,分別可進入長開模式、長關(guān)模式和自動逐組查詢的模式,在各個運行模式中分別對受控繼電器進行常閉、常開和定時開關(guān)的操作。至此,整個主程序的循環(huán)體結(jié)束,運行流程圖指向返回循環(huán)體起始點。
5.2 LCD1602顯示程序設(shè)計 LCD1602液晶顯示程序,在本次設(shè)計中并無特別復(fù)雜的設(shè)計要求,只需要寫出最基本的顯示驅(qū)動程序即可。根據(jù)液晶屏的技術(shù)手冊給出的驅(qū)動顯示的時序圖,即可順利的寫出所需顯示驅(qū)動。在此,值得注意的問題是,由于液晶的驅(qū)動有一定的轉(zhuǎn)換時間延遲,所以在調(diào)用該顯示驅(qū)動時要注意恰到好處的使用延時函數(shù),避免顯示亂碼。除此之外,對于未用到的字符塊,為避免不必要的亂碼顯示,可在對應(yīng)空白處寫入空格,可有效避免該問題的出現(xiàn)。
根據(jù)顯示需要,該模塊的程序主要由以下三個函數(shù)組成,分別為:
void LCD_init( ); //屏幕初始化
void LCD_writecom(unsigned char com); //寫屏幕的指令
void LCD_writedata(unsigned char dat); //寫屏幕的數(shù)據(jù)
每一個字符塊的顯示,均采用先利用LCD_writecom()指令寫入函數(shù)進行顯示位置的設(shè)置,再利用LCD_writedata()顯示數(shù)據(jù)函數(shù)寫入需要顯示的字符數(shù)據(jù)。對于需要在連續(xù)位置顯示字符的情況,可在一次寫入顯示地址以后,連續(xù)寫入顯示字符的數(shù)據(jù);對于需要在非連續(xù)位置顯示的字符,則必須在每次寫入字符數(shù)據(jù)之前,寫入對應(yīng)的顯示地址。整個顯示驅(qū)動來說,結(jié)構(gòu)什么簡單,調(diào)用時也十分方便。
5.3 DS1302實時時鐘程序設(shè)計 DS1302是本次設(shè)計的核心部分,同樣,該部分的軟件部分也承擔了大部分實現(xiàn)功能的任務(wù)。從這部分軟件模塊的任務(wù)規(guī)劃來說,主要負責了時間信息的輸出顯示,和校時、定時、復(fù)位、模式四種鍵處理。而其中最為核心的部分為校時部分的程序,定時、復(fù)位、時間顯示也都均基于校時程序而做部分的操作而構(gòu)建的。所以,下面將主要展示校時子程序的程序流程圖,如下圖5-2所示。
當進入定時子程序以后,DS1302寫入暫停標志為1,使時鐘進入暫停運行狀態(tài),然后進入按位調(diào)整時間信息的程序,并且默認首先進入“年”調(diào)整位,接著再判斷是否有“調(diào)整位”切換的輸入,如果有,則進入切換程序進行位切換,最后進入判斷當前所處的“調(diào)整位”。進行“調(diào)整位”判定以后,再分別進入“年份調(diào)整”、“月份調(diào)整”、“日期調(diào)整”、“小時調(diào)整”、“分鐘調(diào)整”各個具體的調(diào)整子程序,在各個子程序中應(yīng)當注意的是每一個位的溢出判斷要考慮周全,特別是在月份溢出判斷中,要進行比較復(fù)雜的判定過程。最后,在進行了各個位的調(diào)整以后,再將調(diào)整后的數(shù)據(jù)分別寫入DS1302各位對應(yīng)的存儲單元,并且在LCD1602上顯示出來。DS1302寫入走時標志,至此,整個校時的子程序處理結(jié)束。
在前面,說過定時、復(fù)位也大都基于校時程序而衍變的。其中,定時子程序與校時子程序不同之處在于,在完成各個位調(diào)整以后,并不把其設(shè)置的時間信息寫入DS1302的存儲單元,而是寫入單片機的內(nèi)部擴展的RAM單元,以作開/關(guān)時間信息。同時,在進行設(shè)置的過程中也不需要暫停走時。這兩個子程序的主要區(qū)別僅為以上兩點,其他部分基本無差異。具體流程圖如圖5-3所示。
圖5-2 校時子程序流程圖

圖5-3 定時子程序流程圖
5.4 VS1838B中斷程序設(shè)計 VS18038B紅外接收端主要實現(xiàn)的功能是無線打開關(guān)閉開關(guān),由于是模塊化的器件,功能實現(xiàn)也比較簡單。在此處主要說明的是如何采用單片機的中斷原理實現(xiàn)紅外的接收功能。
由于發(fā)射的紅外波是以高低電平時長作為編碼信息的,所以在VS1838B接收時,要采用定時/計數(shù)器進行對每個碼元的高低電平持續(xù)時間進行測量。而紅外接收端的信號觸發(fā)采用了外部響應(yīng)中斷方式,一旦有接收到紅外信號,就立即進入中斷程序。其流程圖如圖5-4所示。
圖5-4 VS1838B中斷接收程序流程圖
由中斷的基本原理可知,在進入中斷以后,首先進入現(xiàn)場保護。然后在檢測到紅外信號觸發(fā)以后,進入外部中斷程序,在中斷程序中啟動定時/計數(shù)器T0,開始對每個碼元的高低電平進行計時,接著完成解碼,根據(jù)解碼的信息對單片機進行相應(yīng)控制,此處通過對長開\長關(guān)運行模式的切換,以實現(xiàn)無線打開/關(guān)閉開關(guān)的功能。
5.5 系統(tǒng)測試經(jīng)過前面系統(tǒng)的總體設(shè)計、控制器和外圍模塊的介紹、軟硬件設(shè)計,系統(tǒng)所需實現(xiàn)的功能已基本完成。在此章節(jié)中將主要以實驗結(jié)果為介紹主體,對于測試過程中遇到的問題或漏洞進行總結(jié)分析。

首先,進入的是系統(tǒng)第三項設(shè)置模式,即定時設(shè)置模式,如圖5-4所示。
圖5-5 定時設(shè)置模式下的實物圖
同時此刻的運行模式為自動逐組查詢模式,如圖所示X3。此模式下,可根據(jù)需要,自行設(shè)定開關(guān)在某時刻進行開或者關(guān)的操作。例如圖種所示為2014年1月1日0點10分打開插座。運行結(jié)果如下圖5-6和圖5-7所示。可以看到,在運行模式為自動逐組查詢的模式下,設(shè)置時間之前指示繼電器開關(guān)的LED燈為熄滅狀態(tài);而當時間到達設(shè)定值以后,指示燈亮,繼電器吸合。說明其已基本達到了設(shè)計 之初的目標。此外,本設(shè)計是可以至少對16組時間點進行定時的,經(jīng)過測試,完全符合預(yù)期目標。
除此之外,可以看到圖中的紅外線接收頭和紅外遙控器,設(shè)計目標中要求能無線打開關(guān)閉插座。此處,在演示的過程中已經(jīng)體現(xiàn),完全達到了設(shè)計目標。
圖5-6 自動逐組查詢運行模式下到達定時之前的運行圖
圖5-7 自動逐組查詢運行模式下到達定時之后的運行圖
5.6 本章小結(jié) 本章介紹了自動定時開關(guān)插座的軟件設(shè)計。首先介紹了整個主程序的工作流程,其主要結(jié)構(gòu)為一個大的循環(huán)體,在其循環(huán)體內(nèi)根據(jù)當前所處的模式分別進入定時子程序、校時子程序、復(fù)位子程序、運行子程序、運行模式切換子程序等子程序,各個子程序之間的切換運行,可通過按鍵進行切換,也可通過紅外遙控按鍵進行切換。其次,對于各個子程序部分,本章主要詳細說明了定時子程序、校時子程序和紅外接收中斷子程序,其中定時和校時子程序核心部分較為相似,而紅外接收中斷子程序較為詳細的介紹了整個中斷過程,體現(xiàn)了中斷原理的實際應(yīng)用。
最后在完成了對源代碼的編譯后,對所搭建的硬件實物進行了運行測試,所得的測試結(jié)果已基本符合了設(shè)計目標。對于測試中遇到的問題,也在調(diào)試的過程中進行了修改和完善。
結(jié)論本文對當前自動定時開關(guān)的相關(guān)的背景做了簡要介紹,并設(shè)計了一種簡單實用的自動定時開關(guān)插座,完成了自動定時開關(guān)整體的硬件設(shè)計和軟件設(shè)計,并經(jīng)過調(diào)試、整合,做出來一套完整的最終產(chǎn)品,達到了預(yù)期要求。本系統(tǒng)具有功能完備、使用便捷、應(yīng)用前景廣泛等優(yōu)點,相比于現(xiàn)有的一些機械式定時開關(guān)的產(chǎn)品具有較為完善的功能和實用性,主要成果如下:
(1)本設(shè)計采用了51系列單片機來設(shè)計了自動定時開關(guān)插座,能夠較為精確的按照設(shè)定的時間值對插座進行開關(guān)控制,最多可設(shè)置16個時間點的開關(guān)控制。
(2)該設(shè)計中考慮到了自動定時開關(guān)插座運用環(huán)境的多樣性,故在該設(shè)計中添加了紅外遙控功能,能無線的打開關(guān)閉插座;
(3)完成該設(shè)計過程中利用了Keil C51進行了軟件編程設(shè)計,利用Protues完成了對硬件電路的設(shè)計。獨立完成了該設(shè)計軟硬件的設(shè)計,并搭電路進行了驗證測試。
由于時間以及個人能力有限,本文僅對該領(lǐng)域的產(chǎn)品進行了初步的完善和改進,實現(xiàn)了目前最為需求的功能,以后可做如下改進:
(1)本系統(tǒng)在定時方面,運行的模式只加入了長開、長關(guān)和自動查詢控制模式,而在這方面可以通過軟件的進一步優(yōu)化,添加更多的運行模式,例如,按星期控制開關(guān)的模式、例外情況的工作模式等等。
(2)本系統(tǒng)只設(shè)計了對一個繼電器開關(guān)進行的控制,而從節(jié)能和功能完善性方面考慮,也可以同時對多組繼電器開關(guān)進行控制,進一步的調(diào)高了整機的工作效率,提升產(chǎn)品功能。
致謝歷時將近兩個月的時間終于將這篇文檔寫完,在文檔的寫作過程中遇到了無數(shù)的困難和障礙,都在同學和老師的幫助下度過了。尤其要強烈感謝我的文檔指導(dǎo)老師---xx老師,他對我進行了無私的指導(dǎo)和幫助,不厭其煩的幫助我對設(shè)計項目指導(dǎo)和改進。另外,在校圖書館查找資料的時候,圖書館的老師也給我提供了很多方面的支持與幫助。在此向幫助和指導(dǎo)過我的各位老師表示最衷心的感謝!
感謝這篇文檔所涉及到的各位學者。本文引用了數(shù)位學者的研究文獻,如果沒有各位學者的研究成果的幫助和啟發(fā),我將很難完成本篇文檔的寫作。
感謝我的同學和朋友,在我寫文檔的過程中給予我了很多相關(guān)素材,還在文檔的撰寫和排版過程中提供熱情的幫助。
由于我的學術(shù)水平有限,所寫文檔難免有不足之處,懇請各位老師和學友批評和指正!
附錄4文獻翻譯
單片機嵌入式閃存技術(shù)的演變
摘要------隨著單片機(微型控制單元)的產(chǎn)品大量應(yīng)用,受各種各樣性能需求的驅(qū)動,嵌入式閃存技術(shù)經(jīng)歷了長足的進步。應(yīng)用于自動控制時要求高溫運行下的高可靠性,應(yīng)用于智能卡時要求非常低功耗的嵌入式EEPROM,應(yīng)用于醫(yī)療時要求超低電壓驅(qū)動,這些都是嵌入式閃存發(fā)展的驅(qū)動因素。與存儲單元技術(shù)一起發(fā)展的是,通過開發(fā)專用的設(shè)計平臺,從而使用優(yōu)化的嵌入式閃存技術(shù),存儲器接口和總線設(shè)計,以及整個芯片設(shè)計方法,解決了性能/功耗均衡的問題。采用分裂式柵極MONOS(金屬氧化氮氧化硅)閃存技術(shù),已經(jīng)實現(xiàn)了高級單片機產(chǎn)品系列,其廣泛應(yīng)用的產(chǎn)品包括了自動控制和安全領(lǐng)域。
該文檔發(fā)表在:IC設(shè)計與技術(shù)(ICICDT),2011年IEEE國際會議,發(fā)行日期:2011年5月2日至4日,作者:Hidaka,H.
第一部分
介紹
由于2000年代的前十年間實時控制應(yīng)用的快速增長,閃存型單片機和采用嵌入式閃存的微控制器,在市場接受度方面有了跨越式的進步?删幋a的嵌入式存儲器取代片上的掩模只讀存儲器引發(fā)了自適應(yīng)控制應(yīng)用和數(shù)據(jù)流應(yīng)用的快速增長。隨著生產(chǎn)和庫存的各個方面成本的降低,相比于不可更改的只讀存儲器或者使用獨立的閃存的單片機,這種進步已經(jīng)體現(xiàn)了它的創(chuàng)新,具有顯著地成本/價值的優(yōu)勢。
采用各種各樣的嵌入式閃存技術(shù)的閃存型單片機產(chǎn)品挑戰(zhàn)著新的市場的驅(qū)動者,例如自動控制,智能IC卡,醫(yī)療應(yīng)用,以及那些擴展單片機市場的領(lǐng)域,而交互地嵌入式閃存已經(jīng)成為在嵌入式存儲技術(shù)領(lǐng)域中最成功和最大的商業(yè)應(yīng)用,它僅次于帶有COMS的嵌入式SRAM。在1990年代,閃存型單片機主要用于調(diào)試系統(tǒng)的原型。隨著閃存型單片機創(chuàng)新的進步,幾乎所有的單片機市場都集中到閃存型單片機解決方案,嵌入式閃存技術(shù)演進是

最重要的代表。
圖1. 以存儲器的角度劃分的單片機產(chǎn)品的演變過程圖
本文回顧了過去和現(xiàn)在的發(fā)展狀況,并從這些過程中的觀點,電路和應(yīng)用方面,來探索單片機的嵌入式閃存技術(shù)在未來的發(fā)展方向。創(chuàng)新的因素不同于單獨的閃存和一個在以存儲器的角度劃分的演變圖中的未來的單片機概念。
第2部分
嵌入式閃存技術(shù)的演變

在圖2的存儲技術(shù)樹狀圖中,這些嵌入式應(yīng)用對存儲技術(shù)的選擇相當
圖2. 閃存和嵌入式閃存技術(shù)的演變

的挑剔,因為各個嵌入式應(yīng)用有其各自的具體的需求。因為單純的使用高密度閃存技術(shù)的數(shù)據(jù)存儲器并不能滿足嵌入式應(yīng)用在可靠性和性能方面的要求,并且嵌入式閃存技術(shù)也在不斷的自我發(fā)展中。
圖3. 嵌入式閃存技術(shù).高密度的1Tr-NOR存儲單元正被高性能的在1.5Tr/2Tr存儲單元所取代。電荷儲存單元(Charge-trapping cells)正出現(xiàn)在一些要求可靠性的應(yīng)用里
這兩種技術(shù)的轉(zhuǎn)換特性對嵌入式閃存技術(shù)來說是至關(guān)重要的(圖3):
1.1T單元到1.5T(分裂柵結(jié)構(gòu))和2T單元擁有高性能/低功耗的優(yōu)點,而
2.離散的電荷儲存單元技術(shù)(MONOS和Nano-dot)擁有更高的可靠性的優(yōu)點。
這些趨勢已經(jīng)表明正從標準化的單一的閃存產(chǎn)品(例如NAND-flash存儲器)開始衍變。雖然傳統(tǒng)的浮柵型的NOR結(jié)構(gòu)仍將在一些高密度的嵌入式應(yīng)用中繼續(xù)使用,但是由于單片機市場細分的多元化需求,預(yù)計不久將普遍性的使用分裂柵結(jié)構(gòu)和電荷儲存結(jié)構(gòu)。
考慮到分裂柵結(jié)構(gòu)和的相關(guān)先進的COMS邏輯晶體管的兼容性,首先是接入門是更好的選擇(最后是控制柵),因為它是唯一的由一個薄膜電荷捕獲存儲層實現(xiàn),而不是通過層疊浮動?xùn)艠O結(jié)構(gòu)。這可能表明其未來技術(shù)的融合點在于分裂柵單元和電荷儲存單元結(jié)構(gòu)中。這種選擇的優(yōu)點已經(jīng)在90nm的CMOS邏輯平臺上的實驗被證明。
第3部分
最先進的單片機設(shè)計
除了利用閃存型單片機的可編程性的特點,通過設(shè)計,生產(chǎn)和庫存控制來全面的降低成本,同時也因為“嵌入式”的高性能和高數(shù)據(jù)安全性,嵌入式正被優(yōu)先選擇使用。嵌入式閃存的優(yōu)勢和可能的缺點都列在了表1中。產(chǎn)品的設(shè)計應(yīng)該考慮利用嵌入式閃存的特性所帶來的整體成本和價值優(yōu)勢,克服更高的晶片制造成本的缺點。通常,只有在統(tǒng)一的設(shè)計平臺上利用優(yōu)化的嵌入式閃存的宏命令,更多元化的單片機產(chǎn)品系列才能更有效的被支持。
通過減小設(shè)備的尺寸和電路技術(shù)的發(fā)展,穩(wěn)步的發(fā)展趨勢已經(jīng)在自動控制領(lǐng)域的單片機應(yīng)用中得以體現(xiàn),十年間CPU性能增長了20倍,ROM容量增長了8倍。由于受限于其較小的系統(tǒng)芯片和一些需要在較高溫度下運行的特定的技術(shù)要求,單片機的技術(shù)的發(fā)展力度并沒有最前沿的SOC系統(tǒng)那樣大。
嵌入式閃存的優(yōu)點:
-通過內(nèi)部訪問路徑
(1)快速,低功耗
(2)高數(shù)據(jù)安全性
(3)高可靠性,低電磁干擾,低系統(tǒng)開銷
(4)更高的設(shè)計自由度
存儲容量,接口,設(shè)計的功能和運行電壓
-通較低的激活率,相當于加裝發(fā)熱冷卻器
-有助于優(yōu)化大規(guī)模集成電路功能和成本
可能的嵌入式閃存的缺點:
(1)大、小容量的存儲器的成本較高
(由于其低密度,較高的生產(chǎn)成本)
(2)由于非標準化帶來的成本開支
(3)單一的資源
(4)多種類型的存儲器整合困難
表1.和單獨的閃存相比嵌入式閃存的優(yōu)點和可能的缺點
當前最先進的單片機設(shè)計的要求實例如表2.所示。因為單片機中的嵌入式閃存需要很高的訪問速度以滿足CPU的執(zhí)行速度,在許多應(yīng)用中都以性能需求為設(shè)計方向進行設(shè)計,這點與單獨的閃存產(chǎn)品是大為不同的。同時,數(shù)據(jù)可靠性與耐高溫特性和低漏電特性一樣,它們都是大多數(shù)單片機應(yīng)用產(chǎn)品的重要指標。
下面描述了當前細分的單片機市場和嵌入式閃存規(guī)格的要求
1.自動控制的應(yīng)用產(chǎn)品,如傳動系統(tǒng)需要有高密度,耐高溫,有高可靠性的嵌入式閃存設(shè)計。利用當前最先進的分層傳感設(shè)計,優(yōu)化存儲分塊和高可靠性的存儲單元技術(shù),在嵌入式閃存中隨機存取速度能高達10ns達到160?(max),以適用于這種應(yīng)用環(huán)境。

2.防止破解攻擊的安全功能設(shè)計在單片機智能IC卡產(chǎn)品設(shè)計中是占比很大的一個部分。用于數(shù)據(jù)操作的嵌入式EEPRROM,在編程和擦除時要具有相當快的速度和較低驅(qū)動電壓,這在非接觸式智能卡中是必不可少的要求,因此,這使得在這個領(lǐng)域中對嵌入式閃存技術(shù)的選擇是非常挑剔的。
圖4.高端自動控制產(chǎn)品市場中CPU和嵌入式閃存性能需求趨勢
3新型的醫(yī)療/保健應(yīng)用產(chǎn)品需要具有能超低電壓驅(qū)動或超低功耗的單片機產(chǎn)品。未來,嵌入式閃存的編程/擦除對于高級醫(yī)療產(chǎn)品中數(shù)據(jù)流的收集和存儲操作是很有必要的。
圖5.高端自動控制產(chǎn)品市場中嵌入式閃存性能需求趨勢
表2.單片機產(chǎn)品中對嵌入式閃存的要求
這些需求的例子表明了多元化的單片機產(chǎn)品系列,意味著對嵌入式閃存的性能和功能有著的很廣的期望,在技術(shù)/電路/系統(tǒng)方面還有很多東西需要探索和開發(fā)利用。
圖6.描述了在嵌入式閃存設(shè)計中的關(guān)鍵的結(jié)構(gòu)和電路技術(shù)。在代碼存儲應(yīng)用程序中頻繁讀取的代碼,非升壓字線利用分裂柵單元結(jié)構(gòu)有望提高隨機讀取訪問速度和低功耗。在充電泵電路的編程/擦除操作會顯著影響嵌入式閃存的低功耗設(shè)計。因為閃存技術(shù)在降低編程/擦除電壓方面存在固有的缺點,因此,高能效的編程/擦除算法和優(yōu)化產(chǎn)生的高壓波形來緩解過度功耗的問題對于節(jié)能設(shè)計是非常重要的。

圖7.展示了目前使用分裂柵MONOS嵌入式閃存技術(shù)的單片機產(chǎn)品系列,在芯片上500k的EEPROM的編程/擦除容量以高達100MHz的讀取訪問都低于Tj=160(max)。電池驅(qū)動的運行電壓范圍低至1.62V。

圖6.嵌入式設(shè)計中主要的考慮方向
圖七. 90nm閃存型單片機產(chǎn)品
第四部分
節(jié)能型非易失性存儲器的影響
節(jié)能系統(tǒng)需要能以低耗能的方式頻繁的重寫非揮發(fā)性存儲器。當待機丟失的問題在高級的大規(guī)模集成電路系統(tǒng)中成為一個關(guān)鍵的問題時,通過間歇性的電源開關(guān)方案(圖.8),即將頻繁的開關(guān)空轉(zhuǎn)狀態(tài)轉(zhuǎn)換為關(guān)機狀態(tài),因此,嵌入式非易失性存儲器在降低系統(tǒng)功耗方面將發(fā)揮重要作用。頻繁的電源開/關(guān)需要頻繁的非易失性存儲和電路狀態(tài)與數(shù)據(jù)的檢索。在這里,非易失性存儲器需要高速且又節(jié)能的重寫性能。

圖.8間歇性系統(tǒng)運行方案和常規(guī)關(guān)閉方案
圖.9描述了與電磁型RAM相比,各種嵌入式閃存技術(shù)的重寫速度和能耗。因為在功耗控制方案上各個系統(tǒng)的要求多種多樣,但所有當前的嵌入式閃存和下一代的非易失性存儲器都適合用于間歇性的電源控制應(yīng)用。但是,高效省電的方案將要求能立即存儲和檢索電路的狀態(tài),且在芯片上要支持分布式的高速非易失性存儲。新興的非易失性存儲器具有一個意義非凡的特性,即利用其高速和低電壓的重寫能力(圖.10),它的每比特重寫的能耗比現(xiàn)有的嵌入式閃存低了好幾個數(shù)量級,這一點可以有效的被開發(fā)利用。
圖.10 非易失性存儲器的重寫性能.重寫頻率范圍覆蓋系統(tǒng)中的電源開/關(guān)方案

參考文獻:
[1] S. Kianian et al., Symp. VLSl Tech. Dig. Tech. Papers, pp.71-72 (1994).
[2] B. Eitan et al., Proc. Int. Conf. Solid State Devices and Materials,
pp. 522-524 (1999).
[3] J. A. Yater et al., NVSMW, pp. 77-78 (2007).
[4] H. M. Lee et al., Dig. NVSMW, pp. 15-16 (2006).
[5] K. Baker, Proc. ICICDT, pp.185-189 (2009).
[6] J. A. Yater et al, International Memory Workshop (2009).
[7] W. Stenzl and J. Hupper, in EE-Times Europe, March 17 (2008).
附錄4
[8] M. Hatanaka and H. Hidaka, Proc. Tech. Papers, ASSCC, pp.38-41 (2007).
[9] H.Hidaka, in chap. 7, ed. K. Zhang, “Embedded memories for nano scale VLSI”, Springer (2009).
[10] M. Zwerg et al., Dig. Tech. Papers, ISSCC, pp. 334-335 (2011).
Evolution of embedded flash memory technology for MCU
Embedded flash memory technology has undergone tremendous growth of demands with various performance requirements driven by expanded applications of MCU (Micro Controller Unit) products. High temperature operations with highest reliability for auto-motive applications, very low power embedded EEPROM functions for smart-cards, and ultra low-voltage operations for medical applications are driving factors in developing embedded flash technologies. Together with evolving memory cell technology, resolving performance/power trade-offs by developing dedicated design platforms with optimized eFlash technology, memory interface & bus designs, and the whole chip design methodologies, has realized advanced MCU products line-ups by split-gate MONOS flash technology with a wide range of applied products including auto-motive and security applications.
This paper appears in: IC Design & Technology (ICICDT), 2011 IEEE International Conference on, Issue Date: 2-4 May 2011, Written by: Hidaka, H.
SECTION I
INTRODUCTION
Flash-MCU, Micro-Controller Unit with embedded flash memory storage (eFlash), has made a leaping progress in the market acceptance according to the expansion of real-time control applications in 2000's. The programmable code storage by eFlash in place of on-chip mask-ROM has triggered rapid expansion of adaptive control and data stream applications. Together with over-all production and inventory cost reduction, this development has realized an innovation with remarkable cost/value advantage over MCU with fixed ROM or MCU with stand-alone flash memory.
Diversified eFlash technologies for flash-MCU products have challenged new market drivers such as auto-motive, smart-IC card, and medical applications and
have expanded the MCU market, while alternately eFlash has become the most successful, largest business in embedded memory technology only second to CMOS-inclusive embedded SRAM. In 1990's Flash-MCU was mainly used in proto-types for debugging systems. With the advancement of Flash-MCU innovation, almost all the MCU market has been focused onto flash-MCU solutions (Fig. 1), where eFlash technology evolution represents the most important factor.
Fig. 1. Evolution of MCU products in a memory-centric view.
This paper reviews the past and current status and explore the future directions of eFlash technology for MCU, from the viewpoints of process, circuit, and applications. Innovative factors different from stand-alone flash memory and a future MCU concept in the memory-centric view are also presented.
SECTION II
EVOLUTION OF EMBEDDED FLASHTECHNOLOGY

In the flash memory technology tree in Fig. 2, those suitable for embedded uses have been quite selective because of requirements specific to embedded uses. Because high-density flash technologies for stand-alone data memory don't meet the requirements for embedded uses in reliability and performance, eFlash technologies have evolved on its own.
Fig. 2. Evolution of Flash and eFlash memory technologies.

Fig. 3. Embedded flash memory technologies. 1Tr-NOR cells for high density are giving way to 1.5Tr/2Tr cell for performance. Charge-trapping cells are emerging in some applications for reliability.
Two technology transitions specific to eFlash technologies have been remarkable (Fig. 3):
1T cell to 1.5T (split-gate structure) and 2T cells for high-performance/low power, and Discrete charge-trapping cell technology (MONOS and Nano-dot[5]) for higher reliability.
These trends prove a deviation from the standardized standalone flash memory products such as NAND-flash memories. Although the conventional floating-gate NOR structure will survive in some of the high-density embedded uses, pervasive use of split-gate and charge-trapping storage structures are expected according to the requirements by diversified MCU market segments.
Considering the structural compatibility of the split-gate with advanced underlying CMOS logic transistor, Access-Gate first (Control-Gate last), which is only realized by a thin-film charge-trapping storage layer, not by stacked floating gate structure, is preferred. This may indicate that the technological convergence point lies in the split-gate, charge-trapping cell structure in the future. The advantage of this choice has been proved by the implementation in the CMOS logic platforms at 90nm[6],[7].
SECTION III
STATE-OF-THE-ART MCU DESIGN
In addition to the over-all cost reduction through design, production and inventory control by programmability in Flash-MCU, the “embedded-ness” is favorably utilized for high performance and data security properties. The advantages and possible drawbacks of embedded flash memory are listed in Table. 1. Product design should consider utilizing embedded flash properties with the overall cost and value advantages over-coming drawbacks of higher wafer process cost to incorporate flash memory. In general much diversified MCU product line-ups are efficiently supported only by a unified design platform to employ optimized eFlash macros.

By scaling the device and by circuit developments, a steady scaling trend has been realized in the auto-motive applications of MCUs (Figs. 4 and 5), with x20 CPU performance growth by 10 years and x8 ROM capacity growth by 10 years. The technology node development for MCU is not so aggressive as most-advanced SOCs because of the smaller system on the chip and somewhat tailored technology for required higher temperature operations.
TABLE1. ADVANTAGESAND POSSIBLE DRAWBACKSOF EMBEDDED FLASH MEMORY,ASCOMPARED WITH STAND-ALONE FLASH MEMORY.
Example requirements to current state-of-the-art MCU designs are shown in Table.2. Because eFlash in MCU is inherently required a high-speed access to meet the CPU execution speed, performance-oriented design is required in many applications, which is quite different from stand-alone flash memory products. Also data reliability as well as high-temperature and low-leakage product strategy are important factors in most of MCU applications.
Requirements here describe the natures of current MCU market segments as well as eFlash specifications.
- Auto-motive applications such as power-train require high-density, high-temperature and highly reliable eFlash designs. A random access as fast as 10ns at 160 ?(max) in eFlash is achieved by the current state-of-the-art design with hierarchical sensing, optimized memory mat division, and highly reliable memory cell technology to fit this application.
- Security functions against attacks account for a large portion of the MCU design for smart-IC card applications. Embedded EEPROM for data manipulation functions with quite fast and low-power program/erase operation is essential in non-contact smart-cards, which makes this field of application very selective in the choice of eFlash technologies.
-
Very low-voltage/low-power MCU products are required for emerging medical/health-care applications with battery operations. eFlash program/erase is necessary in the future data collection and storage for data streaming operations in the advanced health-care environments.
Fig. 4. Performance trend in CPU and eFlash for high-end auto-motive market.
Fig. 5. Trend in eFlash capacity for high-end auto-motive market.
TABLE.2. REQUIREMENTS FOR EMBEDDEDFLASH MEMORY IN MCU APPLICATIONS.
These sample requirements indicate much diversified MCU product line-ups, suggesting very wide expectations to eFlash performance and functions, much to be explored and exploited in technology/circuit/system developments.
Fig. 6 depicts key architecture and circuit technologies in eFlash designs. In frequent read operations in the code storage applications, non-boosted word-line utilizing a split-gate cell structure is promising to enhance the random read access speed and for low-power consumptions. Lowe-power design in eFlash is strongly affected by the charge-pumping circuitry in program/erase operations. Because flash memory technologies have inherent difficulty in scaling down the program/erase voltage, energy-efficient program/erase algorithms and optimally generated high-voltage waveforms to mitigate excessive power consumption are important in power-aware designs.

Fig. 7 shows a current MCU product line-up employing a split-gate MONOS eFlash technology, with up to 100MHz read access at code storage with 500K program/erase capability in EEPROM on the chip, all under

. The operating voltage ranges down to 1.62V for battery operations.

Fig. 6. Key considerations in eFlash design[8], [9].
Fig. 7. 90nm flash-MCU products.
SECTION IV
IMPACT OF ENERGY-EFFICIENT NV-MEMORY

Energy-efficient system approaches require low-energy frequent re-write performance of non-volatile memories. As the stand-by leakage problem has emerged as a critical factor in the advanced LSI systems, embedded non-volatile memory will play more important roles in reducing the system power by intermittent power switching schemes (Fig. 8), to frequently switch idling states into power-off states. Frequent power On/Off necessitates frequent non-volatile store and retrieval of circuits states and data. Fast and energy-efficient re-write is required for non-volatile memories in this context.
Fig. 8. Intermittent system operations with normally off schemes.
Fig. 9 describes re-write speed and energy in various eFlash technologies compared with Magnetic-RAM. Because system requirements are diverse in power control schemes, all the current eFlash and next-generation NV-memories are good for uses in intermittent power control applications. However, efficient power-down schemes will store and retrieve circuit states instantly, favoring distributed fast non-volatile storage on the chip. One remarkable feature realized by emerging NV memory is orders-of-magnitude lower energy per bit re-write than existing eFlash by fast and low-voltage re-write capabilities (Fig. 10), which can be exploited effectively[10].
Programmability provided on the chip has been an important factor in the design and cost structure of LSI (Table 3). Beginning with the ROM-based logic operated by stored instructions in the CPU, alterable/reconfigurable logic organizations have emerged in the 2nd stage, where the main players are Flash-MCU and re-configurable logic products. The 3-rd stage realized by NV-RAM will see a much broader possibility of innovation by energy-efficient NV memories.
SECTION V
CONCLUUSIONS

Flash-MCU has achieved a rapid market penetration attributed to the leap in value/cost for innovation by virtue of evolving eFlash technologies. eFlash cell and circuit technologies will see some convergence points quite different from stand-alone flash memory, according to diversified market requirements. Designs of energy-efficient MCU and of MCU for energy-efficient systems will be the next focus of technology, circuit, and system co-development in emerging applications, where non-volatile memory technologies will play important roles in the scaled LSI environments.
Fig. 9. Re-write performance by energy/bit in various eFlash and MRAM. Re-write energy and time by memory cell and periphery circuitry.

Fig. 10. Re-write performance by non-volatile memories. Re-write frequency requirement ranges over power On/Off schemes in the system.

TABLE 3. EVOLUTION OF ON-Chip Programmability[9].
ACKNOWLEDGEMENT
The author would like to express sincere thanks to all the members of Embedded Memory Core Development Division, Renesas Electronics Corp. for their supports.
REFERENCES
1. S. Kianian et al., Symp. VLSl Tech. Dig. Tech. Papers, pp.71-72 (1994).
2. B. Eitan et al., Proc. Int. Conf. Solid State Devices and Materials, pp. 522-524 (1999).
3. J. A. Yater et al., NVSMW, pp. 77-78 (2007).
4. H. M. Lee et al., Dig. NVSMW, pp. 15-16 (2006).
5. K. Baker, Proc. ICICDT, pp.185-189 (2009).
6. J. A. Yater et al, International Memory Workshop (2009).
7. W. Stenzl and J. Hupper, in EE-Times Europe, March 17 (2008).
8. M. Hatanaka and H. Hidaka, Proc. Tech. Papers, ASSCC, pp.38-41 (2007).
9. H.Hidaka, in chap. 7, ed. K. Zhang, "Embedded memories for nano scale VLSI", Springer (2009).
10. M. Zwerg et al., Dig. Tech. Papers, ISSCC, pp. 334-335 (2011).
附錄5
硬件電路原理圖
附錄6程序源代碼
主程序
- #include <reg52.h>
- #include <intrins.h>
- #include "delay1ms.h"
- #include "ds1302.h"
- #include "display.h"
- #define uchar unsigned char;
- unsigned char code digit1[11]={"0123456789-"}; //定義字符數(shù)組顯示數(shù)字,主要用于LCD 的顯示
- unsigned char code digit2[2]={"GK"}; //digit[0]斷開,digit[1]閉合
- unsigned char code digit3[16]={"0123456789ABCDEF"};
- unsigned char keyflag=4; //判斷鍵盤是否有輸入 ?
- unsigned char QH_FLAG1=1;
- extern unsigned char model_flag;//長開,長關(guān),自動,模式標志
- unsigned char xdata dings[16][7]={{0,0,0,1,1,0,14},{0,0,0,1,1,0,14}, {0,0,0,1,1,0,14},{0,0,0,1,1,0,14}, {0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14},{0,0,0,1,1,0,14}, {0,0,0,1,1,0,14}}; //0年,0周,0月,0日,0時,0分,0秒
- char xdata dings_kaig[16]={0,0,0,0,
- 0,0,0,0,
- 0,0,0,0,
- 0,0,0,0}; //0斷開,1閉合
- char time_buf1[7] ={0,0,0,0,0,0,0};
- unsigned char time_buf2[7] ={0,0,0,0,0,0,0};
- unsigned char second1,minute1,hour1,day1,month1,year1; //分別儲存苗、分、小時,日,月,年
- unsigned char open_close_pd=1;
- sfr AUXR=0x8e;
- bit K1_FLAG1=0; //定義按鍵標志位,當按下K1鍵時,該位置1,K1鍵未按下時,該位為0。
- unsigned char ReadValue1;
- unsigned char ReadValue2;
- unsigned char i=0;//i 用于for循環(huán)
- unsigned char j;//j 用于for循環(huán)
- unsigned char k=0;//k用于調(diào)整數(shù)組數(shù)目
- void KeyProcess1();
- void main()
- {
- RELAY=0;//默認繼電器斷開
- model_flag=3;
- /************************************************************
- 函數(shù)功能:紅外初始化
- ************************************************************/
- EA=1; //開啟總中斷
- EX1=1; //開外中斷1
- ET0=1; //定時器T0中斷允許
- IT1=1; //外中斷的下降沿觸發(fā)
- TMOD=0x01; //使用定時器T0的模式1
- TR0=0; //定時器T0關(guān)閉
- /**********************************************************/
- int_ds1302();
- LCD_init();
- delay1ms(1);
- while(1)
- {
- LCD_writecom(0x41+0x80); // 設(shè)置顯示x位置為第一行的第1個字
- delay1ms(10);
- LCD_writedata(digit1[model_flag]);
- LCD_writecom(0x4f+0x80); // 設(shè)置顯示x位置為第一行的第1個字
- delay1ms(10);
- LCD_writedata(digit1[keyflag]);
- if(K5==0)
- {
- delay1ms(10);
- while(!K5);
- Ds1302_beep();
- keyflag++;
- if(keyflag>4)
- keyflag=1;
- }
- if(keyflag==1) //校時
- {
- time_get_show();
- Ds1302_QLShow();
- }
- if (keyflag==2) //復(fù)位和模式切換
- {
- if(K4==0) //k4 復(fù)位
- {
- delay1ms(10);
- while(!K4);
- Ds1302_beep();
- write_ds1302(0x8E,0x00); //根據(jù)寫狀態(tài)寄存器命令字,寫入不保護指令
- write_ds1302(0x80,((00/10)<<4|(00%10))); //根據(jù)寫秒寄存器命令字,寫入秒的初始值
- write_ds1302(0x82,((00/10)<<4|(00%10))); //根據(jù)寫分寄存器命令字,寫入分的初始值
- write_ds1302(0x84,((00/10)<<4|(00%10))); //根據(jù)寫小時寄存器命令字,寫入小時的初始值
- write_ds1302(0x86,((1/10)<<4|(1%10))); //根據(jù)寫日寄存器命令字,寫入日的初始值
- write_ds1302(0x88,((1/10)<<4|(1%10))); //根據(jù)寫月寄存器命令字,寫入月的初始值
- write_ds1302(0x8c,((14/10)<<4|(14%10))); //根據(jù)寫年寄存器命令字,寫入年的初始值
- write_ds1302(0x90,0xa5); //打開充電功能 選擇2K電阻充電方式
- write_ds1302(0x8E,0x80); //根據(jù)寫狀態(tài)寄存器命令字,寫入保護指令
- for(i=0;i<16;i++)
- {dings_kaig[i]=0;}
- for (i=0;i<16;i++)
- for(j=0;j<7;j++)
- {dings[i][j]=0;}
- model_flag=1;
- }
- if(K3==0) //K3模式切換
- {
- delay1ms(10);
- while(!K3);
- Ds1302_beep();
- model_flag++;
- if( model_flag>3)
- { model_flag=1;}
- }
- time_show();
- Ds1302_QLShow();
- }
- if(keyflag==3)
- {
-
- if(K1==0)
- {
- delay1ms(10);
- if(K1==0)
- {
- while(!K1);
- Ds1302_beep();
- k++;
- if(k>15)
- {k=0;}
- QH_FLAG1=1;
- }
- }
- LCD_writecom(0x4e+0x80); // 設(shè)置顯示x位置為第一行的第1個字
- delay1ms(10);
- LCD_writedata(digit3[k]); //顯示第幾組的時間設(shè)定值
- for(j=0;j<7;j++)
- { time_buf1[j]=dings[k][j]; }
- KeyProcess1();
- LCD_writecom(0x42+0x80); //顯示三個空格防止亂碼
- delay1ms(1);
- LCD_writedata(' ');
- delay1ms(1); //延時1ms給硬件一點反應(yīng)時間
- second1=dings[k][0];
- Ds1302_DisplaySecond(0); //顯示秒
- minute1=dings[k][1];
- Ds1302_DisplayMinute(minute1); //顯示分
- hour1=dings[k][2];
- Ds1302_DisplayHour(hour1); //顯示小時
- day1= dings[k][3];
- Ds1302_DisplayDay(day1); //顯示日
- month1=dings[k][4];
- Ds1302_DisplayMonth(month1); //顯示月
- year1=dings[k][6];
- Ds1302_DisplayYear(year1); //顯示年
- LCD_writecom(0x4c+0x80); //寫顯示地址,將在第2行第7列開始顯示
- delay1ms(1);
- LCD_writedata(digit2[dings_kaig[k]]); //將百位數(shù)字的字符常量寫入LCD
- Ds1302_QLShow();//在對應(yīng)位置顯示date ——
- }
- if(keyflag==4) //無輸入模式
- {
- time_show();
- Ds1302_QLShow();
- switch(model_flag)
- {
- case 1: //長開模式 ,一直閉合
- RELAY=1;
- LCD_writecom(0x4c+0x80);
- delay1ms(5);
- LCD_writedata(digit2[1]);
- break;
- case 2: //長關(guān)模式 ,一直斷開
- RELAY=0;
- LCD_writecom(0x4c+0x80);
- delay1ms(5);
- LCD_writedata(digit2[0]);
- break;
- case 3: //自動模式
- ReadValue2=read_ds1302(0x8d); //年
- time_buf2[6]=((ReadValue2&0xf0)>>4)*10 + (ReadValue2&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化
- ReadValue2=read_ds1302(0x89); //月
- time_buf2[4]=((ReadValue2&0x70)>>4)*10 + (ReadValue2&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化
- ReadValue2=read_ds1302(0x87); //日
- time_buf2[3]=((ReadValue2&0x70)>>4)*10 + (ReadValue2&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化
- ReadValue2=read_ds1302(0x85); // 時
- time_buf2[2]=((ReadValue2&0x70)>>4)*10 + (ReadValue2&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化
- ReadValue2=read_ds1302(0x83); //分
- time_buf2[1]=((ReadValue2&0x70)>>4)*10 + (ReadValue2&0x0F);//將讀出數(shù)據(jù)轉(zhuǎn)化 //自動模式
- for(i=0;i<16;i++)
- {
- if((time_buf2[6]==dings[k][6])&&(time_buf2[4]==dings[k][4])&&(time_buf2[3]==dings[k][3])&&(time_buf2[2]==dings[k][2])&&(time_buf2[1]==dings[k][1]))
- {if(dings_kaig[k]==1)
- open_close_pd=1;
- else
- open_close_pd=0;
- }
- }
- RELAY=open_close_pd;
- LCD_writecom(0x4c+0x80);
- delay1ms(5);
- LCD_writedata(digit2[open_close_pd]);
- }
- }
- }
- }
- /********以下是定時按鍵處理函數(shù)********/
- void KeyProcess1()
- {
- write_ds1302(0x8e,0x00); //ds13202寄存器允許寫
-
- if(K2==0) //K2鍵調(diào)整所要的位,向右企切換年月日
- {
- delay1ms(10); //延時去抖
- if(K2==0)
- {
- while(!K2); //等待K2鍵釋放
- QH_FLAG1++;
- if(QH_FLAG1>6)
- { QH_FLAG1=1;
- }
- }
- }
- switch(QH_FLAG1)
- {case 1:
- LCD_writecom(0x4d+0x80); // 設(shè)置顯示位置為第一行的第1個字
- delay1ms(1);
- LCD_writedata('Y');
- delay1ms(1); break;
- case 2:
- LCD_writecom(0x4d+0x80); // 設(shè)置顯示位置為第一行的第1個字
- delay1ms(1);
- LCD_writedata('M');
- delay1ms(1); break;
- case 3:
- LCD_writecom(0x4d+0x80); // 設(shè)置顯示位置為第一行的第1個字
- delay1ms(1);
- LCD_writedata('D');
- delay1ms(1); break;
- case 4:
- LCD_writecom(0x4d+0x80); // 設(shè)置顯示位置為第一行的第1個字
- delay1ms(1);
- LCD_writedata('H');
- delay1ms(1); break;
- case 5:
- LCD_writecom(0x4d+0x80); // 設(shè)置顯示位置為第一行的第1個字
- delay1ms(1);
- LCD_writedata('F');
- delay1ms(1); break;
- case 6:
- LCD_writecom(0x4d+0x80); // 設(shè)置顯示位置為第一行的第1個字
- delay1ms(1);
- LCD_writedata('S');
- delay1ms(1); break;
- }
- if(K3==0) // K3鍵用來進行加1調(diào)整
- {
- delay1ms(10); //延時去抖
- if(K3==0)
- {
- while(!K3); //等待K3鍵釋放
- switch(QH_FLAG1)
- { case 1:
- time_buf1[6]=time_buf1[6]+1; //年加1
- if(time_buf1[6]>99) time_buf1[6]=0; //當年加到60時初始化為0
- dings[k][6]=time_buf1[6];
- break;
- case 2:
- time_buf1[4]=time_buf1[4]+1; //月加1
- if(time_buf1[4]>12) time_buf1[4]=1; //當分鐘加到60時初始化為0
- dings[k][4]=time_buf1[4];
- break;
- case 3:
- time_buf1[3]=time_buf1[3]+1; //日加1
- if((time_buf1[4]==1)||(time_buf1[4]==3)||(time_buf1[4]==5)||(time_buf1[4]==7)||(time_buf1[4]==8)||(time_buf1[4]==10)||(time_buf1[4]==12))
- {if(time_buf1[3]>31)
- time_buf1[3]=1;
- }
- if((time_buf1[4]==4)||(time_buf1[4]==6)||(time_buf1[4]==9)||(time_buf1[4]==11))
- {if(time_buf1[3]>30)
- time_buf1[3]=1;
- }
- if(time_buf1[4]==2)
- { if((time_buf1[6]%4)&&(time_buf1[3]>28)) time_buf1[3]=1;
- if(!(time_buf1[6]%4)&&(time_buf1[3]>29)) time_buf1[3]=1;
- }
- dings[k][3]=time_buf1[3];
- break;
- case 4:
- time_buf1[2]=time_buf1[2]+1; //小時加1
- if(time_buf1[2]>23) time_buf1[2]=0; //當分鐘加到60時初始化為0
- dings[k][2]=time_buf1[2];
- break;
- case 5:
- time_buf1[1]=time_buf1[1]+1; //小時加1
- if(time_buf1[1]>59) time_buf1[1]=0; //當分鐘加到60時初始化為0
- dings[k][1]=time_buf1[1];
- break;
- case 6:
- dings_kaig[k]=dings_kaig[k]+1;
- if(dings_kaig[k]>1)
- dings_kaig[k]=0;
- LCD_writecom(0x4c+0x80); //寫顯示地址,將在第2行第7列開始顯示
- delay1ms(1);
- LCD_writedata(digit2[dings_kaig[k]]); //將百位數(shù)字的字符常量寫入LCD
- }
- delay1ms(500); //以下為連發(fā)功能 約0.5s觸發(fā)連發(fā)功能
- while(K3==0)
- {
- delay1ms(150); //150ms加一次
- switch(QH_FLAG1)
- { case 1:
- time_buf1[6]=time_buf1[6]+1; //年加1
- if(time_buf1[6]>99) time_buf1[6]=0; //當分鐘加到60時初始化為0
-
- dings[k][6]=time_buf1[6];
- LCD_writecom(0x07+0x80); //寫顯示地址,將在第2行第7列開始顯示
- delay1ms(1);
- LCD_writedata(digit1[time_buf1[6]/10]); //將百位數(shù)字的字符常量寫入LCD,不能直接寫入,必須轉(zhuǎn)化
- delay1ms(1);
- LCD_writedata(digit1[time_buf1[6]%10]); //將十位數(shù)字的字符常量寫入LCD
- delay1ms(1);
- break;
- case 2:
- time_buf1[4]=time_buf1[4]+1; //月加1
- if(time_buf1[4]>12) time_buf1[4]=1; //當分鐘加到60時初始化為0
- dings[k][4]=time_buf1[4];
- break;
- case 3:
- time_buf1[3]=time_buf1[3]+1; //日加1
- if((time_buf1[4]==1)||(time_buf1[4]==3)||(time_buf1[4]==5)||(time_buf1[4]==7)||(time_buf1[4]==8)||(time_buf1[4]==10)||(time_buf1[4]==12))
- {if(time_buf1[3]>31)
- time_buf1[3]=1;
- }
- if((time_buf1[4]==4)||(time_buf1[4]==6)||(time_buf1[4]==9)||(time_buf1[4]==11))
- {if(time_buf1[3]>30)
- time_buf1[3]=1;
- }
- if(time_buf1[4]==2)
- { if((time_buf1[6]%4)&&(time_buf1[3]>28)) time_buf1[3]=1;
- if(!(time_buf1[6]%4)&&(time_buf1[3]>29)) time_buf1[3]=1;
- }
- dings[k][3]=time_buf1[3];
- break;
- case 4:
- time_buf1[2]=time_buf1[2]+1; //小時加1
- if(time_buf1[2]>23) time_buf1[2]=0; //當分鐘加到60時初始化為0
- dings[k][2]=time_buf1[2];
- break;
- case 5:
- time_buf1[1]=time_buf1[1]+1; //小時加1
- if(time_buf1[1]>59) time_buf1[1]=0; //當分鐘加到60時初始化為0
- dings[k][1]=time_buf1[1];
- break;
- }
- }
- }
- }
- if(K4==0) // 減
- {
- delay1ms(10); //延時去抖
- if(K4==0)
- {
- while(!K4); //等待K4鍵釋放
- switch(QH_FLAG1)
- {
- case 1:
- time_buf1[6]=time_buf1[6]-1; //年減1
- if(time_buf1[6]<0) {time_buf1[6]=99;} //當年到60時初始化為0
- dings[k][6]=time_buf1[6];
- break;
- case 2:
- time_buf1[4]=time_buf1[4]-1; //年減1
- if(time_buf1[4]<1) time_buf1[4]=12; //當分鐘加到60時初始化為0
- dings[k][4]=time_buf1[4];
- break;
- case 3:
- time_buf1[3]=time_buf1[3]-1; //年減1
- if((time_buf1[4]==1)||(time_buf1[4]==3)||(time_buf1[4]==5)||(time_buf1[4]==7)||(time_buf1[4]==8)||(time_buf1[4]==10)||(time_buf1[4]==12))
- {if(time_buf1[3]<1)
- time_buf1[3]=31;
- }
- if((time_buf1[4]==4)||(time_buf1[4]==6)||(time_buf1[4]==9)||(time_buf1[4]==11))
- {if(time_buf1[3]<1)
- time_buf1[3]=30;
- }
- if(time_buf1[4]==2)
- { if((time_buf1[6]%4)&&(time_buf1[3]<1)) time_buf1[3]=28;
- if(!(time_buf1[6]%4)&&(time_buf1[3]<1)) time_buf1[3]=29;
- }
- dings[k][3]=time_buf1[3];
- break;
- case 4:
- time_buf1[2]=time_buf1[2]-1; //年減1
- if(time_buf1[2]<0) time_buf1[2]=23; //當分鐘加到60時初始化為0
- dings[k][2]=time_buf1[2];
- break;
- case 5:
- time_buf1[1]=time_buf1[1]-1; //年減1
- if(time_buf1[1]<0) time_buf1[1]=59; //當分鐘加到60時初始化為0
- dings[k][1]=time_buf1[1];
- break;
- case 6:
- dings_kaig[k]=dings_kaig[k]-1;
- if(dings_kaig[k]<0)
- {dings_kaig[k]=1;}
- LCD_writecom(0x4c+0x80); //寫顯示地址,將在第2行第7列開始顯示
- delay1ms(1);
- LCD_writedata(digit2[dings_kaig[k]]); //將百位數(shù)字的字符常量寫入LCD
- break;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
基于單片機的自動定時開關(guān)插座的設(shè)計.doc
(11.87 MB, 下載次數(shù): 168)
2018-5-8 16:14 上傳
點擊文件名下載附件
文檔
下載積分: 黑幣 -5
作者: 北城君 時間: 2019-4-17 14:07
請問樓主這是控制模塊嗎,演示的圖片好像沒有看到插座啊
作者: 房費19 時間: 2019-5-9 22:29
樓主,有原件清單嗎
作者: 房費19 時間: 2019-5-9 22:43
樓主,有原件清單嗎
作者: myfantasy 時間: 2020-2-29 22:45
多謝樓主提供思路
作者: wsh791 時間: 2020-3-1 07:48
學習一下
作者: ycb1 時間: 2020-3-19 19:44
小白參觀一下
作者: XDDZ1013 時間: 2023-8-31 11:06
收藏。。。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |