版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 1實(shí)驗(yàn)設(shè)計(jì)的目的和任務(wù)</p><p> 1.1 單片機(jī)秒表實(shí)驗(yàn)的概述</p><p> 1.2系統(tǒng)設(shè)計(jì)思路及描述</p><p> 1.3 系統(tǒng)設(shè)計(jì)任務(wù)和要求</p><p><b> 2軟件與硬件設(shè)計(jì)</b
2、></p><p> 2.1系統(tǒng)硬件方案設(shè)計(jì)</p><p><b> 2.2軟件方案設(shè)計(jì)</b></p><p> 3 程序流程及實(shí)驗(yàn)效果</p><p><b> 3.1源程序及說明</b></p><p><b> 3.2原理圖分析</b
3、></p><p><b> 3.3實(shí)驗(yàn)效果</b></p><p><b> 4 參考文獻(xiàn)</b></p><p> 1. 實(shí)驗(yàn)設(shè)計(jì)的目的和任務(wù)</p><p> 1.1單片機(jī)秒表實(shí)驗(yàn)的概述</p><p><b> 一、實(shí)驗(yàn)題目</b>
4、;</p><p> 秒表系統(tǒng)設(shè)計(jì)——用STC89C52RC設(shè)計(jì)一個(gè)3位LED數(shù)碼顯示“秒表”,顯示時(shí)間為00.0~59.9秒,每毫秒自動(dòng)加一,每十毫秒自動(dòng)加一秒。</p><p><b> 二、增加功能</b></p><p> 增加一個(gè)“復(fù)位00.0”按鍵(即清零),一個(gè)“暫停”和“開始”按鍵,一個(gè)“復(fù)位60.0”按鍵(用來60秒倒計(jì)
5、時(shí)),一個(gè)倒計(jì)時(shí)“逐漸自減”按鍵。</p><p><b> 三,實(shí)驗(yàn)難點(diǎn)</b></p><p> 單片機(jī)電子秒表需要解決三個(gè)主要問題,一是有關(guān)單片機(jī)定時(shí)器(一個(gè)控制順序計(jì)時(shí),一個(gè)控制倒計(jì)時(shí))的使用;二是如何實(shí)現(xiàn)LED的動(dòng)態(tài)掃描顯示;三是如何對(duì)鍵盤輸入進(jìn)行編程。</p><p><b> 四、實(shí)驗(yàn)內(nèi)容提要</b>&
6、lt;/p><p> 本實(shí)驗(yàn)利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,結(jié)合集成電路芯片8051、LED數(shù)碼管以及實(shí)驗(yàn)箱上的按鍵來設(shè)計(jì)計(jì)時(shí)器。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),數(shù)碼管能夠正確地顯示時(shí)間。其中本實(shí)驗(yàn)設(shè)計(jì)了四個(gè)開關(guān)按鍵:其中key2按鍵按下去時(shí)開始計(jì)時(shí),即秒表開始鍵(同時(shí)也用作暫停鍵),key1按鍵按下去時(shí)數(shù)碼管清零,復(fù)位為“00.0”,key3按鍵按下去時(shí)數(shù)碼管復(fù)位為“60.0”(
7、用于倒計(jì)時(shí)),key4按鍵按下去則是數(shù)碼管開始“逐漸自減”倒計(jì)時(shí)。</p><p><b> 實(shí)驗(yàn)的意義</b></p><p> 通過本次課程設(shè)計(jì)加深對(duì)單片機(jī)課程的全面認(rèn)識(shí)復(fù)習(xí)和掌握,對(duì)單片機(jī)課程的應(yīng)用進(jìn)一步的了解。</p><p> 掌握定時(shí)器、外部中斷的設(shè)置和編程原理。</p><p> 通過此次課程設(shè)計(jì)能
8、夠?qū)纹瑱C(jī)軟硬件結(jié)合起來,對(duì)程序進(jìn)行編輯,校驗(yàn)。</p><p> 該實(shí)驗(yàn)通過單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和計(jì)數(shù)原理,設(shè)計(jì)簡單的計(jì)時(shí)器系統(tǒng),擁有正確的計(jì)時(shí)、暫停、清零,并同時(shí)可以用數(shù)碼管顯示,在現(xiàn)實(shí)生活中應(yīng)用廣泛,具有現(xiàn)實(shí)意義</p><p><b> 實(shí)驗(yàn)儀器</b></p><p> 集成電路芯片8051,七段數(shù)碼管,TX-1C單片機(jī)開
9、發(fā)板,MCS-51系列單片機(jī)微機(jī)仿真實(shí)驗(yàn)系統(tǒng)中的軟件(Keil uvision2)</p><p> 1.2系統(tǒng)設(shè)計(jì)思路及描述</p><p> 該實(shí)驗(yàn)要求進(jìn)行計(jì)時(shí)并在數(shù)碼管上顯示時(shí)間,則可利用MCS-51系列單片機(jī)的芯片AT89C52的P3.4,P3.5,P3.6,P3.7作為按鍵的入口;定時(shí)器T0作為每0.1秒減一的定時(shí)器;定時(shí)器T1作為每0.1秒加一的定時(shí)器。其中“開始”按鍵當(dāng)開
10、關(guān)由上向下?lián)軙r(shí)開始計(jì)時(shí),此時(shí)若再撥“開始”按鍵則數(shù)碼管暫停;“清零”按鍵當(dāng)開關(guān)由上向下?lián)軙r(shí)數(shù)碼管清零,此時(shí)若再撥“開始”按鍵則又可重新開始計(jì)時(shí)。</p><p><b> 方框圖如下圖:</b></p><p><b> 數(shù)字秒表設(shè)計(jì)導(dǎo)向圖</b></p><p> 1.3 系統(tǒng)設(shè)計(jì)任務(wù)和要求</p>
11、<p><b> 1.設(shè)計(jì)指標(biāo) 。</b></p><p> 了解8051芯片的的工作原理和工作方式 ,使用該芯片對(duì)LED數(shù)碼管進(jìn)行顯示控制,實(shí)現(xiàn)用單片機(jī)的端口控制數(shù)碼管,顯示分、秒,并能用按鈕實(shí)現(xiàn)秒表起動(dòng)、停止、60秒、倒計(jì)時(shí)清零等功能,精確到0.1秒。</p><p> 要求選用定時(shí)器的工作方式,畫出使用單片機(jī)控制LED數(shù)碼管顯示的電路圖,并實(shí)現(xiàn)其
12、硬件電路,并編程完成軟件部分,最后調(diào)試秒表起動(dòng)、停止、清零等功能。</p><p><b> 2.設(shè)計(jì)要求</b></p><p> 畫出電路原理圖(或仿真電路圖);</p><p><b> 電路仿真與調(diào)試;</b></p><p><b> 2.軟件與硬件設(shè)計(jì)</b>
13、;</p><p> 2.1系統(tǒng)硬件方案設(shè)計(jì)</p><p> 單片機(jī)應(yīng)用系統(tǒng)由硬件系統(tǒng)和軟件系統(tǒng)兩部分組成。硬件系統(tǒng)是指單片機(jī)以及擴(kuò)展的存儲(chǔ)器、I\O接口、外圍擴(kuò)展的功能芯片以及接口電路。軟件系統(tǒng)包括監(jiān)控程序和各種應(yīng)用程序。</p><p> 在單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)是整個(gè)系統(tǒng)的核心,對(duì)整個(gè)系統(tǒng)的信息輸入、處理、信息輸出進(jìn)行控制。與單片機(jī)配套的有相應(yīng)的復(fù)位
14、電路、時(shí)鐘電路以及擴(kuò)展的存儲(chǔ)器和I\O接口,使單片機(jī)應(yīng)用系統(tǒng)能夠運(yùn)行。</p><p> 在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,往往都會(huì)輸入信息和顯示信息,這就涉及鍵盤和顯示器。在單片機(jī)應(yīng)用系統(tǒng)中,一般都根據(jù)系統(tǒng)的要求配置相應(yīng)的鍵盤和顯示器。配置鍵盤和顯示器一般都沒有統(tǒng)一的規(guī)定,有的系統(tǒng)功能復(fù)雜,需輸入的信息和顯示的信息量大,配置的鍵盤和顯示器功能相對(duì)強(qiáng)大,而有些系統(tǒng)輸入/輸出的信息少,這時(shí)可能用幾個(gè)按鍵和幾個(gè)LED指示燈就
15、可以進(jìn)行處理了。在單片機(jī)應(yīng)用系統(tǒng)在中配置的鍵盤可以是獨(dú)立鍵盤,也可能是矩陣鍵盤。</p><p><b> 系統(tǒng)硬件結(jié)構(gòu)框圖</b></p><p><b> 2.2軟件方案設(shè)計(jì)</b></p><p> 此次選用C51來編程,首先要有初始化程序,通過初始化程序,將對(duì)主程序所用到的變量、常量以及各個(gè)參數(shù)和所調(diào)用的子函
16、數(shù)定義。其次還有顯示程序、按鍵掃描及處理程序、時(shí)鐘程序和倒計(jì)時(shí)程序,系統(tǒng)軟件流程圖圖如圖 2.2所示:</p><p> 3 程序流程及實(shí)驗(yàn)效果</p><p><b> 3.1源程序及說明</b></p><p> #include<reg52.h> //52系列單片機(jī)頭文件</p>&
17、lt;p> #define uchar unsigned char //宏定義</p><p> #define uint unsigned int</p><p> sbit dula=P2^6; //申明U1鎖存器的鎖存端</p><p> sbit wela=P2^7; //申明U2鎖存
18、器的鎖存端</p><p> sbit key1=P3^4; //申明四個(gè)按鍵的鎖存端</p><p> sbit key2=P3^5;</p><p> sbit key3=P3^6;</p><p> sbit key4=P3^7;</p><p> uchar code ta
19、ble[]={ //含有0~9的數(shù)字?jǐn)?shù)組</p><p> 0x3f,0x06,0x5b,0x4f,</p><p> 0x66,0x6d,0x7d,0x07,</p><p> 0x7f,0x6f};</p><p> void delayms(uint); //聲明延時(shí)函數(shù)</
20、p><p> void display(uchar,uchar,uchar); //聲明顯示函數(shù)</p><p> void keyscan(); //聲明按鍵函數(shù)</p><p> uchar num1,num2,bai,shi,ge; //變量聲明</p><p><b> uin
21、t num;</b></p><p> void main() //主函數(shù)入口</p><p><b> {</b></p><p> TMOD=0x11; //設(shè)置TO,T1定時(shí)器</p><p> TH0=(65536-4
22、5872)/256; //裝初值11.05992M晶振定時(shí)50ms數(shù)為45872</p><p> TL0=(65536-45872)%256;</p><p> TH1=(65536-45872)/256;</p><p> TL1=(65536-45872)%256;</p><p> EA=1; /
23、/開總中斷</p><p> ET0=1; //開啟定時(shí)器T0中斷</p><p> ET1=1; //開啟定時(shí)器T1中斷</p><p> while(1) //程序停在這里等待中斷的發(fā)生,這個(gè)大循環(huán)也是實(shí)現(xiàn)數(shù)據(jù)顯示的主體</p><p><b> {&
24、lt;/b></p><p> keyscan();</p><p> //三個(gè)數(shù)碼管要選送的數(shù)據(jù)</p><p> bai=num/100; //百位 </p><p> shi=(num-100*bai)/10; //十位</p><p> ge=num-100*
25、bai-shi*10; //個(gè)位</p><p> //直接把第二只數(shù)碼管的小數(shù)點(diǎn)燒出來</p><p> dula=1; //打開段選</p><p> P0=0x80; //送段選數(shù)據(jù)</p><p> dula=0; //關(guān)閉斷選</p><p> P0=
26、0xff; //送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存時(shí)原來段選數(shù)據(jù)通過位鎖存端造成混亂</p><p> wela=1; //打開位選</p><p> P0=0xfd; //送位選數(shù)據(jù)</p><p> wela=0; //關(guān)閉位選</p><p> delay
27、ms(5); //延時(shí)</p><p> display(bai,shi,ge); </p><p><b> }</b></p><p><b> }</b></p><p> void display(uchar bai, uchar shi,uchar ge)</p
28、><p><b> {</b></p><p> dula=1; //打開段選</p><p> P0=table[bai]; //送段選數(shù)據(jù)</p><p> dula=0; //關(guān)閉斷選</p><p> P0=0xff; //送位選數(shù)據(jù)前關(guān)閉所
29、有顯示,防止打開位選鎖存時(shí)原來段選數(shù)據(jù)通過位鎖存端造成混亂</p><p> wela=1; //打開位選</p><p> P0=0xfe; //送位選數(shù)據(jù)</p><p> wela=0; //關(guān)閉位選</p><p> delayms(5); //延時(shí)</p>
30、<p> dula=1; //打開段選</p><p> P0=table[shi]; //送段選數(shù)據(jù)</p><p> dula=0; //關(guān)閉斷選</p><p> P0=0xff;//送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存時(shí)原來段選數(shù)據(jù)通過位鎖存端造成混亂</p><p>
31、wela=1; //打開位選</p><p> P0=0xfd; //送位選數(shù)據(jù)</p><p> wela=0; //關(guān)閉位選</p><p> delayms(5); //延時(shí)</p><p> dula=1; //打開段選</p><p> P0=ta
32、ble[ge]; //送段選數(shù)據(jù)</p><p> dula=0; //關(guān)閉斷選</p><p> P0=0xff; //送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存時(shí)原來段選數(shù)據(jù)通過位鎖存端造成混亂</p><p> wela=1; //打開位選</p><p> P0=0xfb; //送位選數(shù)據(jù)<
33、/p><p> wela=0; //關(guān)閉位選</p><p> delayms(5); //延時(shí)</p><p><b> }</b></p><p> void delayms(uint xms) //延時(shí)子函數(shù)</p><p><b> {</b
34、></p><p><b> uint i,j;</b></p><p> for(i=xms;i>0;i--) //i=xms即延時(shí)約xms毫秒</p><p> for(j=110;j>0;j--);</p><p><b> }</b></p&
35、gt;<p> void keyscan()</p><p><b> {</b></p><p> if(key1==0) //清零</p><p><b> {</b></p><p> delayms(10);
36、//延時(shí)去抖</p><p> if(key1==0) </p><p><b> {</b></p><p> while(!key1) //等待按下</p><p><b> { </b></p><p> TR0=0; //定時(shí)器TR0關(guān)閉&
37、lt;/p><p> TR1=1; //定時(shí)器TR1打開</p><p> num=0; //送數(shù)據(jù)num=0</p><p> TR1=0; //定時(shí)器TR1關(guān)閉</p><p><b> }</b></p><p><b> }</b&
38、gt;</p><p><b> }</b></p><p> if(key2==0) //暫停和開始</p><p><b> {</b></p><p> delayms(10);</p><p> if(key2==0)&
39、lt;/p><p><b> {</b></p><p> while(!key2);</p><p><b> TR0=0;</b></p><p> TR1=~TR1; //每次按下,TR1的狀態(tài)時(shí)相反的</p><p><b> }</b&g
40、t;</p><p><b> }</b></p><p> if(key3==0) //使計(jì)數(shù)器顯示為60.0</p><p><b> {</b></p><p> delayms(10);</p><p> if(key3
41、==0)</p><p><b> {</b></p><p> while(!key3); </p><p><b> TR0=0;</b></p><p><b> TR1=1;</b></p><p><b> num=600;
42、</b></p><p><b> TR1=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(key4==0) //實(shí)現(xiàn)計(jì)數(shù)器的倒數(shù)功能</p>
43、<p><b> {</b></p><p> delayms(10);</p><p> if(key4==0)</p><p><b> {</b></p><p> while(!key4);</p><p><b> TR1=0;<
44、;/b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void T0_time(
45、)interrupt 1</p><p><b> {</b></p><p> TH0=(65536-45872)/256; //重裝初值</p><p> TL0=(65536-45872)%256;</p><p><b> num2++;</b></p><
46、;p> if(num2==2) //如果到了2次,說明0.1秒的時(shí)間到</p><p><b> {</b></p><p> num2=0; //然后把num2清零重新再計(jì)2次</p><p><b> num1++;</b></p>&
47、lt;p> if(num1==10)</p><p> num1=0; </p><p> if(num==0) //當(dāng)num自減為0時(shí),重新為60.0,再開始倒計(jì)時(shí)</p><p><b> num=600;</b></p><p> num--;
48、 //num逐漸自減</p><p><b> }</b></p><p><b> }</b></p><p> void T1_time()interrupt 3</p><p><b> {</b></p><p> TH1=(655
49、36-45872)/256; //重裝初值</p><p> TL1=(65536-45872)%256; </p><p><b> num2++;</b></p><p> if(num2==2) //如果到了2次,說明0.1秒的時(shí)間到</p><p><b> {&
50、lt;/b></p><p> num2=0; //然后把num2清零重新再計(jì)2次</p><p><b> num1++;</b></p><p> if(num1==10)</p><p><b> num1=0;</b></p><p
51、> num++; //num逐漸自加</p><p> if(num==600) //這個(gè)數(shù)十用來送給數(shù)碼管顯示的,到了60.0后歸零</p><p><b> num=0; </b></p><p><b> } </b></p><p><b>
52、; }</b></p><p><b> 3.2原理圖分析</b></p><p><b> 按鍵原理圖 </b></p><p><b> 電源電路原理圖</b></p><p><b> 3.3實(shí)驗(yàn)效果</b></p>
53、<p> 通過最后軟件對(duì)程序的編譯,組建,執(zhí)行,還有最終生成.hex文件,把.hex下載到TX-1C開發(fā)板的STC89C52RC單片機(jī)上的最終效果圖如下:</p><p> 圖1.復(fù)位“00.0”</p><p> 圖2.復(fù)位“60.0”</p><p> 圖3.“開始自加”運(yùn)行</p><p> 圖4.“開始自減”運(yùn)
54、行</p><p><b> 4 參考文獻(xiàn)</b></p><p> 【1】孫育才編著.MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用.東南大學(xué)出版社.2009.12</p><p> 【2】郭天祥編著.51單片機(jī)C語言教程-入門、提高、開發(fā)、拓展全攻略.電子工業(yè)出版社.2010.05</p><p> 【3】劉剛編著.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于c語言單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---秒表
- 單片機(jī)秒表課程設(shè)計(jì)
- 秒表(單片機(jī)課程設(shè)計(jì))
- 單片機(jī)秒表單片機(jī)課程設(shè)計(jì)
- 單片機(jī)多功能秒表課程設(shè)計(jì)--89c51單片機(jī)秒表的設(shè)計(jì)
- 基于c語言單片機(jī)秒表設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---秒表設(shè)計(jì)
- 單片機(jī)數(shù)字秒表課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字秒表
- 單片機(jī)課程設(shè)計(jì)-數(shù)字秒表
- 基于單片機(jī)的秒表設(shè)計(jì)單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 單片機(jī)秒表課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)--電子秒表
- 單片機(jī)簡易秒表課程設(shè)計(jì)
- 單片機(jī)秒表的課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論