![單片機原理及應(yīng)用課程設(shè)計自動控制升降旗裝置_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/677be552-a1f5-4007-b354-58254a0db383/677be552-a1f5-4007-b354-58254a0db3831.gif)
![單片機原理及應(yīng)用課程設(shè)計自動控制升降旗裝置_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/677be552-a1f5-4007-b354-58254a0db383/677be552-a1f5-4007-b354-58254a0db3832.gif)
![單片機原理及應(yīng)用課程設(shè)計自動控制升降旗裝置_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/677be552-a1f5-4007-b354-58254a0db383/677be552-a1f5-4007-b354-58254a0db3833.gif)
![單片機原理及應(yīng)用課程設(shè)計自動控制升降旗裝置_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/677be552-a1f5-4007-b354-58254a0db383/677be552-a1f5-4007-b354-58254a0db3834.gif)
![單片機原理及應(yīng)用課程設(shè)計自動控制升降旗裝置_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/3/677be552-a1f5-4007-b354-58254a0db383/677be552-a1f5-4007-b354-58254a0db3835.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、湖南人文科技學(xué)院課程設(shè)計報告課程名稱:單片機原理及應(yīng)用課程設(shè)計設(shè)計題目: 自動控制升降旗裝置 系 別: 通信與控制工程系 專 業(yè): 通信工程 班 級: 07通信一班 學(xué)生姓名: 學(xué) 號: 0 起止日期: 2010年6月8日 2010年6月22日 指導(dǎo)教師: 教研室主任: 指導(dǎo)教師評語: 指導(dǎo)教師簽名: 年 月 日成績評定項 目權(quán)重成績鄧曉雄王成胡楚煊1、設(shè)計過程中出勤、學(xué)習(xí)態(tài)度等方面0.22、課程設(shè)計質(zhì)量與答辯0.53、設(shè)計報告書寫及圖紙規(guī)范程度0.3總 成 績 教研室審核意見:教研室主任簽字: 年 月 日教學(xué)系審核意見: 主任簽字: 年 月 日摘 要本系統(tǒng)采用單片機stc89c52作為自動控
2、制升降旗系統(tǒng)的檢測和控制核心,采用由單片機控制的步進電機帶動國旗升降,實現(xiàn)對國旗升降的自動控制。該電路主要由電機驅(qū)動控制模塊、鍵盤與顯示模塊及語音模塊幾個部分組成。電機驅(qū)動控制模塊采用集成驅(qū)動芯片uln2003l,采用鍵盤作為輸入控制和數(shù)碼管作為輸出顯示,語音模塊采用報警蜂鳴器(ls)電路。關(guān)鍵字:步進電機;自動控制;語音;數(shù)碼管顯示;按鍵 目 錄設(shè)計要求11 方案選擇與論證11.1電機的選擇與論證11.2 電機驅(qū)動方案的選擇與論證22 自動控制升降旗整體電路設(shè)計22.1整體電路原理23 單元電路設(shè)計33.1 步進電機電路的設(shè)計33.2 數(shù)碼管顯示電路的設(shè)計43.3 音樂發(fā)聲電路的設(shè)計53.4
3、 矩陣4x4鍵盤電路的設(shè)計63.5 外部rom存儲器電路設(shè)計74 自動控制升旗裝置軟件設(shè)計84.1 系統(tǒng)總程序流程圖84.2 步進電機轉(zhuǎn)動的軟件設(shè)計94.3 數(shù)碼管實時顯示的軟件設(shè)計104.4 國歌音樂的軟件設(shè)計104.5 矩陣鍵盤實時控制軟件設(shè)計114.6 外部rom實時訪問的軟件設(shè)計125 詳細儀器清單136 總結(jié)與思考及致謝14參考文獻15附錄一:系統(tǒng)程序代碼16附錄二:總原理圖27自動控制升降旗裝置設(shè)計要求基本部分: 1).按下上升按鍵后,旗幟勻速上升,同時流暢地播放歌曲,上升到最高端時自動停止上升,歌曲停奏;按下下降按鍵后,旗幟勻速下降,降旗的時間不放歌曲,下降到最低端時自動停止;
4、2).旗幟在最高端,上升按鍵不起作用;在最低端時,下降按鍵不起作用; 3).升降旗的時間均為43秒,與國歌的演奏時間相等; 4).即時顯示旗幟所在的高度,以cm為單位,誤差不大于2cm。發(fā)揮部分: 1). 重新合上電源后,所顯示的旗幟高度數(shù)據(jù)不變; 2). 要求升降旗的速度可調(diào)整,調(diào)整范圍是30120秒鐘,步進1秒(除43秒外,其他時間可與國歌不同步); 3). 在最高升降速度下(以自選的電機參數(shù)定),能在指定的位置上自動停止,定位誤差2cm。1 方案選擇與論證1.1電機的選擇與論證方案一:采用普通的直流電機。普通直流電動機具有優(yōu)良的調(diào)速特性,調(diào)速平滑、方便,調(diào)整范圍廣,過載能力強,能承受頻繁
5、的沖擊負載,可實現(xiàn)頻繁的無級快速啟動、制動和反轉(zhuǎn)。方案二:采用步進電機。步進電機是純粹的數(shù)字控制電動機,它將電脈沖轉(zhuǎn)化為角位移,即一脈沖,電機就轉(zhuǎn)動一角度,因此很適合單片機控制。步進電機的一個顯著特點是具有快速的啟停能力,如果負荷不超過步進電機所能提供的動態(tài)轉(zhuǎn)矩值,就能夠立即使步進電機啟動或反轉(zhuǎn)。另一個顯著特點是轉(zhuǎn)換精度高,可以通過步數(shù)實現(xiàn)精確定位,可正轉(zhuǎn)反轉(zhuǎn)控制靈活。綜上所述,我們選用方案二。1.2 電機驅(qū)動方案的選擇與論證方案一:采用繼電器對電動機的開或關(guān)進行控制,通過控制開關(guān)的切換速度實現(xiàn)對電機的運行速度進行調(diào)整。這個電路的優(yōu)點是電路結(jié)構(gòu)簡單,其缺點是繼電器的響應(yīng)時間長,易損環(huán),壽命短,
6、耗電流,不能很好的驅(qū)動步進電機,可靠性不是很高。方案二:采用由達林頓管組成的h橋型pwm電路。用單片機控制達林頓管使之工作在占空比可調(diào)的開關(guān)狀態(tài),可精確調(diào)整電動機的運動狀態(tài)(前進,后退,左轉(zhuǎn),右轉(zhuǎn))。這種電路由于工作在管子的飽和截至模式下,效率很高。h橋電路保證了可以簡單的實現(xiàn)轉(zhuǎn)速和方向的控制,但不能很精確的控制步距和速度。方案三:采用uln2003驅(qū)動。uln2003 是高耐壓、大電流達林頓陳列,由七個硅npn 達林頓管組成,具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,適應(yīng)于各類要求高速大功率驅(qū)動的系統(tǒng)。所以綜上所述我們采用方案三。2 自動控制升降旗整體電路設(shè)計2.1整體電路
7、原理系統(tǒng)整體電路原理框圖如圖1所示:圖1總體電路框圖3 單元電路設(shè)計3.1 步進電機電路的設(shè)計根據(jù)設(shè)計要求,我們采用了步進電機的準確步進來控制旗桿的升降,電路圖如圖3所示:圖 3 步進電機原理圖 步進電機是數(shù)字控制電機,不同于直流電機。它將脈沖信號轉(zhuǎn)變?yōu)榻俏灰?,即給一個脈沖信號,步進電機就轉(zhuǎn)動一個角度,非常適合單片機控制。工作原理如下: (1)控制換相順序 通電換相這一過程稱為脈沖分配。例如:三相步進電機的六拍工作方式,其各相通電順序為a-ab-b-bc-c-ca-a,通電控制脈沖必須嚴格按照這一順序分別控制a,b,c各相得通斷。 (2)控制步進電機的轉(zhuǎn)向 如果給定工作方式正序換相通電,電機正
8、轉(zhuǎn),如果按反序通電換相,電機就反轉(zhuǎn)。 (3)控制步進電機的速度如果給步進電機發(fā)一個控制脈沖,它就轉(zhuǎn)一步,再發(fā)一個脈沖,它就會再轉(zhuǎn)一步。兩步脈沖的時間間隔越短,步進電機就轉(zhuǎn)的越快。調(diào)整單片機發(fā)出的脈沖頻率,就可以對步進電機進行調(diào)速。步進電機步序表如表1所示:表1 步進電機步序表步序c4c3c2c1uln2003輸出單片機輸出100010x010x0e200110x030x0c300100x020x0d401100x060x09501000x040x0b611000x0c0x03710000x080x07810010x090x06 如果按步序1-步序 8輸出數(shù)據(jù),步進電機正轉(zhuǎn),按步序8步序一輸出數(shù)
9、據(jù),步進電機反轉(zhuǎn)。 3.2 數(shù)碼管顯示電路的設(shè)計由于要求升降過程中即時顯示所在高度,故采用四位數(shù)碼管即可顯示出來。本試驗所采用的開發(fā)板上有一排六位的數(shù)碼管,每個數(shù)碼管的8段是由芯片8255得pb口控制亮滅,即可得到所要顯示的數(shù)字,每個數(shù)碼管的公共腳分別由8255的pa0pa5經(jīng)三極管擴流后進行控制,原理圖如圖4所示:圖 4 數(shù)碼管顯示電路原理圖 要在某位數(shù)碼管上顯示一個數(shù)字,首先把待顯示數(shù)字的顯示碼送給8255的pb口,接著選中要顯示的位。例如:要在開發(fā)板的最左邊的數(shù)碼上顯示一個0,則需要先把0得顯示碼0xc0送8255得pb口,接著pa0賦0(低電平),隨后讓單片機保持這個值不變。3.3 音
10、樂發(fā)聲電路的設(shè)計為了在升旗得過程中同步放出國歌的音樂,本實驗采取蜂鳴器來奏響國歌。單片機的p33引腳用來控制蜂鳴器的工作,當p33輸出高電平時,蜂鳴器不工作。當p33引腳輸出低電平時,三極管導(dǎo)通,蜂鳴器工作,同時二極管發(fā)光。蜂鳴器音樂電路如圖5示:圖 5 音樂發(fā)聲電路3.4 矩陣4x4鍵盤電路的設(shè)計本實驗中用來控制的功能比較多,故采取按鍵控制的方法來實現(xiàn)控制功能。電路如圖6示:圖 6 矩陣4x4鍵盤電路 矩陣式鍵盤的按鈕識別辦法可以確定矩陣式鍵盤上何鍵被按下,采用的方法之一為“行掃描法”。行掃描法又稱為逐行(或列)掃描查詢法,是一種最常見的按鈕識別方法,鍵盤如上所示。具體實現(xiàn)過程如下:判斷鍵盤
11、中有無鍵按下。將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵低于低電平線與4根行線交叉的4個按鈕之中。若所有列線均為高電平,則按鍵中無鍵按下。判斷閉合鍵所在的位置:在確認有鍵按下的情況下,即可進入確定具體鍵的過程。操作是:依次將行線置為低電平,即在置某根行線為低電平時,其他線為高電平。在確定某根行線為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該線與置為低電平的行線交叉處的按鈕就是閉合的按鈕。3.5 外部rom存儲器電路設(shè)計由于設(shè)計要求要掉電后將數(shù)據(jù)保存,即重開電源后單片機要從上次掉電前得狀態(tài)繼續(xù)執(zhí)行,故采取i2c總線形式掛載外部程序
12、存儲器來存儲掉電前得數(shù)據(jù)。原理圖如圖7所示:圖 7 外部rom存儲器電路i2c總線是一種用于ic器件之間連接的二進制總線。它通過sda(串行數(shù)據(jù)線)及scl(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件:不管是單片機、存儲器、lcd驅(qū)動器還是鍵盤接口。at24c08是低功耗的cmos串行eeprom,內(nèi)含256*8位存儲空間,工作電壓寬,擦寫次數(shù)多,寫入速度快等特點。本設(shè)計中24c08的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在開發(fā)板上均接地,第8腳和第4腳分別接正、負電源。第5腳sda為串行數(shù)據(jù)輸入輸出,數(shù)據(jù)通過這條i2c總線串行傳送,與單片機的p27連
13、接。第6腳scl為串行時鐘輸入線與單片機的p26連接。sda與scl都需要和正電源間各接一個2k的上拉電阻。第7腳需接地。4 自動控制升旗裝置軟件設(shè)計4.1 系統(tǒng)總程序流程圖系統(tǒng)工作總程序流程圖如圖8所示:圖8 整體程序流程圖4.2 步進電機轉(zhuǎn)動的軟件設(shè)計步進電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(及步進角)??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時也可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。其工作流程圖如圖9所示: 圖9 步進電機程序流程圖此次設(shè)計中,采用的為
14、四相八拍的步進電機控制方式。代碼中,先定義了要用到的步進電機正轉(zhuǎn)和反轉(zhuǎn)的時序數(shù)組,以使后面的程序能夠隨時更改電機接收到的脈沖時序,以達到實時地控制電機的正轉(zhuǎn)和反轉(zhuǎn),從而實現(xiàn)旗幟的上升與下降。更改脈沖時序的條件由所按下的鍵盤按鍵決定,所以可以實時地更改脈沖的時序,達到實時地控制電機轉(zhuǎn)動方式。4.3 數(shù)碼管實時顯示的軟件設(shè)計數(shù)碼管顯示的部分硬件上是通過8255擴展i/o芯片實現(xiàn)控制,且采用的為動態(tài)數(shù)碼管顯示的方法,也就是六要數(shù)碼管共用的為一個八位數(shù)據(jù)線。上面函數(shù)的功能為在指定的數(shù)碼管上顯示指定的數(shù)字。實際中要顯示的數(shù)字不只有一位,所以必須在人的視覺停留的時間內(nèi),即1/12秒的時間內(nèi),把所有要顯示的
15、數(shù)碼管全部點亮,才能給人感覺像是所有數(shù)碼管同一時刻全部點亮了。數(shù)碼管工作流程圖如圖10所示:圖 10 數(shù)碼管子程序流程圖4.4 國歌音樂的軟件設(shè)計 音樂功能主要在兩個中斷中完成;定時器0中斷主要輸出一定頻率的方波,定時器1中斷完成音長的控制,在完成特定音符的音長后讀取下一個音符,并且更新定時器0的初始設(shè)置值。演奏時,要根據(jù)音符的不同把對應(yīng)半周期的定時時間初始值送入定時器t0,再由定時器t1按時輸出高低電平,定時器控制音樂程序流程圖如圖11所示: 圖 11 定時器t0、t1控制音樂子程序流程圖4.5 矩陣鍵盤實時控制軟件設(shè)計本次設(shè)計采用的為4x4矩陣鍵盤,這種鍵盤是由16個按鍵組成的開關(guān)矩陣。其
16、程序流程圖如圖12所示,程序中用來識別用戶按下的按鍵采用的方式為動態(tài)掃描的方式,即分別對矩陣進行行掃描,再進行列掃描即可得到識別按鍵所需的兩個坐標值,在程序中定義全局變量test_x,test_y用來存儲鍵盤掃描得到的值。個體的程序設(shè)計中,因為實時控制電機的轉(zhuǎn)動,音樂的開關(guān)均以用戶按下的按鍵為基準,故程序中多次要用到鍵盤掃描,所以將鍵盤掃描程序抽象出來形成一個單獨的函數(shù)scankeyboard(),提高編碼效率。圖12 鍵盤程序流程圖4.6 外部rom實時訪問的軟件設(shè)計因為ram存儲器的掉電易失性,而要達到掉電保存數(shù)據(jù)的效果,就必須將要保存的數(shù)據(jù)寫到rom中。本次設(shè)計中,采用外部程序存儲器24
17、c08,采用的通訊協(xié)議為i2c串行總線方式,外部rom程序流程圖如圖13所示。具體的程序設(shè)計中,將主要對存儲器的操作抽象為兩個函數(shù)以供調(diào)用,即存儲器寫函數(shù)write24c02(uint ch,uchar address),功能為每一次寫一字節(jié)到指定的存儲器地址上,存儲器讀函數(shù)read24c02(uchar address),功能為讀出指定地址上的一個字節(jié)。圖 13 外部rom程序流程圖5 詳細儀器清單表格 1 儀器清單儀器名稱數(shù)量stc89c52芯片18255a芯片1uln2003l1步進電機1七段led數(shù)碼顯示器6按鍵166 總結(jié)與思考及致謝本系統(tǒng)采用單片機stc89c52作為自動控制升降旗
18、系統(tǒng)的檢測和控制核心,采用由單片機控制的步進電機帶動國旗升降,通過用按生鍵來實現(xiàn)對國旗升降的自動控制,最終與實踐相結(jié)合的升降旗系統(tǒng),實現(xiàn)單片機與人們活的密切應(yīng)用。做本設(shè)計,深刻的體會到,要把各功能模塊搞懂才能達到各硬件的融合,達到硬件和軟件的結(jié)合。軟件設(shè)計中,由于匯編的繁瑣性,本系統(tǒng)采用c來編寫程序,其實c是每一條語句可轉(zhuǎn)化為匯編,匯編是更接近硬件的語言,寫匯編可以對單片機的實際操作有更好的理解,故有時間可以嘗試寫“雙語”。 感謝學(xué)校能給我們這次機會,讓我們有一個發(fā)揮自己的平臺,讓我們把從課本學(xué)到的知識用到實際生活當中,從中得到鍛煉。在系統(tǒng)設(shè)計過程中,劉老師、方老師、譚老師、周老師等提出了許多
19、寶貴的意見,在此深表感謝!同時得到了在校老師和同學(xué)們的支持與幫助,在此表示感謝!參考文獻1 朱定華,戴汝平.單片微機原理與應(yīng)用(m).北京:清華大學(xué)出版社20032 張鑫單片機原理及應(yīng)用(m).電子工業(yè)出版社.20093 彭秀華單片機高級語言c51windows環(huán)境編程與應(yīng)用(m).電子工業(yè)出版社 20014 全國大學(xué)生電子設(shè)計競賽組委會全國大學(xué)生電子設(shè)計競賽獲獎作品選編(m).北京:理工大學(xué)出版社2003年5 彭為單片機典型系統(tǒng)設(shè)計實例精講(m).電子工業(yè)出版社20056 沈慶陽8051單片機實踐與應(yīng)用(m).清華大學(xué)出版社20027 張立科單片機典型模塊設(shè)計實例導(dǎo)航(m).北京:人民郵電出
20、版社 20048 陳濤單片機應(yīng)用及c51程序設(shè)計(m).機械工業(yè)出版社2007附錄一:系統(tǒng)程序代碼#include #include #include #define uchar unsigned char#define uint unsigned intuchar code ffw8=0x75,0x65,0x6d,0x4d,0x5d,0x1d,0x3d,0x35;/步進電機正轉(zhuǎn)數(shù)組uchar code rev8=0x35,0x3d,0x1d,0x5d,0x4d,0x6d,0x65,0x75;/步進電機反轉(zhuǎn)數(shù)組/setflag用標志定位是否有效test_x,test_y用于定義16個按鍵中的任
21、一個uchar test_x=10,test_y=10,setflag=0;uchar setfalse=0;uint counter=0;/用于定義每隔多少個脈沖數(shù)碼管上數(shù)字自增/定義四個變量分別存儲四個要顯示的數(shù)位的值four顯最高位第四位的值,依此類推uint sum=0,four=0,three=0,two=0,one=0;uint four_max=0,three_max=0,two_max=0,one_max=0;/定義四個變量,用來定位停止/音樂模塊用到的些定義常量,變量,數(shù)組unsigned char volatile flagbeat;/基本節(jié)拍單位計數(shù)變量unsigned
22、int volatile freqtemp;unsigned char volatile music_temp; /暫時存放從musictable數(shù)組中讀出的變量unsigned char volatile beat;unsigned char volatile freq;/簡譜碼對應(yīng)t值數(shù)組的下標unsigned char volatile *pmusic;sbit pin_buzzer=p33; /串行外存定義的量#definewritedeviceaddress 0xa0/定義器件在iic總線中的地址#definereaddviceaddress 0xa1sbitscl=p26;sbit
23、sda=p27;unsigned char x1,x2,x3;unsigned int code freqtab= /簡譜對應(yīng)的簡譜碼、t值65535,63628,63835,64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030;unsigned char code musictable=/音符節(jié)拍碼0x52,0x84,0x02,0x82,0x82,0x01,0x81,0x52,0x61,0x71,0x84,0x84,0xa2,0x82,0x91,0xa1,0xc2,0x01,0xc1,0xc4,0xa2
24、,0x01,0xa1,0x82,0x01,0xa1,0xc2,0x01,0xa1,0x94,0x94,0x04,0xd4,0xc4,0x94,0xa4,0xc2,0xa4,0xc2,0xa2,0x91,0xa1,0x82,0x01,0x91,0xa4,0xc2,0x01,0x61,0x82,0xa2,0x01,0xa1,0xc2,0x01,0xc1,0x92,0x92,0x92,0x62,0x01,0x61,0x94,0x02,0x52,0x84,0x02,0x82,0xa4,0x02,0xa2,0xc4,0x04,0xc4,0x04,0x82,0x01,0xa1,0xc2,0x01,0xc1
25、,0xd4,0xc4,0xa2,0x01,0x81,0xc2,0xc2,0xc2,0xa2,0x82,0x54,0x84,0x32,0x01,0x81,0xc2,0xc2,0xc2,0xa2,0x82,0x54,0x84,0x54,0x84,0x54,0x84,0x84,;unsigned char const dis_table16= 0xa0, /*0*/ 0xbb, /*1*/ 0x62, /*2*/ 0x2a, /*3 */ 0x39, /*4*/ 0x2c, /*5 */ 0x24, /*6*/ 0xba, /*7*/ 0x20, /*8*/ 0x28, /*9 */;void de
26、layms(unsigned int number) unsigned char temp;for(;number!=0;number-) for(temp=112;temp!=0;temp-) ;/開始總線void start() sda=1;scl=1;sda=0;scl=0;/結(jié)束總線void stop() scl=0;sda=0;scl=1;sda=1;/發(fā)ack0void noack() sda=1;scl=1;scl=0;/測試ackbit testack() bit errorbit;sda=1;scl=1;errorbit=sda;scl=0;return(errorbit);
27、/寫入8個bit到24c08write8bit(unsigned int input) unsigned char temp;for(temp=8;temp!=0;temp-) sda=(bit)(input&0x80);scl=1;scl=0;input=input1;/寫入一個字節(jié)到24c08中void write24c02(uint ch,uchar address) start();write8bit(writedeviceaddress);testack();write8bit(address);testack();write8bit(ch);testack();stop();del
28、ayms(10);/從24c08中讀出8個bituchar read8bit() unsigned char temp,rbyte=0;for(temp=8;temp!=0;temp-) scl=1;rbyte=rbyte1;rbyte=rbyte|(unsigned char)(sda);scl=0;return(rbyte);/從24c08中讀出1個字節(jié)uchar read24c02(uchar address) uchar ch;start();write8bit(writedeviceaddress);testack();write8bit(address);testack();sta
29、rt();write8bit(readdviceaddress);testack();ch=read8bit();noack();stop();return(ch);void delay()/延時主要用于控制display函數(shù)執(zhí)行速度,以及電機的轉(zhuǎn)帶 uint i = 0; for(i = 0; i20;i+);void delaytest()/延時主要用作按鍵消抖作用。 uint i = 0; for(i = 0; i25000;i+);/動態(tài)掃描4x4鍵盤,不停的掃描則可以確實按下的為哪一個按鍵。void scankeyboard() uint i,j,pc_data = 0; a8255
30、_con=0x89; a8255_pb=0xff; a8255_pa=0xff; delay(); pc_data=a8255_pc; for(j = 0;j4;j+) if(pc_data&(1j) = (1j) for(i = 0;i4;i+) a8255_pa=1i; delay(); pc_data=a8255_pc; if(pc_data&(1j) = (1j) test_x = i; test_y = j; break;/定時器,音樂模塊的一些初始化void initial()pmusic=musictable; beat=1; flagbeat=0; tmod=0x11;/定時器
31、0,1都工作16位計數(shù)方式 et0=1; /允許定時器0溢出中斷; et1=1; /允許定時器1溢出中斷 ea=1; tl1=0xf0; th1=0xff; tr1=1;it0=1; /外中斷跳變產(chǎn)生中斷ex0=1;/數(shù)碼管顯示方法,在指定的place位置顯示num數(shù)字。void display(uchar place,uint num) uchar i = 0,display_num = 0; uint test = 0; a8255_con=0x89; a8255_pb=0xff; a8255_pa=0xff; delay(); if(place = 1) test = (0x10); e
32、lse if(place = 2) test = (0x11); else if(place = 3) test = (0x12); else if(place = 4) test = (0x13); else if(place = 5) test = (0x14); else if(place = 6) test = (0x15); a8255_pa=test;if(num = 0) display_num = dis_table0; else if(num = 1) display_num = dis_table1; else if(num = 2) display_num = dis_t
33、able2; else if(num = 3) display_num = dis_table3; else if(num = 4) display_num = dis_table4; else if(num= 5) display_num = dis_table5; else if(num = 6) display_num = dis_table6; else if(num = 7) display_num = dis_table7; else if(num = 8) display_num = dis_table8; else if(num = 9) display_num = dis_table9; a8255_pb=display_num; delay();/主函數(shù)入口,主要用來組合音樂,電機,顯示模塊以及通過按鍵實時的控制步進機,音樂播放void main(void)/用于掉電保存的數(shù)據(jù),每次開機時,用于加載掉電前的數(shù)據(jù)uint stonum=read24c02(0x04);four_max=stonum/100;three_max=stonum/10%10;two_max=stonum%10;four=f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度員工股權(quán)購買與分紅合同
- 二零二五年度美容院顧客會員權(quán)益保障合同
- 二零二五年度互聯(lián)網(wǎng)教育入股合同協(xié)議書
- 2025年度酒店會議住宿及會議資料打印服務(wù)合同
- 2025年度智能化管道施工安裝及維護服務(wù)合同
- 2025年度鋁合金門窗工程進度款支付合同范本
- 二零二五年度測量項目風(fēng)險管理承包合同
- 二零二五年度版檔口租賃與市場推廣合作合同
- 2025年度生姜種植與農(nóng)業(yè)觀光旅游合作合同
- 2025關(guān)于建設(shè)工程設(shè)計合同
- 中央2025年公安部部分直屬事業(yè)單位招聘84人筆試歷年參考題庫附帶答案詳解
- 三年級數(shù)學(xué)(上)計算題專項練習(xí)附答案
- 中醫(yī)診療方案腎病科
- 2025年安慶港華燃氣限公司招聘工作人員14人高頻重點提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級下冊數(shù)學(xué)第七章 相交線與平行線 單元測試卷(含答案)
- 2025年供電所所長個人工作總結(jié)(2篇)
- 玩具有害物質(zhì)風(fēng)險評估-洞察分析
- 春節(jié)節(jié)后復(fù)工全員安全意識提升及安全知識培訓(xùn)
- 2025四川廣安發(fā)展建設(shè)集團限公司第一批招聘6人高頻重點提升(共500題)附帶答案詳解
- 2024年河南省公務(wù)員錄用考試《行測》真題及答案解析
評論
0/150
提交評論