單片機應(yīng)用技術(shù)-基于STC15系列單片機 課件 3.1開關(guān)控制LED燈顯示_第1頁
單片機應(yīng)用技術(shù)-基于STC15系列單片機 課件 3.1開關(guān)控制LED燈顯示_第2頁
單片機應(yīng)用技術(shù)-基于STC15系列單片機 課件 3.1開關(guān)控制LED燈顯示_第3頁
單片機應(yīng)用技術(shù)-基于STC15系列單片機 課件 3.1開關(guān)控制LED燈顯示_第4頁
單片機應(yīng)用技術(shù)-基于STC15系列單片機 課件 3.1開關(guān)控制LED燈顯示_第5頁
已閱讀5頁,還剩58頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機C語言程序設(shè)計項目搶答器的實現(xiàn)搶答器的實現(xiàn)任務(wù)目錄任務(wù)一開關(guān)控制LED燈顯示任務(wù)二數(shù)碼管顯示按鍵按下次數(shù)任務(wù)三多路搶答器的實現(xiàn)開關(guān)控制LED燈顯示任務(wù)介紹開關(guān)閉合,8個LED燈依次點亮,實現(xiàn)流水燈效果;開關(guān)斷開,8個LED燈全亮。硬件電路單片機最小系統(tǒng)電路、8個LED燈電路、開關(guān)電路軟件設(shè)計雙分支結(jié)構(gòu)實現(xiàn)程序,識別閉合時,實現(xiàn)流水燈;否則,8個LED全部點亮。開關(guān)控制LED燈顯示1順序結(jié)構(gòu)程序設(shè)計2選擇結(jié)構(gòu)程序設(shè)計3循環(huán)結(jié)構(gòu)程序設(shè)計4函數(shù)、數(shù)組主要內(nèi)容5按鍵、數(shù)碼管順序結(jié)構(gòu)程序設(shè)計AB按照程序中語句書寫的順序從上到下一條一條依次執(zhí)行概念任務(wù)分析首先點亮D1,保持一段時間后,熄滅D1,點亮D2,保持一段時間后,熄滅D2,點亮D3……依次類推,直到點亮D8,然后停止流水燈效果流水燈電路序號名稱Proteus中元件名參數(shù)數(shù)量1單片機STC15W4K32S412LED燈LED-RED

83排阻RX81K1流水燈控制原理端口的控制電平為低,LED燈亮;端口的控制電平為高,LED燈滅端口數(shù)據(jù)D8D7D6D5D4D3D2D1狀態(tài)1滅滅滅滅滅滅滅亮端口數(shù)據(jù):0XFE11111110狀態(tài)2滅滅滅滅滅滅亮滅端口數(shù)據(jù):0XFD11111101狀態(tài)3滅滅滅滅滅亮滅滅端口數(shù)據(jù):0XFB11111011流水燈程序設(shè)計端口數(shù)據(jù)D8D7D6D5D4D3D2D10xfe滅滅滅滅滅滅滅亮0xfd滅滅滅滅滅滅亮滅0xfb滅滅滅滅滅亮滅滅0xf7滅滅滅滅亮滅滅滅0xef滅滅滅亮滅滅滅滅0xdf滅滅亮滅滅滅滅滅0xbf滅亮滅滅滅滅滅滅0x7f亮滅滅滅滅滅滅滅通過賦值語句分8次將數(shù)據(jù)依次輸出到P1口流水燈程序設(shè)計P1=0XFE…………延時P1=0XFD延時voidmain() {P1M0=0X00;P1M1=0X00;while(1){

P1=0xfe;

delay_nms(1000);

P1=0xfd; delay_nms(1000);

P1=0xfb; delay_nms(1000);

P1=0xf7; delay_nms(1000);

P1=0xef; delay_nms(1000);

P1=0xdf; delay_nms(1000);

P1=0xbf; delay_nms(1000);

P1=0x7f; delay_nms(1000); }}主函數(shù)賦值語句函數(shù)調(diào)用語句P1=0X7F延時流水燈工作的原理、設(shè)計流程、源程序51單片機順序結(jié)構(gòu)程序設(shè)計的原理和方法小結(jié)if語句if–else語句

選擇語句選擇結(jié)構(gòu)程序設(shè)計開關(guān)控制燈序號名稱Proteus中元件名參數(shù)數(shù)量1單片機STC15W4K32S412LED燈LED-RED

13排阻RX81K14按鍵button1選擇結(jié)構(gòu)程序設(shè)計LED燈開關(guān)原理按鍵按下時,P3.2=0按鍵松開時,P3.2=1P1=0xFFP1=0x00LED開關(guān)程序設(shè)計if(表達式)語句語句YN表達式條件:判斷P3.2電平的高低狀態(tài)執(zhí)行語句:P1輸出高低電平LED開關(guān)程序設(shè)計#include<stc15.h>sbitSW=P3^2voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;P1=0X00; while(1) { if(SW==0)P1=0xff; if(SW==1)P1=0X00; }}確定燈初始為亮循環(huán)判斷操作關(guān)系運算符==而非賦值運算符=sbitSW=P3^2LED開關(guān)程序設(shè)計if(表達式)語句1else

語句2P1=0x00P1=0xff高低P3.2語句1語句2真假表達式LED開關(guān)程序設(shè)計#include<stc15.h>sbitSW=P3^2voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;P1=0X00; while(1) { if(SW==0)P1=0xff; elseP1=0X00; }}雙分支if-else語句LED開關(guān)的工作原理51單片機分支結(jié)構(gòu)程序設(shè)計小結(jié)If語句和if-else語句實現(xiàn)了LED開關(guān)國家法律、國家利益、人民利益高于一切。我們不僅要學(xué)好專業(yè)知識,有高超的專業(yè)技術(shù)能力,設(shè)計出高質(zhì)量的產(chǎn)品,還要具有強烈的法制意識,高尚的職業(yè)道德,良好的技術(shù)操守,為我們的國家我們的社會貢獻自己的力量。if–elseif-else語句switch語句

選擇語句多分支結(jié)構(gòu)程序設(shè)計開關(guān)控制燈序號名稱Proteus中元件名參數(shù)數(shù)量1單片機STC15W4K32S412LED燈LED-RED

43排阻RX81K14按鍵button4多分支語句if(表達式1)語句1elseif(表達式2)語句2…………elseif(表達式n)語句nelse語句n+1條件是按鍵引腳上電平的高低,語句i是LED引腳上輸出高低電平LED開關(guān)分析要求:4個按鍵對應(yīng)4個指示燈,S1按下,僅D1亮,S2按下,僅D2亮,S3按下,僅D3亮,S4按下,僅D4亮,其他情況,燈全滅。LED開關(guān)分析要求:4個按鍵對應(yīng)4個指示燈,S1按下,僅D1亮,S2按下,僅D2亮,S3按下,僅D3亮,S4按下,僅D4亮,其他情況,燈全滅。(P34==0)&&(P35==1)&&(P36==1)&&(P37==1)(P34==1)&&(P35==0)&&(P36==1)&&(P37==1){D1=0;D2=1;D3=1;D4=1;}{D1=1;D2=0;D3=1;D4=1;}4個LED開關(guān)程序設(shè)計#defineD1P10#defineD2P11#defineD3P12#defineD4P13#defineS1P34#defineS2P35#defineS3P36#defineS4P37

voidmain(){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;D1=1;D2=1;D3=1;D4=1;while(1){

if((S1==0)&&(S2==1)&&(S3==1)&&(S4==1)){D1=0;D2=1;D3=1;D4=1;}

elseif((S1==1)&&(S2==0)&&(S3==1)&&(S4==1)){D1=1;D2=0;D3=1;D4=1;} elseif((S1==1)&&(S2==1)&&(S3==0)&&(S4==1)){D1=1;D2=1;D3=0;D4=1;}

elseif((S1==1)&&(S2==1)&&(S3==1)&&(S4==0)){D1=1;D2=1;D3=1;D4=0;}else{D1=1;D2=1;D3=1;D4=1;}}}復(fù)合語句關(guān)系運算符==邏輯運算符&&多分支語句switch(表達式){case常量表達式1:[語句組1][break;]case常量表達式2:[語句組2][break;]

……

…case常量表達式n:[語句組n][break;][default:語句組n+1]}執(zhí)行過程:先計算表達式的值,然后依次與每一個case中的常量表達式的值進行比較,若有相等的,則從該case開始依次往下執(zhí)行,若沒有相等的,則從default開始往下執(zhí)行。條件算法分析(P3^4==0)&&(P3^5==1)&&(P3^6==1)&&(P3^7==1)(P3^4==1)&&(P3^5==0)&&(P3^6==1)&&(P3^7==1)(P3^4==0)&&(P3^5==1)&&(P3^6==1)&&(P3^7==1)(P3^4==1)&&(P3^5==0)&&(P3^6==1)&&(P3^7==1)P3端口:需要保留位“&”上1,不需保留的“&”上0即P3&二進制數(shù)11110000即P3&0xf0位與常量值計算P3口P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0&0xf011110000S1按下:0xe011100000S2按下:0xd011010000S3按下:0xb010110000S4按下:0x7001110000S1S2S3S4S1S2按下:0xc011000000S1-S4按下:0x00000000004個LED開關(guān)程序設(shè)計#include<stc15.h>voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break;//點亮D1 case0xd0:P1=0xfd;break;//點亮D2 case0xb0:P1=0xfb;break;//點亮D3 case0x70:P1=0xf7;break;//點亮D4default:P1=0xff;//否則滅燈} } }存放開關(guān)S4~S1的狀態(tài)if-elseif-else語句實現(xiàn)了4路開關(guān)LED51單片機多分支結(jié)構(gòu)程序設(shè)計小結(jié)switch語句實現(xiàn)了4路開關(guān)LED#include<stc15.h>voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break;//點亮D1 case0xd0:P1=0xfd;break;//點亮D2 case0xb0:P1=0xfb;break;//點亮D3 case0x70:P1=0xf7;break;//點亮D4default:P1=0xff;} } }while(1)無限循環(huán)實例循環(huán)結(jié)構(gòu)程序設(shè)計1while語句2do-while語句

3for語句

循環(huán)語句循環(huán)結(jié)構(gòu)程序設(shè)計while(表達式){

循環(huán)體語句}循環(huán)體真假表達式voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break; case0xd0:P1=0xfd;break; case0xb0:P1=0xfb;break; case0x70:P1=0xf7;break;default:P1=0xff;} } }循環(huán)結(jié)構(gòu)程序設(shè)計do{

循環(huán)體語句}while(表達式);voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;

do{ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break; case0xd0:P1=0xfd;break; case0xb0:P1=0xfb;break; case0x70:P1=0xf7;break;default:P1=0xff;} }while(1);

}循環(huán)結(jié)構(gòu)之延時函數(shù)/*延時函數(shù)*/voiddelay_ms(unsignedintms){unsignedinti;

do{ i=MAIN_Fosc/13000;

while(--i);}while(--ms);}#defineMAIN_Fosc 11059200L //定義主時鐘循環(huán)執(zhí)行i次空操作“;”循環(huán)次數(shù)i值的計算i是估算值,時間不精準for語句for(表達式1;表達式2;表達式3){

循環(huán)體語句}YN

表達式2

表達式3

表達式1

循環(huán)體for(i=0;i<10;i++){

循環(huán)體語句}voiddelay_ms(unsignedintms){;;;;}voidmain() {

P1=0xfe;

delay(20000);

P1=0xfd; delay(20000);

P1=0xfb; delay(20000);

P1=0xf7; delay(20000);

P1=0xef; delay(20000);

P1=0xdf; delay(20000);

P1=0xbf; delay(20000);

P1=0x7f; delay(20000);

while(1); //結(jié)束}流水燈程序順序結(jié)構(gòu)順序結(jié)構(gòu)循環(huán)結(jié)構(gòu)設(shè)計流水燈程序8次P1=0XFE…………延時1秒P1=0XFD延時1秒P1=0X7F延時1秒P1=常數(shù)1…………延時1秒P1=常數(shù)2延時1秒P1=常數(shù)8延時1秒過程不變數(shù)據(jù)在變數(shù)據(jù)變量算法表示循環(huán)結(jié)構(gòu)設(shè)計流水燈程序“<<”運算端口數(shù)據(jù)1D7D6D5D4D3D2D10xfe111111100xfd111111010xfb111110110xf7111101110xef111011110xdf110111110xbf101111110x7f011111111111111011111100<<111111101+111111010<<111111011+1led=(led<<1)+1;循環(huán)結(jié)構(gòu)設(shè)計流水燈程序8次P1=常數(shù)1…………延時1秒P1=常數(shù)2延時1秒P1=常數(shù)8延時1秒滿8次嗎否是循環(huán)體語句組:P1=led;延時Led=(led<<1)+1;變量led賦初始值0xfe循環(huán)結(jié)構(gòu)設(shè)計流水燈程序voidmain() {unsignedchar i,led;P1M0=0x00;P1M1=0X00;while(1){

led=0xfe;

for(i=0;i<8;i++) { P1=led; delay_ms(1000); led=led<<1; led=led+1;

}}}外循環(huán)體內(nèi)循環(huán)體滿8次?否是循環(huán)體語句組:P1=led;延時Led=(led<<1)+1;變量賦初始值循環(huán)結(jié)構(gòu)之流水燈程序小結(jié)初始化循環(huán)控制循環(huán)體100%循環(huán)結(jié)構(gòu)程序設(shè)計魯迅先生說:偉大的成績和辛勤勞動是成正比例的,有一分勞動,就有一分收獲,日積月累,從少到多,奇跡就可以創(chuàng)造出來。voidmain() {unsigned

chari,led;

P1M0=0x00;P1M1=0X00;while(1){ led=0xfe; for(i=0;i<8;i++) {P1=led; delay(1000); led=led<<1; led=led+1;

}}}實例任務(wù)循環(huán)結(jié)構(gòu)實現(xiàn)流水燈庫函數(shù)標(biāo)準庫函數(shù)是由C51編譯器提供的,用戶可以直接調(diào)用,以頭文件的形式給出//STC15.HsfrP0=0x80;sbitP00=P0^0;sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitP04=P0^4;sbitP05=P0^5;sbitP06=P0^6;sbitP07=P0^7;intrins.h庫函數(shù)Intrins.h功能_cror_(v,n)將字符型數(shù)據(jù)向右環(huán)移若干位_crol_(v,n)將字符型數(shù)據(jù)向左環(huán)移若干位_iror_(v,n)將整形型數(shù)據(jù)向右環(huán)移若干位_irol_(v,n)將整形型數(shù)據(jù)向左環(huán)移若干位_lror_(v,n)將長整形型數(shù)據(jù)向右環(huán)移若干位_lrol_(v,n)將長整形型數(shù)據(jù)向左環(huán)移若干位_nop_()空操作,相當(dāng)于匯編語言中的NOPv為變量,n為移位的位數(shù)環(huán)移函數(shù)_crol_(led,1)環(huán)移是指數(shù)據(jù)在內(nèi)部進行循環(huán)移位,最高位和最低位不會丟棄也不會填01111111011111101

voidmain() {P1M0=0x00;P1M1=0X00;unsignedchar i,led;while(1){

led=0xfe;

for(i=0;i<8;i++)

{

P1=led;

delay_ms(1000); led=led<<1;led=led+1;} }}voidmain() {P1M0=0x00;P1M1=0X00;unsignedcharled;led=0xfe;while(1){

P1=led; delay_ms(1000); led=_crol_(led,1);}}庫函數(shù)intrins.h庫函數(shù)中的移位操作函數(shù)小結(jié)用庫函數(shù)中的環(huán)移函數(shù)設(shè)計了流水燈程序函數(shù)定義和調(diào)用

自定義函數(shù)是用戶根據(jù)需要自行編寫的函數(shù),它必須先定義再調(diào)用。voiddelay_ms(unsignedintms){unsignedinti;

do{ i=MAIN_Fosc/13000; while(--i);}while(--ms);}voidmain() {P1M0=0x00;P1M1=0X00;unsignedchari,led;led=0xfe;while(1){ P1=led; delay_nms(1000); led=_crol_(led,1);}}函數(shù)調(diào)用函數(shù)定義自定義函數(shù)voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);}while(--ms);}函數(shù)類型函數(shù)名(形式參數(shù)表){局部變量定義函數(shù)體語句return表達式;}自定義函數(shù)voidmove_left(unsignedcharval){unsignedchari;P1=val;for(i=0;i<8;i++) { delay_ms(1000); P1=_crol_(P1,1); }}voidmain(void){P1M0=0x00;P1M1=0X00;unsignedcharled;while(1){ led=0xfe;move_left(led);led=0x7f;move_right(led);}}設(shè)計2個函數(shù),函數(shù)功能是分別是流水燈D1~D8逐個移動和D8~D1逐個移動,在主函數(shù)中調(diào)用函數(shù),實現(xiàn)流水燈正反向反復(fù)流動。voidmove_right(unsignedcharval){unsignedchari;P1=val;for(i=0;i<8;i++) { delay_ms(1000); P1=_cror_(P1,1); }}voidmain() {P1M0=0x00;P1M1=0X00;unsigned char led;led=0xfe;while(1){ P1=led; delay_ms(1000); led=_crol_(led,1);}}}數(shù)組數(shù)組端口數(shù)據(jù)D8D7D6D5D4D3D2D1D2亮:0xfd11111101D8亮:0x7f01111111D7亮:0xbf10111111D4亮:0xf711110111D5亮:0xef11101111D6亮:0xdf11011111D1亮:0xfe11111110D3亮:0xfb11111011霓虹燈:依次點亮D2D8D7D4D5D6D1D3數(shù)據(jù)變化無規(guī)律,無法用算法表示數(shù)據(jù)霓虹燈數(shù)據(jù)數(shù)組voidmain() //主函數(shù){P1M0=0x00;P1M1=0X00;

while(1)//無限循環(huán)

{ P1=0xfd;

delay_ms(1000);

P1=0

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論