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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

8、點(diǎn)亮LEDfor (a=0; a10000; a+); /10000次空循環(huán),相當(dāng)于延時(shí)時(shí)間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)于延時(shí)時(shí)間 ; P1_0 = 0; /設(shè)P1.0口為低電平,點(diǎn)亮LEDfor (a=0; a10000; a+) /10000次空循環(huán),相當(dāng)于延時(shí)時(shí)間 ; P1_0 = 1

9、; /設(shè)P1.0口為高電平,熄滅LEDfor (a=0; a10000; a+)/10000次空循環(huán),相當(dāng)于延時(shí)時(shí)間 while(1);do.while(1)循環(huán)控制程序運(yù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)于延時(shí)時(shí)間 P1_0 = 0; /設(shè)P1.0口為低電平,點(diǎn)亮LED for (a=0; a10000; a+); P1_0

10、= 1; /設(shè)P1.0口為高電平,熄滅LED for (a=0; a10000; a+); 活動(dòng)2:8只只LED閃爍控制閃爍控制2.1 控制思路分析1. 給控制端口整體送亮或滅控制號(hào)2. 由于是給同一個(gè)端口送兩個(gè)不同的信號(hào),人眼能觀察到效果的變化,必需保證每一種效果保持30ms以上的時(shí)間,因比本控制必需在兩個(gè)信號(hào)間插入一個(gè)大于30ms以上的延時(shí)處理.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; 活動(dòng)3:單只左移流燈效果單只左移流燈效果 3.1控制信號(hào)分析 從效果圖知,8位控制信號(hào)中,有一位是亮信號(hào),7位是滅信號(hào),一個(gè)周期有8組信號(hào)。又根據(jù)電路連接知端口送低電平是亮,高電平是滅,得8組控制信號(hào)是: 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)于延時(shí)時(shí)間次空循環(huán),相當(dāng)于延時(shí)時(shí)間 P1 = 0 xfe; /信號(hào)信號(hào)0 for (a=0; a10000; a+); P1 = 0 xfd; /信號(hào)信號(hào)1 for (a=0; a10000; a+); P1 = 0 xfb; /信號(hào)信號(hào)2 for (a=0; a10000; a+); P1 = 0 xf7; /信號(hào)信號(hào)3 for (a=0; a10000; a+); P1 = 0 xef; /信號(hào)信號(hào)4 for (a=0; a10000; a+); P1 = 0 xdf; /信號(hào)信號(hào)5 for

13、 (a=0; a10000; a+); P1 = 0 xbf; /信號(hào)信號(hào)6 for (a=0; a10000; a+); P1 = 0 x7f; /信號(hào)信號(hào)7 3.3.2 左移流水控制優(yōu)化程序 從上面的基本程序可以看出,給同一端口P1輸出8個(gè)不同的信號(hào),采用順序執(zhí)行,程序顯得長,臃腫,造成單片機(jī)的ROM空間浪費(fèi),因此需進(jìn)行優(yōu)化。 基本程序的核心動(dòng)作是重復(fù)執(zhí)行: 延時(shí)、輸出信號(hào)這兩步延時(shí)、輸出信號(hào)這兩步改進(jìn)方法:1.用for(i=0;i8;i+)語句控制重復(fù)輸出信號(hào)的遍數(shù)2.8個(gè)不同信號(hào)的可以有兩種方式得到。方式一,用數(shù)組。方式二用計(jì)算方法一控制信號(hào)用數(shù)組來優(yōu)化的程序方法一控制信號(hào)用數(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ù)組保存到單片機(jī)的將數(shù)組保存到單片機(jī)的ROM程序存儲(chǔ)區(qū)程序存儲(chǔ)區(qū) /*主函數(shù)主函數(shù)void main(void) /主函數(shù)名主函數(shù)名 unsigned char i; unsigned int a; while(1) for(i=0;i8;i+) /信號(hào)數(shù)信號(hào)數(shù) for(a=0;a10000;a+); /延時(shí)延時(shí) P1=tabi; /將數(shù)組將數(shù)組tab中的元素依次取出中的元素依次取出, 從從P1

15、送出口送出口 方法二方法二 控制信號(hào)用計(jì)算來優(yōu)化程序控制信號(hào)用計(jì)算來優(yōu)化程序/*接到接到P1口上口上0到到7位的位的8只只LED燈依次點(diǎn)亮燈依次點(diǎn)亮 (左移流水燈左移流水燈)*/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+) /信號(hào)數(shù)信號(hào)數(shù) for(a=0;a10000;a+); /延時(shí)延時(shí) P1=_corl_(P1,1) /將將P1的值循環(huán)左移一位后的值循環(huán)左移一位后,從從P1送出口送出口 送一個(gè)信號(hào)的控制命令語句送一個(gè)信號(hào)的控制命令語句4.3.3.3 關(guān)于循環(huán)左移關(guān)于循環(huán)左移_corl_函數(shù)函數(shù) 設(shè)P1=11111110 執(zhí)行一次

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

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論