版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 基于單片機的定時控制器設計</p><p><b> 一、設計目的和要求</b></p><p><b> ?。ㄒ唬?、設計目的</b></p><p> 基于單片機的定時控制器設計</p><p><b> (二)、設計要求</b></p>
2、;<p> A、采用LCD或數(shù)碼管顯示,通過鍵盤實現(xiàn)輸入</p><p> B、能控制8路繼電器輸出,</p><p> C、能配置一周、一天、月內(nèi),哪些天的哪些時間段自動開關(guān)指定繼電 器,</p><p> 二、系統(tǒng)分析與總體設計</p><p><b> (一)、系統(tǒng)分析</b></p&
3、gt;<p> 該設計課題主要是想通過單片機的鍵盤輸入,來控制繼電器的開通與關(guān)斷。它要求控制8路繼電器的輸出,所以在考慮鍵盤時應分析使用獨立鍵盤還是矩陣鍵盤。其次,課題突出要求使用定時器控制,因而在原來鍵盤輸入控制的基礎(chǔ)上要加上利用定時器來實現(xiàn)繼電器的自動開通與斷開,然后將繼電器的開斷狀態(tài)和對應時間送入輸出模塊顯示。設計的難點在于定時器的控制,選擇一種合適而可靠地算法來進行一周、一天、一月的定時是十分重要的。</p
4、><p> ?。ǘ⒖傮w設計思路</p><p> 考慮到該課題的外圍電路不是十分復雜,選用51系列的單片機即可滿足設計要求。8路繼電器的控制則可以用8個獨立按鍵來控制,獨立鍵盤控制簡單、易于操作。顯示模塊則可以用1602的液晶來實現(xiàn)狀態(tài)的反映。下圖1-1即是它的整體設計框</p><p><b> 圖1-1</b></p>&
5、lt;p> 三、各個獨立模塊的硬件設計</p><p> (一)、控制模塊CPU——STC89S52</p><p> 將為處理器(CPU)、存儲器、I/O接口電路和相應的實時控制器件集成在一塊芯片上的單片機微型計算機,簡稱單片機,特別適用于控制領(lǐng)域,故又稱為微控制器。因此,單片機只需要和適當?shù)能浖c外部設備相組合,便可成為一個單片機控制系統(tǒng)。</p><p
6、> 51系列單片機。操作簡單,容易控制,I/O資源也能夠滿足設計要求。其次,價格便宜,性價比高,如STC89C52。STC89C52完全能夠滿足系統(tǒng)設計要求,它有8k的程序存儲空間,5個中斷以及3個定時器/計數(shù)器。且性價比高,故選它為控制芯片。其電源采用外加5V電源供電,具有復位功能。其最小系統(tǒng)圖如1-2</p><p> STC89S52是低功耗,高性能CMOS8位單片機,片內(nèi)含8Kbytes的可系編
7、程的Flash只讀程序存儲器,器件采用STC公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準8051指令系統(tǒng)及引腳。它集Flash程序存儲器既可在線編程(ISP)也可用傳統(tǒng)方法進行編程及通用8位微處理器與單片芯片中,STC公司的功能強大,低價位STC89S52單片機可為您提供許多高性能價比的應用場合,可靈活應用于各種控制領(lǐng)域。</p><p> 我們在這里只對這次設計所用到的幾個功能做下說明:</p>
8、<p> STC89s52中斷系統(tǒng):</p><p> 中斷系統(tǒng)的作用主要是對外部或內(nèi)部的終端請求進行管理與處理。AT89S51共有5個中斷源,其中有2個外部中斷源和3個內(nèi)部中斷源。</p><p> 每個51單片機處理周期包括12個時鐘周期,每12個時鐘周期用來完成一個操作,如取指令等。指令執(zhí)行時間為時鐘頻率除以12后取倒數(shù)。如果時鐘頻率是11.059MHZ,則除以12
9、后得到了每秒執(zhí)行的指令為921583條,再取倒數(shù)將得到每條指令所需的時間為1.085us。 其控制寄存器如下 </p><p> 1、TCON的中斷標志</p><p> IT0(TCON.0),外部中斷0觸發(fā)方式控制位。</p><p> 當IT0=0時,為電平觸發(fā)方式。</p><p> 當IT0=1時,為邊沿觸發(fā)方式(下降沿有
10、效)。</p><p> IE0(TCON.1),外部中斷0中斷請求標志位。</p><p> IT1(TCON.2),外部中斷1觸發(fā)方式控制位。</p><p> IE1(TCON.3),外部中斷1中斷請求標志位。</p><p> TF0(TCON.5),定時/計數(shù)器T0溢出中斷請求標志位。</p><p>
11、; TF1(TCON.7),定時/計數(shù)器T1溢出中斷請求標志位。</p><p> 2、SCON的中斷標志</p><p> RI(SCON.0),串行口接收中斷標志位。當允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,由硬件置位RI。注意,RI必須由軟件清除。</p><p> TI(SCON.1),串行口發(fā)送中斷標志位。當CPU將一個發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖
12、器時,就啟動了發(fā)送過程。每發(fā)送完一個串行幀,由硬件置位TI。CPU響應中斷時,不能自動清除TI,TI必須由軟件清除</p><p><b> 3中斷允許控制</b></p><p> CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。 </p><p> EX0(IE.0),外部中斷0允許位;</p&g
13、t;<p> ET0(IE.1),定時/計數(shù)器T0中斷允許位; </p><p> EX1(IE.2),外部中斷0允許位;</p><p> ET1(IE.3),定時/計數(shù)器T1中斷允許位;</p><p> ES(IE.4),串行口中斷允許位;</p><p> EA (IE.7), CPU中斷允許(總允許)位。&l
14、t;/p><p><b> 定時器系統(tǒng):</b></p><p> 定時/計數(shù)器的工作原理</p><p> 1、定時/計數(shù)器的結(jié)構(gòu) </p><p> 定時/計數(shù)器的實質(zhì)是加1計數(shù)器(16位),由高8位和低8位兩個寄存器組成。TMOD是定時/計數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0
15、、T1的啟動和停止及設置溢出標志。</p><p> 80C51單片機定時/計數(shù)器的工作由兩個特殊功能寄存器控制。TMOD用于設置其工作方式;TCON用于控制其啟動和中斷申請。</p><p> 一、工作方式寄存器TMOD</p><p> 工作方式寄存器TMOD用于設置定時/計數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如下:</p>
16、<p> 二、控制寄存器TCON</p><p> TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時/計數(shù)器的啟動和中斷申請。其格式如下:</p><p> TF1(TCON.7):T1溢出中斷請求標志位。T1計數(shù)溢出時由硬件自動置TF1為1。CPU響應中斷后TF1由硬件自動清0。T1工作時,CPU可隨時查詢TF1的狀態(tài)。所以,TF1可用作查詢
17、測試的標志。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。</p><p> TR1(TCON.6):T1運行控制位。TR1置1時,T1開始工作;TR1置0時,T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時/計數(shù)器的啟動與停止。</p><p> TF0(TCON.5):T0溢出中斷請求標志位,其功能與TF1類同。</p><p>
18、TR0(TCON.4):T0運行控制位,其功能與TR1類同。</p><p> 設計中單片機引腳分配:</p><p> P00-P07:獨立鍵盤 輸入端 S1—S8</p><p> P10-P17:繼電器控制輸入端 K1—K8</p><p> P20-P27:液晶1602顯示數(shù)輸入端</p><p>
19、; W/R:液晶讀寫/控制端</p><p> RD:液晶寄存器選擇端</p><p><b> 圖1-2</b></p><p> ?。ǘ?、鍵盤模塊設計</p><p> 采用八個獨立鍵盤控制既能滿足控制要求而且操作簡單,但要是需要的鍵盤更多時就要考慮采用矩陣鍵盤。這里,我們就以簡單的獨立鍵盤來完成基本任務。
20、對立鍵盤的設計電路如下圖1-3,使用單片機的P1口輸入控制信號。</p><p> 獨立鍵盤掃描原理: 把按鍵的一端接地,另一端與單片機的某個I/O口相連,開始給I/O口賦高電平,然后讓計算機不斷地檢測I/O口是否變?yōu)榈碗娖?,當按鍵閉合時,相當于I/O口通過按鍵與地連接,變成低電平,程序一旦檢測到I/O口變?yōu)榈碗娖骄驼f明有按鍵被按下,然后執(zhí)行相應的指令。但注意要對按鍵動作進行消抖處理,消抖原理如下圖1-4<
21、;/p><p> 當按鍵按下時,相應的繼電器得電。按照設計要求,我們用</p><p> S1——K1 ;S2——K2;</p><p> S3 ——K3;S4—— K4;</p><p> S5 ——K5 ;S6—— K6;</p><p> S7 ——K7 ;S8—— K8 ;其中S表示按鍵 ,K表示相應
22、的繼電器</p><p><b> 圖1-3</b></p><p><b> 圖1-3</b></p><p><b> 圖1-4</b></p><p><b> 按鍵消抖原理</b></p><p> ?。ㄈ├^電器的
23、選擇與驅(qū)動電路的設計</p><p> 繼電器選用HK4100F,它的驅(qū)動原理圖如所查資料所示,在設計中我們在不影響其正常工作的條件下對其進行了簡化。</p><p> 本設計是用單片機控制繼電器達到以弱控強的電路,下面再來介紹一下單片機和強電之間的橋梁----電磁繼電器。</p><p> 電磁繼電器是有觸點電繼電器是有觸點電繼電器的一種。它是利用電磁效應實
24、現(xiàn)電路開、關(guān)控制作用的原件,廣泛應用在電子設備、儀器儀表及自動化設備中。在各種自動設備中,都要求用一個低電壓電路提控制一個高電壓的電器電路。這樣不僅可以為電子線路和電器電路提供良好的電隔離,還可以保護電子電路和人員安全。</p><p> 單片機是一個弱電器件,一般情況下他們大都工作在5V甚至更低。驅(qū)動電流在mA級以下。而要把它用于一些大功率場合,比如控制電動機,顯然是不行的。所以,就要有一個環(huán)節(jié)來銜接,這個環(huán)
25、節(jié)就是所謂的“功率驅(qū)動”。繼電器驅(qū)動就是一個典型的、的功率驅(qū)動環(huán)節(jié)。在這里,繼電器驅(qū)動含有兩個意思:一是對繼電器進行驅(qū)動,因為繼電器本身對于單片機來說就是一個功率器件:還有就是繼電器去驅(qū)動其他負載,比如繼電器可以驅(qū)動中間繼電器,可以直接驅(qū)動接觸器,所以,繼電器驅(qū)動就是單片機與其他大功率負載接口。</p><p><b> 繼電器驅(qū)動原理:</b></p><p>
26、 上面的VCC就是水池,繼電器是一個水輪機,下面的GND是比水池低的任何一點。剛才說過,三極管就是水龍頭,他的把手就是那個帶有電阻的引腳。</p><p> 現(xiàn)在,單片機的某一個需要控制這個繼電器電路的輸出引腳就是一只“手”,當單片機的這個引腳輸出低電平的時候,就像“手”在打開三極管“水龍頭”,水就從上往下流,繼電器“水輪機”就開始轉(zhuǎn)起來了。反之,如果是輸出高電平,“手”就開始關(guān)“水龍頭”,繼電器“水輪機”因為
27、沒有水流下來,就會停止。</p><p> 這就是三極管的開關(guān)作用簡單的理解記憶就是:三極管是一個開關(guān)器件,其實你真的可以將它看成是一個開關(guān),只不過它不是用手來控制,而是用電壓(電流)來控制的,因此,三極管有些時候也被稱做電子開關(guān)(與機械開關(guān)相區(qū)別)。</p><p> 三極管有兩個作用一個是放大的作用,一個是開關(guān)作用。(嚴格來講開關(guān)作用是是放大作用的極限情況,不過沒關(guān)系,把兩者分開,
28、更便于理解它的工作原理)。在這里,我們只了解它跟本電路有關(guān)的開關(guān)作用</p><p> 繼電器驅(qū)動原理圖及設計電路</p><p><b> 圖1-5</b></p><p> ?。?)1602液晶顯示模塊:</p><p> 1602液晶也叫1602字符型液晶它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊
29、它有若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到了字符間距和行間距的作用,正因為如此所以他不能顯示圖形。但它可以用來顯示時間數(shù)字一類的信息。</p><p> 1602各個管腳功能及其與單片機的連接</p><p> 1602采用標準的16腳接口,其中: </p><p> 第1腳:V
30、SS為電源地 </p><p> 第2腳:VDD接5V電源正極 </p><p> 第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。 </p><p> 第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。 </p>
31、;<p> 第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。 </p><p> 第6腳:E(或EN)端為使能(enable)端。 </p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。 </p><p> 第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。</p><p&
32、gt; 設計的模塊電路圖如1-6</p><p><b> 圖1-6</b></p><p> 五、總體硬件設計電路</p><p><b> 六、軟件功能設計</b></p><p><b> 軟件實現(xiàn)流程</b></p><p> N
33、 N</p><p> Y Y</p><p> ?。ㄒ唬┌存I實現(xiàn)對繼電器的控制</p><p> 這里按鍵s1-s8的端口P00-P07 繼電器控制端口 P10-P
34、17已在主程序中聲明</p><p><b> 程序流程圖</b></p><p><b> N</b></p><p><b> Y</b></p><p> 在這里我們只對其中的四個控制做了程序說明</p><p> void keysca
35、n() //鍵盤掃描程</p><p><b> {</b></p><p><b> if(s1==0)</b></p><p><b> {</b></p><p> delays(10); //10ms按鍵消抖檢測 <
36、;/p><p><b> if(s1==0)</b></p><p><b> {</b></p><p> k1=1; //確認按鍵按下后控制相應的繼電器打開</p><p> while(!s1); //等待按鍵釋放 </p><
37、p><b> }</b></p><p><b> }</b></p><p><b> if(s2==0)</b></p><p><b> {</b></p><p> delays(10);</p><p>&
38、lt;b> if(s2==0)</b></p><p><b> {</b></p><p><b> k2=1;</b></p><p> while(!s2); </p><p><b> }</b></p><p>&
39、lt;b> }</b></p><p><b> if(s3==0)</b></p><p><b> {</b></p><p> delays(10);</p><p><b> if(s3==0)</b></p><p>
40、;<b> {</b></p><p><b> k3=1;</b></p><p> while(!s3); </p><p><b> }</b></p><p><b> }</b></p><p><b&g
41、t; if(s4==0)</b></p><p><b> {</b></p><p> delays(10);</p><p><b> if(s4==0)</b></p><p><b> {</b></p><p><b
42、> k4=1;</b></p><p> while(!s4); </p><p><b> }</b></p><p><b> }</b></p><p><b> {</b></p><p> ?。ǘ⒍〞r器的程序設計
43、</p><p> 算法實現(xiàn)對周、天、月的定時</p><p> 定時器的初始化裝值已在主程序中包含</p><p> void timer0() interrupt 1</p><p><b> {</b></p><p> TH0=(65536-50000)/256;</p&
44、gt;<p> TL0=(65536-50000)%256;</p><p><b> num1++;</b></p><p> if(num1==20)</p><p><b> {</b></p><p><b> num1=0;</b></
45、p><p><b> miao++;</b></p><p> if(miao==60)</p><p><b> {</b></p><p><b> miao=0;</b></p><p><b> fen++;</b>&
46、lt;/p><p><b> }</b></p><p> if(fen==60)</p><p><b> {</b></p><p><b> fen=0;</b></p><p><b> shi++;</b></
47、p><p><b> }</b></p><p> if(shi==24)</p><p><b> {</b></p><p><b> shi=0;</b></p><p><b> tian++;</b></p&g
48、t;<p><b> }</b></p><p> if(tian==6)</p><p><b> {</b></p><p><b> tian=0;</b></p><p><b> Zhou++;</b></p>
49、<p><b> }</b></p><p> if(zhou==4)</p><p><b> { </b></p><p><b> Zhou=0;</b></p><p><b> Yue++;</b></p>
50、<p><b> }</b></p><p><b> } </b></p><p> } </p><p> ?。ㄈ?602液晶顯示程序</p><p> 我們在這里設置時間為某一時段</p><p>
51、; 程序中根據(jù)查詢時間時間進行繼電器的中斷控制</p><p> 程序包含1602控制字的設置、寫操作程序,這里只對其實現(xiàn)時分秒的顯示做程序說明</p><p> void write_com(uchar com) //液晶寫命令操作</p><p><b> {</b></p><p><b>
52、rs=0;</b></p><p><b> lcden=0;</b></p><p><b> P0=com;</b></p><p><b> delay(5);</b></p><p><b> lcden=1;</b></
53、p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> void write_date(uchar date) //液晶寫數(shù)據(jù)的操作</p><p&
54、gt;<b> {</b></p><p><b> rs=1;</b></p><p><b> lcden=0;</b></p><p><b> P0=date;</b></p><p><b> delay(5);</b&
55、gt;</p><p><b> lcden=1;</b></p><p><b> delay(5);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p>&
56、lt;b> 顯示位置設置:</b></p><p> void write_sfm(uchar add,uchar date)</p><p><b> {</b></p><p> uchar shi,ge;</p><p> shi=date/10;</p><p>
57、; ge=date%10;</p><p> write_com(0x80+0x40+add);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+ge);</p><p><b> }</b></p><p><b&g
58、t; 時分秒顯示程序</b></p><p> void timer1() interrupt 3</p><p><b> {</b></p><p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p&
59、gt;<b> count++;</b></p><p> if(count==18)</p><p><b> {</b></p><p><b> count=0;</b></p><p><b> miao++;</b></p>
60、<p> if(miao==60)</p><p><b> {</b></p><p><b> miao=0;</b></p><p><b> fen++;</b></p><p> if(fen==60)</p><p>
61、<b> {</b></p><p><b> fen=0;</b></p><p><b> shi++;</b></p><p> if(shi==24)</p><p><b> {</b></p><p><
62、b> shi=0;</b></p><p><b> }</b></p><p> write_sfm(4,shi);</p><p><b> }</b></p><p> write_sfm(7,fen);</p><p><b>
63、 }</b></p><p> write_sfm(10,miao);</p><p><b> }</b></p><p><b> }</b></p><p> ?。ㄋ模┲鞒绦蚣俺跏蓟投丝谠O置</p><p> #include<reg52.
64、h></p><p> #define uchar unsigned char </p><p> #define uint unsigned int</p><p> sbit rs=P3^5;</p><p> sbit lcden=P3^4; </p><p> sbit rd=P3^7;<
65、/p><p> sbit s1=P0^0;</p><p> sbit s2=P0^1;</p><p> sbit s3=P0^2;</p><p> sbit s4=P0^3;</p><p> sbit s5=P0^4;</p><p> sbit s6=P0^5;</p&g
66、t;<p> sbit s7=P0^6;</p><p> sbit s8=P0^7;</p><p> uchar count, num;</p><p> char miao,shi,fen;</p><p> uchar code table[]=" 2012-5-28 MON";</
67、p><p> uchar code table1[]=" 00:00:00";</p><p> void init()</p><p><b> {</b></p><p> uchar num;</p><p><b> dula=0;</b&g
68、t;</p><p><b> wela=0;</b></p><p><b> lcden=0;</b></p><p> write_com(0x38);</p><p> write_com(0x0c);</p><p> write_com(0x06);&l
69、t;/p><p> write_com(0x01);</p><p> write_com(0x80);</p><p> for(num=0;num<15;num++)</p><p><b> {</b></p><p> write_date(table[num]);</p
70、><p><b> delay(5);</b></p><p><b> }</b></p><p> write_com(0x80+0x40);</p><p> for(num=0;num<12;num++)</p><p><b> {</b
71、></p><p> write_date(table1[num]);</p><p><b> delay(5);</b></p><p><b> }</b></p><p> TMOD=0x01;</p><p> TH0=(65536-50000)/2
72、56;</p><p> TL0=(65536-50000)%256;</p><p><b> EA=1;</b></p><p><b> ET0=1;</b></p><p><b> TR0=1;</b></p><p><b>
73、; }</b></p><p> void main()</p><p><b> {</b></p><p><b> init();</b></p><p><b> while(1)</b></p><p><b>
74、 {</b></p><p> keyscan();</p><p><b> }</b></p><p><b> }</b></p><p><b> 七、總結(jié)</b></p><p><b> 八、參考資料<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計---基于單片機控制的時鐘控制器
- 單片機課程設計——基于單片機的步進電機控制器設計
- 單片機課程設計--四路定時控制器
- 單片機課程設計---單片機節(jié)日彩燈控制器
- 單片機課程設計——基于單片機的步進電機控制器設計
- 單片機課程設計--基于51單片機的定時鬧鐘設計
- 單片機課程設計報告--基于單片機的步進電機控制器的設計
- 單片機課程設計-時間控制器
- 單片機課程設計---用單片機設計節(jié)日彩燈控制器
- 單片機課程設計:彩燈控制器設計
- 單片機課程設計--定時插座
- 單片機定時鬧鐘課程設計
- 單片機課程設計--秒表定時器
- 單片機課程設計--定時器實驗
- 單片機課程設計---加熱定時器
- 單片機課程設計-- 彩燈控制器的設計
- 單片機課程設計智能定時器
- 彩燈控制器的設計 單片機課程設計
- 單片機課程設計--溫度控制器的設計
- 單片機課程設計--基于單片機的控制循環(huán)燈設計
評論
0/150
提交評論