51單片機(jī)最小系統(tǒng)_第1頁
51單片機(jī)最小系統(tǒng)_第2頁
51單片機(jī)最小系統(tǒng)_第3頁
51單片機(jī)最小系統(tǒng)_第4頁
51單片機(jī)最小系統(tǒng)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、51系列單片機(jī)最小系統(tǒng)設(shè)計與調(diào)試實(shí)驗(yàn)實(shí)驗(yàn)指導(dǎo)書 目錄一:實(shí)驗(yàn)?zāi)康?二:原理2三:實(shí)訓(xùn)任務(wù).3四:最小系統(tǒng)的構(gòu)成3五:程序7六:心得體會7一:實(shí)驗(yàn)?zāi)康?. 了解單片機(jī)的基本工作原理2. 學(xué)習(xí)并掌握相關(guān)軟件的使用方法(Protel、keil)2. 掌握單片機(jī)片內(nèi)程序存儲器下載方法3. 掌握單片機(jī)程序設(shè)計(匯編及C51)二:原理1、什么是單片機(jī)單片微型計算機(jī)簡稱單片機(jī),是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機(jī),它最早是被用在工業(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來。最早的設(shè)計理念是通過將大量外圍設(shè)備和CPU集成在一個芯片

2、中,使計算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對體積要求嚴(yán)格的控制設(shè)備當(dāng)中。用專業(yè)語言講,單片機(jī)就是在一塊硅片上集成了微處理器、存儲器及各種輸入/輸出接口的芯片。2、最小系統(tǒng)的概念單片機(jī)最小系統(tǒng),或者稱為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng). 對51系列單片機(jī)來說,單片機(jī)+晶振電路+復(fù)位電路,便組成了一個最小系統(tǒng).但是一般我們在設(shè)計中總是喜歡把按鍵輸入、顯示輸出AT89C51高性能8位單片機(jī)功能AT89C51提供以下標(biāo)準(zhǔn)功能:8K字節(jié)Falsh閃速存儲器,256字節(jié)內(nèi)部RAM,32個I/O口線,3個16位定時/計數(shù)器,一個6向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)震蕩器及時

3、鐘電路,同時AT89C51可降至0HZ的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,時/計數(shù)器,串行通信口及中斷系統(tǒng)持續(xù)工作。掉電方式保存RAM中的內(nèi)容,但震蕩器停止工作并禁止其他所有部件工作直到下一個硬件復(fù)位。主要功能特性: 兼容MCS51指令系統(tǒng)                  4k可反復(fù)擦寫(>1000次)Flash ROM  3

4、2個雙向I/O口 8個中斷源  三個16位可編程定時/計數(shù)器 2.7-6.V的寬工作電壓范圍  時鐘頻率0-24MHz128x8bit內(nèi)部RAM  五個外部中斷源 兩個串行中斷  可直接驅(qū)動LED 兩級加密位  低功耗睡眠功能 內(nèi)置一個模擬比較放大器  可編程UARL通道 軟件設(shè)置睡眠和喚醒功能等加到上述電路中,成為小系統(tǒng)三:實(shí)訓(xùn)任務(wù).1)認(rèn)識MCS-51的ROM及片外RAM空間:認(rèn)識51系列單片機(jī)的程序存儲器(RO

5、M)的空間范圍;匯編指令編碼在ROM中存儲形式;掌握指令編碼和指令編碼所在地址的概念;了解51系列單片機(jī)的程序存儲器(ROM)固定地址的用途。認(rèn)識51系列單片機(jī)的片外數(shù)據(jù)存儲器(片外RAM)的地址空間范圍;了解51系列單片機(jī)的片外數(shù)據(jù)存儲器的用途;重點(diǎn)掌握片內(nèi)片外訪問存儲器的指令。(2)認(rèn)識MCS-51片內(nèi)RAM空間:認(rèn)識51系列單片機(jī)片內(nèi)隨機(jī)存儲器(片內(nèi)RAM)的空間范圍;認(rèn)識51系列單片機(jī)片內(nèi)隨機(jī)存儲器的區(qū)域劃分;掌握字節(jié)地址和位地址的概念;了解R0R7寄存器與字節(jié)地址的關(guān)系。重點(diǎn)掌握MCS-51系列單片機(jī)四個口的用法的位操作。(3)MCS-51匯編語言設(shè)計(編碼轉(zhuǎn)換):用MCS-51匯編

6、指令進(jìn)行程序設(shè)計。將四位BCD碼化為十六位二進(jìn)制數(shù)。(或 將四位十六進(jìn)制數(shù)轉(zhuǎn)化為BCD碼)。要求:在PC機(jī)上調(diào)試,程序可正確運(yùn)行并上交源程序清單及程序說明。(4)鍵盤輸入電路設(shè)計/動態(tài)顯示電路設(shè)計:在實(shí)訓(xùn)過程中要求設(shè)計按鍵輸入電路、設(shè)計顯示電路,并畫出電路圖并編寫按鍵輸入子程序。重點(diǎn)掌握硬件電路的設(shè)計及通過編程對電路的控制。(5)單片機(jī)最小系統(tǒng)設(shè)計:單片機(jī)最小系統(tǒng)的設(shè)計是單片機(jī)應(yīng)用系統(tǒng)設(shè)計及開發(fā)的基礎(chǔ),通過單片機(jī)最小系統(tǒng)設(shè)計,使學(xué)生對所學(xué)的單片機(jī)原理及應(yīng)用課程有更深的理解。要求:提供電路圖和程序清單。重點(diǎn)掌握硬件電路的設(shè)計及過程控制。(6)基于單片機(jī)的應(yīng)用系統(tǒng)設(shè)計:設(shè)計出實(shí)現(xiàn)某控制目的的應(yīng)用系

7、統(tǒng)是本實(shí)訓(xùn)課的最終實(shí)訓(xùn)的結(jié)果。實(shí)訓(xùn)要求中包括單片機(jī)最小系統(tǒng)的設(shè)計,按鍵輸入電路設(shè)計,顯示電路的設(shè)計,及應(yīng)用系統(tǒng)的軟件編程。四:最小系統(tǒng)的構(gòu)成1、時鐘和時鐘電路單片機(jī)內(nèi)部具有一個高增益反相放大器,用于構(gòu)成振蕩器。通常在引腳XTALl和XTAL2跨接石英晶體和兩個補(bǔ)償電容構(gòu)成自激振蕩器,系統(tǒng)時鐘電路結(jié)構(gòu)如圖2、復(fù)位和復(fù)位電路單片機(jī)小系統(tǒng)采用上電自動復(fù)位和手動按鍵復(fù)位兩種方式實(shí)現(xiàn)系統(tǒng)的復(fù)位操作。上電復(fù)位要求接通電源后,自動實(shí)現(xiàn)復(fù)位操作。手動復(fù)位要求在電源接通的條件下,在單片機(jī)運(yùn)行期間,用按鈕開關(guān)操作使單片機(jī)復(fù)位。復(fù)位電路結(jié)構(gòu)如圖3所示。上電自動復(fù)位通過電容C3充電來實(shí)現(xiàn)。手動按鍵復(fù)位是通過按鍵將電阻

8、R2與VCC接通來實(shí)現(xiàn)。3、鍵盤和鍵盤電路.4、顯示電路系統(tǒng)設(shè)置了6個LED數(shù)碼管,單片機(jī)提供段碼信號,低電平有效,輸出端通過限流電阻與數(shù)碼管的段碼數(shù)據(jù)線相連,用來送出LED數(shù)碼管的段碼數(shù)據(jù)信號。單片機(jī)提供位選信號,當(dāng)某位輸出低電平時,與此相連的開關(guān)三極管導(dǎo)通,對應(yīng)的數(shù)碼管點(diǎn)亮,使用三極管用來增強(qiáng)信號的驅(qū)動能力 1、 USB下載電路與USB接口端電路USB下載電路USB接口電路DA與AD轉(zhuǎn)換電路DA轉(zhuǎn)換就是數(shù)模轉(zhuǎn)換,指為把數(shù)字信號轉(zhuǎn)換為信息基本相同的模擬信號而設(shè)計的處理過程;AD轉(zhuǎn)換就是模數(shù)轉(zhuǎn)換,就是把模擬信號轉(zhuǎn)換成數(shù)字信號而設(shè)計的處理過程。DA轉(zhuǎn)換電路AD轉(zhuǎn)換電路五:程序(見附頁)六:心得體

9、會經(jīng)過一周的實(shí)訓(xùn),我們對單片機(jī)最小系統(tǒng)有了更深的認(rèn)識,認(rèn)識到理論與實(shí)踐的區(qū)別,對課本的知識點(diǎn)有了進(jìn)一步的梳理,我們認(rèn)識到自身在實(shí)際操作和動手能力方面的不足,雖然整個實(shí)習(xí)過程充滿了波瀾和不確定性,但是我們還是按時的完成的任務(wù)。這次的實(shí)訓(xùn)是我們整個學(xué)期學(xué)習(xí)知識的一次總結(jié),我們認(rèn)識到各個學(xué)科之間的聯(lián)系,同時還練習(xí)了我們的實(shí)際動手能力,編程能力,以及團(tuán)隊協(xié)作能力,對我們今后的發(fā)展有很大的幫助。這次的實(shí)訓(xùn)對我們也是一個很大的挑戰(zhàn),時間緊,而且我們對所學(xué)的知識掌握的也不是很牢靠,所以這次的報告難免會出現(xiàn)很多瑕疵,希望老師能給予批評和指導(dǎo)。 附頁#include<reg52.h>#include

10、<intrins.h>#define uint unsigned int#define uchar unsigned charuint temp,tempH,tempL;uchar aa=0,xianshi=0,a=0,flag=0,num=0,flag_get=0;uchar dofly=0xed,0x48,0xe6,0x6e,0x4b,0x2f,0xaf,0x68,0xef,0x6f,0xeb,0x8f,0xa5,0xce,0xa7,0xa3;/uchar wei=0xfb,0xf7,0xef,0xdf;uchar str4=0xed,0xed,0xed,0xed,m=0xed

11、,n=0,b=0,x1,x2,x3,x4; /矩陣變量sbit dula=P26;sbit wela=P27;sbit DQ = P22; / 定義DQ引腳為P2.2sbit key1=P34; /定義IO口sbit key2=P35;sbit key3=P36;sbit key4=P37; sbit led=P25; /LED鎖存/延時函數(shù) void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*-矩陣按鍵-*/uchar keycan() /鍵盤掃描函數(shù) uchar cord_h,cord_l; /行列值中間變

12、量P3=0x0f; /行線輸出全為0cord_h=P3&0x0f; /讀入列線值if(cord_h!=0x0f) /先檢測有無按鍵按下 delay(100); /去抖 if(cord_h!=0x0f) cord_h=P3&0x0f; /讀入列線值 P3=cord_h|0xf0; /輸出當(dāng)前列線值 cord_l=P3&0xf0; /讀入行線值 P3=0x0f; while(P3!=0x0f);/松手檢測 switch(cord_h+cord_l) case 0x77:m=dofly0;n+;break;/0 按下相應(yīng)的鍵顯示相對應(yīng)的碼值 case 0x7b:m=dofly

13、1;n+;break;/1 case 0x7d:m=dofly2;n+;break;/2 case 0x7e:m=dofly3;n+;break;/3 case 0xb7:m=dofly4;n+;break;/4 case 0xbb:m=dofly5;n+;break;/5 case 0xbd:m=dofly6;n+;break;/6 case 0xbe:m=dofly7;n+;break;/7 case 0xd7:m=dofly8;n+;break;/8 case 0xdb:m=dofly9;n+;break;/9 case 0xdd:m=dofly10;n+;break;/a case 0

14、xde:m=dofly11;n+;break;/b case 0xe7:m=dofly12;n+;break;/c case 0xeb:m=dofly13;n+;break;/d case 0xed:m=dofly14;n+;break;/e case 0xee:m=dofly15;n+;break;/f return(n);/* 數(shù)碼管顯示 */void display(void) uchar k; if(xianshi=1) b=k % 4; strb=m; k=keycan(); switch(b) case 0: /左邊第一位每間隔十次掃描 x1+; break; case 1: /左

15、邊第二位每間隔十次掃描 x2+; break; case 2: /左邊第三位每間隔十次掃描 x3+; break; case 3: /左邊第四位每間隔十次掃描 x4+; break; default:break; if(x1>=20|x2>=20|x3>=20|x4>=20) x1=0;x2=0;x3=0;x4=0; if(x1<=10) wela=1; P0=0xfb; wela=0; P0=0xff; dula=1; P0=str1; dula=0; delay(5);/點(diǎn)亮第一位數(shù)碼管 if(x2<=10) wela=1; P0=0xf7; wela=

16、0; P0=0xff; dula=1; P0=str2; dula=0; delay(5); /點(diǎn)亮第二位數(shù)碼管 if(x3<=10) wela=1; P0=0xef; wela=0; P0=0xff; dula=1; P0=str3; dula=0; delay(5); /點(diǎn)亮第三位數(shù)碼管 if(x4<=10) wela=1; P0=0xdf; wela=0; P0=0xff; dula=1; P0=str0; dula=0; delay(5); /點(diǎn)亮第四位數(shù)碼管 if(xianshi!=1) x1=0;x2=0;x3=0;x4=0; /*/void key() /獨(dú)立按鍵 P

17、3=0xff; if(key1=0) /按鍵掃描 delay(5); /消抖 if(key1=0) xianshi=1; if(key2=0) delay(5); /消抖 if(key2=0) xianshi=2; if(key3=0) delay(5); /消抖 if(key3=0) xianshi=3; a=0; if(key4=0) delay(5); /消抖 if(key4=0) xianshi=4; a=0; void zuo() led=1;switch(a)case 0:P1=0xfe;break;case 1:P1=0xfd;break;case 2:P1=0xfb;break

18、;case 3:P1=0xf7;break;case 4:P1=0xef;break;case 5:P1=0xdf;break;case 6:P1=0xbf;break;case 7:P1=0x7f;break;void you()led=1;switch(a)case 7:P1=0xfe;break;case 6:P1=0xfd;break;case 5:P1=0xfb;break;case 4:P1=0xf7;break;case 3:P1=0xef;break;case 2:P1=0xdf;break;case 1:P1=0xbf;break;case 0:P1=0x7f;break;/

19、*/* 延時函數(shù) */*/void delays(unsigned int i)/延時函數(shù) while(i-);/*/* 初始化 */*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ復(fù)位 delays(8); /稍做延時 DQ = 0; /單片機(jī)將DQ拉低 delays(80); /精確延時 大于 480us DQ = 1; /拉高總線 delays(10); x=DQ; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delays(5);/*/* 讀一個字節(jié) */*/unsigned char ReadOneChar(

20、void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ = 0; / 給脈沖信號 dat>>=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0x80; delays(5); return(dat);/*/* 寫一個字節(jié) */*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delays(5); DQ = 1; dat>&

21、gt;=1; delays(5);/*/* 讀取溫度 */*/unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉(zhuǎn)換delays(200);Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作 WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度a=

22、ReadOneChar(); /低位b=ReadOneChar(); /高位b<<=8;t=a+b;return(t);void close() /關(guān)閉數(shù)碼管dula=1;P0=0xff;dula=0;wela=1;P0=0xff;wela=0;void display1(void)close();P1=0xff;if(flag_get=1)temp=ReadTemperature();elsetemp=temp;tempH=temp>>4; tempL=temp&0x0F;tempL=tempL*6/10;/小數(shù)近似處理 wela=1; P0=0xfb; wela=0; P0=0xff; dula=1; P0=dofly(t

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論