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