開(kāi)關(guān)檢測(cè)案例一:
具體電路圖如下: K1--K4閉合,控制 D1—D4 亮滅
產(chǎn)生的問(wèn)題:
1、關(guān)于 R8 R9 R7 R10 的阻值選擇問(wèn)題,倘若太大的話, 比如10K 不管開(kāi)關(guān)斷開(kāi)還是閉合,好像都沒(méi)什么用,電阻上部分電流被拉低,一直為低電平,雖然仿真對(duì),但終究有問(wèn)題
倘若選擇一般大,則為灰色,表示電平不確定,最后不得已選擇 20Ω 電阻,電平可以確定,開(kāi)關(guān)閉合,電平拉低,那么實(shí)際電路中, 電阻的取值究竟怎樣呢????
2、需要掌握 按位與 的用法
參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行“與”運(yùn)算。
運(yùn)算規(guī)則:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:兩位同時(shí)為“1”,結(jié)果才為“1”,否則為0
例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。
參考程序如下以及電路圖:
#include《reg52.h》
#include《intrins.h》
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1
/*****************************/
// 函數(shù)名稱: DelayMS( )
// 函數(shù)功能: 延時(shí)
// 入口函數(shù): 延時(shí)毫秒
// 出口函數(shù): 無(wú)
/************************* *******************/
void DelayMs(uint16 val)
{
uint16 i,j;
for( i=0;i《val;i++)
for(j=0;j《113;j++);
}
void main()
{
while(1)
{
uchar8 temp;
LED=0xff; // P1.1—P1.3 置1 高電平 ,LED熄滅 ,高四位默認(rèn)高電平,作為輸入
temp=P1&0xf0; // 讀 P1口 ,并且屏蔽其低四位,送入temp
temp=temp》》4; // temp內(nèi)容 右移四位,也就是說(shuō) P1口高4位狀態(tài)移動(dòng)至低四位 ,兩者狀態(tài)一樣
LED=temp; // temp 的數(shù)據(jù)送 P1口輸出
DelayMs(1000);
}
}
開(kāi)關(guān)檢測(cè)案例二:
參考程序代碼:(目的: 通過(guò) K1 K2 按鍵的組合00 01 10 11 來(lái)控制 LED 的燈的亮滅)
#include《reg52.h》
#include《intrins.h》
#define uchar8 unsigned char
#define uint16 unsigned int
#define LED P1
void main()
{
uchar8 state;
do
{
P2=0xff; // 設(shè)置 P2口輸入
state=P2; // 讀 P2口的狀態(tài),送入 state
state=state&0x03; // 屏蔽 高6位
switch(state)
{
case 0 : LED=0xFE;break; // 14 0x0e 1110
case 1: LED=0xFD;break; // 13 0x0d 1101
case 2: LED=0xFB;break; // 11 0x0b 1011
case 3: LED=0xF7;break; // 7 0x07 0111
}
}while(1);
}
-
電阻
+關(guān)注
關(guān)注
85文章
5344瀏覽量
170819 -
電路圖
+關(guān)注
關(guān)注
10288文章
10707瀏覽量
523859 -
led燈
+關(guān)注
關(guān)注
22文章
1588瀏覽量
107396
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論