標(biāo)題: 單片機(jī)2位LED數(shù)碼顯示“秒表”課程設(shè)計(jì)(論文) [打印本頁]
作者: 就感覺很高 時(shí)間: 2017-7-6 17:29
標(biāo)題: 單片機(jī)2位LED數(shù)碼顯示“秒表”課程設(shè)計(jì)(論文)
課程設(shè)計(jì)(論文)任務(wù)及評(píng)語
院(系):電子與信息工程學(xué)院 教研室:計(jì)算機(jī)
學(xué) 號(hào) | | | | | |
| |
| 設(shè)計(jì)內(nèi)容 用AT89C51設(shè)計(jì)一個(gè)2位LED數(shù)碼顯示“秒表”,顯示時(shí)間為00~99秒,每秒自動(dòng)加一。 性能指標(biāo)及技術(shù)要求 了解8051芯片的的工作原理和工作方式 ,使用該芯片對(duì)LED數(shù)碼管進(jìn)行顯示控制,實(shí)現(xiàn)用單片機(jī)的端口控制數(shù)碼管,顯示分、秒,并能用按鈕實(shí)現(xiàn)秒表起動(dòng)、停止、清零功能,精確到0.1秒。 |
| 平時(shí)成績(jī): 答辯成績(jī): 論文成績(jī): 總成績(jī): 指導(dǎo)教師簽字: 年 月 日 |
注:平時(shí)成績(jī)占20%,答辯成績(jī)占40%,論文成績(jī)占40%。
摘 要
本設(shè)計(jì)是設(shè)計(jì)一個(gè)單片機(jī)控制的多功能秒表系統(tǒng)。
近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,同時(shí)帶動(dòng)著傳統(tǒng)控制檢測(cè)日新月異的更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個(gè)核心部件來使用,僅單片機(jī)方面的知識(shí)是不夠的,還要根據(jù)具體的硬件結(jié)構(gòu),以及針對(duì)具體的應(yīng)用對(duì)象的軟件結(jié)合,加以完善。秒表的出現(xiàn),解決了傳統(tǒng)的由于人為因素造成的誤差和不公平性。
本設(shè)計(jì)的多功能秒表系統(tǒng)采用AT89C51單片機(jī)為中心器件,利用其定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合顯示電路、電源電路、LED數(shù)碼管以及按鍵電路來設(shè)計(jì)計(jì)時(shí)器。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)數(shù),并且結(jié)合相應(yīng)的顯示驅(qū)動(dòng)程序,使數(shù)碼管能夠正確地顯示時(shí)間,暫停和中斷。我們?cè)O(shè)計(jì)的秒表可以同時(shí)記錄八個(gè)相對(duì)獨(dú)立的時(shí)間,通過上翻下翻來查看這八個(gè)不同的計(jì)時(shí)值,可謂功能強(qiáng)大。其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,計(jì)數(shù)程序,中斷,延時(shí)程序,按鍵消抖程序等,硬件系統(tǒng)利用PROTEUS強(qiáng)大的功能來實(shí)現(xiàn),簡(jiǎn)單且易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。
目 錄目 錄.. II
第一章 概述.. 1
1.1設(shè)計(jì)目的.. 1
1.2設(shè)計(jì)要求.. 1
1.3 設(shè)計(jì)意義.. 1
第二章 詳細(xì)分析.. 1
2.1系統(tǒng)總體方案.. 1
2.2硬件設(shè)計(jì).. 1
2.3晶體振蕩電路.. 3
2.4復(fù)位電路.. 3
2.5按鍵電路.. 3
2.6顯示電路.. 4
第三章 軟件設(shè)計(jì).. 5
第四章PROTEUS仿真.. 12
第五章 課程設(shè)計(jì)體會(huì).. 14
第六章 參考文獻(xiàn).. 15
第一章 概述1.1設(shè)計(jì)目的設(shè)計(jì)一個(gè)單片機(jī)控制的秒表系統(tǒng)。利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合顯示電路、LED數(shù)碼管以及按鍵來設(shè)計(jì)秒表。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)具有開始/暫停,記錄,上翻下翻,清零等功能。
1.2設(shè)計(jì)要求(1)共四位LED顯示,顯示時(shí)間為00:00~59.99
(2)共五個(gè)按鍵,分別是開始/暫停,記錄,上翻,下翻,清零鍵;
(3)能同時(shí)記錄多個(gè)相對(duì)獨(dú)立的時(shí)間并分別顯示;
(4)翻頁按鈕查看多個(gè)不同的計(jì)時(shí)值;
1.3 設(shè)計(jì)意義(1)通過本次課程設(shè)計(jì)可以使我們進(jìn)一步熟悉和掌握單片機(jī)內(nèi)部結(jié)構(gòu)和工作原理,了解單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的基本步驟和方法。
(2)通過利用AT89C51單片機(jī),理解單片機(jī)在自動(dòng)化儀表中的作用以及掌握單片機(jī)的編程方法。
(3)通過設(shè)計(jì)一個(gè)簡(jiǎn)單的實(shí)際應(yīng)用輸入及顯示模擬系統(tǒng),掌握單片機(jī)仿真軟件PROTEUS的使用方法。
(4)該實(shí)驗(yàn)通過單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)原理,設(shè)計(jì)簡(jiǎn)單的計(jì)時(shí)器系統(tǒng),擁有正確的計(jì)時(shí)、暫停、清零、功能,并能同時(shí)記錄多個(gè)相對(duì)獨(dú)立的時(shí)間利用翻頁按鈕查看多個(gè)不同的計(jì)時(shí)值,該種秒表在現(xiàn)實(shí)生活中應(yīng)用廣泛,具有現(xiàn)實(shí)意義。
第二章 詳細(xì)分析2.1系統(tǒng)總體方案本系統(tǒng)采用AT89C51單片機(jī)為中心器件,利用其定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路,顯示電路,以及一些按鍵電路等來設(shè)計(jì)計(jì)時(shí)器,將軟、硬件有機(jī)地結(jié)合起來。其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示,計(jì)數(shù),中斷,延時(shí),按鍵消抖程序等,并在編程軟件中調(diào)試運(yùn)行,硬件系統(tǒng)利用PROTEUS強(qiáng)大的功能來實(shí)現(xiàn),簡(jiǎn)單且易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif
圖 系統(tǒng)電路原理
2.2硬件設(shè)計(jì)2.2.189C51單片機(jī)
MCS-51系列單片機(jī)是8位單片機(jī)產(chǎn)品,89C51是其中的典型代表,基本模塊包括以下幾個(gè)部分:
(1)CPU:89C51的CPU是8位的,另外89C51內(nèi)部有1個(gè)位處理器
(2)R0M:4KB的片內(nèi)程序存儲(chǔ)器,存放開發(fā)調(diào)試完成的應(yīng)用程序
(3)RAM:256B的片內(nèi)數(shù)據(jù)存儲(chǔ)器,容量小,但作用大
(4)I/O口:P0-P3,共4個(gè)口32條雙向且可位尋址的I/O口線
(5)中斷系統(tǒng):共5個(gè)中斷源,3個(gè)內(nèi)部中斷,2個(gè)外部中斷
(6)定時(shí)器/計(jì)數(shù)器:2個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器
(7)通用串行口:全雙工通用異步接收器/發(fā)送器
(8)振蕩器:89C51的外接晶振與內(nèi)部時(shí)鐘振蕩器為CPU提供時(shí)鐘信號(hào)
(9)總線控制:89C51對(duì)外提供若干控制總線,便于系統(tǒng)擴(kuò)展
89C51的引腳圖如下:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg
2.3晶體振蕩電路89C51芯片內(nèi)部有一個(gè)高增益反相放大器,用于構(gòu)成振蕩器。引線 XTAL1和XTAL2分別為反向放大器的輸入和輸出,兩端跨接石英晶體及兩個(gè)電容就可構(gòu)成穩(wěn)定的自激振蕩器。
這里,我們選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電容器C1,C2起穩(wěn)定振蕩頻率,并對(duì)振蕩頻率有微調(diào)作用,C1和C2可在20-100PF之間取值,這里取33P。
2.4復(fù)位電路采用上電加按鍵復(fù)位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時(shí)間。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電加按鍵復(fù)位的操作。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg
2.5按鍵電路在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設(shè)計(jì)一個(gè)鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復(fù)雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個(gè)小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡(jiǎn)化,我們采用按鍵電路,用部分P1口做開關(guān),P1.0開始/暫停,P1.1記錄,P1.2上翻,P1.3下翻,P1.4清零。對(duì)于按鍵的設(shè)計(jì),采用了防抖動(dòng)的程序設(shè)計(jì),使系統(tǒng)的性能得到進(jìn)一步的提升。當(dāng)按鍵被按下時(shí),相應(yīng)的引腳被拉低,經(jīng)掃描后,獲得鍵值,并執(zhí)行鍵功能程序,因此按下不同的按鍵,將執(zhí)行不同的功能程序。
2.6顯示電路顯示電路既可以選用液晶顯示器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用四個(gè)共陰極LED顯示,LED是七段式顯示器,內(nèi)部有7個(gè)條形發(fā)光二極管和1個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。
在用數(shù)碼管顯示時(shí),我們有靜態(tài)和動(dòng)態(tài)兩種選擇,靜態(tài)顯示程序簡(jiǎn)單,顯示穩(wěn)定,但是占用端口比較多;動(dòng)態(tài)顯示所使用的端口比較少,可以節(jié)省單片機(jī)的I/O口。
在設(shè)計(jì)中,我們采用LED動(dòng)態(tài)顯示,用P0口驅(qū)動(dòng)顯示。由于P0口的輸出級(jí)是開漏電路,用它驅(qū)動(dòng)時(shí)需要外接上拉電阻才能輸出高電平。
第三章 軟件設(shè)計(jì)3.1設(shè)計(jì)特點(diǎn)
在軟件設(shè)計(jì)中,一般采用模塊化的程序設(shè)計(jì)方法,它具有明顯的優(yōu)點(diǎn)。把一個(gè)多功能的復(fù)雜的程序劃分為若干個(gè)簡(jiǎn)單的、功能單一的程序模塊,有利于程序的設(shè)計(jì)和調(diào)試,優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。
應(yīng)用系統(tǒng)的程序由包含多個(gè)模塊的主程序和各種子程序組成。各程序模塊都要完成一個(gè)明確的任務(wù),實(shí)現(xiàn)某個(gè)具體的功能,如:計(jì)數(shù)、延時(shí)、和顯示等,在具體需要時(shí)調(diào)用相應(yīng)的模塊即可。
功能描述:用四位LED數(shù)碼管顯示時(shí)間。一個(gè)"開始/暫停"鍵,一個(gè)"復(fù)位"鍵,一個(gè)“記錄”鍵,可同時(shí)記錄八個(gè)相對(duì)獨(dú)立的時(shí)間;一個(gè)“上翻”鍵,一個(gè)“下翻”鍵,查看八個(gè)不同的計(jì)時(shí)值。五個(gè)按鍵分別通過五個(gè)端口控制秒表的五個(gè)功能。
3.2程序流程圖
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif
3.3程序源代碼
/*
1、程序目的:使用定時(shí)器學(xué)習(xí)秒表計(jì)時(shí),記錄8組數(shù)據(jù),通過上翻、下翻鍵查看記錄的數(shù)據(jù)
2、硬件要求:數(shù)碼管、晶振12M
*/
#include <reg52.h>
Code unsigned chartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰數(shù)碼管 0-9
code unsigned chartab1[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF} ;//共陰數(shù)碼管0-9帶小數(shù)點(diǎn)
sbit key1 = P1^0; //開始、暫停
sbit key2 = P1^1; //記數(shù)
sbit key3 = P1^2; //上翻
sbit key4 = P1^3; //下翻
sbit key5 = P1^4; //清零
static unsigned char ms,sec;
static unsigned char Sec[8],Ms[8];
static int i ,j;
void delay(unsigned int cnt) //延時(shí)程序
{
while(--cnt);
}
void main()
{
unsignedchar key3_flag=0,key4_flag=0;
TMOD |=0x01;//定時(shí)器0 10ms in 12M crystal 用于計(jì)時(shí)
TH0=0xd8;
TL0=0xf0;
ET0=1;
TR0=0;
TMOD |=0x10; //定時(shí)器1用于動(dòng)態(tài)掃描
TH1=0xF8;
TL1=0xf0;
ET1=1;
TR1=1;
EA=1;
sec=0;//初始化
ms=0;
P1=0xff;
i=0;
j=0;
start:
while(1)
{ //開始、暫停
if(!key1) //判斷是否按下
{
delay(50); //去抖
if(!key1)
while(!key1) //等待按鍵釋放
{;}
TR0=!TR0;
}
//記錄
if(!key2) //判斷是否按下
{
delay(50); //去抖
if(!key2)
{ while(!key2) //等待按鍵釋放
{;}
if(i==8) //8組數(shù)據(jù)記錄完畢
{TR0=0;goto start;}
Sec= sec; //將數(shù)據(jù)存入數(shù)組
Ms=ms;
i++;
}
}
//上翻
if(!key3)
{
delay(50);
if(!key3)
{ while(!key3)
{;}
TR0=0;
key3_flag=1; //按鍵3標(biāo)志
if(j==i)
goto start;
else
if(key4_flag)
j+=2;
key4_flag=0;
sec=Sec[j];ms=Ms[j]; //顯示數(shù)組里的內(nèi)容
j++;
}
}
//下翻
if(!key4)
{
delay(50);
if(!key4)
{
while(!key4)
{;}
TR0=0;
key4_flag=1; //按鍵4標(biāo)志
if(j<0)
goto start;
else
if(key3_flag)
j-=2;
key3_flag=0;
sec=Sec[j];ms=Ms[j]; //顯示數(shù)組里的內(nèi)容
j--;
}
}
//清零
if(!key5)
{
delay(50);
if(!key5)
while(!key5)
{;}
TR0=0;
ms=0;
sec=0;
for(i=0;i<8;i++)
{
Sec=0;Ms=0;
}
i=0;
}
}
}
/********************************/
/* 定時(shí)中斷1 */
/********************************/
void time1_isr(void) interrupt 3 using 0//定時(shí)器1用來動(dòng)態(tài)掃描
{
static unsigned char num;
TH1=0xF8;//重入初值
TL1=0xf0;
switch(num)
{
case 0: P2=0xfe;P0=tab[sec/10];break;//顯示秒十位
case 1: P2=0xfd;P0=tab1[sec%10];break;//顯示秒個(gè)位
case 2: P2=0xfb;P0=tab[ms/10];break;//顯示十位
case 3: P2=0xf7;P0=tab[ms%10];break; //顯示個(gè)位
default:break;
}
num++;
if(num==4)
num=0;
}
/********************************/
/* 定時(shí)中斷0 */
/********************************/
void tim(void) interrupt 1 using 1
{
TH0=0xd8;//重新賦值
TL0=0xf0;
ms++;//毫秒單元加1
if(ms==100)
{
ms=0;//等于100時(shí)歸零
sec++;//秒加1
if(sec==60)
{
sec=0;//秒等于60時(shí)歸零
}
}}
第四章 PROTEUS仿真file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg將以上程序清單導(dǎo)入先前做好的Proteus仿真電路,匯編之后,按
鍵開始進(jìn)行仿真。仿真結(jié)果如下:
下面顯示清零功能:
按下開始鍵后顯示
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif
按下清零鍵后顯示
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif
仿真結(jié)果描述:
按“開始”鍵,秒表開始計(jì)時(shí);按“暫!辨I,秒表暫停計(jì)時(shí);按記錄鍵,秒表記錄時(shí)間,共可記錄八個(gè)數(shù)值;按上翻下翻鍵,可查看這八個(gè)不同的計(jì)時(shí)值。
結(jié)論及進(jìn)一步設(shè)想:
根據(jù)實(shí)驗(yàn)要求,本次課設(shè)基本完成了設(shè)計(jì)要求,由于秒表系統(tǒng)并不一定僅僅局限于計(jì)時(shí),定時(shí)等功能,還可以進(jìn)行多項(xiàng)的擴(kuò)展,可以利用AT89C51強(qiáng)大的擴(kuò)展功能,進(jìn)一步豐富秒表的功能,例如可設(shè)定計(jì)時(shí)時(shí)間,倒計(jì)時(shí)等等眾多功能。單片機(jī)以其強(qiáng)大的功能和良好的兼容性可以更好地為我們服務(wù),通過查閱各種資料,多了解一些單片機(jī)有關(guān)知識(shí),可以為以后的工作和學(xué)習(xí)生活創(chuàng)造更多的便利條件。
第五章 課程設(shè)計(jì)體會(huì)通過本次課程設(shè)計(jì),我深刻地認(rèn)識(shí)到自己有很多不足之處,比如在自主學(xué)習(xí)能力方面的不足,實(shí)際動(dòng)手操作能力的不足等。這次的單片機(jī)課程設(shè)計(jì)是理論與實(shí)踐相結(jié)合的范例。該設(shè)計(jì)從頭到尾都要自己參與進(jìn)來,熟悉了整個(gè)設(shè)計(jì)流程才能更快地設(shè)計(jì)出方案并完成設(shè)計(jì)。
本次課程設(shè)計(jì)我主要負(fù)責(zé)硬件電路的設(shè)計(jì)和查閱相關(guān)資料。單片機(jī)課程早已結(jié)束,相關(guān)的知識(shí)已經(jīng)很模糊,導(dǎo)致我在設(shè)計(jì)硬件電路中遇到了不少麻煩。首先是不知從何入手。雖然小組討論后確定了秒表要實(shí)現(xiàn)的功能,可是沒有相關(guān)理論知識(shí)的熟知和實(shí)踐操作,畫出硬件設(shè)計(jì)圖對(duì)我而言毫無頭緒。查閱了與89C51單片機(jī)相關(guān)的資料也閱讀了其他人單片機(jī)數(shù)字秒表的設(shè)計(jì),慢慢地我開始了解其中原理,一步步設(shè)計(jì)出了硬件電路的各個(gè)部分,如晶體振蕩電路,復(fù)位電路,按鍵電路,顯示電路。完成設(shè)計(jì)后需要運(yùn)用PROTEUS軟件進(jìn)行設(shè)計(jì)仿真,由于這是第一次接觸這個(gè)軟件,還不知怎樣運(yùn)用它,查閱該軟件的相關(guān)資料及看過網(wǎng)上的視頻后便開始著手畫圖,接觸后覺得還是挺簡(jiǎn)單的。
這次的課程設(shè)計(jì)我與小組同學(xué)進(jìn)行了交流和討論,我們分工進(jìn)行設(shè)計(jì),從搜索資料到硬件、軟件的調(diào)試,每一步、每一個(gè)細(xì)節(jié)都經(jīng)過我們自己的思考,我們共同討論各方案的比較選擇、硬件、軟件的設(shè)計(jì)和調(diào)試,最終拿出了我們的成果。在做的過程中不但加深了我們對(duì)單片機(jī)理論知識(shí)的認(rèn)識(shí)和理解還認(rèn)識(shí)到了這門學(xué)科在應(yīng)用方面的廣闊前景。
實(shí)踐是最有高度也是最能體現(xiàn)整體水平的整個(gè)設(shè)計(jì)過程中,我們不斷地探索,設(shè)計(jì)出了很多不一樣的硬件電路圖,寫過了很多不一樣的程序,正如設(shè)計(jì)中如何能使硬件電路圖簡(jiǎn)單明了,程序簡(jiǎn)單而準(zhǔn)確,如何能準(zhǔn)確的運(yùn)行,都是通過與同學(xué)老師的交流,慢慢摸索出來的。以上的不斷探索,使我們進(jìn)一步熟悉和掌握單片機(jī)內(nèi)部結(jié)構(gòu)和工作原理,了解單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的基本步驟和方法。通過利用AT89C51單片機(jī),理解單片機(jī)在自動(dòng)化儀表中的作用以及掌握單片機(jī)的編程方法。通過設(shè)計(jì)一個(gè)簡(jiǎn)單的實(shí)際應(yīng)用輸入及顯示模擬系統(tǒng),掌握單片機(jī)仿真軟件PROTEUS的使用方法。
第六章 參考文獻(xiàn)3、《單片機(jī)C語言應(yīng)用程序設(shè)計(jì)》,第四版,馬忠梅主編,北京航空航天大學(xué)出版社
4、《單片機(jī)開發(fā)與典型工程項(xiàng)目實(shí)例詳解》,邊海龍、孫永奎編著,電子工業(yè)出版社
5、吳金戎,沈慶陽,郭庭吉. 8051單片機(jī)實(shí)踐與應(yīng)用[M]. 北京:清華大學(xué)出版社,2002
6、夏繼強(qiáng). 單片機(jī)實(shí)驗(yàn)與實(shí)踐教程[M]. 北京:北京航空航天大學(xué)出版社, 2001
7、肖洪兵. 跟我學(xué)用單片機(jī)[M].北京:北京航空航天大學(xué)出版社,2002.8
-
-
140401016晉川明.doc
2017-7-6 17:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
442 KB, 下載次數(shù): 7, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |