綜合電子設計與實踐-趙云偉課件例3:流水燈學習資料_第1頁
綜合電子設計與實踐-趙云偉課件例3:流水燈學習資料_第2頁
綜合電子設計與實踐-趙云偉課件例3:流水燈學習資料_第3頁
綜合電子設計與實踐-趙云偉課件例3:流水燈學習資料_第4頁
綜合電子設計與實踐-趙云偉課件例3:流水燈學習資料_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

例3:流水燈(課本5.4.2)實驗目的:

8個LED分別對應單片機P0.0~P0.7口,I/O口為低電平時,LED亮,I/O口為高電平時LED滅,通過編寫程序將8個LED從右至左,依次點亮,并重復循環(huán)。編程思路:

8個I/O口組成一個字節(jié),想讓8個I/O口依此被點亮,可以直接對P0口進行字節(jié)操作:依此點亮各盞燈:點亮第1盞:P0=11111110;(P0=0XFE)點亮第2盞:P0=11111101;點亮第3盞:P0=11111011;點亮第4盞:P0=11110111;點亮第5盞:P0=11101111;點亮第6盞:P0=11011111;點亮第7盞:P0=10111111;點亮第8盞:P0=01111111;

將0依此左移左移位指令出現(xiàn)問題:點亮第1盞:P0=11111110;點亮第2盞:P0=11111100;依次左移一位空白位補零,這樣的話就會使第1、2盞燈同時亮。以下同理,無法達到實驗目的。改進:點亮第1盞:P0=~(00000001);點亮第2盞:P0=~(00000010);點亮第3盞:P0=~(00000100);點亮第4盞:P0=~(00001000);點亮第5盞:P0=~(00010000);點亮第6盞:P0=~(00100000);點亮第7盞:P0=~(01000000);點亮第8盞:P0=~(10000000);

P0=11111110;P0=11111101;P0=11111011;P0=11110111;P0=11101111;P0=11011111;P0=10111111;P0=01111111;即經(jīng)過改進后:點亮第1盞:P0=~(00000001);然后左移一位:可以點亮第2盞:P0=~(00000010);以下同理,能夠實現(xiàn)實驗目的。思考:通過什么語句實現(xiàn)該功能?點亮第1盞:P0=~(00000001);//初始讓P0=~(0X01);點亮第2盞:P0=~(00000010);//將初始值左移1位點亮第2盞點亮第3盞:P0=~(00000100);//將初始值左移2位點亮第3盞點亮第4盞:P0=~(00001000);//將初始值左移3位點亮第4盞點亮第5盞:P0=~(00010000);//將初始值左移4位點亮第5盞點亮第6盞:P0=~(00100000);//將初始值左移5位點亮第6盞點亮第7盞:P0=~(01000000);//將初始值左移6位點亮第7盞點亮第8盞:P0=~(10000000);//將初始值左移7位點亮第8盞引入一個變量j,用該變量表示左移了多少位。變量j初始值為0,每點亮一盞燈,j自增1,左移位數(shù)增加1,于是編程如下:j=0;P0=~(0x01<<j++);j=0;P0=~(0X01<<j++);j=0時,P0=~(00000001);之后j++j=1時,P0=~(00000010);之后j++j=2時,P0=~(00000100);之后j++j=3時,P0=~(00001000);之后j++j=4時,P0=~(00010000);之后j++j=5時,P0=~(00100000);之后j++j=6時,P0=~(01000000);之后j++j=7時,P0=~(10000000);之后j++j=8時,需重新循環(huán),故讓j=0;編程思路:uint8j=0;//先給j賦初值,以便從第一盞燈開始點亮while(1){ P0=~(0X01<<j++);

for(i=0;i<30000;i++);//延時

if(j==8) j=0;}

#include<reg52.h>typedefunsignedintuint16;sbitENLED=P1^4;\\特殊功能位聲明sbitA0=P1^0;sbitA1=P1^1;sbitA2=P1^2;sbitE3=P1^3;main(){

uint16i;\\對變量的定義要寫在第一行

uint16j=0;ENLED=0;\\使能38譯碼器

E3=1;A2=1;\\讓LEDS6端為低電平,從而使各LED陽極均為高電平

A1=1;A0=0;

while(1){ P0=~(0X01<<j++);

for(i=0;i<30000;i++);//延時

if(j==8)//判斷,當j=8時,從第一盞開始重新點亮各小燈

j=0;}}作業(yè):編寫程序使得流水燈自左向右依此被點亮。#include<reg52.h>sbitA2=P1^2;sbitA1=P1^1;sbitA0=P1^0;sbitE3=P1^3;sbitENLED=P1^4;main(){unsignedchari=0; unsignedcharj=0; unsignedintk; E3=1; ENLED=0;

A2=1;A1=1;A0=0; while(1) { P0=~(0X01<<j++);

溫馨提示

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

評論

0/150

提交評論