第一篇:知網論文 基于單片機的汽車里程表設計
#277#第3期 劉清波等
:基于單片機的汽車里程表設計
基于單片機的汽車里程表設計
劉清波1,蔡淑珍2,孫業歧2,史 楠3(1.保定師范專科學校計算機中心,河北保定 071051;2.河北大學物理科學與技術學院,河北保定 071002;3.河北大學電子信息工程學院,河北保定 071002)
摘 要:介紹了電子汽車里程表,此里程表以8031單片機為核心,用LED數碼管顯示汽車總行駛里程、本次里程,具有結構簡單、成本低廉、顯示清晰、穩定可靠等優點.并且可進行擴充,加入時速表的功能,進一步節省汽車儀表成本.關鍵詞:單片機;汽車里程表;存儲器
中圖分類號:TP 202
文獻標識碼:A
文章編號:1000-1565(2002)03-0276-03 單片機自從推出以來,以其超小型化、結構緊湊、可靠性高、成本低等優點被人們廣泛接受,從而應用于工業、電訊、數據處理、儀器儀表等多方面.汽車里程表是汽車的重要配件,在汽車儀表中占重要位置,但幾十年來其發展變化并不大,現在國外很多車中使用了數字里程表,但在國內還并不多見.這里講述的是一種以8031單片機為核心,6位LED數碼管作為顯示器,再加上程序存儲器2764,并以E2PROM 2817A為數據存儲器,8279為顯示芯片的數字汽車里程表.其通過按鍵開關可切換顯示本次里程和總里程.2816,2817系列為E2PROM,其掉電信息并不丟失,并且數據可方便改寫,利用此特性在其中存放汽車總里程數據.硬件設計
此汽車里程表以2764為程序存儲器,8031單片機為CPU,此種單片機應用廣泛且價格便宜.以74LS373為鎖存器構成最小系統,數據存儲器用的是一片E2PROM 2817A.顯示電路由1片74LS138為譯碼器,兩片7406,3片75451為驅動器,加上一片8279顯示芯片組成.采用6位共陰極數碼管.總里程最大值為999 999 km,本次里程最大顯示為999.9 km,總里程與本次里程用8031 P3.0腳外接按鍵開關來切換.8031 P1.0腳外接點觸式開關用以清零本次里程.顯示器顯示方式采用八字符右入動態顯示.(結構示意圖如圖1所示)圖1 汽車里程表結構
8031單片機外接8 MHz晶振作為外部時鐘頻率振 蕩電路,由汽車磁電式傳感器將汽車行駛時變速箱轉數 轉換成脈沖信號,接8031單片機INT1腳作為計數脈沖 輸入.2 軟件設計
軟件設計在系統設計中占很大比重,好的軟件環境 能使單片機硬件資源得以充分發揮,在軟件編程時應注 重程序的結構化,以簡化編碼,方便調試.本汽車里程表
2817A為2K字節因此可使用幾十年,遠超汽車的使用年限,因此不必為其使用壽命而擔心.本程序工作安全穩定,顯示清晰,計數準確,精度較機械式汽車里程表提高一個數量級.而且本里程表還可在功能上進一步擴充,可將汽車時速表功能加入到系統中,進一步降低汽車儀表的成本.4)時速表的編程思想如下:里程表程序中,每計數1次,汽車行駛0.001 602 564 1 km,T0每10 ms中斷1次,送顯示,其中斷100次時間為1 s,計算這1 s計數次數,乘3 600再乘0.001 602 564 1即可求出時速.公式為:時速=次數@5.769 2.此算法可精確到0.001位.然后將求得的時速送顯示.時速表顯示以P1.1及外接按鍵來控制,P1.1腳為高電平,P3.0為低電平時顯示汽車時速.此時速表可顯示到小數點后2位,精度較傳統汽車時速表提高2個數量級.結構簡單,匯編完后為713字節,占用程序空間少,用2716亦能勝任(采用2764主要為了方 便功能擴充).1)里程計數原理:汽車磁電式傳感器輸出的脈沖信號是傳感器轉輪旋轉時磁場使舌簧管分開閉合而產生的脈沖.每一個脈沖代表行駛了一定的距離.設汽車行駛1 km時驅動輪轉數為N,磁電式傳感器轉數為NF則NF= N@I,其中I為傳動比.設輪胎外徑為D,則汽車行駛1 km驅動輪轉數為N=1 000/PD,實際中由于輪胎承載變形使得輪胎外徑D變化,此時NXI=1 000/PLD,其中L為變形系數,一般為0.93~0.96.則磁電式傳感器在汽車行駛1 km時轉數NF=(1 000/PLD)I.設傳感器轉輪上均勻安排m個磁片時,汽車行駛1 km,傳感器輸出脈沖為mNF個.2)程序中以INT1的輸入為里程計數脈沖,8031中斷1置為高中斷優先級以保證計數準確.定時器T0置為低中斷優先級,設T0每10 ms中斷1次,中斷1次送1位顯示.每行駛1 km向2817中寫1次數據.3)以60H~62H單元為計數脈沖暫存單元.68H,69H單元為判斷數據暫存單元,6CH中為本次里程小數點位數值.當6CH單元內容達到0AH時清零.70~72H單元為讀出的總里程數.本程序包括主程序和2個中斷服務程序,程序功能如下: 主程序:初始化,清零存儲單元,讀出總里程存入暫存單元,開CPU中斷、置中斷優先級,啟動定時器,等 待中斷.INT1中斷服務程序:脈沖個數加1,判斷是否小數點數值為0.1 km,判斷是否行駛1 km.不是則返回.T0中斷服務程序:判斷是否顯示總里程,顯示方式初始化,顯示里程數,返回.圖2 系統流程
每經過1 km寫1次2817,這樣設計比隔一定時間寫一次新數據要實用得多,這樣在停車等待時8031停止寫入總里程,從而大大延長了2817的使用壽命.并且由于2817A寫入時間為幾毫秒,遠小于汽車行駛1 km所用時間,因此可對2817A的RAY/BUSY腳的狀態不予理會,從而也簡化了程序設計,且可使用2816達到同樣功能而不必更改程序.汽車行駛過程中會向里和存儲器頻繁寫入數據,假設汽車每天平均行駛1 000 km,即每天擦寫1 000次.總里程共6位分配3個字節,則個位十位單元每天擦寫1 000次,百、千位單元每天擦寫10次,萬、十萬位單元10天擦寫1次.根據E2PROM寫入次數約為1萬次的規定.如果給個、十位分配1 000個單元,可擦寫30年,而百千位只需分配10個單元,萬、十萬位分配1個單元就夠了.參 考 文 獻: [1]馬家臣,孫玉德,張 穎.MCS-51單片機原理及接口技術[M].哈爾濱:哈爾濱工業大學出版社,1996.[2]王義方,周偉航.微型計算機原理及應用(MCS-15系列單片機)[M].北京:機械工業出版社出版,1997.An Automobile Odometer Design Based on Single Chip Microcomputer LIU Qing_bo1,CAI Shu_zhen2,SUN Ye_qi2,SHI Nan3(1.Center of Computer,Baoding Teaching College , Baoding 071051,China;2.College of Physics and Technology,Hebei University,Baoding 071002,China;3.College of Electronic
and
Informational
Engineering,Hebei University,Baoding 071002,China)
Abstract:The article makes an introduction of an electron autormobile odometer whose core is/80310.The odometer can display the whole and any specific mileage by using a LED.It has the advantages of simple struc-ture,low cost ,clear display and reliable steadiness,etc.It can also be augmented to have the functions of a speed meter and so save the cost for other meters.Key words:single chip microcomputer;automobile odometer;memory(責任編輯:孟素蘭)#278#河北大學學報(自然科學版)2002年
第二篇:里程表(一)教學設計范文
北師大版一年級下冊
《觀察物體》
看一看
(一)梁塘小學 陳梅
2017年5月
《觀察物體》
看一看
(一)教學內容:
北師大版一年級下冊第18-19頁“看一看
(一)” 教學目標:
一、讓學生經歷觀察的過程,體驗到從不同的位置觀察物體,所看到的形狀是不一樣的。
二、學會正確辨認從正面、側面觀察到的簡單物體的形狀,發展學生的空間觀念和想象力。
三、在實踐活動的過程中,讓學生學會用眼睛去觀察,用語言表述自己觀察到的物體的形狀。
四、發展學生的空間觀念和合作意識,培養學生初步的辯證唯物主義思想。重點難點:
重點:能結合具體事物辨認從不同位置看到的物體形象。
難點:體驗從不同角度看物體,看到的形狀是不一樣的。教具準備:
多媒體課件、芭比娃娃、玩具小兔、玩具相機、各種小物品。教學過程:
一、創設情景,故事導入
師:小朋友們,你們喜歡聽故事嗎?
師:老師今天給大家講的故事叫做《盲人摸象》(幻燈片展示故事圖片)(邊展示邊講故事)
師:故事中的四個盲人對大象的描述正確嗎?為什么?
學生反饋
師小結:四個盲人摸到的只是大象身體的一部分,所以他們說不出大象的全貌,這里就牽扯到觀察物體的問題。今天我們一起來學習《觀察物體》。
板書課題
二、在活動中探究新知
1、活動一:你來拍一拍
師:小朋友們,你們喜歡拍照片嗎?老師這里有一個芭比娃娃,誰愿意當小攝影師,給芭比娃娃拍一張漂亮的照片?
請三名學生上前,分別站在芭比娃娃的前面、后面、右面準別拍照。
依次讓每個學生自己描述一下自己站在當前位置所看到的圖像是什么?然后拍照。師:你想知道他們拍的照片是什么樣子的嗎?
(課件出示三張圖片)
師:請同學們仔細觀察,讓后說說你發現了什么?
(三張照片不一樣)
師提問:“同一個芭比娃娃,為什么這三個同學拍出的照片不一樣呢?”
(再次出示三張照片)
揭示拍照時三位同學所站的位置。
引導學生得出結論:從不同的方向觀察同一個物體,看到的形狀可能是不同的。
2、活動二:你來猜一猜(出示玩具小兔)
師:請一個同學上來站在小兔的后面進行觀察。大屏幕出示三張不同角度小兔的照片,讓下面的學生猜一猜他看到的是哪幅圖。
換位置觀察,再讓下面的學生猜一猜。
三、聯系實際 鞏固新知
1、大家一起來觀察
出示布娃娃、鬧鐘、小火車等生活中常見的小物品。請學生分組觀察。
說一說:“你處在小物品的什么位置?你看到了什么?你和你對面的同學看到的圖形是一樣的嗎?”
2、書包練習題 找學生來說一說
3、智慧老人練習題 找學生連一連
四、全課小結
師:在今天的活動中,我們從哪幾個方向來觀察物體的?
師:你還知道了什么?
五、課外延伸
師:請你回家后,找一個物體,從不同角度去觀察,并把觀察到的形狀畫下來,然后讓爸爸媽媽猜一猜你觀察的是什么物體。
板書設計
看一看
(一)正面 側面 后面
觀察的方向不同 看到的結果可能就不一樣
第三篇:基于單片機的時鐘控制器設計論文
單片機原理與應用技術課程設計報告
基于單片機控制的時鐘控制器
專業班級: _電氣XX班_ __ 姓
名:__ ___XXX__ ___ 時 間:2013/11/25~12/15 指導教師: XXXX XXX
2013年12月11日
基于單片機控制的時鐘控制器課程設計任務書
1。設計目的與要求
設計出一個基于單片機控制的時鐘控制器。通過向單片機輸入不同的指令可以實現24小時制時鐘的基本顯示和連續的調時,調分和調秒的功能,同時又擴展了整點報時功能。該電路硬件較為簡單、計時精度高、可控性好,可以隨時調整和設定時間,并且調時間的誤差小,操作簡單、通用性強。
(1)基本功能
<1>、顯示:可以顯示時、分和秒
<2>、調時功能:時(0-24)、分和秒(0-60)可以連續可調(2)性能:時間日誤差< 2秒(3)擴展功能 <1>.增加整點報時功能 <2>.增加鬧鐘任意設定功能 2.設計內容
(1)畫出電路原理圖,正確使用邏輯關系;(2)確定元器件及元件參數;(3)進行電路模擬仿真;(4)SCH文件生成與打印輸出; 3.編寫設計報告
寫出設計的全過程,附上有關資料和圖紙,有心得體會。4.答辯
在規定時間內,完成敘述并回答問題。
目錄
摘要...................................................................1 1.引言................................................................1 2.設計目的和要求......................................................1 3.總體設計方案........................................................1 3.1 方案設計要求.......................................................1 3.2 方案設計與論證.....................................................1 3.3 整體設計框圖.......................................................2 3.4 系統設計流程圖.....................................................2 4.設計原理分析........................................................3 4.1 外接晶振電路..................................................3 4.2 復位電路...........................................................3 4.3 數碼管顯示電路.....................................................3 4.4 鍵盤控制電路.......................................................4 4.5 Proteus仿真電路....................................................4 4.6 單片機程序的編寫...................................................5 4.7 電路的檢測.........................................................5 4.8 CAD電路的連接及PCB電路布線并做出電路板............................5 4.9 軟件與硬件的調試...................................................5 5.總結與體會..........................................................5 6.附錄................................................................5 6.1 CAD電路連接圖......................................................5 6.2 PCB電路布線圖......................................................6 6.3 時鐘控制器參考源程序...............................................6 7.參考文獻...........................................................13
基于單片機控制的時鐘控制器 班級:電氣115班 姓名:趙傳陽
摘要:近年來隨著計算機在社會領域的滲透和大規模集成電路的發展,單片機的應用不斷地走向深入,由于它具有功能強,體積小,功耗低,價格便宜,工作可靠,使用方便等特點。本次設計的時鐘控制器是以單片機(AT89C51)為核心,結合相關的元器件(3個2位共陽數碼管,一個發光二極管和一個蜂鳴器)和應用程序(在Proteus軟件和KEIL編譯軟件),構成相應的應用系統。
關鍵詞:單片機 AT89C51 共陽數碼管 發光二極管 蜂鳴器 Proteus軟件 KEIL編譯軟件 中斷
1.引言
隨著科技的發展,電子技術得到了飛速的發展,尤其是單片機的應用更為普遍。單片機的應用已深入眾多技術領域,從軍事、工業到家庭日常生活,單片機因體積小、功能強、價格低廉而得到廣泛應用。在此基礎上,越來越多各式各樣的時鐘也逐漸走進我們的生活,它們設計精巧、方便、耐用、美觀,深得各領域的厚愛。隨著科技的進步,基于單片機控制的時鐘控制器的出現則打破了人們對時鐘的傳統概念,因為數字時鐘不僅可以通過數字直觀地顯示出時間,還可以定時發出各種聲、光、電信號,以啟動各種設備實現實時控制、時間順序控制。該課程設計既有一般時鐘的基本顯示和調整功能,同時又增加了整點報時功能,復位功能及實時時鐘控制功能。
2.設計目的與要求
設計出一個基于單片機控制的時鐘控制器。通過向單片機輸入不同的指令可以實現24小時制時鐘的基本顯示和連續的調時,調分和調秒的功能,同時又擴展了整點報時功能。該電路硬件較為簡單、計時精度高、可控性好,可以隨時調整和設定時間,并且調時間的誤差小,操作簡單、通用性強。
在一個單片機應用系統中,時鐘有兩方面的含義:一是指為保障系統正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統工作的快慢;二是指系統的標準定時時鐘,即定時時間。
本文主要介紹用單片機為核心部件的時鐘控制器,本設計由單片機AT89C51芯片和3個兩位一體的共陽極的數碼管為核心,輔以必要的電路,構成了一個單片機時鐘控制器?;疽螅?.顯示: 可以顯示時、分和秒
2.調時功能:時(0-24)、分和秒(0-60)可以連續可調并進行校準 3.能夠完成時間的顯示、定時鬧鐘、整點報時及復位功能
3.總體設計方案
3.1.方案設計要求
設計制作一個時鐘控制器,要求能實現基本走時,并以數字形式顯示時、分、秒,采用24小時制,能實現校時、校分連續可調、整點報時功能、復位功能以及鬧鐘任意設定功能。3.2方案設計與論證
方案一:采用各種純數字芯片實現數字時鐘的設計。優點:各個模塊功能清晰,電路易于理解實現。缺點:各個模塊功能已定不能進行智能化調整,整體電路太龐大。
方案二:采用 FPGA模塊用硬件語言實現功能。優點:運算速度快,走時精度高,算法簡單。缺點:成本高,大材小用。
方案三:采用單片機最小系統實現功能。優點:電路簡單,能通過程序進行隨機調整并擴展功能,成本低,易于實現。缺點:走時有一定的誤差。
經過綜合考慮成本問題以及電路實現問題,選擇第三種方案實現設計要求。3.3整體設計框圖
整體設計框圖如圖1所示:
4.設計原理分析
4.1外接晶振電路
晶振連接電路圖如圖3,以12MHZ晶振為基準。
圖3 外接晶振電路連接圖
XTAL1、XTAL2:XTAL1是片內振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應直接加到XTAL1,而XTAL2懸空。內部方式時,時鐘發生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內選擇,一般選用12MHZ晶振,電容取30PF左右。4.2復位電路
常用復位電路圖如圖4:
圖4 復位電路連接圖
在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現在此引:腳時,將使單片機復位,只要這個腳保持高電平,51芯片便循環復位。復位后P0-P3口均置1引腳表現為高電平,程序計數器和特殊功能寄存器SFR全部清零。4.3 數碼管顯示電路
二位一體共陽極數碼管電路連接圖如圖5,以PNP三極管為驅動。
圖5 數碼管顯示電路連接圖
4.4 鍵盤控制電路
鍵盤控制電路如圖6。
圖6 時鐘按鍵控制電路圖
通過S1、S2、S3和S4四個按鍵,對時間進行修改和鬧鐘的設置,S0控制鬧鐘的啟動和停止。按下S4鍵顯示鬧鐘,松開后顯示時間;按下S1鍵進入時間修改模式,再按S1鍵時間的時加1,按S3分加1,調整結束后按下S4恢復正常顯示;按下S2鍵進入鬧鐘修改模式,再按S3鍵鬧鐘的時加1,按S3分加1,調整結束后按下S4恢復正常顯示。在按鍵按下和放開時會出現抖動現象。通過延時程序,可以進行去抖動設計。4.5 Proteus仿真電路
整體電路連接圖如圖7:
圖7 整體電路連接圖
4.6 單片機程序的編寫
用KEIL編譯軟件進行程序的設計、編譯并生成可執行文件。4.7 電路的檢測
電路連接完畢后,應用單片機程序燒錄工具進行程序燒錄,然后單擊運行按鈕進行仿真,檢測電路是否有誤。
4.8 CAD電路的連接及PCB電路布線并做出電路板
待仿真電路檢測無誤后,則通過CAD軟件進行電路圖的連接并對元件進行封裝,確定無誤后生成PCB圖進行電路的布線,之后做出電路板進行元件的焊接。4.9 軟件與硬件的調試
單片機應用系統的調試包括硬件和軟件兩部分,但是它們并不能完全分開。一般的方法是排除明顯的硬件故障,再進行綜合調試,排除可能的軟件或硬件故障。
軟件調試是指用仿真軟件進行仿真調試,驗證系統的各項功能;硬件調試即軟件調試成功后,將程序下載至AT89C51芯片中,用焊接好的電路來進行各項功能的驗證與檢測。
需要特別注意的是軟件調試與硬件調試的差異,軟件調試只是初步的估測,硬件的調試才是最真實的。
5總結與體會
經過三周的實習設計,我設計的時鐘控制器實現了它最基本功能,三個星期的緊張實習,讓我獲益非淺,更加熟練的掌握了Proteus軟件、KEIL軟件及CAD軟件的應用,使我看到了自己專業知識的淺薄與不足。通過本次的課程設計,我對單片機這門課程有了更深的了解,單片機課程設計則是人生課程,我學到了很多課堂上無法學到的東西,懂得了學習的不容易,在以后的學習中我會更加努力的去學習和研究,以取得更好的成績。
6.附錄
6.1 CAD電路連線圖如圖8。
圖8 CAD電路連接圖
6.2 PCB電路布線圖如圖9。
圖9 PCB布線電路圖(注:未連線的端口用外接線連接)
6.3 時鐘控制器參考源程序
使用keil軟件編寫源程序 ORG 0000H LJMP START ORG 000BH LJMP TIME;********初始化********* START: MOV SP, #50H MOV 20H,#00H;定義秒
MOV 21H,#00H;定義分 MOV 22H,#00H;定義時
MSTOP1: MOV C,P1.3;P1.3為0時轉移 JNC MSTOP1 LCALL DELAY1;延時
MOV A,50H
INC 50H
CJNE A,#00H,HJ1
LJMP L0 HJ1: MOV C,P1.3 JNC MSTOP1 INC 22H;小時自加一 MOV A,22H CJNE A,#18H,GO12;MOV 22H,#00H;MOV 34H,#00H MOV 35H,#00H LJMP L0 L1: JB P1.1,L2;P1.1=1 MOV C,P1.1 JC L1 LCALL DELAY1;JC L1 MSTOP2: MOV C,P1.1 JNC MSTOP2 LCALL DELAY1;MOV C,P1.1 JNC MSTOP2 INC 21H;MOV A,21H CJNE A,#3CH,GO11;MOV 21H,#00H;MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11: MOV B,#0AH DIV AB MOV 32H,B;MOV 33H,A;LJMP L0 GO12: MOV B,#0AH DIV AB MOV 34H,B;MOV 35H,A;LJMP L0 L2: JB P1.0,L0;P1.0 MOV C,P1.0 JC L2 LCALL DELAY1;MOV C,P1.0 JC L2 STOP1: MOV C,P1.0 JNC STOP1
小時計數循環
復位 時轉移 延時;P1.1=0時轉移 延時 分鐘加一 分鐘計數循環 復位 將A的低4位存入32單元 將A的高4位存入33單元 將A的低4位存入34單元 將A的高4位存入35單元=1時轉移 延時;P1.0=0時轉移
LCALL DELAY1;延時 MOV C,P1.0 JNC STOP1
MOV 50H,#00H LJMP MAIN;*******設置鬧鐘******* SETATIME:LCALL DISPLAY2;調用DISPLAY2顯示鬧鐘 N0: LCALL DISPLAY2 MM2: JB P1.2,N1;P1.2=1時轉移 MOV C,P1.2 JC MM2 LCALL DELAY1;JC MM2 MSTOP3: MOV C,P1.2 JNC MSTOP3 LCALL DELAY1;
LJMP N0 HJ2: MOV C,P1.2 JNC MSTOP3 INC 24H;MOV A,24H CJNE A,#24,GO22;MOV 24H,#00H;MOV 38H,#00H MOV 39H,#00H LJMP N0 N1: JB P1.1,N2;P1.1 MOV C,P1.1 JC N1 LCALL DELAY1;JC N1 MSTOP4: MOV C,P1.1 JNC MSTOP4 LCALL DELAY1;MOV C,P1.1 JNC MSTOP4 INC 23H;MOV A,23H CJNE A,#60,GO21;MOV 23H,#00H;MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21: MOV B,#0AH DIV AB MOV 36H,B;MOV 37H,A;LJMP N0
延時 =0時轉移 延時 小時加一 小時計數循環 復位 =1時轉移 延時 =0時轉移 延時 分鐘加一 分鐘計數循環 復位 將A的低4位存入36單元 將A的高4位存入37單元
;P1.2 MOV A,50H INC 50H CJNE A,#00H,HJ2;P1.1
GO22: MOV B,#0AH DIV AB MOV 38H,B;將A的低4位存入38單元 MOV 39H,A;將A的高4位存入39單元 LJMP N0 N2: JB P1.0 ,N0;P1.0=1時轉移 MOV C,P1.0 JC N2 LCALL DELAY1;延時 MOV C,P1.0 JC N2 STOP2: MOV C,P1.0 JNC STOP2 LCALL DELAY1 MOV C,P1.0 JNC STOP2
MOV 50H,#00H LJMP MAIN;*******鬧鐘判斷***************** TIMEPRO: MOV A,21H MOV B,23H CJNE A,B,BK;判斷定時鬧鐘的分鐘 MOV A,22H MOV B,24H CJNE A,B,BK;判斷定時鬧鐘的小時 SETB 25H.0 MOV C,25H.0 LCALL TIMEOUT;調用TIMEOUT BK:RET;**************喇叭報警***************** TIMEOUT: X1: LCALL BZ;調用喇叭響應程序 CLR 25H.0;調用喇叭響應程序結束 LCALL DELAY;延時 CLR 25H.0 LJMP DISPLAY1 BZ:MOV C,25H.1 MOV P1.6,C CLR P1.7 MOV R7,#0FFH;喇叭響應時間 T2: MOV R6,#0FFH T3: DJNZ R6,T3 DJNZ R7,T2 SETB P1.7 RET;*************顯示鬧鐘時間************ LOOKATIME:LCALL DISPLAY2 MM: JNB P1.0,LOOKATIME LCALL DELAY1 LJMP MAIN DELAY1: MOV R4,#14H;時間延時
0
POP ACC RETI;********顯示子程序********** DISPLAY1: MOV R0,#30H MOV R3,#0FEH MOV A,R3 PLAY1: MOV P2,A MOV A,@R0;取要顯示的數據 MOV DPTR,#DSEG1;指向字形段碼首地址 MOVC A,@A+DPTR CJNE R0,#34H,PA ORL A,#80H PA:CJNE R0,#32H,PB ORL A,#80H PB:CPL A;MOV P0,A;LCALL DL1 MOV P2,#0FFH MOV A,R3;RL A;JNB ACC.6,LD1 INC R0;MOV R3,A LJMP PLAY1 LD1: RET DISPLAY2: PUSH ACC;PUSH PSW MOV R0,#36H MOV R3,#0FBH MOV A,R3
PLAY2: MOV P2,A MOV A,@R0;MOV DPTR,#DSEG1;MOVC A,@A+DPTR CJNE R0,#38H,PP ORL A,#80H PP:CPL A;MOV P0,A;LCALL DL1;MOV P2,#0FFH MOV A,R3;RL A;JNB ACC.6,LD2 INC R0;MOV R3,A LJMP PLAY2;LD2: POP PSW POP ACC;RET;******DELAY*******
查表取字形段碼 指向P0口 判斷是否顯示到最低位 左移一位 緩沖器地址加一 保護現場 取要顯示的數據 指向字形段碼首地址 查表取字形段碼 指向P0口 調用DL1 判斷是否顯示到最低位左移一位 緩沖器地址加一 調用PLAY2 恢復現場
DL1: MOV R7,#20H DL: MOV R6,#20H DL6: DJNZ R6,$ DJNZ R7,DL RET DSEG1: DB 3FH,06H,5BH,4FH,66H;七段碼表 DB 6DH,7DH,07H,7FH,6FH END 7.參考文獻
[1].王建校,楊建國.51系列單片機及C51程序設計.北京:科學出版社, 2002.[2].吳金戊, 沈慶陽等.8051單片機實踐與應用.北京:清華大學出版社, 2002.[3].李建忠.單片機原理及應用(第二版).西安:西安電子科技大學出版社, 2008.2.[4].張毅剛.新編MCS-51單片機應用設計(第3版).哈爾濱: 哈爾濱工業大學出版社, 2006.10.[5].李學禮.基于Proteus的8051單片機實例教程.電子工業出版社出版時間, 2008.6.[6].百度文庫:http://wenku.baidu.com/view/a9243c18fad6195f312ba6d3.html
第四篇:單片機課程論文設計-電子鐘課程設計
單片機課程論文設計 ——電子鐘
一 課程設計的主要內容 1 設計思想 1.1硬件設計思想 1.1.1電路設計思想
電路原理圖見圖1,由動態數碼顯示組成時、分、秒的顯示。把“單片機系統”區域中的P1.0-P1.7端口用8芯排線連接到“動態數碼顯示”區域中的A-H端口上;把“單片機系統:區域中的P3.0-P3.7端口用8芯排線連接到“動態數碼顯示”區域中S-S8端口上;“單片機系統”區域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分別用導線連接到“獨立式鍵盤”區域中的SP3、SP2、SP1端口上。
1.1.2鍵盤設計思想
鍵盤是微機的主要設備,按鍵的讀取容易引起錯誤動作??刹捎密浖ザ秳拥姆椒ㄌ幚恚浖挠|點在閉合和斷開的時候會產生抖動,這時觸點的邏輯電平是不穩定的,如不采取妥善處理的話,將引起按鍵命令錯誤或重復執行,在這里采用軟件延時的方法來避開抖動,延時時間20ms.1.2軟件設計思想
本系統的主程序主要完成時間顯示和修改時間的功能。而時間單元進位,時間設定時,調定時間設定時等功能全部在中斷服務程序中完成。
1.2.1數據與代碼轉換
由前述可知,從P2口輸出位選碼,從P0口輸出段選碼,LED就會顯示出數字來。但P0口的輸出的數據是要BCD碼,各存儲單元存儲的是二進制數,也就是和要顯示出的字符表達的含義是不一致的??梢?,將要顯示的存儲單元的數據直接送到P0口去驅動LED數碼管顯示是不能正確表達的,必須在系統內部將要顯示的數據經過BCD碼行轉換后,將各個單元數據的段選代碼送入P0口,給CD4511譯碼后去驅動數碼管顯示。具體轉換過程如下:
我們先將要顯示的數據裝入累加器A中,再將A中的數據轉換成高低兩位 的BCD碼,再放回A中,然后將A中的值輸出。如:有一個單元存儲了45這樣一位數,則需轉換成四位的BCD碼:(0100)(0101)然后放入A中。A中BCD碼,高位四位代表?4?低四位代表?5?同時送給兩個譯碼器中,譯碼后? 45? 字就在兩個LED中顯示出來。
1.2.2計時功能的實現與中斷服務程序
時間的運行依靠定時中斷子程序對時鐘單元數值進位調整來實現的。計數器T0打開后,進入計時,滿100毫秒后,重裝定時。中斷一次,滿一秒后秒進位,滿60秒后即為1分鐘,分鐘單元進位,60分到了后,時單元進位。得到時、分、秒存儲單元的值,并經譯碼后,通過掃描程序送LED中顯示出來,實現時鐘計時功能。累加是用指令INC來實現的。進入中斷服務程序以后,執行PUSH PSW和PUSH A將程序狀態寄存器PSW的內容和累加器A中的數據保存起來,這便是所謂的? 保護現場?.以保護現場和恢復現場時存取關鍵數據的存儲區叫做堆棧。在軟件的控制之下,堆??稍谄瑑萊AM中的任一區間設定,而堆棧的數據存取與一般的RAM存取又有區別,對它的操作,要遵循? 后進先出? 的原則。
1.2.3時間控制功能與比較指令
系統的另一功能就是實現對執行設備的定時開關控制,其主要控制思想是這樣的:先將執行設備開啟的時間和關閉時間置入RAM某一單元,在計時主程序當中執行幾條比較指令,如果當前計時時間與執行設備的設定開啟時間相等,就執行一條CLR指令,將對應的那路P3置為高電位,開啟;如果當前計時時間與執行設備設定的關閉時間相等,就執行SETB對應的P3置低電位,二極管截止。實現此控制功能用到的比較指令為CJNE A,#direct,rel,其轉移條件是累加器A中的值與立即數不等則轉移。
二 課程設計的目的
實現的功能:
①開機時,電子鐘從12:00:00開始自動計時。②設置按鍵,能對時、分、秒進行調整。
三設計方案的論證
3.1電路原理與電路圖 3.1.1電路原理
電路原理圖見圖1,由動態數碼顯示管組成時、分、秒的顯示。P0口的8條數據線P0.0至P0.7分別與兩個CD4511譯碼的ABCD口相接,P2口的P2.0至P2.2分別通過電阻R10至R13與VT1至VT3的基極相連接。這樣通過P0口送出一個存儲單元的高位、低位BCD顯示代碼,通過P2口送出掃描選通代碼輪流點亮LED1至LED6,就會將要顯示的數據在數碼管中顯示出來。從P0口輸出的代碼是BCD碼,從P2口輸出的就是位選碼。這是掃描顯示原理。
電路原理圖
C130pFU1X119CRYSTAL18XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD*********617S-0S-1S-2S-3S-4S-5S-6S-7C230pFXTAL2R210kR310kR410kR110k9RSTC310uF293031PSENALEEARP1987654321RESPACK-***78P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51時分秒S-7S-6S-5S-4S-3S-2S-1S-001234567
圖 1 電路原理圖
3.2 流程圖與算法描述 3.2.1流程圖
3.3軟件設計
SECOND
EQU 30H;MINITE EQU 31H;HOUR
EQU 32H;HOURK
BIT P0.2 MINITEK BIT P0.1 SECONDK BIT P0.0 DISPBUF EQU 40H DISPBIT EQU 48H 流程圖
秒寄存器
分寄存器
時寄存器 圖
T2SCNTA
EQU 49H
T2SCNTB EQU 4AH TEMP
ORG 00H;
程序執行開始EQU 4BH 地址
LJMP
START;
執行
ORG
0BH;T0
LJMP
INT_T0;
;主程序
START: MOV
SECOND,#00H;
得單元
MOV
MINITE,#00H
MOV
HOUR,#12
MOV
DISPBIT,#00H
MOV
T2SCNTA,#00H
MOV
T2SCNTB,#00H
MOV
TEMP,#0FEH
LCALL
DISP;
子程序
MOV
TMOD,#01H
MOV
TH0,#(65536-2000)/ 256;
MOV
TL0,#(65536-2000)/ 256
SETB
TR0;
SETB
ET0;
SETB
EA;
WT:
跳轉到標號START
中斷程序入口
跳至IN-T0執行
清0存放秒分時值
在2KB范圍內長調用 顯示2毫秒
允許TO中斷
開啟T0定時器
總中斷開放
按鍵掃描子程序及校時調整
JB
SECONDK, NK1;SECONDK為1(sp1建按下)時跳到
LCALL
DELY10MS
JB
SECONDK,NK1
INC
SECOND;
對計數器加1
MOV
A,SECOND
CJNE
A,#60, NS60;沒到60秒返回,到60秒清0;判斷計數器是否滿59
MOV
SECOND,#00H NS60:
LCALL
DISP
JNB
SECONDK,$;
NK1: JB
MINITEK,NK2;
LCALL
DELY10MS
JB
MINITEK,NK2;
INC
MINITE
MOV
A,MINITE
CJNE
A,#60, NM60
MOV
MINITE,#00H NM60:
LCALL DISP
JNB
MINITEK, $;
NK2:
JB
HOURK,NK3
LCALL
DELY10MS
JB
HOURK,NK3
INC
HOUR
MOV
A, HOUR
CJNE
A, #24,NH24
MOV
HOUR,#00H
不滿60秒就循環執行 分控制鍵按下時跳轉
分控制鍵按下時跳轉
不滿60分就循環執行
NH24:
LCALL
DIS
JNB
HOURK,$;
不滿24小時就循環執行
NK3 LJMP
WT DELY10MS:;
延時1毫秒的子程序
MOV D1:
MOV
;顯示子程序
DISP:
;
地址
MOV
ADD
DEC
MOV
MOV
MOV
DIV
MOV
DEC
MOV
MOV
DEC
MOV
MOV
DEC
MOV R6, #10 R7, #248 DJNZ
R7, $ DJNZ
R6, D1 RET
A, #DISPBUF;
A, #8 A R1, A A, HOUR;
B, #10;
AB @R1, A;
R1 A, B @R1, A R1;A, #10 @R1, A R1 A, MINITE;
將得出的時間存入40H(DISPBUF)之后的將temp中的十六進制數轉換成10進制 時送A
10進制/10=10進制 累加器送內部RAM單元
分送A
MOV B, #10
DIV
AB;
十進制調整
MOV @R1, A
DEC
R1
MOV
A, B
MOV
@R1, A
DEC
R1
MOV
A, #10
MOV
@R1,A
DEC
R1
MOV
A, SECOND;
MOV
B, #10
DIV
AB;
MOV @R1, A
DEC
R1
MOV A, B
MOV @R1, A
DEC
R1
RET INT_T0:;T0
MOV TH0,#(65536-2000)/ 256;
MOV TL0,#(65536-2000)/ 256
MOV A, #0FFH
MOV P3, A
MOV A, #DISPBUF
ADD
A, DISPBIT;
MOV R0, A
MOV A, @R0;
MOV DPTR, #TABLE;
MOVC A,@A+DPTR;
秒送A
十進制調整 TIME子程序 2毫秒 地址加,并將時間的各位送到p1 取顯示數據到A 取段碼表地址
查顯示數據對應段碼
中斷服務子程序,即計時
MOV
P1, A;
分十位送P1口顯示
MOV
A, DISPBIT
MOV
DPTR, #TAB;
表地址送數據指針
MOVC A,@A+DPTR
MOV
P3, A
INC
DISPBIT
MOV A, DISPBIT
CJNE A, #08H, KNA
MOV
DISPBIT, #00H KNA:
INC
T2SCNTA;
MOV A, T2SCNTA
CJNE
A, #100, DONE
MOV T2SCNTA, #00H
INC T2SCNTB
MOV A, T2SCNTB
CJNE A, #05H, DONE
MOV T2SCNTB,#00H
INC
SECOND;秒加一
MOV A, SECOND;
CJNE A, #60, NEXT;
MOV SECOND, #00H;
INC
MINITE;分加1
MOV A, MINITE;
CJNE A, #60, NEXT;
MOV
MINITE, #00H;
INC
HOUR;
時加1
MOV A, HOUR
CJNE A, #24, NEXT;
MOV
HOUR, #00H
時間的增加與進位 到60秒了嗎? 到60秒清0 到60分了嗎? 到60分清0 到24小時了嗎?
NEXT:
LCALL
DISP DONE:
RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H TAB:
DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07F
四 系統調試
系統由AT89C51、SEG數碼管、按鍵、電容、晶振、電阻等部分構成,能實現時間的調整、時間校對、定時時間的設定,輸出等功能。系統的功能選擇由按鍵‘時’、‘分’、‘秒’、完成。開機時,顯示12:00:00的時間開始計時;按鍵P0.0/AD0控制“秒”的調整,每按一次加1秒;P0.1/AD1控制“分”的調整,每按一次加1分;P0.2/AD2控制“時”的調整,每按一次加1個小時;系統的主程序主要完成時間顯示和定時輸出判斷功能。而時間單元進位,時間設定時,調定時間設定時等功能全部在中斷服務程序中完成。該電子鐘的精確度在仿真軟件中效果良好。
五 心得體會
計算機控制技術是一門很綜合的課程。任何一個計算機系統都是一個復雜的整體,學習計算機控制技術是要涉及到整體的每一部分。討論某一部分原理時又要涉及到其它部分的工作原理。這樣一來,不僅不能在短時間內較深入理解計算機的工作原理,而且也很難孤立地理解某一部分的工作原理。所以,在循序漸進的課堂教學過程中,我總是處于“學會了一些新知識,弄清了一些原來保留的問題,又出現了一些新問題”的循環中,直到課程結束時,才把保留的問題基本搞清楚。
學習該門課程知識時,其思維方法也和其它課程不同,該課程偏重于工程思維,靈活知識運用,具體地說,在了解了計算機編程后,剩下的是如何將它們用于實際系統中,其創造性勞動在于如何用計算機的有關技術和廠家提供的各種芯片,設計實用的電路和系統,再配上相應的應用程序,完成各種實際應用項目。
這次課程設計較為綜合,主要的困難來自對程序的編寫和校對,功夫不負有心人,經過我的虛心求學和查找資料,最終對實驗的原理有了較清晰的認識。但是仍然存在很多的不足,今后需要加強的地方還是很多,所以在今后的求學路上我會更加努力。望老師批評改正。
六 參考文獻:
[1].潘新民,王燕芳編著.微型計算機控制技術[M].北京:電子工業出版社,2003 [2].何立民.單片機應用技術選編(1)[M].北京:北京航空航天大學出版社,1995,6 [3].劉國榮,梁景凱.計算機控制技術與應用[M] .北京:機械工業出版社,1999,5 [4].齊維毅,丁言鎂,齊振國.單片機原理及應用設計實驗[M] .沈陽:遼寧大學出版社,2006,5 [5].李華.MCS-51系列單片機實用接口技術[M].北京:北京航空航天大學出版社,1993,8 [6].潘新民,王燕芳編著.單片微型計算機實用系統設計[M].北京:人民郵電出版社,1992
第五篇:51單片機論文
課程設計報告
課程設計名稱:智能控制避障小車 學生姓名: 班
級: 學
號: 成 績: 指導教師:
開課時間:2016-2017學年第 一學期
I
獨 創 聲 明
本人聲明所呈交的課程設計是本人在導師指導下進行的研究工作及取得的研究成果。據我所知,除了文中特別加以標注和致謝的地方外,論文中不包含其他人已經發表或撰寫過的研究成果,也不包含未獲得(注:如沒有其他需要特別聲明的,本欄可空)或其他教育機構的學位或證書使用過的材料。與我一同工作的同志對本研究所做的任何貢獻均已在設計報告中作了明確的說明并表示謝意。
作者簽名: 日期:年月日
II
摘 要
介紹一種基于stc89c51單片機實現的智能避障小車設計。該系統前方采用兩個紅外反射式光傳感器fc-51檢測障礙物,控制系統通過檢測信號識別障礙物并發出指令使小車繞行。
關鍵詞:智能 控制 避障 單片機III
傳感器
目錄
(以下內容僅供參考).系統功能………………………………… 系統工作原理
2.設計方案……………………………………………………………… 2.1車體設計………………………………………………………………… 2.2電源模塊………………………………………………………………… 2.3 避障模塊………………………………………………………………… 2.4電機模塊………………………………………………………………… 2.5電機驅動模塊…………………………………………………………… 2.6 最終方案………………………………………………………………… 3 系統程序……………………………………………………………………….總結………………….參考文獻…………………
IV.系統功能
系統工作原理:
系統主要由控制單元、電機驅動、外部輸出、紅外發射、紅外接收等單元組成。
圖1 系統機構圖
智能控制避障小車的設計采用現在較為流行的8位單片機作為系統大腦。以8051系列家族中AT89C51為主芯片。4個端口引腳控制信號輸入電路,控制電路,執行電路共同完成避障行駛控制。
2.設計方案 1車體設計:
智能控制小車采用中間輪驅動,中間輪左右兩邊各一個電機驅動,控制中間面兩個大輪子的停走從而控制小車的方向;前后輪是換向輪起支撐作用。將兩個避障模塊放在車子的左前方和右前方。如下圖所示:
小車底盤,可以清楚的看到小車電機控制車輪,以及換向輪所在位置。
上圖可以看出小車電源最小系統板還有排針以及開關的位置。
從小車正面看出內部驅動,前方的避障模塊。(超聲波檢測,尋跡模塊)
2電源模塊:
電源模塊即電池與電池盒,通過電池盒接通電路,輸送電源來驅動小車跑。避障模塊:
傳感器模塊對環境光線適應能力強,其具有一對紅外線發射與接收管,發射管發射出一定頻率的紅外線,當檢測方向遇到障礙物(反射面)時,紅外線反射回來被接收管接收,經過比較器電路處理之后,綠色指示燈會亮起,同時信號輸出接口輸出數字信號(一個低電平信號),可通過電位器旋鈕調節檢測距離,有效距離范圍2~30cm,工作電壓為3.3V-5V。
4電機模塊:
電機模塊主要控制小車的中間兩輪,從而控制小車的前進與后退。
控制電機的轉速也能控制小車的前進速度。電機驅動模塊:
電機驅動模塊使用ST公司的L298N作為主驅動芯片,具有驅動能力強,發熱量低,抗干擾能力強的特點。
電機驅動模塊可以使用內置的78M05通過驅動電源部分取電工作,但是為了避免穩壓芯片損壞,當使用
大于12V驅動電壓的時候,我們使用外置的5V邏輯供電。
電機驅動模塊使用大容量濾波電容,續流保護二極管,可以提高可靠性
原理圖 最終方案:
利用驅動模塊降壓,接通51單片機,通過程序控制小車運動,通過避障改變運動軌跡,從而實現避障。.系統程序
程序: #include
#define uint unsigned int //定義全局變量
sbit IN1=P1^0;sbit IN2=P1^1;sbit IN3=P1^2;sbit IN4=P1^3;//定義驅動引腳
sbit out1=P2^5;sbit out2=P2^6;//定義避障引腳
void run()
//小車跑
{
if(out1==0&&out2==1)//小車右轉
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
}
else if(out1==1&&out2==1)//小車前進
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
else if(out1==1&&out2==0)//小車左轉
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
} else if(out1==0&&out2==0)//小車左后轉
{
IN1=0;
IN2=1;
IN3=0;
IN4=0;
} } void main()
//主函數
{ while(1)
{
run();
} } 改程序是利用避障模塊檢測,若左邊避障檢測到,小車右轉,右邊檢測到,小車左轉,都沒檢測到,前進,都檢測到,小車左后退。.總結
智能避障小車軟硬件配合要緊密,在硬件中,要把各個零件配合時要連接正確,否則有燒壞的可能,寫程序時要注意步驟,要有思路,程序代碼要記清,寫程序時要認真,避免出現小失誤。從做這輛小車以來,我學到了很多知識,也碰到了很多困難,但最終都克服了,只要有一顆不服輸的心,我想信,困難只是暫時的,最后都會解決。.參考文獻
[1]郭惠,吳迅 單片機 c語言程序射進完全自學手冊[M] 電子工業出版社,2008.10.1-200 [2]王東鋒,王會良,董冠強 單片機c語言應用100例[M] 電子工業出版社,2009.3.145-300 [3]韓毅,楊天,基于HCS12單片機的智能尋跡模型車的設計與實現[j] 學術期刊,2008,29(18):1535-1955