第3章 硬件電路設(shè)計(jì)3.1 控制模塊設(shè)計(jì)AT89C51在此設(shè)計(jì)中起到非常重要的作用,它就像一個(gè)人的大腦,控制著整個(gè)設(shè)計(jì)的所有系統(tǒng)。此設(shè)計(jì)的控制模塊由單片機(jī)、復(fù)位電路、時(shí)鐘電路組成的。
3.1.1 單片機(jī)AT89C51簡介AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPER-OM-Flash Programmable and Erasable Read Only Memory)的低電壓。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種商效微控制器,AT89C51是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。
image004.gif (12.26 KB, 下載次數(shù): 89)
下載附件
2017-6-6 03:13 上傳
圖3-1 AT89C51引腳圖
AT89C51單片機(jī)引腳分布如圖3-1所示。
P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P3.0(RXD):串行輸入口
P3.1(TXD):串行輸出口
3.1.2 單片機(jī)時(shí)鐘電路復(fù)位電路介紹1.時(shí)鐘電路模塊
單片機(jī)的時(shí)鐘信號(hào)用來為單片機(jī)芯片內(nèi)部的各種操作提供時(shí)間基準(zhǔn)。
時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列,作為單片機(jī)工作的時(shí)間基準(zhǔn),典型的晶體管振蕩頻率為12MHz。
AT89C51單片機(jī)內(nèi)有時(shí)鐘振蕩電路,只要在單片機(jī)的XTAL1和XTAL2引腳外接石英晶體和微調(diào)電容,就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào),具體電路設(shè)計(jì)如圖3-2所示。圖中電容C1和C2的作用是穩(wěn)定頻率和快速起振,其值為5~30pF,在此選擇30pF;晶振X1的振蕩頻率范圍在1.2~12MHz之間選擇。
image006.gif (6.9 KB, 下載次數(shù): 84)
下載附件
2017-6-6 03:13 上傳
image007.gif (2.71 KB, 下載次數(shù): 88)
下載附件
2017-6-6 03:13 上傳
圖3-2 單片機(jī)時(shí)鐘、復(fù)位電路
2.復(fù)位電路模塊
復(fù)位電路使單片機(jī)或系統(tǒng)中的其他部件處于某種確定的狀態(tài)。
當(dāng)在單片機(jī)的RST引腳處引入高電平并保持2個(gè)機(jī)器周期,單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作。實(shí)際應(yīng)用中,復(fù)位操作有兩種基本形式:一種是上電復(fù)位,另一種是按鍵復(fù)位。在單片機(jī)運(yùn)行期間,可以利用此按鍵完成復(fù)位操作。具體電路設(shè)計(jì)如上圖3-2所示。
3.2 打鈴模塊電鈴工作在交流電220V下,單片機(jī)工作電壓為直流電+5V,所以單片機(jī)引腳不能直接控制電鈴工作,因此我們使用單片機(jī)控制電鈴工作電路的通斷。由于單片機(jī)驅(qū)動(dòng)能力有限,因而需要硬件將單片機(jī)輸出的高、低電平變成控制電鈴?fù)〝嗟碾娐罚軌蚓唧w實(shí)現(xiàn)該功能的電路有多種。常見的方式是采用將單片機(jī)輸出信號(hào)放大后驅(qū)動(dòng)繼電器,用繼電器的觸頭控制電鈴電路的接通和斷開,如圖3-3所示。
三極管在電路當(dāng)中起開關(guān)作用,管型為PNP型。單片機(jī)的P1.7通過三極管驅(qū)動(dòng)繼電器,當(dāng)P1.7腳輸出高電平時(shí),給三極管基極送入高電壓。此時(shí),三極管呈截止?fàn)顟B(tài),繼電器不吸合電鈴?fù)V勾蜮彛划?dāng)P1.7腳輸出低電平時(shí),給三極管基極送入的是低電壓。此時(shí),三極管呈導(dǎo)通狀態(tài),促使繼電器吸合,電鈴打鈴。
繼電器是一種電子控制器件,它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動(dòng)控制電路中,它實(shí)際上是用較小的電流去控制較大電流的一種“自動(dòng)開關(guān)”。當(dāng)輸入量達(dá)到規(guī)定值時(shí),使被控制的輸出電路導(dǎo)通或斷開的電器。繼電器線圈在斷電時(shí)會(huì)產(chǎn)生一個(gè)很大的反感生電動(dòng)勢,這個(gè)電壓會(huì)損失繼電器或者電路中的元件,在繼電器線圈上反向并聯(lián)一個(gè)二極管,可將產(chǎn)生的反感生電動(dòng)勢通過二極管回路釋放掉、保護(hù)繼電器線圈和電路中的電子元件不受高壓損壞。
image008.jpg (5.34 KB, 下載次數(shù): 95)
下載附件
2017-6-6 03:13 上傳
圖3-3 聲音控制電路圖
3.3 存儲(chǔ)模塊3.3.1 實(shí)時(shí)時(shí)鐘DS1302簡介 它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。
1.引腳功能及結(jié)構(gòu)
image009.gif (15.34 KB, 下載次數(shù): 90)
下載附件
2017-6-6 03:13 上傳
圖3-4 DS1302引腳圖
如圖3-4所示,DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過RST輸入高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),SCLK始終是輸入端。
2.實(shí)時(shí)時(shí)鐘DS1302的控制字節(jié)
DS1302的控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。
3.數(shù)據(jù)輸入輸出(I/O)
在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。
4.實(shí)時(shí)時(shí)鐘DS1302的寄存器
DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字。
此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。
5.引腳連接圖
image010.gif (12.85 KB, 下載次數(shù): 80)
下載附件
2017-6-6 03:13 上傳
圖3-5 DS1302引腳連接圖
在學(xué)校正常上課中,不可能保證學(xué)校隨時(shí)都有電,為了不影響學(xué)校的正常運(yùn)轉(zhuǎn),同學(xué)們能夠正常的上、下課。所以就采用能在學(xué)校停電時(shí)借助電池也能工作的芯片,而DS1302能夠在學(xué)校掉電時(shí),Vcc2無法給實(shí)時(shí)時(shí)鐘DS1302供電,只有通過干電池B1給實(shí)時(shí)時(shí)鐘DS1302的Vcc1提供電量讓DS1302繼續(xù)工作,系統(tǒng)能夠繼續(xù)計(jì)時(shí)。而這時(shí)的其它電路停止工作,但存儲(chǔ)器中的打鈴時(shí)間不會(huì)因?yàn)闆]有電而丟失。其與單片機(jī)連接方式如上圖3-5所示。
3.3.2 存儲(chǔ)器24C02C要保證設(shè)置的打鈴時(shí)間數(shù)據(jù)在掉電時(shí)也不會(huì)丟失,同時(shí)實(shí)現(xiàn)在系統(tǒng)運(yùn)行時(shí)能夠修改打鈴時(shí)間,在本系統(tǒng)中采用I2C總線的串行存儲(chǔ)器24C02C存儲(chǔ)打鈴數(shù)據(jù)。
1.存儲(chǔ)器24C02C的引腳介紹
考慮到串口線、穩(wěn)定性等方面,本系統(tǒng)采用串行數(shù)據(jù)傳輸存儲(chǔ)器。其容量計(jì)算如下:若以打鈴次數(shù)較多的校園為例,每天按12節(jié)課計(jì)算,每節(jié)課打鈴2次,再加上起床和熄燈的次數(shù),打鈴大約在20次左右。這樣每個(gè)信息單元占8個(gè)字節(jié),存儲(chǔ)時(shí)均按照非壓縮型BCD碼存儲(chǔ),則需要存儲(chǔ)空間大約在160個(gè)字節(jié)左右,選用256字節(jié)的存儲(chǔ)器就能夠滿足容量的要求,可以采用ATMEL公司的24C02C。根據(jù)硬件電路的設(shè)計(jì)可得24C02C的I2C硬件地址為:0A2H/0A3H。
(1)行數(shù)據(jù)(SDA)引腳
串行數(shù)據(jù)引腳為雙向引腳,用于把地址和數(shù)據(jù)輸入/輸出期間。該引腳為漏極開路。因此,SDA總線要求在該引腳與VCC之間接入上拉電阻(通常頻率為100KHz時(shí)該電阻阻值為10K,頻率為400KHz和1MHz時(shí),阻值為2K)。
對(duì)于正常的數(shù)據(jù)傳輸,只允許在SCL為低電平期間改變SDA電平。而SDA電平在SCL高電平期間若發(fā)生變化,表明起始和停止條件產(chǎn)生。
(2)寫保護(hù)(WP)引腳
該引腳必須連接到VSS或者VCC。如果連接到VSS,寫操作使能。如果連接到VCC,寫操作被禁止,但讀操作不受影響
2.引腳連接方法
引腳采用I2C總線連接方法,這種方法能夠節(jié)約I/O輸出端口。它主要的特點(diǎn)有:
(1)總線只有兩根線,即串行時(shí)鐘線和串行數(shù)據(jù)線,這在設(shè)計(jì)中大大簡化了硬件接口;
(2)每個(gè)連接到總線上的器件地址同時(shí)由芯片內(nèi)部硬件電路和外部地址引腳決定,避免了片選線的線連接方法,并建立簡單的主從關(guān)系,主器件既可以作為發(fā)送器,又可作為接收器;
(3)它是一個(gè)真正的多主總線,帶有競爭監(jiān)測和仲裁電路,多個(gè)主機(jī)可以任意發(fā)送而不破壞總線上的數(shù)據(jù);
(4)同步時(shí)鐘可以作為停止或重新啟動(dòng)串行口發(fā)送的握手方式;
(5)連接到同一總線的集成電路數(shù)量只受400pF最大總線電容的限制。
學(xué)校設(shè)定的系統(tǒng)時(shí)間和打鈴時(shí)間存儲(chǔ)在24C02C中。24C02C的三個(gè)地址端口A0、A1、A2都接地,因而其存儲(chǔ)地址為A000H-A6FFH,共1KB的存儲(chǔ)空間。其中,WP是24C02C的寫保護(hù)控制引腳,WP為低電平時(shí),串行存儲(chǔ)器可以正常地讀/寫;WP為高電平時(shí),對(duì)串行存儲(chǔ)器內(nèi)部的數(shù)據(jù)進(jìn)行寫保護(hù)。在系統(tǒng)掉電時(shí)不會(huì)丟失其中的內(nèi)容,保證了設(shè)置的打鈴時(shí)間不會(huì)因系統(tǒng)掉電而需要重新設(shè)置。如圖3-6所示。
image011.jpg (8.47 KB, 下載次數(shù): 73)
下載附件
2017-6-6 03:13 上傳
圖3-6 24C02C引腳連接圖
3.4 鍵控模塊鍵盤是一組按鍵的組合,它是各種儀表中最常用的輸入設(shè)備。操作人員可通過鍵盤輸入數(shù)據(jù)或命令,實(shí)現(xiàn)簡單的人機(jī)對(duì)話。在單片機(jī)應(yīng)用系統(tǒng)中,有的是單個(gè)按鍵,有的是矩陣式的按鍵,即行列式按鍵。按鍵是一種常開型按鈕開關(guān),常態(tài)時(shí)按鍵的兩個(gè)觸點(diǎn)處于斷開狀態(tài),按下鍵時(shí)它們才閉合。根據(jù)本設(shè)計(jì)本的要求,我們選用獨(dú)立式鍵盤實(shí)現(xiàn)整個(gè)功能。
3.4.1 獨(dú)立式鍵盤介紹
image012.gif (10.65 KB, 下載次數(shù): 91)
下載附件
2017-6-6 03:13 上傳
圖3-7 獨(dú)立式按鍵結(jié)構(gòu)
獨(dú)立式鍵盤的按鍵相互獨(dú)立,每個(gè)按鍵占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會(huì)影響其他按鍵的工作狀態(tài)。這種按鍵軟件程序簡單,但占用I/O口線較多(一根口線只能接一個(gè)鍵),適用于鍵盤應(yīng)用數(shù)量較少的系統(tǒng)中。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O口線,因此,在按鍵較多時(shí),I/O口線浪費(fèi)較大,不宜采用。獨(dú)立式按鍵結(jié)構(gòu)圖如圖3-7所示。
3.4.2 鍵盤接口及鍵位的功能介紹按鍵功能介紹:
模式按鍵:它的主要功能就是選擇時(shí)鐘芯片里的年、月、日、時(shí)、分、秒,當(dāng)按下模式這個(gè)鍵時(shí),它從年到月依次往后的選中,這時(shí)按調(diào)節(jié)按鈕就能從當(dāng)前的時(shí)間往上調(diào)。
調(diào)節(jié)按鍵:它的主要功能就是想改變當(dāng)前的系統(tǒng)時(shí)間首先要按模式鍵,選中要修改的時(shí)間,再按調(diào)節(jié)鍵就能控制當(dāng)前系統(tǒng)時(shí)間遞增。
存入按鍵:它的主要功能就是把系統(tǒng)不正確的時(shí)間修改后按下存入鍵,系統(tǒng)的時(shí)間就為按下那瞬間的時(shí)間。
清空按鍵:它的主要功能就是當(dāng)學(xué)校要重新輸入打鈴時(shí)間的時(shí)候,就先按下清空鍵,再輸入新的時(shí)間。
通過上述每個(gè)按鍵的功能介紹,實(shí)現(xiàn)對(duì)打鈴系統(tǒng)的打鈴時(shí)間設(shè)置。與單片機(jī)具體鏈接圖,如圖3-8所示。
image013.jpg (5.05 KB, 下載次數(shù): 69)
下載附件
2017-6-6 03:13 上傳
圖3-8 鍵盤的接口連接
3.5 顯示模塊在本系統(tǒng)中因?yàn)橐@示年、月、日、星期、時(shí)、分、秒,如果用發(fā)光二極管不能具體的顯示出來,所以采用了七段數(shù)碼顯示管來作為顯示元件。
3.5.1 數(shù)碼管的組成及工作原理數(shù)碼管由8個(gè)發(fā)光二極管構(gòu)成,可以用來顯示數(shù)字、字符等它在家電及工業(yè)控制中有著很廣泛的應(yīng)用。數(shù)碼管實(shí)際上是由7個(gè)發(fā)光管組成“8”字形構(gòu)成的,加上小數(shù)點(diǎn)就是8個(gè)。這些段分別由字母a、b、c、d、e、f、g、dp來表示。數(shù)碼管的引腳結(jié)構(gòu)如圖3-9 所示,其中COM引腳為公共端,用來控制數(shù)碼管顯示的打開或關(guān)閉,既起到“使能”作用。當(dāng)數(shù)碼管特定的段加上電壓后,這些特定的段就會(huì)發(fā)亮,以形成我們眼睛看到的字樣。
根據(jù)公共端接法方式的不同,數(shù)碼管又分為共陰極和共陽極兩種結(jié)構(gòu)的二極管,分別如下:
共陽極就是將8個(gè)LED的陽極連接到一起組成公共端COM,接到正極,當(dāng)相應(yīng)字段為低電平“0”時(shí),可以點(diǎn)亮該字段;但相應(yīng)字段為高電平“1”時(shí),該字段不亮。
共陰極就是將8個(gè)LED的陰極連接到一起組成公共端COM,接負(fù)極,當(dāng)相應(yīng)字段為高電平“1”時(shí),可以點(diǎn)亮該字段;當(dāng)相應(yīng)字段為低電平“0”時(shí),該字段不亮。
image014.gif (20.38 KB, 下載次數(shù): 100)
下載附件
2017-6-6 03:13 上傳
圖3-9 LED數(shù)碼管引腳
數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。
3.5.2 數(shù)碼管的顯示數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。
image015.gif (96 Bytes, 下載次數(shù): 70)
下載附件
2017-6-6 03:13 上傳
圖3-10 數(shù)碼管動(dòng)態(tài)顯示電路
動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃“a、b、c、d、e、f、g、dp”的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會(huì)亮。通過分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。數(shù)碼管動(dòng)態(tài)顯示連接,如圖3-10所示。