這么好的單片機(jī)綜合訓(xùn)練指導(dǎo)你確定不想看看嗎
這么好的單片機(jī)綜合訓(xùn)練指導(dǎo)你確定不想看看嗎

單片機(jī)綜合訓(xùn)練Ⅰ
實(shí)驗(yàn)指導(dǎo)書
目錄
一、實(shí)驗(yàn)環(huán)境介紹 1
1、Keil集成開發(fā)環(huán)境介紹 1
二、實(shí)驗(yàn)內(nèi)容 9
實(shí)驗(yàn)一練習(xí)使用集成調(diào)試軟件 9
實(shí)驗(yàn)二簡(jiǎn)單輸入輸出 10
實(shí)驗(yàn)三定時(shí)器應(yīng)用 11
實(shí)驗(yàn)四流水燈程序設(shè)計(jì) 13
一、實(shí)驗(yàn)環(huán)境介紹
1、Keil集成開發(fā)環(huán)境介紹
Keil集成開發(fā)環(huán)境是眾多單片機(jī)應(yīng)用開發(fā)的優(yōu)秀軟件之一,它集編輯、編譯、仿真于一體,支持匯編語(yǔ)言、PLM語(yǔ)言、C語(yǔ)言的程序設(shè)計(jì),界面友好,易學(xué)易用。
(1)建立工作文件夾
在規(guī)定的盤符建立一個(gè)以自己學(xué)號(hào)命名的文件夾,作為工作文件夾,將日后實(shí)驗(yàn)所有的文件都存放在該文件夾中。
(2)進(jìn)入集成開發(fā)環(huán)境
雙擊桌面圖標(biāo),進(jìn)入uVision4集成開發(fā)環(huán)境。
(3)新建工程
選擇菜單“porject—new uvision project”,彈出“Creat New Project”對(duì)話框;
在“保存在”下拉列表中選擇自己的工作文件夾,在“文件名”文本框中鍵入工程名(不需要鍵入擴(kuò)展名,擴(kuò)展名默認(rèn)為 .uv2),單擊“保存”按鈕,關(guān)閉“新建工程”對(duì)話框,彈出“為目標(biāo)‘target 1’選擇設(shè)備”對(duì)話框,選擇目標(biāo)芯片型號(hào);
選擇Atmel公司的89C52芯片,單擊“確定”按鈕,關(guān)閉對(duì)話框,新建一個(gè)工程。
(4)新建源程序
選擇菜單“File—New”新建源程序文件Text1
單擊保存按鈕,以.C后綴名保存改文件。
(5)將源程序添加到工程中
右鍵單擊“工程窗口”中的“Source Group 1”,在彈出的菜單中選擇“增加文件到組”;(注:軟件漢化有誤)
彈出“增加文件到組”對(duì)話框;
選中欲添加的源程序,單擊“Add”按鈕,源程序添加到工程中。但是,該對(duì)話框并不關(guān)閉,等待用戶繼續(xù)添加其他程序。添加完畢后,單擊“關(guān)閉”按鈕,關(guān)閉對(duì)話框。“工程窗口”中,“Source Group 1”下將出現(xiàn)該源程序文件名。
若對(duì)同一個(gè)文件二次添加,則會(huì)彈出如下警告框。
(6)編譯和連接
單擊“Rebuild all target files”按鈕,對(duì)原程序進(jìn)行編譯和連接,構(gòu)造結(jié)果將在“Build Output”窗口中顯示。如果程序有語(yǔ)法錯(cuò)誤,則會(huì)指出錯(cuò)誤類型及所在行,修改后,重新構(gòu)造,直至沒有任何語(yǔ)法錯(cuò)誤。
(7)開始調(diào)試
單擊“開始/停止調(diào)試”按鈕,進(jìn)入調(diào)試狀態(tài)。
在調(diào)試狀態(tài)下,“構(gòu)造工具欄”變為“調(diào)試工具欄”。通過(guò)單步運(yùn)行,查看寄存器、存儲(chǔ)器的值,判斷程序是否運(yùn)行正確。若不正確,找出問(wèn)題所在,單擊“開始/停止調(diào)試”按鈕,停止調(diào)試,進(jìn)入編輯狀態(tài),修改程序,重新編譯、調(diào)試。
(8)查看寄存器
進(jìn)入調(diào)試狀態(tài)后,“工程窗口”變為“寄存器窗口”,可以查看CPU各寄存器的值。
(9)查看存儲(chǔ)器
單擊“存儲(chǔ)器窗口”按鈕,打開存儲(chǔ)器窗口;該窗口共有4個(gè)標(biāo)簽,可顯示4個(gè)存儲(chǔ)器的值。單擊一個(gè)標(biāo)簽,在地址欄中輸入要查看的存儲(chǔ)器單元的類型及地址。
片內(nèi)數(shù)據(jù)存儲(chǔ)器 I : [地址]
片外數(shù)據(jù)存儲(chǔ)器 X : [地址]
程序存儲(chǔ)器 C : [地址]
若要人為修改某存儲(chǔ)單元的值,可右鍵單擊該單元,在彈出的菜單中選擇“更新存儲(chǔ)器”,在彈出的文本框中輸入該單元的新值,單擊“確定”即可。注:十六進(jìn)制數(shù)前加“0x”。
(10)單步運(yùn)行
在調(diào)試狀態(tài)下,源程序的左邊有一個(gè)黃色的箭頭,指示當(dāng)前程序執(zhí)行的位置,即將要執(zhí)行的一條指令。單擊“單步”按鈕,程序執(zhí)行一條指令,黃色箭頭下移一行。寄存器和存儲(chǔ)器的值的變化顯示在相應(yīng)位置。執(zhí)行過(guò)的指令左邊用一綠色方塊標(biāo)記。
(11)運(yùn)行到光標(biāo)行
若想快速、連續(xù)執(zhí)行若干條指令,可將光標(biāo)定位在這些指令的最后一行處,單擊“運(yùn)行到光標(biāo)行”按鈕,即可。
(12)全速運(yùn)行
對(duì)于有些程序,只有全速運(yùn)行才能實(shí)現(xiàn)其功能,這時(shí)只需單擊“運(yùn)行”按鈕;若要暫停運(yùn)行,單擊“暫停”按鈕。
(13)將源程序從工程中刪除
一個(gè)程序調(diào)試成功后,若要調(diào)試另一個(gè)程序,可不必新建工程,只需新建一個(gè)源程序,添加到原有的工程中,同時(shí),將前一個(gè)源程序從工程中刪除。
在“工程窗口”中,單擊要?jiǎng)h除的源程序名,按“Delete”鍵,在彈出的對(duì)話框中選擇“確定”即可。
對(duì)于初學(xué)者,一般一個(gè)工程中只包含一個(gè)源程序,應(yīng)將多余的源程序刪除。
二、實(shí)驗(yàn)內(nèi)容
實(shí)驗(yàn)一練習(xí)使用集成調(diào)試軟件
1.實(shí)驗(yàn)?zāi)康?/span>
(1)練習(xí)使用Keil集成調(diào)試軟件;
(2)進(jìn)一步熟悉語(yǔ)言指令的功能。
2.實(shí)驗(yàn)內(nèi)容
按照實(shí)驗(yàn)指導(dǎo)書的說(shuō)明,結(jié)合附錄中的例子,練習(xí)使用Keil集成調(diào)試軟件,為以后的實(shí)驗(yàn)打下基礎(chǔ)。
3.實(shí)驗(yàn)器材
計(jì)算機(jī)1臺(tái)
4.實(shí)驗(yàn)步驟
(1)新建工程;
(2)輸入源程序;
(3)將源程序添加到工程中;
(4)編譯和連接;
(5)運(yùn)行程序;
(6)觀察記錄運(yùn)行過(guò)程和結(jié)果。
5.實(shí)驗(yàn)報(bào)告要求
(1)列出源程序,并加以注釋;
(2)結(jié)構(gòu)復(fù)雜的程序,畫出流程圖;
(3)對(duì)實(shí)驗(yàn)過(guò)程和結(jié)果進(jìn)行分析;
(4)寫出心得體會(huì)。
實(shí)驗(yàn)二簡(jiǎn)單輸入輸出
1.實(shí)驗(yàn)?zāi)康?/span>
(1)進(jìn)一步理解I/O口的工作原理;
(2)掌握輸入/輸出程序的設(shè)計(jì)方法
2.實(shí)驗(yàn)內(nèi)容
編寫程序,點(diǎn)亮發(fā)光二極管
3.實(shí)驗(yàn)器材
(1)計(jì)算機(jī)1臺(tái)(2)仿真器1臺(tái)(3)開發(fā)板一套
4.硬件電路
5.試編寫程序點(diǎn)亮開發(fā)板上的發(fā)光二極管
6.思考與發(fā)揮
(1)如何實(shí)現(xiàn)多個(gè)開關(guān)控制多個(gè)發(fā)光二極管?
(2)如何實(shí)現(xiàn)8個(gè)發(fā)光二極管閃爍?
實(shí)驗(yàn)三定時(shí)器應(yīng)用
1.實(shí)驗(yàn)?zāi)康?/span>
(1)進(jìn)一步了解定時(shí)器的結(jié)構(gòu)和工作原理;
(2)掌握定時(shí)器的應(yīng)用程序設(shè)計(jì)方法。
2.實(shí)驗(yàn)內(nèi)容
編寫定時(shí)程序,實(shí)現(xiàn)發(fā)光二級(jí)管D1的定時(shí)1s亮滅
3.實(shí)驗(yàn)器材
(1)計(jì)算機(jī)1臺(tái)(2)仿真器1臺(tái)(3)開發(fā)板1套
4.硬件連線
5.實(shí)驗(yàn)程序
6.思考與發(fā)揮
(1)如何改變亮滅的頻率?
(2)計(jì)數(shù)初值變大,亮滅頻率將如何變化?
實(shí)驗(yàn)四流水燈程序設(shè)計(jì)
1.實(shí)驗(yàn)?zāi)康?/span>
初步掌握C51程序設(shè)計(jì)方法。
2.實(shí)驗(yàn)內(nèi)容
編寫程序,使D0-D8,8個(gè)LED呈現(xiàn)流水燈效果進(jìn)行左移右移滾動(dòng)
3.實(shí)驗(yàn)器材
(1)計(jì)算機(jī)1臺(tái)(2)仿真器1臺(tái)(3)開發(fā)板1套
4.實(shí)驗(yàn)程序
/**************************************************************************************
·LED流水燈實(shí)驗(yàn) *
實(shí)現(xiàn)現(xiàn)象:下載程序后LED呈現(xiàn)流水燈效果進(jìn)行左移右移滾動(dòng)
注意事項(xiàng):無(wú)
***************************************************************************************/
#include“reg52.h” //此文件中定義了單片機(jī)的一些特殊功能寄存器
#include //因?yàn)橐玫阶笥乙坪瘮?shù),所以加入這個(gè)頭文件
typedef unsigned int u16; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
#define led P2 //將P2口定義為led后面就可以使用led代替P2口
/*******************************************************************************
·函數(shù)名 : delay
·函數(shù)功能 :延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
*******************************************************************************/
void delay(u16 i)
{
while(i–);
}
/*******************************************************************************
·函數(shù)名 : main
·函數(shù)功能 :主函數(shù)
·輸入 :無(wú)
·輸出 :無(wú)
******************************************************************************/
void main()
{
u8 i;
led=0xfe;
delay(50000); //大約延時(shí)450ms
while(1)
{
/ for(i=0;i
{
P2=~(0x01</將1右移i位,然后將結(jié)果取反賦值到P2口
delay(50000); //大約延時(shí)450ms
}
*/
for(i=0;i/將led左移一位
{
led=crol(led,1);
delay(50000); //大約延時(shí)450ms
}
for(i=0;i/將led右移一位
{
led=cror(led,1);
delay(50000); //大約延時(shí)450ms
}
}
}本例中main是主函數(shù)名,要執(zhí)行的主函數(shù)的內(nèi)容稱為主函數(shù)體,主函數(shù)體用大括號(hào){ }括起來(lái)。函數(shù)體中包含若干條將被執(zhí)行的程序語(yǔ)句,每條語(yǔ)句都必須以分號(hào)為結(jié)束符。