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

下載本文檔

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

文檔簡介

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

83排阻RX81K1流水燈控制原理端口的控制電平為低,LED燈亮;端口的控制電平為高,LED燈滅端口數據D8D7D6D5D4D3D2D1狀態(tài)1滅滅滅滅滅滅滅亮端口數據:0XFE11111110狀態(tài)2滅滅滅滅滅滅亮滅端口數據:0XFD11111101狀態(tài)3滅滅滅滅滅亮滅滅端口數據:0XFB11111011流水燈程序設計端口數據D8D7D6D5D4D3D2D10xfe滅滅滅滅滅滅滅亮0xfd滅滅滅滅滅滅亮滅0xfb滅滅滅滅滅亮滅滅0xf7滅滅滅滅亮滅滅滅0xef滅滅滅亮滅滅滅滅0xdf滅滅亮滅滅滅滅滅0xbf滅亮滅滅滅滅滅滅0x7f亮滅滅滅滅滅滅滅通過賦值語句分8次將數據依次輸出到P1口流水燈程序設計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); }}主函數賦值語句函數調用語句P1=0X7F延時流水燈工作的原理、設計流程、源程序51單片機順序結構程序設計的原理和方法小結if語句if–else語句

選擇語句選擇結構程序設計開關控制燈序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED燈LED-RED

13排阻RX81K14按鍵button1選擇結構程序設計LED燈開關原理按鍵按下時,P3.2=0按鍵松開時,P3.2=1P1=0xFFP1=0x00LED開關程序設計if(表達式)語句語句YN表達式條件:判斷P3.2電平的高低狀態(tài)執(zhí)行語句:P1輸出高低電平LED開關程序設計#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)判斷操作關系運算符==而非賦值運算符=sbitSW=P3^2LED開關程序設計if(表達式)語句1else

語句2P1=0x00P1=0xff高低P3.2語句1語句2真假表達式LED開關程序設計#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開關的工作原理51單片機分支結構程序設計小結If語句和if-else語句實現了LED開關國家法律、國家利益、人民利益高于一切。我們不僅要學好專業(yè)知識,有高超的專業(yè)技術能力,設計出高質量的產品,還要具有強烈的法制意識,高尚的職業(yè)道德,良好的技術操守,為我們的國家我們的社會貢獻自己的力量。if–elseif-else語句switch語句

選擇語句多分支結構程序設計開關控制燈序號名稱Proteus中元件名參數數量1單片機STC15W4K32S412LED燈LED-RED

43排阻RX81K14按鍵button4多分支語句if(表達式1)語句1elseif(表達式2)語句2…………elseif(表達式n)語句nelse語句n+1條件是按鍵引腳上電平的高低,語句i是LED引腳上輸出高低電平LED開關分析要求:4個按鍵對應4個指示燈,S1按下,僅D1亮,S2按下,僅D2亮,S3按下,僅D3亮,S4按下,僅D4亮,其他情況,燈全滅。LED開關分析要求:4個按鍵對應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開關程序設計#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;}}}復合語句關系運算符==邏輯運算符&&多分支語句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&二進制數11110000即P3&0xf0位與常量值計算P3口P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0&0xf011110000S1按下:0xe011100000S2按下:0xd011010000S3按下:0xb010110000S4按下:0x7001110000S1S2S3S4S1S2按下:0xc011000000S1-S4按下:0x00000000004個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;//否則滅燈} } }存放開關S4~S1的狀態(tài)if-elseif-else語句實現了4路開關LED51單片機多分支結構程序設計小結switch語句實現了4路開關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)結構程序設計1while語句2do-while語句

3for語句

循環(huán)語句循環(huán)結構程序設計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)結構程序設計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)結構之延時函數/*延時函數*/voiddelay_ms(unsignedintms){unsignedinti;

do{ i=MAIN_Fosc/13000;

while(--i);}while(--ms);}#defineMAIN_Fosc 11059200L //定義主時鐘循環(huán)執(zhí)行i次空操作“;”循環(huán)次數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); //結束}流水燈程序順序結構順序結構循環(huán)結構設計流水燈程序8次P1=0XFE…………延時1秒P1=0XFD延時1秒P1=0X7F延時1秒P1=常數1…………延時1秒P1=常數2延時1秒P1=常數8延時1秒過程不變數據在變數據變量算法表示循環(huán)結構設計流水燈程序“<<”運算端口數據1D7D6D5D4D3D2D10xfe111111100xfd111111010xfb111110110xf7111101110xef111011110xdf110111110xbf101111110x7f011111111111111011111100<<111111101+111111010<<111111011+1led=(led<<1)+1;循環(huán)結構設計流水燈程序8次P1=常數1…………延時1秒P1=常數2延時1秒P1=常數8延時1秒滿8次嗎否是循環(huán)體語句組:P1=led;延時Led=(led<<1)+1;變量led賦初始值0xfe循環(huán)結構設計流水燈程序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)體內循環(huán)體滿8次?否是循環(huán)體語句組:P1=led;延時Led=(led<<1)+1;變量賦初始值循環(huán)結構之流水燈程序小結初始化循環(huán)控制循環(huán)體100%循環(huán)結構程序設計魯迅先生說:偉大的成績和辛勤勞動是成正比例的,有一分勞動,就有一分收獲,日積月累,從少到多,奇跡就可以創(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;

}}}實例任務循環(huán)結構實現流水燈庫函數標準庫函數是由C51編譯器提供的,用戶可以直接調用,以頭文件的形式給出//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庫函數Intrins.h功能_cror_(v,n)將字符型數據向右環(huán)移若干位_crol_(v,n)將字符型數據向左環(huán)移若干位_iror_(v,n)將整形型數據向右環(huán)移若干位_irol_(v,n)將整形型數據向左環(huán)移若干位_lror_(v,n)將長整形型數據向右環(huán)移若干位_lrol_(v,n)將長整形型數據向左環(huán)移若干位_nop_()空操作,相當于匯編語言中的NOPv為變量,n為移位的位數環(huán)移函數_crol_(led,1)環(huán)移是指數據在內部進行循環(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);}}庫函數intrins.h庫函數中的移位操作函數小結用庫函數中的環(huán)移函數設計了流水燈程序函數定義和調用

自定義函數是用戶根據需要自行編寫的函數,它必須先定義再調用。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);}}函數調用函數定義自定義函數voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);}while(--ms);}函數類型函數名(形式參數表){局部變量定義函數體語句return表達式;}自定義函數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);}}設計2個函數,函數功能是分別是流水燈D1~D8逐個移動和D8~D1逐個移動,在主函數中調用函數,實現流水燈正反向反復流動。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);}}}數組數組端口數據D8D7D6D5D4D3D2D1D2亮:0xfd11111101D8亮:0x7f01111111D7亮:0xbf10111111D4亮:0xf711110111D5亮:0xef11101111D6亮:0xdf11011111D1亮:0xfe11111110D3亮:0xfb11111011霓虹燈:依次點亮D2D8D7D4D5D6D1D3數據變化無規(guī)律,無法用算法表示數據霓虹燈數據數組voidmain() //主函數{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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論