日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

山东大学单片机原理与应用实验 4.1 按键声光报警实验

發布時間:2024/3/7 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 山东大学单片机原理与应用实验 4.1 按键声光报警实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、實驗題目

二、實驗要求

三、實驗過程及結果

四、實驗流程圖

五、實驗源代碼


一、實驗題目

4.4按鍵聲光報警實驗

二、實驗要求

1、畫出實驗的流程圖

2、編寫源程序并進行注釋

3、記錄實驗過程

4、記錄程序運行結果截圖

三、實驗過程及結果

本實驗聯系靜態按鍵識別,發光二極管驅動,以及外部中斷的使用方法,實驗原理圖如下圖1所示(注:圖中元件編號中括號里面的內容表示該元件所在的板子名稱,如CPU 表示該元器件位于CPU 板,以下類同)。

圖1:實驗原理圖

要求利用外部硬件中斷,按鍵按下一次產生一次外部中斷,在中斷服務程序中計數器加1,同時,通過發光二極管的閃爍和蜂鳴器響的次數,指示計數器的當前值。當計數到10時,再次按鍵將重新從1開始計。

1. 在實驗前先采用軟件仿真的方式驗證代碼。

?? 1)使用Proteus軟件搭建實驗電路如下所示:

圖2:實驗電路圖

?2)使用keil軟件新建工程與文件,將代碼寫入,并且build,將hex文件導入

?3)觀察實驗結果如下圖所示,可知程序運行符合題意:

圖3:仿真實驗結果

2. 硬件實驗運行

1)關掉實驗箱電源。將 MCU 板插接在母板上,按照前面連接關系表將硬件連接好。

2)在仿真器斷電情況下將仿真器的仿真頭插在 MCU 板的MCU 插座上。將仿真器與開發PC 機的通信口連接好,打開實驗箱及仿真器的電源。

3)運行 Keil uVision2 開發環境,建立工程int0_c.uV2,MCU 為AT89S51,包含啟動文件STARTUP.A51。

4)按照實驗功能要求創建源程序 int0.c 并加入到工程int0_c.uV2,并設置工程

int0_c.uV2 屬性,將其晶振頻率設置為11.0592MHz,選擇輸出可執行文件,DEBUG方式選擇硬件DEBUG,并選擇其中的“WAVE V series MCS51 Driver”仿真器。
5)構造(Build)工程 int0_c.uV2。如果編程有誤進行修改,直至構造正確為止。

6)運行程序,按下 MCU 板上的KEY0 按鍵,觀察每次按鍵按下時主板上的發光二極管的閃爍和蜂鳴器響的次數,是否符合程序要求,若不符合要求,分析出錯原因,繼續重復第4、5 步的步驟,直至結果正確。

通過硬件實驗可知,按下按鍵即可看到燈閃一次,蜂鳴器響一次;再次按下,就是閃兩次,響兩次。一直到最后閃10次,響十次;再次按下時,跳回1重新開始。

四、實驗流程圖

圖4:實驗流程圖

五、實驗源代碼

#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit led=P3^0; //定義led燈控制端口 sbit bell=P3^1; //定義蜂鳴器控制端口 sbit key=P3^2; //定義報警控制端口 uchar count,i; //定義計數器 void delay(uchar count) // 定義延時函數 {uint x,y;for(x=count;x>0;x--) //循環嵌套for(y=110;y>0;y--); //1ms延時函數 }//總延時為count*1 ms void show(uchar count) // 定義蜂鳴器報警并且燈光閃爍 { i=count; //循環變量for(;i!=0;i--) //函數循環次數{led=0; //置低電平則LED燈亮bell=0; // 置低電平則蜂鳴器響delay(500); //調用延時函數led=1; //置高電平則LED燈滅bell=1; //置高電平蜂鳴器不響delay(500); //調用延時函數} } void s_timer0() interrupt 0 using 0 // 定義中斷程序 { EA=0; //屏蔽中斷請求if(count!=10)count=count+1; //count自增show(count); delay(50);//延時if(count==10) // 緊接著就要判斷是否是10,否則,再響十次之后,下一次不會是響一次。count=0; //若count為10則結束,重新賦值為0EA=1; //允許中斷 } void main() // 主程序 { EA=1; //允許中斷EX0=1; //允許外部中斷0中斷IT0=0; //設置外中斷0為電平觸發方式while(1); //循環 }

初學單片機,可能存在錯誤之處,還請各位不吝賜教。

總結

以上是生活随笔為你收集整理的山东大学单片机原理与应用实验 4.1 按键声光报警实验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。