第一篇:51單片機(jī)論文
課程設(shè)計(jì)報(bào)告
課程設(shè)計(jì)名稱(chēng):智能控制避障小車(chē) 學(xué)生姓名: 班
級(jí): 學(xué)
號(hào): 成 績(jī): 指導(dǎo)教師:
開(kāi)課時(shí)間:2016-2017學(xué)年第 一學(xué)期
I
獨(dú) 創(chuàng) 聲 明
本人聲明所呈交的課程設(shè)計(jì)是本人在導(dǎo)師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我所知,除了文中特別加以標(biāo)注和致謝的地方外,論文中不包含其他人已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,也不包含未獲得(注:如沒(méi)有其他需要特別聲明的,本欄可空)或其他教育機(jī)構(gòu)的學(xué)位或證書(shū)使用過(guò)的材料。與我一同工作的同志對(duì)本研究所做的任何貢獻(xiàn)均已在設(shè)計(jì)報(bào)告中作了明確的說(shuō)明并表示謝意。
作者簽名: 日期:年月日
II
摘 要
介紹一種基于stc89c51單片機(jī)實(shí)現(xiàn)的智能避障小車(chē)設(shè)計(jì)。該系統(tǒng)前方采用兩個(gè)紅外反射式光傳感器fc-51檢測(cè)障礙物,控制系統(tǒng)通過(guò)檢測(cè)信號(hào)識(shí)別障礙物并發(fā)出指令使小車(chē)?yán)@行。
關(guān)鍵詞:智能 控制 避障 單片機(jī)III
傳感器
目錄
(以下內(nèi)容僅供參考).系統(tǒng)功能………………………………… 系統(tǒng)工作原理
2.設(shè)計(jì)方案……………………………………………………………… 2.1車(chē)體設(shè)計(jì)………………………………………………………………… 2.2電源模塊………………………………………………………………… 2.3 避障模塊………………………………………………………………… 2.4電機(jī)模塊………………………………………………………………… 2.5電機(jī)驅(qū)動(dòng)模塊…………………………………………………………… 2.6 最終方案………………………………………………………………… 3 系統(tǒng)程序……………………………………………………………………….總結(jié)………………….參考文獻(xiàn)…………………
IV.系統(tǒng)功能
系統(tǒng)工作原理:
系統(tǒng)主要由控制單元、電機(jī)驅(qū)動(dòng)、外部輸出、紅外發(fā)射、紅外接收等單元組成。
圖1 系統(tǒng)機(jī)構(gòu)圖
智能控制避障小車(chē)的設(shè)計(jì)采用現(xiàn)在較為流行的8位單片機(jī)作為系統(tǒng)大腦。以8051系列家族中AT89C51為主芯片。4個(gè)端口引腳控制信號(hào)輸入電路,控制電路,執(zhí)行電路共同完成避障行駛控制。
2.設(shè)計(jì)方案 1車(chē)體設(shè)計(jì):
智能控制小車(chē)采用中間輪驅(qū)動(dòng),中間輪左右兩邊各一個(gè)電機(jī)驅(qū)動(dòng),控制中間面兩個(gè)大輪子的停走從而控制小車(chē)的方向;前后輪是換向輪起支撐作用。將兩個(gè)避障模塊放在車(chē)子的左前方和右前方。如下圖所示:
小車(chē)底盤(pán),可以清楚的看到小車(chē)電機(jī)控制車(chē)輪,以及換向輪所在位置。
上圖可以看出小車(chē)電源最小系統(tǒng)板還有排針以及開(kāi)關(guān)的位置。
從小車(chē)正面看出內(nèi)部驅(qū)動(dòng),前方的避障模塊。(超聲波檢測(cè),尋跡模塊)
2電源模塊:
電源模塊即電池與電池盒,通過(guò)電池盒接通電路,輸送電源來(lái)驅(qū)動(dòng)小車(chē)跑。避障模塊:
傳感器模塊對(duì)環(huán)境光線(xiàn)適應(yīng)能力強(qiáng),其具有一對(duì)紅外線(xiàn)發(fā)射與接收管,發(fā)射管發(fā)射出一定頻率的紅外線(xiàn),當(dāng)檢測(cè)方向遇到障礙物(反射面)時(shí),紅外線(xiàn)反射回來(lái)被接收管接收,經(jīng)過(guò)比較器電路處理之后,綠色指示燈會(huì)亮起,同時(shí)信號(hào)輸出接口輸出數(shù)字信號(hào)(一個(gè)低電平信號(hào)),可通過(guò)電位器旋鈕調(diào)節(jié)檢測(cè)距離,有效距離范圍2~30cm,工作電壓為3.3V-5V。
4電機(jī)模塊:
電機(jī)模塊主要控制小車(chē)的中間兩輪,從而控制小車(chē)的前進(jìn)與后退。
控制電機(jī)的轉(zhuǎn)速也能控制小車(chē)的前進(jìn)速度。電機(jī)驅(qū)動(dòng)模塊:
電機(jī)驅(qū)動(dòng)模塊使用ST公司的L298N作為主驅(qū)動(dòng)芯片,具有驅(qū)動(dòng)能力強(qiáng),發(fā)熱量低,抗干擾能力強(qiáng)的特點(diǎn)。
電機(jī)驅(qū)動(dòng)模塊可以使用內(nèi)置的78M05通過(guò)驅(qū)動(dòng)電源部分取電工作,但是為了避免穩(wěn)壓芯片損壞,當(dāng)使用
大于12V驅(qū)動(dòng)電壓的時(shí)候,我們使用外置的5V邏輯供電。
電機(jī)驅(qū)動(dòng)模塊使用大容量濾波電容,續(xù)流保護(hù)二極管,可以提高可靠性
原理圖 最終方案:
利用驅(qū)動(dòng)模塊降壓,接通51單片機(jī),通過(guò)程序控制小車(chē)運(yùn)動(dòng),通過(guò)避障改變運(yùn)動(dòng)軌跡,從而實(shí)現(xiàn)避障。.系統(tǒng)程序
程序: #include
#define uint unsigned int //定義全局變量
sbit IN1=P1^0;sbit IN2=P1^1;sbit IN3=P1^2;sbit IN4=P1^3;//定義驅(qū)動(dòng)引腳
sbit out1=P2^5;sbit out2=P2^6;//定義避障引腳
void run()
//小車(chē)跑
{
if(out1==0&&out2==1)//小車(chē)右轉(zhuǎn)
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
}
else if(out1==1&&out2==1)//小車(chē)前進(jìn)
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
else if(out1==1&&out2==0)//小車(chē)左轉(zhuǎn)
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
} else if(out1==0&&out2==0)//小車(chē)左后轉(zhuǎn)
{
IN1=0;
IN2=1;
IN3=0;
IN4=0;
} } void main()
//主函數(shù)
{ while(1)
{
run();
} } 改程序是利用避障模塊檢測(cè),若左邊避障檢測(cè)到,小車(chē)右轉(zhuǎn),右邊檢測(cè)到,小車(chē)左轉(zhuǎn),都沒(méi)檢測(cè)到,前進(jìn),都檢測(cè)到,小車(chē)左后退。.總結(jié)
智能避障小車(chē)軟硬件配合要緊密,在硬件中,要把各個(gè)零件配合時(shí)要連接正確,否則有燒壞的可能,寫(xiě)程序時(shí)要注意步驟,要有思路,程序代碼要記清,寫(xiě)程序時(shí)要認(rèn)真,避免出現(xiàn)小失誤。從做這輛小車(chē)以來(lái),我學(xué)到了很多知識(shí),也碰到了很多困難,但最終都克服了,只要有一顆不服輸?shù)男?,我想信,困難只是暫時(shí)的,最后都會(huì)解決。.參考文獻(xiàn)
[1]郭惠,吳迅 單片機(jī) c語(yǔ)言程序射進(jìn)完全自學(xué)手冊(cè)[M] 電子工業(yè)出版社,2008.10.1-200 [2]王東鋒,王會(huì)良,董冠強(qiáng) 單片機(jī)c語(yǔ)言應(yīng)用100例[M] 電子工業(yè)出版社,2009.3.145-300 [3]韓毅,楊天,基于HCS12單片機(jī)的智能尋跡模型車(chē)的設(shè)計(jì)與實(shí)現(xiàn)[j] 學(xué)術(shù)期刊,2008,29(18):1535-1955
第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)論文
目錄
題目:巡回檢測(cè)報(bào)警控制系統(tǒng)
第一章 實(shí)驗(yàn)任務(wù)及要求............1功能描述................2元件選擇.......................2
第二章系統(tǒng)總體設(shè)計(jì)方案................3鍵盤(pán)控制、LED數(shù)碼顯示、A/D數(shù)據(jù)采集、...........4第三章詳細(xì)設(shè)計(jì)..........51.硬件電路設(shè)計(jì).............6
a.硬件系統(tǒng)框圖............7
b.組成部分原理圖...............8
2.軟件設(shè)計(jì)..........8
a.軟件系統(tǒng)組成流圖............8
b.如初始化、中斷程序、顯示模塊等子程序流圖.........9
c.子程序功能說(shuō)明..............9
第四章測(cè)試............10
測(cè)試方法,過(guò)程及結(jié)果等........1
1第五章總結(jié)............11
參考文獻(xiàn).................1
2附錄.............12
關(guān)鍵程序代碼................1
3題目:巡回檢測(cè)報(bào)警控制系統(tǒng)設(shè)計(jì)
第一章 實(shí)驗(yàn)任務(wù)及要求
功能描述:設(shè)計(jì)一個(gè)多路數(shù)據(jù)采集測(cè)控系統(tǒng),具有控制及顯示功能:
1.對(duì)多路模擬信號(hào)進(jìn)行采集,將采集到的電壓值通過(guò)LED顯示出來(lái)。
2.設(shè)置被測(cè)量的閾值,對(duì)被測(cè)量進(jìn)行臨控,當(dāng)達(dá)到閾值時(shí),啟動(dòng)報(bào)警(如指示燈)或啟動(dòng)相應(yīng)的設(shè)備(如直流電機(jī))。
3.鍵盤(pán)可以控制在LED上顯示哪一路被測(cè)量的值。
元件選擇:80C51單片機(jī)、ADC0809、HD7279、74LS37
3第二章系統(tǒng)總體設(shè)計(jì)方案
設(shè)計(jì)思路如下:
1.4路模擬電壓信號(hào)通過(guò)4個(gè)電位器提供0-5V的電壓信號(hào)。
2.選擇ADC0809芯片作為A/D轉(zhuǎn)換器,4路輸入信號(hào)分別接到ADC0809的IN0—IN4通道,每隔一定的時(shí)間采樣一次,采完一路采集下一路,4路電壓循環(huán)采集。
3.利用3個(gè)LED數(shù)碼管顯示數(shù)據(jù),1個(gè)數(shù)碼管用來(lái)顯示輸入電壓路數(shù),3個(gè)數(shù)碼管用來(lái)顯示電壓采樣值。
4.選擇HD7279做鍵盤(pán)控制,鍵值顯示相應(yīng)通道采樣值。
5.延時(shí)由8051來(lái)實(shí)現(xiàn)。
第三章詳細(xì)設(shè)計(jì)
1.硬件電路設(shè)計(jì):根據(jù)設(shè)計(jì)思路,硬件主要利用了單片機(jī)80C51實(shí)驗(yàn)平臺(tái)上的ADC0809模數(shù)轉(zhuǎn)換器、HD7279控制鍵盤(pán)以及LED顯示輸出等模塊。
a.硬件系統(tǒng)框圖:
A/D轉(zhuǎn)換器大致有三類(lèi):一是雙積分A/D轉(zhuǎn)換器,優(yōu)點(diǎn)是精度高,抗干擾性好,價(jià)格便宜,但速度慢;二是逐次逼近A/D轉(zhuǎn)換器,精度、速度、價(jià)格適中;三是并行A/D轉(zhuǎn)換器,速度快,價(jià)格也昂貴。
實(shí)驗(yàn)用的ADC0809屬于第二類(lèi),是八位A/D轉(zhuǎn)換器。每采集一次需100uS。A/D轉(zhuǎn)換結(jié)束后會(huì)自動(dòng)產(chǎn)生EOC信號(hào),可以采用查詢(xún)EOC信號(hào)方式,也可采用EOC中斷方式來(lái)確定A/D轉(zhuǎn)換是否結(jié)束。
b.ADC0809原理圖以及與8051的接線(xiàn)
HD7279鍵盤(pán)控制LED顯示
2.軟件設(shè)計(jì)4
第三篇:?jiǎn)纹瑱C(jī)導(dǎo)游應(yīng)用論文
文 章來(lái)
源蓮山 課
件 w w w.5Y
k J.Com 7 凌陽(yáng)單片機(jī)在電子導(dǎo)游器中的應(yīng)用是小柯論文網(wǎng)通過(guò)網(wǎng)絡(luò)搜集,并由本站工作人員整理后發(fā)布的,凌陽(yáng)單片機(jī)在電子導(dǎo)游器中的應(yīng)用是篇質(zhì)量較高的學(xué)術(shù)論文,供本站訪(fǎng)問(wèn)者學(xué)習(xí)和學(xué)術(shù)交流參考之用,不可用于其他商業(yè)目的,凌陽(yáng)單片機(jī)在電子導(dǎo)游器中的應(yīng)用的論文版權(quán)歸原作者所有,因網(wǎng)絡(luò)整理,有些文章作者不詳,敬請(qǐng)諒解,如需轉(zhuǎn)摘,請(qǐng)注明出處小柯論文網(wǎng),如果此論文無(wú)法滿(mǎn)足您的論文要求,您可以申請(qǐng)本站幫您代寫(xiě)論文,以下是正文。
摘要:本文設(shè)計(jì)一種智能電子解說(shuō)系統(tǒng),具有智能化、個(gè)性化、高音質(zhì)、實(shí)用性強(qiáng)等特點(diǎn)。讓游客按照設(shè)定的經(jīng)典路線(xiàn),選擇景點(diǎn)或展位的講解使每個(gè)觀眾不但得到每個(gè)展位、景點(diǎn)的完整信息,而且感受到高清晰、低噪聲的音響效果,電子旅游解說(shuō)系統(tǒng)的出現(xiàn),使看起來(lái)簡(jiǎn)單的解說(shuō)系統(tǒng)融入了科技的因素。
本文正是基于凌陽(yáng)公司的SpCE061A單片機(jī)并采用A2000語(yǔ)音壓縮算法對(duì)語(yǔ)音信號(hào)進(jìn)行了壓縮存儲(chǔ)以及播放。由游客控制選擇按鍵來(lái)播放語(yǔ)音,這樣大大降低了外面的干擾,使每個(gè)觀眾不但得到每個(gè)展位、景點(diǎn)的完整信息, 而且感受到高清晰、低噪聲的音響效果。
關(guān)鍵詞: 旅游;電子解說(shuō);電子導(dǎo)游;凌陽(yáng)單片機(jī) 緒論
隨著改革開(kāi)放和經(jīng)濟(jì)的發(fā)展,旅游業(yè)也獲得了長(zhǎng)足的發(fā)展,節(jié)假日外出旅游已成為人們的首選。對(duì)大多數(shù)零散游客來(lái)說(shuō),希望有一種不受制于人的輔助導(dǎo)游手段,迫切需要一種攜帶方便、操作簡(jiǎn)便的電子語(yǔ)音導(dǎo)游器。
本文設(shè)計(jì)一種智能電子解說(shuō)系統(tǒng),選用了凌陽(yáng)公司的SpCE061A單片機(jī)并采用A2000語(yǔ)音壓縮算法對(duì)語(yǔ)音信號(hào)進(jìn)行了壓縮存儲(chǔ),經(jīng)過(guò)這樣處理合成后的語(yǔ)音音質(zhì)良好,放音時(shí)間持久,而且機(jī)體積很小。凌陽(yáng)單片機(jī)簡(jiǎn)介
SpCE061A是凌陽(yáng)科技研發(fā)生產(chǎn)的性?xún)r(jià)比很高的一款十六位單片機(jī)。該芯片擁有8路10位精度的ADC,其中一路為音頻轉(zhuǎn)換通道,并且內(nèi)置有自動(dòng)增益電路。這為實(shí)現(xiàn)語(yǔ)音錄入提供了方便的硬件條件。
凌陽(yáng)音頻壓縮算法處理的語(yǔ)音信號(hào)范圍是200Hz-3.4KHz的電話(huà)語(yǔ)音。根據(jù)不同的壓縮比分為以下幾種: SACM_A2000、SACM_S480、SACM_S240。SACM-A2000音頻壓縮算法的壓縮比較小,編碼速率可選擇16kbit/s、20 kbit/s、24 kbit/s三種之一,具有高質(zhì)量、高碼率的特點(diǎn),適于高保真語(yǔ)音或音樂(lè)。硬件系統(tǒng)設(shè)計(jì)
本系統(tǒng)的硬件部分主要實(shí)現(xiàn)路線(xiàn)的顯示和景點(diǎn)語(yǔ)音的播放。根據(jù)景區(qū)景點(diǎn)設(shè)計(jì)一條經(jīng)典路線(xiàn),將沿途主要景點(diǎn)用高亮三色LED顯示。紅色表示還沒(méi)有聽(tīng)過(guò)解說(shuō)的最近的景點(diǎn),黃色表示正在聽(tīng)取解說(shuō)詞的景點(diǎn),綠色表示最后播放過(guò)解說(shuō)詞的景點(diǎn)。語(yǔ)音播放按鍵分為景點(diǎn)相應(yīng)放音、暫停、繼續(xù)放音、結(jié)束等。音頻信號(hào)存儲(chǔ)在凌陽(yáng)語(yǔ)音儲(chǔ)存芯片中。語(yǔ)音信號(hào)放大由凌陽(yáng)公司開(kāi)發(fā)的專(zhuān)門(mén)用于語(yǔ)音信號(hào)放大的芯片SpY0030A完成。整個(gè)系統(tǒng)的控制由凌陽(yáng)單片機(jī)SpCE061A實(shí)現(xiàn)。具體硬件系統(tǒng)框圖如圖1所示。
4軟件系統(tǒng)設(shè)計(jì)
本設(shè)計(jì)選用了SACM-A2000語(yǔ)音壓縮算法對(duì)語(yǔ)音信號(hào)進(jìn)行了壓縮存儲(chǔ)。再利用中斷進(jìn)行鍵盤(pán)掃描程序循環(huán)掃描按鍵,獲取按鍵信息后和內(nèi)置的操作碼比較,用來(lái)確定播放相應(yīng)的語(yǔ)音和顯示相應(yīng)的LED燈。景點(diǎn)的解說(shuō)詞事先利用凌陽(yáng)內(nèi)置提供的工具進(jìn)行壓縮和存儲(chǔ)。
系統(tǒng)的主程序流程圖如圖2所示,假設(shè)主要講解景點(diǎn)共4處,分別由KEY1~KEY4控制播放,KEY5是暫停播放、KEY6是繼續(xù)播放、KEY7停止播放。開(kāi)機(jī)時(shí)對(duì)系統(tǒng)初始化,包含對(duì)顯示景點(diǎn)的初始化、對(duì)語(yǔ)音播放模塊初始化、對(duì)鍵盤(pán)初始化等。在鍵盤(pán)初始化中設(shè)置時(shí)基頻率為128Hz的中斷,并打開(kāi)中斷。這是為在中斷中掃描鍵盤(pán),利用延時(shí)法去抖動(dòng),延時(shí)時(shí)間是響應(yīng)多少次128Hz中斷過(guò)程。在KEY1~KEY4鍵控制下播放景點(diǎn)解說(shuō)詞實(shí)際是提取相應(yīng)景點(diǎn)的語(yǔ)音信息的起始存儲(chǔ)地址,然后執(zhí)行相應(yīng)的語(yǔ)音播放程序。由于語(yǔ)音播放中斷服務(wù)子程序必須放在TMA-FIQ中斷源上,進(jìn)入中斷服務(wù)程序必須先保護(hù)寄存器,接著判斷是不是TMA-FIQ中斷。若是,還要判斷是哪一段語(yǔ)音要播放,也就是要獲取播放語(yǔ)音的起始地址。在TMA-FIQ中斷調(diào)用F_FIQ_Service_SACM_A2000函數(shù)譯碼播放。制作
錄制的語(yǔ)音文件在播放前需轉(zhuǎn)換為SACM_A2000格式的壓縮文件。語(yǔ)音壓縮可以使用凌陽(yáng)語(yǔ)音壓縮工具(Compress Tool)完成。該壓縮工具支持.wav格式的語(yǔ)音壓縮,但要求壓縮語(yǔ)音資源屬性為8kHz,16位,單聲道。結(jié)論
經(jīng)過(guò)測(cè)試,電子語(yǔ)音導(dǎo)游器的性能達(dá)到了設(shè)計(jì)目標(biāo),具體如下:各景點(diǎn)語(yǔ)音解說(shuō)資料、開(kāi)機(jī)歡迎語(yǔ)音信息播放正常,聲音清晰;各按鍵功能正常,各LED管顯示正常。凌陽(yáng)公司的SpCE061A的結(jié)構(gòu)特點(diǎn)及其相關(guān)的開(kāi)發(fā)平臺(tái),為我們開(kāi)發(fā)帶語(yǔ)音特色的產(chǎn)品方案帶來(lái)了很大的方便,本系統(tǒng)僅是SpCE061A的一個(gè)基本應(yīng)用,體現(xiàn)了SpCE061A多種資源對(duì)產(chǎn)品開(kāi)發(fā)的極大支持,同時(shí)體現(xiàn)了其的語(yǔ)音特色。
參考文獻(xiàn)
[1] 薛鈞義等.凌陽(yáng)十六位單片機(jī)原理及應(yīng)用.北京:北京航空航天大學(xué)出版社,2003
[2] 李學(xué)海.16位語(yǔ)音型單片機(jī)SpCE061A實(shí)用教程-基礎(chǔ)篇.北京:人民郵電出版社,2007
文 章來(lái)
源蓮山 課
件 w w w.5Y
k J.Com 7
第四篇:C51單片機(jī)實(shí)訓(xùn)論文
上海第二工業(yè)大學(xué)
實(shí)訓(xùn)課程
課 程: 二級(jí)項(xiàng)目(電子設(shè)計(jì))
學(xué)生姓名:
許奇峰
學(xué) 號(hào):
104827477
學(xué)院名稱(chēng):
電子與電氣工程學(xué)院
專(zhuān)業(yè)班級(jí):
10測(cè)控C1
摘要
近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。
本實(shí)驗(yàn)采用的單片機(jī)為C51,以C語(yǔ)言為程序設(shè)計(jì)的基礎(chǔ),通過(guò)4*4的矩陣鍵盤(pán)上的特定的按鍵來(lái)控制1602液晶顯示屏,以顯示設(shè)計(jì)人的姓名、學(xué)號(hào),還有時(shí)鐘來(lái)顯示時(shí)、分、秒、日期,并且顯示當(dāng)時(shí)的溫度,PWM和A/D轉(zhuǎn)換等功能。
一. 實(shí)驗(yàn)?zāi)康?/p>
通過(guò)此次實(shí)訓(xùn),讓我們掌握了單片機(jī)基本原理的基礎(chǔ)、單片機(jī)的編程知識(shí)以及初步掌握單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)用技術(shù),了解單總線(xiàn)的讀/寫(xiě)控制方法。同時(shí)培養(yǎng)學(xué)生理論與實(shí)踐相結(jié)合的能力,提高分析問(wèn)題和解決問(wèn)題的能力,增強(qiáng)學(xué)生獨(dú)立工作能力;培養(yǎng)了我們團(tuán)結(jié)合作、共同探討、共同前進(jìn)的精神與嚴(yán)謹(jǐn)?shù)目茖W(xué)作風(fēng)。本次實(shí)驗(yàn)的目的主要有以下幾點(diǎn):
1、熟悉51單片機(jī)的基本構(gòu)造和原理基礎(chǔ);
2、能運(yùn)用51單片機(jī)進(jìn)行簡(jiǎn)單的單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì);
3、掌握單片機(jī)應(yīng)用系統(tǒng)的硬件、軟件調(diào)試方法; 4、4*4矩陣鍵盤(pán)的應(yīng)用,1602液晶顯示屏幕的應(yīng)用等;
5、運(yùn)用C51單片機(jī)來(lái)設(shè)計(jì)顯示時(shí)鐘、溫度、PWM、A/D轉(zhuǎn)換。
二.硬件組成
·51單片機(jī)最小系統(tǒng)
1、震蕩器
單片機(jī)系統(tǒng)正常工作的保證,如果振蕩器不起振,系統(tǒng)將會(huì)不能工作;假如振蕩器運(yùn)行不規(guī)律,系統(tǒng)執(zhí)行程序的時(shí)候就會(huì)出現(xiàn)時(shí)間上的誤差,這在通信中會(huì)體現(xiàn)的很明顯:電路將無(wú)法通信。他是由一個(gè)晶振和兩個(gè)瓷片電容組成的,x1和x2分別接單片機(jī)的x1和x2,晶振的瓷片電容是沒(méi)有正負(fù)的,注意兩個(gè)瓷片電容相連的那端一定要接地。
2、復(fù)位端 復(fù)位電路
給單片機(jī)一個(gè)復(fù)位信號(hào)(一個(gè)一定時(shí)間的低電平)使程序從頭開(kāi)始執(zhí)行;一般有兩中復(fù)位方式:上電復(fù)位,在系統(tǒng)一上電時(shí)利用電容兩端電壓不能突變的原理給系統(tǒng)一個(gè)短時(shí)的低電平;手動(dòng)復(fù)位,同過(guò)按鈕接通低電平給系統(tǒng)復(fù)位,時(shí)如果手按著一直不放,系統(tǒng)將一直復(fù)位,不能正常
·AT89C51 1)簡(jiǎn)介
A89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱(chēng)單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除100次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖所示。2)功能特性 ·與MCS-51 兼容
·4K字節(jié)可編程閃爍存儲(chǔ)器
·壽命:1000寫(xiě)/擦循環(huán)
·數(shù)據(jù)保留時(shí)間:10年
·全靜態(tài)工作:0Hz-24MHz
·三級(jí)程序存儲(chǔ)器鎖定
·128×8位內(nèi)部RAM
·32可編程I/O線(xiàn)
·兩個(gè)16位定時(shí)器/計(jì)數(shù)器
·5個(gè)中斷源
·可編程串行通道
·低功耗的閑置和掉電模式
·片內(nèi)振蕩器和時(shí)鐘電路
·矩陣鍵盤(pán)(如附錄2,圖2)
在鍵盤(pán)中按鍵數(shù)量較多時(shí),為了減少I(mǎi)/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤(pán)中,每條水平線(xiàn)和垂直線(xiàn)在交叉處不直接連通,而是通過(guò)一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線(xiàn)用于鍵盤(pán)多出了一倍,而且線(xiàn)數(shù)越多,區(qū)別越明顯,比如再多加一條線(xiàn)就可以構(gòu)成20鍵的鍵盤(pán),而直接用端口線(xiàn)則只能多出一鍵(9鍵)。由此可見(jiàn),在需要的鍵數(shù)比較多時(shí),采用矩陣法來(lái)做鍵盤(pán)是合理的。
矩陣式結(jié)構(gòu)的鍵盤(pán)顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線(xiàn)通過(guò)電阻接正電源,并將行線(xiàn)所接的單片機(jī)的I/O口作為輸出端,而列線(xiàn)所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒(méi)有按下時(shí),所有的輸出端都是高電平,代表無(wú)鍵按下。行線(xiàn)輸出是低電平,一旦有鍵按下,則輸入線(xiàn)就會(huì)被拉低,這樣,通過(guò)讀入輸入線(xiàn)的狀態(tài)就可得知是否有鍵按下了。
·蜂鳴器
通過(guò)加一個(gè)低電壓,大電流,小信號(hào)的PNP型硅三極管Q8550來(lái)放大電流達(dá)到驅(qū)動(dòng)蜂鳴器的作用,蜂鳴器的正極接到Q的集電極C上,蜂鳴器的負(fù)極接地,三極管的發(fā)射極E接電源VCC,基極B經(jīng)過(guò)限流電阻R9后與單片機(jī)P1.3的引腳相連,當(dāng)單片機(jī)P1.3引腳輸出高電平時(shí),三極管截止,沒(méi)有電流通過(guò)線(xiàn)圈,蜂鳴器不發(fā)聲;當(dāng)單片機(jī)P1.3引腳輸出低電平時(shí),三極管導(dǎo)通,電流形成回路,蜂鳴器發(fā)聲。
·LED1602液晶屏
1602液晶也叫1602字符型液晶它是一種專(zhuān)門(mén)用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的間隔每行之間也有間隔起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒茱@示圖形。引腳定義:
1腳:VSS為電源地;
2腳:VDD接5V電源正極;
LED1602引腳圖
3腳:V0為對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)最高;
4腳:RS為寄存器選擇,高電平時(shí)數(shù)據(jù)寄存器、低電平時(shí)指令寄存器;
5腳:RW為讀寫(xiě)信號(hào)線(xiàn),高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作;
6腳:E(或EN)端為使能(enable)端;
7~14腳:D0~D7為8位雙向數(shù)據(jù)端;
15~16腳:空腳或背燈電源;15腳背光正極,16腳背光負(fù)極。
二.實(shí)驗(yàn)過(guò)程
1.啟動(dòng)KEIL,使用自己做的含C51芯片的單片機(jī)電路板。2.在main.c中編寫(xiě)主程序代碼
3.選用build target 生成目標(biāo),然后編譯連接工程
4.打開(kāi)STC-ISP-V4.86-NOT-SETUP-CHINESE,選擇com口,將編譯的文件下載到電路板上
5.按鍵操作,顯示,觀察。。
開(kāi)始初始化While 1NN有鍵盤(pán)按下Y再次從新掃描延時(shí)一段時(shí)間真的有鍵盤(pán)按下嗎Y鍵盤(pán)掃描處理根據(jù)不同的掃描值賦值于Key根據(jù)Key值做相應(yīng)程序處理結(jié)束
實(shí)驗(yàn)流程圖
四. 實(shí)驗(yàn)總結(jié)
隨著電子技術(shù)的日益進(jìn)步,微型計(jì)算機(jī)取得了突飛猛進(jìn)的發(fā)展。作為微型計(jì)算機(jī)的一個(gè)重要分支,單片機(jī)以其體積小、功能齊全、價(jià)格低廉、可靠性高等特殊優(yōu)點(diǎn),在工業(yè)測(cè)控、智能儀表器、機(jī)電一體化產(chǎn)品、家電等領(lǐng)域取得了快速的發(fā)展。
通過(guò)幾天的實(shí)習(xí),深有體會(huì),學(xué)習(xí)單片機(jī)只有對(duì)著電腦,反復(fù)敲打鍵盤(pán),不斷編寫(xiě)、修改、做記錄,才能很好了解單片機(jī)、學(xué)好單片機(jī)。相信捉住這條思維,在以后學(xué)習(xí)中,能給予很大的幫助。幾天下來(lái),在我個(gè)人方面,學(xué)到的東西還是挺多的。
經(jīng)過(guò)一個(gè)學(xué)期的單片機(jī)學(xué)習(xí),使我們收獲不少,在這個(gè)設(shè)計(jì)中,也學(xué)到了不少東西,從找設(shè)計(jì)開(kāi)始,各種元件的選擇,和同學(xué)一起分享畫(huà)圖,敲程序,學(xué)到了制作的過(guò)程,對(duì)數(shù)字電子鐘也有了一定的認(rèn)識(shí)。十分感謝老師和同學(xué)們一學(xué)期以來(lái)的幫助。這次實(shí)驗(yàn),不僅學(xué)會(huì)了電子鐘的制作,也對(duì)單片機(jī)的知道有了更加深入的了解,對(duì)自己幫助非常大,擴(kuò)展了自己的視野。一.實(shí)驗(yàn)附錄
附錄一(效果圖)
圖一.菜單顯示 圖二.菜單顯示
圖三.菜單顯示 圖四.時(shí)間顯示
圖五.A/D轉(zhuǎn)換顯示 圖四.溫度顯示
附錄二(參考程序):
#include
//延時(shí)程序 { uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);} void wr_com(unsigned char com)
//寫(xiě)命令 { delay1ms(5);EN=0;
//使能端給一個(gè)高脈沖,因?yàn)槌跏蓟瘮?shù)中已經(jīng)將lcden置為0 RS=0;
//選擇寫(xiě)命令模式
RW=0;
//P0=com;
//將要寫(xiě)的命令送到數(shù)據(jù)總線(xiàn)上
EN=1;
//將使能端置0以完成高脈沖
} void wr_dat(unsigned char dat)
//寫(xiě)數(shù)據(jù) { delay1ms(5);EN=0;RS=1;RW=0;
P0=dat;EN=1;} void init()
//清屏
{wr_com(0x38);
//設(shè)置16*2,顯示5*7點(diǎn)陣,8位數(shù)據(jù)接口
wr_com(0x0C);
//設(shè)置開(kāi)顯示,不顯示光標(biāo)
wr_com(0x06);
//寫(xiě)一個(gè)符號(hào)地址指針自動(dòng)加一
wr_com(0x01);
//顯示清0,數(shù)據(jù)指針清0} void MoveKey(uchar Num){ lcd_clr();
wirte_str(0,0,Anum[Num]);
wirte_str(1,0,Anum[Num+1]);
lcd_wcmd(0x0f);} void keypress(uchar key)
//顯示
keypress
功能
{ if(key==12)
//下
{ MoveKey(num);
keyboard=num+1;
num--;if(num<0)num=5;delay(10);}
if(key==16)
//上
{
MoveKey(num);
keyboard=num+1;
num++;
if(num>5)num=0;delay(10);}
if(key==11)
//退出
{ lcd_clr();
wirte_str(0,0,“Xu Qifeng”);
wirte_str(1,0,“104827477”);}} void getKey(){ uchar temp,readRow;P2=0xFE;
temp=P2;
temp=temp&0xf0;
if(temp!=0xf0)
{ delay(10);
readRow=~temp>>4;switch(readRow){case 1:key=10;break;
//enter 進(jìn)入
case 2:key=11;break;
//esc
退出
case 4:key=12;break;
//下
case 8:key=16;break;
//上
default:break;}
while(temp!=0xf0)
{temp=P2;
temp=temp&0xf0;} delay(10);
keypress(key);} P2=0xFD;
temp=P2;
temp=temp&0xf0;
if(temp!=0xf0)
{ delay(10);
readRow=~temp>>4;switch(readRow){case 1:{key=14;m++;if(m==10)m=0;};break;//右
case 2:key=3;break;case 4:key=6;break;
case 8:key=9;break;}
while(temp!=0xf0)
{temp=P2;
temp=temp&0xf0;}
delay(10);
keypress(key);} P2=0xFB;
temp=P2;
temp=temp&0xf0;
if(temp!=0xf0)
{ delay(10);
readRow=~temp>>4;switch(readRow){case 1:{key=13;m--;if(m==0)m=10;};break;//左
case 2:key=2;break;case 4:key=5;break;case 8:key=8;break;}
while(temp!=0xf0)
{temp=P2;
temp=temp&0xf0;}
delay(10);
keypress(key);} P2=0xF7;
temp=P2;
temp=temp&0xf0;
if(temp!=0xf0)
{delay(10);
readRow=~temp>>4;switch(readRow){case 1:key=0;break;case 2:key=1;break;case 4:key=4;break;case 8:key=7;break;}
while(temp!=0xf0)
{temp=P2;temp=temp&0xf0;} delay(10);keypress(key);}} voidtime1()interrupt3
//顯示
Time
功能
{ TH1=0xdc;TL1=0x00;
count_10ms++;}
void time1_init(){ TMOD=0x10;TH1=0xdc;TL1=0x00;EA=1;ET1=1;TR1=1} uchar disp_buf[6]={0x00,0x00,0x00,0x00,0x00,0x00};void lcd_dat(uchar h,m,s)
//讀取時(shí)間
{disp_buf[0]=h/10+0x30;disp_buf[1]=h%10+0x30;
disp_buf[2]=m/10+0x30;disp_buf[3]=m%10+0x30;
disp_buf[4]=s/10+0x30;disp_buf[5]=s%10+0x30;} void lcd_display()
//顯示時(shí)間 { lcd_wcmd(0x44|0x80);lcd_wdat(disp_buf[0]);lcd_wdat(disp_buf[1]);
lcd_wdat(0x3a);lcd_wdat(disp_buf[2]);lcd_wdat(disp_buf[3]);
lcd_wdat(0x3a);lcd_wdat(disp_buf[4]);lcd_wdat(disp_buf[5]);} void Time()
{keyboard=0;
time1_init();
lcd_init();
wirte_str(0,0,“Time”);
while(1)
{ if(count_10ms>=100)
{ count_10ms=0;
sec++;} if(sec>=60)
{sec=0;min++;
if(min>=60)
{ min=0;hour++;
if(hour>=24)
{ hour=0;min=0;sec=0;} } } lcd_dat(hour,min,sec);
lcd_display();
getKey();
if(key==11)break;}}} voidTempture()
//顯示
Temp
功能
{ void display()
{ unsigned long temp;
temp=Temp*100;
disdata[0]=temp/1000+0x30;//十位數(shù)
disdata[1]=temp%1000/100+0x30;// 個(gè)位數(shù)
disdata[2]=temp%100/10+0x30;//小數(shù)
disdata[3]=temp%10+0x30;
if(disdata[0]==0x30)
{ disdata[0]=0x20;//如果十位為 0,不顯示
if(disdata[1]==0x30)
//如果十位為 0,個(gè)位為 0 也不顯示
{ disdata[1]=0x20;} }
lcd_wcmd(0xc1);
lcd_wdat(disdata[0]);//顯示十位
lcd_wdat(disdata[1]);//顯示個(gè)位
lcd_wdat(0x2e);//顯示小數(shù)點(diǎn)
lcd_wdat(disdata[2]);//顯示小數(shù)
lcd_wdat(disdata[3]);} uchar disdata[5];float Temp;
void delayms(uint xms){ uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);}} voidAD_Init()
// 顯示
A/D
功能
{ P1M0=0x0f;
//設(shè)置P1口低4位為開(kāi)漏模式,AD采集
P1M1=0x0f;
P1ASF=0x0f;
//P1口模擬功能控制位,ADC_CONTR=0xe0;
//開(kāi)啟AD轉(zhuǎn)換并選擇最高轉(zhuǎn)換速度
AUXR1=0x00;
//數(shù)據(jù)格式設(shè)置
高八位在ADC_RES 低二位在ADC_RESL
delayms(100);} int GetAD(uchar channel)//選擇通道號(hào)
并獲取數(shù)據(jù) {uchar AD_finished=0;
int result;
ADC_CONTR|=channel;
//選擇通道號(hào)
ADC_CONTR|=0x08;
//啟動(dòng)AD轉(zhuǎn)換
while(AD_finished=0)
{ AD_finished=(ADC_CONTR&0x10);//查詢(xún)ADC_FLAG是否置1} result=ADC_RES*4+ADC_RESL;ADC_CONTR&=0xef;//清除轉(zhuǎn)換結(jié)束標(biāo)志
return(result);} float Ad_Av(uchar channel)//對(duì)獲取的數(shù)據(jù)進(jìn)行處理 {float Val_Av=0;
uchar num;
for(num=100;num>0;num--)
{Val_Av+=GetAD(channel);}
Val_Av/=100.0;
Val_Av=Val_Av*5/1024;
return(Val_Av);} void AD()
{ keyboard=0;
AD_Init();
lcd_init();
lcd_wcmd(0x80);//顯示字符
AD
lcd_wdat(0x41);
lcd_wdat(0x44);
while(1)
{delayms(500);
Temp=Ad_Av(0);
//通道0進(jìn)行數(shù)據(jù)采集
display();getKey();if(key==11)break;}} sbitPwm=P1^0;
//顯示
PWM
功能 uchar n=0,m=0;void delayms(uint xms);void Timer0_init();void PWM(){ keyboard=0;
time1_init();
lcd_init();
lcd_clr();
wirte_str(0,0,“PWM”);
while(1)
{ if(count_10ms>=10){ count_10ms=0;
if(n<=m)
Pwm=1;
else
Pwm=0;
n++;
if(n==10)n=0;}
getKey();
if(key==11)break;}} voidElse()
{lcd_clr();wirte_str(0,0,“That's all”);wirte_str(1,0,“Thank you”);delay(100);keyboard=0;} void main()
{ lcd_init();
wirte_str(0,0,“Xu Qifeng”);
wirte_str(1,0,“104827277”);
while(1)
{getKey();
if(key==10)
//enter
{switch(keyboard)
{ case 1:Time()break;
case 2:Tempture();break;
case 3:AD();break;
case 4:PWM();break;
case 5:Else();break;
default:break;}}}
//顯示
Else 功能
//主函數(shù)
第五篇:?jiǎn)纹瑱C(jī)溫度傳感器論文_圖文.
畢業(yè)設(shè)計(jì)(論文)答辯記錄表 學(xué)生姓名 所學(xué)專(zhuān)業(yè) 指導(dǎo)老師 答辯教師提問(wèn) 性 別 論文題目 答辯小 組成員 學(xué)生回答問(wèn)題情況 班 級(jí) 答 辯 記 錄 指 導(dǎo) 教 師 評(píng) 語(yǔ) 指導(dǎo)老師(簽名): 年 月 日 21 初評(píng)成績(jī)(由指導(dǎo)老師填寫(xiě))答辯主持人(簽名): 年 月 日 畢業(yè)設(shè)計(jì)(論文)評(píng)價(jià)表 畢業(yè) 設(shè)計(jì)(論 文)評(píng)語(yǔ) 答辯 評(píng)語(yǔ) 評(píng) 定 等 級(jí) 答辯成員簽名 年 月 日 22 答辯委員會(huì) 主任意見(jiàn) 簽字 年 月 日 23