❶ 求單片機中六腳自鎖開關按鈕的原理圖
如圖所示:
實物是,一共2排,每排3個引腳(不是樓上所說2個或一對),中間一根是公共端,對應他左右2個腳一個常開一個常閉,另外一排和這個一樣,常開對常開,公共點對公共點,常閉對常閉,但是完全獨立的2組。
(可能要用到它的4個引腳,一次按下可以管理兩個電源)。
(1)單片機供電自鎖電路設計擴展閱讀:
電飯鍋、電熱水壺上的開關,按下後被鎖定,但加熱到指定條件後,鎖定開關狀態的磁鐵或雙金屬片動作,使開關復位同時切斷電源(電飯鍋是轉換到保溫狀態),也許不合「斷電後復位」要求。
斷電後復位,即鎖定機構握納譽工作應於電源相關,成品好象沒有,因為該要求可以使用一般按鈕開關與繼電器組成的電路可以達到;
但如果僅使用一個繼電器(或接觸器),將其一組常開觸點用來控制該繼電器(接觸器)工作線圈電源,把繼電器衡鐵當作開關按鈕,按下衡鐵後,繼電器控制線圈的觸點閉合,線圈得電,繼電器保持吸合(自鎖),其餘觸點控制其他線路;
當一茄困旦電源斷電,繼電器隨即斷電,衡鐵復位,相當按鈕復位,需要再次按動繼電器衡鐵,電源才能再次接通。這繼電器此時相段段當一個帶電鎖定的按鈕開關。
❷ 用單片機設計一個簡易的密碼鎖,用鍵盤輸入0~9三位數的密碼.密碼輸入正確顯示「P」約3s,並通過P3.0埠將
你這個問題內容量太大,不可能有誰那麼多時間給你開發,我這邊有個做過的類似的,代碼送你了。
#include<msp430x14x.h>
#include"Delay.h"
#include"x24c02.h"
#include"LCD1602.h"
ucharLCD_ID_1[16]={"Password:------"};
ucharLCD_ID_2[16]={"OldCode:------"};
ucharLCD_ID_3[16]={""};
ucharLCD_ID_4[16]={"NewCode:------"};
#defineJI_OPENP3OUT|=BIT6
#defineJI_CLOSEP3OUT&=~BIT6
uchara=10,b=10+0x40,c=0,i=0,j=0,k=0,super=0;
ucharflag=0;
uchartable1[6]={1,2,3,4,5,6};
uchartable2[6]={0,0,0,0,0,0};
uchartable3[6]={0,0,0,0,0,0};
ucharsupercode[6]={8,8,8,8,8,8};
//SCL時鍾線
#defineSCO_SETP1OUT|=BIT3//輸出高
#defineSCO_RESETP1OUT&=(~BIT3)//輸出低
#defineSCO_IN(P1IN&BIT3)//輸出
#defineSCOINP1DIR&=(~BIT3)//設置輸入
#defineSCOOUTP1DIR|=BIT3//設置輸出
//SDA數據線
#defineSDO_SETP1OUT|=BIT2
#defineSDO_RESETP1OUT&=(~BIT2)
#defineSDO_IN(P1IN&BIT2)
#defineSDOINP1DIR&=(~BIT2)
#defineSDOOUTP1DIR|=BIT2
voidshuru(void);
voidshe(void);
voidbijiao(void);
ucharchumo_read(void)
{
uchari,dat;
SCOOUT;//設置輸出
SCO_RESET;//輸出低
SDOOUT;
SDO_SET;
delay_us(93);
SDO_RESET;
delay_us(10);
SDOIN;
for(i=0;i<16;i++)
{
SCO_SET;
delay_us(5);
if(SDO_IN!=0)
{
dat=i+1;
}
SCO_RESET;
delay_us(5);
}
delay_ms(2);
returndat;
}
voidOPEN(void)
{
P1OUT|=BIT4;
P3OUT&=~BIT5;
delay_ms(1000);delay_ms(1000);
P3OUT&=~BIT5;
P1OUT&=~BIT4;
}
voidCLOSE(void)
{
P3OUT|=BIT5;
P1OUT&=~BIT4;
delay_ms(1000);delay_ms(1000);
P3OUT&=~BIT5;
P1OUT&=~BIT4;
}
voidmain(void)
{
//系統初始化
WDT_Init();//STOPWDT
MCLK_Init();//MCLK=8M
Port_Init();//CLOSEALLPORT
P3DIR|=BIT5;
P1DIR|=BIT4;
P3OUT&=~BIT5;
P1OUT&=~BIT4;
d24c_init();
L1602_Init();
L1602_string(1,1,LCD_ID_1);
P3DIR|=BIT6;
P3DIR&=~BIT7;
P6DIR|=BIT2;
JI_CLOSE;
delay_ms(10);
table1[0]=d24c_read(1);
delay_ms(20);
table1[1]=d24c_read(2);
delay_ms(20);
table1[2]=d24c_read(3);
delay_ms(20);
table1[3]=d24c_read(4);
delay_ms(20);
table1[4]=d24c_read(5);
delay_ms(20);
table1[5]=d24c_read(6);
delay_ms(500);
while(1)
{
delay_ms(100);
shuru();
she();
bijiao();
}
}
voidshuru(void)
{
wcmd(0x80+a+c);
wcmd(0x0f);
if((chumo_read()!=0)&&(chumo_read()<11))
{
delay_ms(10);
if(chumo_read()!=0)
{
table2[c]=chumo_read();
L1602_char(1,a+c+1,(chumo_read()%10)+0X30);
c++;
delay_ms(500);
if(c==6)
{
c=0;
L1602_string(1,1,LCD_ID_1);
}
}
}
j=0;
for(i=0;i<6;i++)
{
if(table1[i]!=table2[i])
{
j=1;
break;
}
}
if(chumo_read()==13)
{
delay_ms(10);
if(chumo_read()==13)
{
c=0;
L1602_string(1,1,LCD_ID_1);
delay_ms(1000);
}
}
}
voidshe(void)
{
if(chumo_read()==16)
{
delay_ms(10);
if(chumo_read()==16)
{
L1602_string(1,1,LCD_ID_3);
L1602_string(2,1,LCD_ID_2);
flag=1;
c=0;
delay_ms(500);
}
}
while(flag==1)
{
wcmd(0x80+0x40+a+c);
wcmd(0x0f);
if((chumo_read()!=0)&&(chumo_read()<11))
{
delay_ms(10);
if(chumo_read()!=0)
{
table2[c]=chumo_read();
L1602_char(2,a+c+1,(chumo_read()%10)+0X30);
c++;
delay_ms(500);
if(c==6)
{
c=0;
L1602_string(2,1,LCD_ID_2);
super=1;
for(i=0;i<6;i++)
{
if(supercode[i]!=table2[i])
{
super=0;
break;
}
}
}
}
}
k=1;
for(i=0;i<6;i++)
{
if(table1[i]!=table2[i])
{
k=0;
break;
}
}
if(chumo_read()==13)
{
delay_ms(10);
if(chumo_read()==13)
{
c=0;
L1602_string(2,1,LCD_ID_2);
delay_ms(1000);
}
}
if(k==1||super==1)
{
L1602_string(2,1,LCD_ID_4);
}
while(k==1||super==1)
{
wcmd(0x80+0x40+a+c);
wcmd(0x0f);
if((chumo_read()!=0)&&(chumo_read()<11))
{
delay_ms(10);
if(chumo_read()!=0)
{
table1[c]=chumo_read();
L1602_char(2,a+c+1,(chumo_read()%10)+0X30);
c++;
if(c==6)
{
delay_ms(1000);
c=0;
flag=0;
k=0;
super=0;
d24c_write(1,table1[0]);
delay_ms(30);
d24c_write(2,table1[1]);
delay_ms(30);
d24c_write(3,table1[2]);
delay_ms(30);
d24c_write(4,table1[3]);
delay_ms(30);
d24c_write(5,table1[4]);
delay_ms(30);
d24c_write(6,table1[5]);
delay_ms(30);
L1602_string(1,1,LCD_ID_1);
L1602_string(2,1,LCD_ID_3);
}
}
delay_ms(400);
}
delay_ms(100);
if(chumo_read()==13)
{
delay_ms(10);
if(chumo_read()==13)
{
c=0;
L1602_string(2,1,LCD_ID_2);
delay_ms(500);
}
}
}
}
}
voidbijiao()
{
if((j==0)||((P3IN&BIT7)!=0))
{
JI_OPEN;
P6OUT&=~BIT2;
OPEN();
delay_ms(2000);
L1602_string(1,1,LCD_ID_1);
for(i=0;i<6;i++)
{
table2[i]=0;
}
JI_CLOSE;
CLOSE();
}
else
{
P6OUT|=BIT2;
}
}