❶ 求单片机中六脚自锁开关按钮的原理图
如图所示:
实物是,一共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;
}
}