日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机原理及其应用——单片机控制按键依次点亮8只发光二极管

發布時間:2024/2/28 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机原理及其应用——单片机控制按键依次点亮8只发光二极管 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一、實驗要求
  • 二、Proteus仿真軟件畫原理圖
  • 三、Keil編程軟件編寫程序
  • 四、實驗結果
    • (一)仿真結果
    • (二)連接電路
    • (三)燒錄并觀察實驗現象
  • 結語

一、實驗要求

【實驗目的】
1、了解獨立按鍵的機械原理;
2、掌握獨立按鍵的程序識別方法。
【實驗內容】
通過按鍵依次點亮8只發光二極管,實現按下按鍵時第一只發光二極管點亮,依次至第八只發光二極管點亮。

二、Proteus仿真軟件畫原理圖

原理圖和之前八只單片機控制8只發光二極管交替閃爍的電路差不多,對之前的電路圖修改,只不過加了按鍵以及更換了單片機輸入/輸出口,電路圖如下:

其中R3電阻的電阻值為10k,其作用是作為上拉電阻,當按鍵沒有按下時,將不確定的輸入信號通過一個電阻鉗位在高電平,同時它也起到限流的作用,避免流入單片機接口的電流過大,其一般取值為4.7-10k歐姆。
若要將按鍵置于P0口,則需在單片機P0.0口處外接上拉電阻,因為P0口內部沒有上拉電阻。

三、Keil編程軟件編寫程序

之前的實驗并未說明實物現象的結果與仿真圖是相反的,所以我們反著寫程序這樣更便于觀察現象,也就是單片機控制按鍵依次點亮8只發光二極管反過來就是單片機控制按鍵依次熄滅8只發光二極管,原來是要通過一個數組使數組內的元素,數組內存儲各端口輸出高低電平狀態組成的十六進制數據,轉換為二進制就對應每個燈的點亮和熄滅,即unsigned char LED[]={0x01,0x02,0x04,0x08,0x10, 0x20,0x40,0x80}改為unsigned char LED[]=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f},然后我們的延時函數設置10ms,即delay(10),之前的實驗有說明這里不再詳述。

寫了兩套程序,都是可以運行的,第一套程序是通過數組每次a++進而取數組中的元素,從而實現按鍵對8只發光二極管操作,程序代碼如下:

#include<reg51.h> sbit Button=P2^0; unsigned char LED[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char a; void delay(unsigned int x) {unsigned int i,j;for(i=0;i<x;i++)for(j=0;j<125;j++); } void main() {P1=0xff;a=0;while(1){if(Button==0){delay(10);while(Button==0)P1=LED[a];a++;}if(a==9)break;} }

第二套程序是通過switch語句,也是通過num++,按鍵按下實現按鍵對8只發光二極管操作,程序代碼如下:

#include<reg51.h> sbit Button=P2^0; void delay() {unsigned int i,j;for(i=0;i<100;i++)for(j=0;j<125;j++); } void main() { char num;while(1){if(Button==0){delay();if(Button==0)while(!Button);num++;if(num>8)num=0;}switch(num){case 1:P1=0xfe;break;case 2:P1=0xfd;break;case 3:P1=0xfb;break;case 4:P1=0xf7;break;case 5:P1=0xef;break;case 6:P1=0xdf;break;case 7:P1=0xbf;break;case 8:P1=0x7f;break;}} }

四、實驗結果

(一)仿真結果

仿真結果和實際結果是相反的,所以仿真結果一開始所有燈是點亮的:

按下按鍵,第一只發光二極管熄滅:

……依次,按下按鍵,到第八只發光二極管熄滅:

(二)連接電路

將單片機P2.0口與獨立按鍵模塊K1按鍵連接以及單片機P1.0-P.1.7口與LED&交通燈模塊排線連接在一起(注意不要接反),連接圖如下:

(三)燒錄并觀察實驗現象

燒錄之后一開始所有燈是熄滅的,當按下按鍵時,第一只發光二極管點亮,如圖:

再點一次,第一只發光二極管熄滅,第二只發光二極管點亮,如圖:

再點一次,第二只發光二極管熄滅,第三只發光二極管點亮,如圖:

……依次到第八只發光二極管點亮,如圖:

結語

感謝您的閱讀和支持,若程序代碼和其它方面有不當之處,當指出!您的指出和建議能給作者帶來很大的動力!!!

總結

以上是生活随笔為你收集整理的单片机原理及其应用——单片机控制按键依次点亮8只发光二极管的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。