《單片機原理 定時器計數(shù)器-單片機原理-實驗資料報告材料》由會員分享,可在線閱讀,更多相關《單片機原理 定時器計數(shù)器-單片機原理-實驗資料報告材料(9頁珍藏版)》請在裝配圖網上搜索。
1、word
師學院計算機系
實驗報告
〔2014—2015學年第2學期〕
課程名稱 單片機原理
實驗名稱 定時器與計數(shù)器
專 業(yè) 計算機科學與技術〔非師〕
年 級 12級
學號 B2012102147 王 秋
指導教師 烈君
實驗日期 2015.5.27
實驗目的:
1. 通過實驗學習單片機的定時器計數(shù)器功能,學會編程實現(xiàn)單片機的定時與計數(shù)功能;
2. 掌握中斷處
2、理程序的編程方法;
3. 掌握查表的編程方法。
實驗要求:
1. 在Proteus軟件中畫好51單片機最小核心電路,包括復位電路和晶振電路
2. 在電路中增加按鍵、Led燈、八位7段數(shù)碼管(共陽/共陰自選),將P2口作數(shù)據輸出口與7段數(shù)碼管數(shù)據引腳相連 ,P3引腳輸出位選控制信號。
3. 實現(xiàn)單按鍵控制Led燈閃爍 〔 用定時器實現(xiàn)1s變化一次〕
4. 實現(xiàn)0-99碼表 〔 按一次開始計時1S加一,第二次停止,第三次清零 〕
實驗設備〔環(huán)境〕:
計算機、Proteus ISIS 7 Professional應用程序、Keil應用程序
實驗容:
使用部定時器與外部中斷實現(xiàn)
3、:
1. 實現(xiàn)單按鍵控制Led燈閃爍 〔1s變化一次)
2. 實現(xiàn)0-99碼表 〔 按一次開始計時1S加一,第二次停止,第三次清零 〕
參考原理圖
實驗步驟、實驗結果與分析:
1、使用Proteus ISIS 7 Professional
2、在“庫〞下拉菜單中,選中“拾取元件〞〔快捷鍵P〕,分別選擇以下元件:AT89C51、LED-YELLOW、BUTTON、7SEG-MPX8-CA-BLUE、RESPACK-8。
3、構建仿真電路
4、創(chuàng)建一個Keil應用程序:新建一個工程項目文件;為工
4、程選擇目標器件〔AT89C52〕;為工程項目創(chuàng)建源程序文件并輸入程序代碼;保存創(chuàng)建的源程序項目文件;把源程序文件添加到項目中。
5、把用戶程序經過編譯后生成的HEX文件添加到仿真電路中的處理器中〔編輯元件→文件路徑〕
程序代碼:
1. 實現(xiàn)單按鍵控制Led燈閃爍 〔1s變化一次)
#include"reg51.h"
#define uchar unsigned char
uchar Time_50ms;
sbit Led1=P1^0;
uchar Mode;
void delay(int x) //定義時間間隔
{
while(x--);
}
5、
void LedFlash() interrupt 1 //溢出中斷的中斷服務程序
{
if(Mode==1)
{
Time_50ms++; //每50ms累加1次
TH0=15526/0xff; //計數(shù)重新賦初值
TL0=15526%0xff;
if(Time_50ms>=20) //當為1s時
{
Led1=~Led1;
Time_50ms=0;
}
}
}
void int0() interrupt 0 //外部中斷0的中斷服務程序
{
6、 Mode=(Mode+1)%2; //更改按鍵標志值
if(Mode==0)
{
Led1=0;
Time_50ms=0;
}
}
void main()
{
IE=0x83; //允許定時器0中斷和外部中斷0
TMOD=0x01; //定時方式,設定工作方式1
TCON=0x11; //打開定時器0和設置外部中斷為邊沿觸發(fā)
TH0=(65536-50000)/256; //定時器T0的高8位賦初值
TL0=(65536-50000)%256; //定時器T0的低8位賦初值
Led
7、1=0;
while(1);
}
圖1 單按鍵控制Led燈閃爍,1s變化一次
2. 實現(xiàn)0-99碼表 〔 按一次開始計時1S加一,第二次停止,第三次清零 〕
#include"reg51.h"
#define uchar unsigned char
#define disp_null 10
uchar code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//共陽數(shù)碼管顯示0~9的段碼表
uchar DispBuf[8];
uchar sec=0;
u
8、char Time_50ms;
uchar Mode=2;
void delay(int x) //定義時間間隔
{
while(x--);
}
void PutTime()
{
DispBuf[7]=sec%10;
DispBuf[6]=sec/10;
DispBuf[5]=disp_null;
DispBuf[4]=disp_null;
DispBuf[3]=disp_null;
DispBuf[2]=disp_null;
DispBuf[1]=disp_null;
DispBuf[0]=disp
9、_null;
}
void display()
{
uchar i;
for(i=0;i<8;i++)
{
P2=0;
P2=1<
10、5526%0xff;
if(Time_50ms>=20) //當為1s時
{
Time_50ms=0;
sec++;
if(sec>99)
sec=0;
PutTime();
}
}
}
void int0() interrupt 0 //外部中斷0的中斷服務程序
{
Mode=(Mode+1)%3; //更改按鍵標志值
if(Mode==1);
if(Mode==2)
{
Time_50ms=0;
sec=0;
PutTime();
11、 }
}
void main()
{
P1=0x00;
IE=0x83; //允許定時器0中斷和外部中斷0
TMOD=0x01; //定時方式,設定工作方式1
TCON=0x11; //打開定時器0和設置外部中斷為邊沿觸發(fā)
TH0=(65536-50000)/256; //定時器T0的高8位賦初值
TL0=(65536-50000)%256; //定時器T0的低8位賦初值
while(1)
display();
}
圖2 0-99碼表,按一次,開始計時1S加1,第二次停止
圖3 0-99碼
12、表,按第三次清零
實驗總結〔包括過程總結、心得體會與實驗改良意見等〕:
過程總結:
1. 在實現(xiàn)單按鍵控制Led燈閃爍 〔 用定時器實現(xiàn)1s變化一次〕時,由單片機部定時器1,按方式1工作,即作為16位定時器使用每0.05秒鐘T1溢出中斷一次,按鍵采用中斷實現(xiàn)。
2. 51單片機的外部中斷INTx(INT0和INT1)可以用程序控制為電平觸發(fā)或負邊沿觸發(fā),通過編程對定時器/計數(shù)器控制存放器TCON中的IT0和IT1位進展清“0〞或置“1〞。假如ITx〔X=0,1〕為0,如此外部中斷INTx程控為電平觸發(fā),由INTx引腳上所檢測到的低電平觸發(fā);假如ITX=1,如此外部中斷INTx由負邊
13、沿觸發(fā)。
心得體會:
1. 實現(xiàn)0-99碼表 〔 按一次開始計時1S加一,第二次停止,第三次清零 〕在Proteus軟件中畫好51單片機最小核心電路,包括復位電路和晶振電路,在電路中增加按鍵、Led燈、八位7段數(shù)碼管(共陽/共陰自選),將P2口作數(shù)據輸出口與7段數(shù)碼管數(shù)據引腳相連 ,P3引腳輸出位選控制信號。
2.通過實驗學習單片機的定時器計數(shù)器功能,學會了編程實現(xiàn)單片機的定時與計數(shù)功能;掌握了中斷處理程序的編程方法;掌握查表的編程方法。
指導教師評語:
成績評定
教師簽字
年月日
備注:
注:1、報告的項目或設置,可根據實際情況加以補充和調整
2、教師批改學生實驗報告應在學生提交實驗報告10日
9 / 9