單片機(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)二 簡單輸入輸出 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)秀軟件之一验残,它集編輯捞附、編譯、仿真于一體您没,支持匯編語言鸟召、PLM語言、C語言的程序設(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”窗口中顯示。如果程序有語法錯(cuò)誤泡垃,則會(huì)指出錯(cuò)誤類型及所在行析珊,修改后,重新構(gòu)造兔毙,直至沒有任何語法錯(cuò)誤唾琼。
(7)開始調(diào)試
單擊“開始/停止調(diào)試”按鈕兄春,進(jìn)入調(diào)試狀態(tài)澎剥。
在調(diào)試狀態(tài)下,“構(gòu)造工具欄”變?yōu)椤罢{(diào)試工具欄”。通過單步運(yùn)行哑姚,查看寄存器祭饭、存儲(chǔ)器的值,判斷程序是否運(yùn)行正確叙量。若不正確倡蝙,找出問題所在,單擊“開始/停止調(diào)試”按鈕绞佩,停止調(diào)試寺鸥,進(jìn)入編輯狀態(tài),修改程序品山,重新編譯胆建、調(diào)試。
(8)查看寄存器
進(jìn)入調(diào)試狀態(tài)后肘交,“工程窗口”變?yōu)椤凹拇嫫鞔翱凇卑试兀梢圆榭碈PU各寄存器的值。
(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í)行過的指令左邊用一綠色方塊標(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)康?br>
(1)練習(xí)使用Keil集成調(diào)試軟件拱撵;
(2)進(jìn)一步熟悉語言指令的功能。
2.實(shí)驗(yàn)內(nèi)容
按照實(shí)驗(yàn)指導(dǎo)書的說明表蝙,結(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)行過程和結(jié)果穷遂。
5.實(shí)驗(yàn)報(bào)告要求
(1)列出源程序函匕,并加以注釋;
(2)結(jié)構(gòu)復(fù)雜的程序蚪黑,畫出流程圖盅惜;
(3)對(duì)實(shí)驗(yàn)過程和結(jié)果進(jìn)行分析吸耿;
(4)寫出心得體會(huì)。
實(shí)驗(yàn)二簡單輸入輸出
1.實(shí)驗(yàn)?zāi)康?br>
(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)康?br>
(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)康?br>
初步掌握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) *
1
實(shí)現(xiàn)現(xiàn)象:下載程序后LED呈現(xiàn)流水燈效果進(jìn)行左移右移滾動(dòng)
注意事項(xiàng):無
***************************************************************************************/
include “reg52.h” //此文件中定義了單片機(jī)的一些特殊功能寄存器
include<intrins.h> //因?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ù)
輸 入 : 無
輸 出 : 無
******************************************************************************/
void main()
{
u8 i;
led=0xfe;
delay(50000); //大約延時(shí)450ms
while(1)
{
/ for(i=0;i<8;i++)
{
P2=~(0x01<<i); //將1右移i位,然后將結(jié)果取反賦值到P2口
delay(50000); //大約延時(shí)450ms
}
*/
for(i=0;i<7;i++) //將led左移一位
{
led=crol(led,1);
delay(50000); //大約延時(shí)450ms
}
for(i=0;i<7;i++) //將led右移一位
{
led=cror(led,1);
delay(50000); //大約延時(shí)450ms
}
}
}本例中main是主函數(shù)名甚侣,要執(zhí)行的主函數(shù)的內(nèi)容稱為主函數(shù)體明吩,主函數(shù)體用大括號(hào){ }括起來。函數(shù)體中包含若干條將被執(zhí)行的程序語句殷费,每條語句都必須以分號(hào)為結(jié)束符印荔。
5.思考與發(fā)揮
(1)流水燈的間隔時(shí)間怎么確定?
(2)流水燈的移動(dòng)方向和順序怎么確定详羡?