項目一設(shè)計制作流水燈_第1頁
項目一設(shè)計制作流水燈_第2頁
項目一設(shè)計制作流水燈_第3頁
項目一設(shè)計制作流水燈_第4頁
項目一設(shè)計制作流水燈_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、1.MSC51系列單片機系列單片機I/O端口知識,端口負(fù)載能力,常見應(yīng)用場合端口知識,端口負(fù)載能力,常見應(yīng)用場合及使用方式等。及使用方式等。2.for語句、語句、do while語句運行規(guī)則,使用方法語句運行規(guī)則,使用方法 。3.單片機定時器相關(guān)的單片機定時器相關(guān)的TMOD、TCON寄存器各位的作用寄存器各位的作用4.定時時間和計數(shù)器初始值計算定時時間和計數(shù)器初始值計算項目所需掌握的理論知識項目所需掌握的理論知識完成項目所鍛煉的能力完成項目所鍛煉的能力1. 會選擇合適會選擇合適I/O端口作為輸出腳。端口作為輸出腳。2.會使用適當(dāng)循環(huán)語句完成循環(huán)功能會使用適當(dāng)循環(huán)語句完成循環(huán)功能3.會選擇合適的

2、定時器并選用合適的定時器工作方式會選擇合適的定時器并選用合適的定時器工作方式一 流水燈項目學(xué)習(xí)要求案例引入預(yù)備知識講解電子實物制作與檢測參考與消化示例程序并完成項目程序總結(jié)與提高 學(xué)習(xí)指南 二 案例引入 通電時,從最左邊的第通電時,從最左邊的第1盞燈先亮,然后熄滅,再第盞燈先亮,然后熄滅,再第2盞燈亮,盞燈亮,再滅,按此方式直到第再滅,按此方式直到第8盞燈。一個輪回后繼續(xù)重復(fù)上一輪回一直盞燈。一個輪回后繼續(xù)重復(fù)上一輪回一直如此工作下去直到斷電。如此工作下去直到斷電。實物照片實物照片三 任務(wù)二知識講解 1.認(rèn)識單片機認(rèn)識單片機4個端口個端口 MCS-51單片機共有單片機共有4個雙向的個雙向的8位

3、位I/O口口P0P3,P0口負(fù)載能力為口負(fù)載能力為8個個TTL電路,電路,P1、P2、P3口負(fù)載能力為口負(fù)載能力為4個個TTL電路。電路。(1)P0口口 輸出驅(qū)動電路由于上下兩只場效應(yīng)管,因而負(fù)載能力較強,輸出驅(qū)動電路由于上下兩只場效應(yīng)管,因而負(fù)載能力較強,能以吸收電流的方式驅(qū)動能以吸收電流的方式驅(qū)動8個個TTL輸入負(fù)載。輸入負(fù)載。 (2)P1口、口、 P2口、口、 P3口、口、能以吸收或輸出電流的的方式驅(qū)動能以吸收或輸出電流的的方式驅(qū)動4個個LS型的型的 TTL負(fù)載。負(fù)載。 200200200200200200200200+-J2J12.流水燈亮滅原理流水燈亮滅原理原理原理 LED燈是個發(fā)光

4、的二極管,二極管兩端加一個電壓差并流過一定的電流二極管就會發(fā)光。電流方向電流方向 四 任務(wù)三 項目設(shè)計要求 運用運用AT89S51單片機為控制器,設(shè)計對單片機為控制器,設(shè)計對LED發(fā)發(fā)光二極管的顯示花樣控制,達(dá)到學(xué)習(xí)光二極管的顯示花樣控制,達(dá)到學(xué)習(xí)LED的控制方的控制方法的目的。法的目的。 (1)實現(xiàn)單只與八只)實現(xiàn)單只與八只LED發(fā)光二極管的閃爍控制發(fā)光二極管的閃爍控制(2)實現(xiàn)單只左(或右)移流水燈控制)實現(xiàn)單只左(或右)移流水燈控制(3)實現(xiàn)單只左右來回跑的流水燈控制)實現(xiàn)單只左右來回跑的流水燈控制(4)實現(xiàn)由內(nèi)向外開花效果的流水燈控制)實現(xiàn)由內(nèi)向外開花效果的流水燈控制(5)實現(xiàn)由外向內(nèi)

5、收的流水燈效果控制)實現(xiàn)由外向內(nèi)收的流水燈效果控制1.效果圖(1).單只閃爍:(2).八只閃爍:(3).單只左移流燈:(4).單只右移流水燈:(5).單只左右來回跑的流水燈:(6).由內(nèi)向外開花效果的流水燈:(7).由外向里收花效果的流水燈:(8).由外向內(nèi)再由內(nèi)向外效果的流水燈:2.項目設(shè)計項目設(shè)計1.以AT89S51單片機為核心芯片,通過控制LED的各式花樣亮滅不。2.電路圖1頭文件頭文件 #include 2主函數(shù)主函數(shù) main() 初始化語句 While(1) /重復(fù)執(zhí)行的死循環(huán) 循環(huán)體語句 五 任務(wù)四 控制程序基本框架AT89X51.h reg52.h主程序:主程序:main()

6、main這個主程序名不能隨便取,只能是main,并且一個系統(tǒng)中只能有一個 五 任務(wù)六 程序設(shè)計思路開始 初始化 重復(fù)執(zhí)行活動1:單只閃爍控制單只閃爍控制1.1 產(chǎn)生效果的控制信號分析產(chǎn)生效果的控制信號分析 1.1.1 單片機輸出控制電平信號 由電路圖知,發(fā)光二極管的陽極接電源,陰極接單片機P10引腳。由二極管的單向?qū)ㄌ匦灾?,只有?dāng)單片機只有當(dāng)單片機P10引腳輸出低電平引腳輸出低電平0時,二極管的時,二極管的導(dǎo)通,亮導(dǎo)通,亮;當(dāng)單片機;當(dāng)單片機P10引腳輸出高電平引腳輸出高電平1時,二時,二極管的極管的截止,滅截止,滅。1.1.2 人的視覺信號 由于人眼對事物變化的反映有一個經(jīng)大腦神經(jīng)處理的時

7、間,稱為視覺暫留。因此不論LED燈是亮,還是滅的保持時間一定要大于視覺暫留時間,我們才能看見LED變化的效果。這個視覺暫留的時間一般要大于60ms。結(jié)論:結(jié)論:只要同一個控制端有兩個及以上的不同信號輸只要同一個控制端有兩個及以上的不同信號輸出時,一定要在信號間插入一個穩(wěn)定時間(延時)出時,一定要在信號間插入一個穩(wěn)定時間(延時)。1.2 程序控制思路分析程序控制思路分析 選用單片機的P1端口8只引腳作為輸出腳,1只引腳控制1只LED燈。設(shè)置P1_0腳為低電平,使得第1只LED燈點亮,并延時一點時間,然后設(shè)置P1_0腳為高電平,熄滅第1只LED程序代碼:P1_0 = 0; /設(shè)P1.0口為低電平,

8、點亮LEDfor (a=0; a10000; a+); /10000次空循環(huán),相當(dāng)于延時時間P1_0 = 1; /設(shè)P1.0口為高電平,熄滅LEfor (a=0; a10000; a+) ; 1.3 完整程序展示完整程序展示#include /預(yù)處理命令 void main(void) /主函數(shù)名unsigned int a; /定義變量a為int類型do for (a=0; a10000; a+)/10000次空循環(huán),相當(dāng)于延時時間 ; P1_0 = 0; /設(shè)P1.0口為低電平,點亮LEDfor (a=0; a10000; a+) /10000次空循環(huán),相當(dāng)于延時時間 ; P1_0 = 1

9、; /設(shè)P1.0口為高電平,熄滅LEDfor (a=0; a10000; a+)/10000次空循環(huán),相當(dāng)于延時時間 while(1);do.while(1)循環(huán)控制程序運行不息保證流水燈持續(xù)亮滅do.while(1)循環(huán)控制改用while(1)結(jié)構(gòu)#include /預(yù)處理命令 void main(void) /主函數(shù)名 unsigned int a; /定義變量a為int類型 while(1) for (a=0; a10000; a+); / 10000次空循環(huán),相當(dāng)于延時時間 P1_0 = 0; /設(shè)P1.0口為低電平,點亮LED for (a=0; a10000; a+); P1_0

10、= 1; /設(shè)P1.0口為高電平,熄滅LED for (a=0; a10000; a+); 活動2:8只只LED閃爍控制閃爍控制2.1 控制思路分析1. 給控制端口整體送亮或滅控制號2. 由于是給同一個端口送兩個不同的信號,人眼能觀察到效果的變化,必需保證每一種效果保持30ms以上的時間,因比本控制必需在兩個信號間插入一個大于30ms以上的延時處理.2.2 程序控制流程圖2.3 源程序 #include /頭文件引用 (還可以用reg51.h) void main(void) /主主函數(shù)名 unsigned int a; /定義變量a為int類型 while(1) /重重復(fù)執(zhí)行(死循環(huán))控制語

11、句 for (a=0; a10000; a+) ; P1 = 0 x00; /P1亮 P1=0000 0000; for (a=0; a10000; a+) ; P1 = 0 xff ; /P1滅P1=1111 1111; 活動3:單只左移流燈效果單只左移流燈效果 3.1控制信號分析 從效果圖知,8位控制信號中,有一位是亮信號,7位是滅信號,一個周期有8組信號。又根據(jù)電路連接知端口送低電平是亮,高電平是滅,得8組控制信號是: 3.2 程序流程圖3.3 程序代碼3.3.1 左移流水控制基本程序#include void main() unsigned int a; /定義變量定義變量a為為int

12、類型類型 while(1) for (a=0; a10000; a+) ;/10000次空循環(huán),相當(dāng)于延時時間次空循環(huán),相當(dāng)于延時時間 P1 = 0 xfe; /信號信號0 for (a=0; a10000; a+); P1 = 0 xfd; /信號信號1 for (a=0; a10000; a+); P1 = 0 xfb; /信號信號2 for (a=0; a10000; a+); P1 = 0 xf7; /信號信號3 for (a=0; a10000; a+); P1 = 0 xef; /信號信號4 for (a=0; a10000; a+); P1 = 0 xdf; /信號信號5 for

13、 (a=0; a10000; a+); P1 = 0 xbf; /信號信號6 for (a=0; a10000; a+); P1 = 0 x7f; /信號信號7 3.3.2 左移流水控制優(yōu)化程序 從上面的基本程序可以看出,給同一端口P1輸出8個不同的信號,采用順序執(zhí)行,程序顯得長,臃腫,造成單片機的ROM空間浪費,因此需進(jìn)行優(yōu)化。 基本程序的核心動作是重復(fù)執(zhí)行: 延時、輸出信號這兩步延時、輸出信號這兩步改進(jìn)方法:1.用for(i=0;i8;i+)語句控制重復(fù)輸出信號的遍數(shù)2.8個不同信號的可以有兩種方式得到。方式一,用數(shù)組。方式二用計算方法一控制信號用數(shù)組來優(yōu)化的程序方法一控制信號用數(shù)組來優(yōu)化

14、的程序 #include /預(yù)處理命令預(yù)處理命令 unsigned char const tab =0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f; /將數(shù)組保存到單片機的將數(shù)組保存到單片機的ROM程序存儲區(qū)程序存儲區(qū) /*主函數(shù)主函數(shù)void main(void) /主函數(shù)名主函數(shù)名 unsigned char i; unsigned int a; while(1) for(i=0;i8;i+) /信號數(shù)信號數(shù) for(a=0;a10000;a+); /延時延時 P1=tabi; /將數(shù)組將數(shù)組tab中的元素依次取出中的元素依次取出, 從從P1

15、送出口送出口 方法二方法二 控制信號用計算來優(yōu)化程序控制信號用計算來優(yōu)化程序/*接到接到P1口上口上0到到7位的位的8只只LED燈依次點亮燈依次點亮 (左移流水燈左移流水燈)*/P1.0亮亮 0 xfe=11111110/P1.1亮亮 0 xfd=11111101/P1.2亮亮 0 xfb=11111011/P1.3亮亮 0 xf7=11110111/P1.4亮亮 0 xef=11101111/P1.5亮亮 0 xdf=11011111/P1.6亮亮 0 xbf=10111111/P1.7亮亮 0 x7f=01111111#include /預(yù)處理命令預(yù)處理命令 #include /含移位函數(shù)

16、的頭文件含移位函數(shù)的頭文件/*主函數(shù)主函數(shù)void main(void) /主函數(shù)名主函數(shù)名unsigned char i; unsigned int a; P1=0 xfe ;/設(shè)設(shè)P1口初值也就是口初值也就是P1.0上的上的LED亮亮while(1) for(i=0;i8;i+) /信號數(shù)信號數(shù) for(a=0;a10000;a+); /延時延時 P1=_corl_(P1,1) /將將P1的值循環(huán)左移一位后的值循環(huán)左移一位后,從從P1送出口送出口 送一個信號的控制命令語句送一個信號的控制命令語句4.3.3.3 關(guān)于循環(huán)左移關(guān)于循環(huán)左移_corl_函數(shù)函數(shù) 設(shè)P1=11111110 執(zhí)行一次

17、_corl_(P1,1)后 , P1的值左邊高位移到右邊低位,右邊低位則向左邊高位移動1位。 P1=_corl_(P1,1)=111111014.3.3.4 關(guān)于延時語句函數(shù)化 unsigned int x for(a=0;a10000;a+); /延時 這個軟件延時大約是10ms,對于一個程序有多個不時延時要求是,這個控制語句就不合適,同時為減少代碼的重疊,改用函數(shù)開形式。#include /預(yù)處理命令 #include /含移位函數(shù)的頭文件 /*delay函數(shù)能延時 Xms* void delay(unsigned int x) unsigned int i; for(;x0;x-) /下

18、面的1ms延時語句執(zhí)行X遍 for(i=125;i0;i-);/大約延時1ms #include /預(yù)處理命令 #include /含移位函數(shù)的頭文件/*delay函數(shù)能延時 Xms* void delay(unsigned int x) unsigned int i; for(;x0;x-) /下面的1ms延時語句執(zhí)行X遍 for(i=125;i0;i-);/大約延時1ms /*主函數(shù)void main(void) /主函數(shù)名 unsigned char i; P1=0 xfe ; /設(shè)P1口初值 while(1) for(i=0;i8;i+) delay(1000); /延時 1S P1=

19、_crol_(P1,1); /將P1的值循環(huán)左移一位/后,從P1送出口 4.4單只右移流水燈單只右移流水燈 這個效果與單只左移流水燈的控制思路基本一樣,只需將循環(huán)左移函數(shù)_crol_ 改為循環(huán)右移函數(shù)_cror_ 。 P1口初值改為0 x7f即可。4.4.1 單只右移流水燈程序單只右移流水燈程序#include /預(yù)處理命令 #include /含移位函數(shù)的頭文件/*delay函數(shù)能延時 Xms* void delay(unsigned int x) unsigned int i; for(;x0;x-) /下面的1ms延時語句執(zhí)行X遍 for(i=125;i0;i-);/大約延時1ms /*

20、主函數(shù)void main(void) /主函數(shù)名 unsigned char i; P1=0 x7f ; /設(shè)P1口初值 while(1) for(i=0;i8;i+) delay(1000); /延時 1S P1=_cror_(P1,1); /將P1的值循環(huán)右移一位 /后,從P1送出口 4.5 單只左右來回跑的流水燈4.5.1 程序流程控制分析程序流程控制分析這個效果實際上就是左移流水效果與右移流水效果的組合,因此控制思路是內(nèi)循環(huán)中先控制左移,當(dāng)左移到最后一個時,改右移;當(dāng)右移到最右一個時,重復(fù)左移。4.5.2 程序流程圖一程序流程圖一信號數(shù)作控制量信號數(shù)作控制量4.5.3 程序設(shè)計程序設(shè)計

21、請根據(jù)流程分析,結(jié)合左移與右移流水燈請根據(jù)流程分析,結(jié)合左移與右移流水燈,寫出本效果程序。寫出本效果程序。五五:運用單片機定時功能來實現(xiàn)精準(zhǔn)的定時運用單片機定時功能來實現(xiàn)精準(zhǔn)的定時 5.1 單片機內(nèi)部定時資源單片機內(nèi)部定時資源 1. MCS-51單片機內(nèi)部有兩個16位的定時/計數(shù)器T0、T1。 2.T0與T1的結(jié)構(gòu)完全相同。 3.一次定時的最長時間,有四種模式選擇。 4.控制模式選擇是通過定時/計數(shù)器工作方式控制寄存器TMOD的設(shè)置確定。5.2 TMOD控制寄存器控制寄存器C/T1,為計數(shù)器方式;CT0,為定時器方式。重點重點M1M2M1M2兩位的取值決定定兩位的取值決定定時器的工作方式!時器

22、的工作方式!問題:13位計數(shù)器最多能計多大的數(shù)?答案:81925.3 單片機的定時機制 當(dāng)定時計數(shù)器TH0、TL0計到最大值后,再計一個數(shù)就歸0,此時由硬件發(fā)一個溢出標(biāo)志信號,設(shè)TF0標(biāo)志位為1。通過軟件編程檢查TF0位是否為1就能知道定時到了沒有?;蛘邌⒂弥袛喙δ埽屜到y(tǒng)自動發(fā)現(xiàn)一次定時到,轉(zhuǎn)去作規(guī)定處理。5.4 啟動定時功能的步驟啟動定時功能的步驟1.在在TMOD寄存器中設(shè)置定時、工作方式。寄存器中設(shè)置定時、工作方式。 例:設(shè)例:設(shè)T0定時在工作方式定時在工作方式1下,則有下,則有C/T=0,M1M0=01 控制語句: TMOD=0 x01;2.設(shè)一次的定時時間,給設(shè)一次的定時時間,給T0定時器的計數(shù)器定時器的計數(shù)器TH0、TL0賦初值。賦初值。(TH0為計數(shù)器高8位,TL0為計數(shù)器低8位 )1)內(nèi)部時鐘周期的大小與系統(tǒng)使用晶振的頻率有關(guān)。內(nèi)部時鐘周期的大小與系統(tǒng)使用晶振的頻率有關(guān)。 內(nèi)部時鐘周期定義為單片機工作的機器周期機器周期T 單片機定義:單片機定義: 2) TH0、TL0初值設(shè)置 當(dāng)系統(tǒng)作用12MHz的晶振時,定時器工作在方式1下的一次最大定時時間是65536us,或65.536ms。此時計數(shù)TH0、TL0是從0一直計到65535。 3)由于 1ms=1000us 、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論