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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【51单片机】开关状态检测

發布時間:2024/1/18 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【51单片机】开关状态检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

【項目一】

題目

原理圖

代碼

【項目二】

題目

原理圖

代碼


【項目一】

題目

4個開關的狀態反映在4個發光二級管上,開關閉合,對應的發光二極管點亮。

原理圖

?

代碼

#include <reg52.h> #define uchar unsigned char #define uint unsigned intvoid delay(uint n) {uchar i;uint j;for(j=0;j<n;j++)for(i=0;i<123;i++); }void main (void) {while(1){uchar temp;P1=0xff;//每次循環都將P1初始化,相當于設置刷新,實時關注開關的動態temp=P1&0xf0;temp=temp>>4;P1=temp;delay(500);} }

?代碼分析

開關狀態P1=0xfftemp=P1&0xf0temp=temp>>4現象
開關S0閉合1111 1111

XXX0 0000=

XXX0 1111&1111 0000

0000 XXX0D1亮
開關S1閉合1111 1111

XX0X 0000=

XX0X 1111&1111 0000

0000 XX0XD2亮
開關S2閉合1111 1111

X0XX 0000=

X0XX 1111&1111 0000

0000 X0XXD3亮
開關S3閉合1111 1111

0XXX 0000=

0XXX 1111&1111 0000

0000 0XXXD4亮

【項目二】

題目

2個開關S0和S1分別接在單片機的2個引腳上,其高低電平共有4種組合,這4種組合分別點亮4個引腳控制的4個LED,即LED0~LED3。當S0、S1均閉合時,LED0亮,其余滅;S0打開、S1閉合時,LED1亮,其余滅;S0閉合、S1打開時,LED2亮,其余滅;S0、S1均打開時,LED3亮,其余滅。

原理圖

代碼

#include <reg52.h> #define uchar unsigned char #define uint unsigned intvoid delay(uint n) {uchar i;uint j;for(j=0;j<n;j++)for(i=0;i<123;i++); }void main (void) {do{char state;P1=0xff;//等價于刷新的功能state=P1;state=state&0x30;state=state>>4;switch (state){case 0: P1=0x08;delay(500);break;case 1: P1=0x04;delay(500);break;case 2: P1=0x02;delay(500);break;case 3: P1=0x01;delay(500);break;}}while(1); }

代碼分析

開關狀態state=P1state=state&0x30state>>4case現象

S0斷開

S1斷開

1111 11110011 00000000 00113LED0亮

S0閉合

S1斷開

1110 11110010 00000000 00102LED1亮

S0斷開

S1閉合

1101 11110001 00000000 00011LED2亮

S0閉合

S1閉合

1100 11110000 00000000 00000LED3亮

總結

以上是生活随笔為你收集整理的【51单片机】开关状态检测的全部內容,希望文章能夠幫你解決所遇到的問題。

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