微控制器原理及應用
實驗報告
姓名方恩山
學號: 631206040110
專業: 通訊工程
實驗性質: 設計性
班級: 2012 級 1 班
指導教師: 許強
實驗專案名稱: 萬用交叉**通燈控制器實驗
實驗日期: 16周 - 18周實驗成績
實驗評定標準:
一、 實驗目的
通過**搭建和實物搭建相結合,萬用交叉**通燈控制器系統設計,並掌握c51程式設計操作。
二、 實驗器材
1)器材
1.pc機一台
2.windows 7 os
3.proteus**軟體
4.keil軟體
二)材料
微控制器at89c51(1片) 數碼管 (1 個) led發光二級管 ( 12個) 按鈕(16 個晶振11.0592mhz( 1 個) 電容大於20pf,小於50pf (2 個) 電解電容 10uf ( 1 個) 電容 1uf ( 4 個) 電阻 10k ( 1 個) 電阻 300 (8 個)
三、 實驗內容
模擬控制就是以紅、綠、黃色4 組12 個發光二極體表示交通訊號燈。每組燈有兩位數碼倒倒計時顯示。假設乙個十字路口為東西南北走向。
初始狀態0為東西紅燈,南北紅燈。然後轉狀態1,東西方向的綠燈亮,東西方向可通車,而南北方向的紅燈亮,南北方向的車禁止通行。過一段時間轉狀態2,東西綠燈滅後,黃燈亮,延時幾秒,南北仍然紅燈。
再轉狀態3,南北方向的綠燈亮,南北方向可以通車,而東西方向的紅燈亮,東西方向禁止車輛通行。過一段時間轉狀態4,南北綠燈滅後亮黃燈,延時幾秒,東西方向仍然紅燈亮。最後迴圈至狀態1。
用proteus**軟體搭建**硬體電路圖。驗證編制軟體。
四、 實驗步驟
開啟keil程式,執行選單命令「project」→「new project」建立「trafficcontroller」專案,並選擇微控制器型號為at89c51。執行選單命令「file」→「new」建立檔案,輸入源程式,儲存為「trafficcontroller.a51」。
在「project」欄的file專案管理視窗中右擊檔案組,選擇「add files to group 『source group1』」將源程式「trafficcontroller.a51」新增到專案中。
執行選單命令「project」→「options for target 『target 1』」,在彈出的對話方塊中選擇「output」選項卡,選中「greate hex file」。執行選單命令「project」→「build target」,編譯源程式。如果編譯成功,則在「output window」視窗中顯示沒有錯誤,並建立了「trafficcontroller.
hex」檔案。在proteus**平台上建立參考圖系統,並將程式上載到虛擬晶元上執行。
五、 實驗結果及分析
**結果如下圖
1.東西方向通路,南北方向禁止通行
2進行按鈕切換時,交通切換到東西禁行,南北方向通行。
3在進行道路轉換的時候,黃燈亮起,有5s的間隔。
實驗**
1.*** 0000h
ljmp main
*** 0030h
main: mov dptr,#7f00h ;8155命令口位址
mov a,#03h ;置8155pa、pb口為輸出,pc口為輸入
movx @dptr,a
mov 7ah,#00
mov 7bh,#01
mov 7ch,#02
mov 7dh,#03
mov 7eh,#04
mov 7fh,#05
ml0: nop
lcall disp
sjmp ml0
disp:mov r0,#7ah ;置顯示緩衝器指標初值
mov r3,#01h ;置掃瞄模式初值
dispb1:mov dptr,#7f02h ;8155pb口位址
mov a,#0h ;熄滅所有led
movx @dptr,a
mov dptr,#7f01h ;8155pa口位址
mov a,@r0
add a,#014h
movc a,@a+pc
movx @dptr,a
mov a,r3
mov dptr,#7f02h
movx @dptr,a
acall delay
inc r0
mov a,r3
jb acc.6,dispb2
rl a
mov r3,a
ajmp dispb1
dispb2:mov r3,#01h
retsegpt2:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;段碼表
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
db 00h,0d0h,09ch
delay:mov r4,#0ffh
loop: djnz r4,loop
ret2.
#include
#define uchar unsigned char
#define uint unsigned int
uchar tab=;
uchar tab2=;
/*數碼管顯示***/
uchar show=;
uchar wetime1,wetime2,nstime1,nstime2,state;
uint a,b,x,y,flag,counter,skey;
uchar keydata,disdata,keyd[4];
void delay(uint num)//延時程式
void timer() interrupt 1 //定時一秒
}void dispkey掃瞄鍵盤的方法
}delay(500);
}void displaykeyvalue() //顯示鍵值函式
}}void settime()//設定交通燈時間函式
if(keydata==0x27)
a=nstime/10;
b=nstime%10;
tab[0]=show[a];
tab[1]=show[b];
nstime1=nstime;
wetime1=nstime-3;
}if(skey==3)//設定東西方向紅燈時間
if(keydata==0x27)
a=wetime/10;
b=wetime%10;
tab[2]=show[a];
tab[3]=show[b];
wetime2=wetime;
nstime2=wetime-5;}
微控制器實驗報告時鐘綜合實驗
微控制器實驗報告 南京理工大學紫金學院電光系 一 實驗目的 1 學習proteus軟體基礎使用方法 2 掌握定時 計數器與外部中斷工作原理 3 學習設計微控制器控制的多位數碼管掃瞄顯示電路 4 理解數碼管動態顯示的原理。二 實驗原理 at89c51微控制器位控制器,四位7段數碼管分別顯示分的十位 分...
微控制器實驗報告
1福建農林大學計算機與資訊學院 資訊工程類 實驗報告 2013 年 10 月 28 日 實驗專案列表 福建農林大學計算機與資訊學院資訊工程類實驗報告 系 電子資訊工程專業 電子資訊工程年級 2011級 姓名 詹緩輝學號 3116004094實驗課程 微控制器技術 實驗室號 田c513實驗時間 10....
微控制器實驗報告
一 實驗題目 試編寫一段程式,其功能為將21h單元的內容8位分別依次存放到從22h開始的8單元中。二 keil 0000h jmp start 0100h start mov 21h,8 mov a 21h 取出21中的數 mov r0,22h 初始化 mov r1,7h 迴圈次數為7 loop r...