欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
實訓做的一個單片機密碼鎖程序及仿真,功能不多
[打印本頁]
作者:
3167456304
時間:
2018-2-10 20:35
標題:
實訓做的一個單片機密碼鎖程序及仿真,功能不多
QQ圖片20180210203225.png
(8.95 KB, 下載次數: 47)
下載附件
2018-2-10 20:32 上傳
單片機源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P1^0;
sbit RW = P1^1;
sbit EN = P1^2;
sbit ledg=P1^3; //綠燈
sbit ledr=P1^4; //紅燈
sbit forward=P1^5; //正轉
sbit reversal=P1^6; //反轉
sbit braking=P1^7; //制動
char table0[]=" Unlock Failed ";
char table1[]="Unlock Successed";
char table2[]="Enter PS:";
char table3[]="Wrong Password";
int temp,ch,p;
int n0,n1,n2,n3,n4,n5,n6; //6位密碼數
//***延時函數***//
void delay(int time)
{
int t=0;
for(;time>0;time--)
for(t=0;t<300;t++);
}
//=====鍵盤部分=====//
keyscan()
{
temp=P2&0xf0; //第1行鍵盤數,P2輸入
P2=0xfe;
delay(1);
temp=P2&0xf0;
while(temp!=0xf0)
{
switch(temp)
{
case 0xe0:ch='1';break;
case 0xd0:ch='2';break;
case 0xb0:ch='3';break;
default:ch=p; break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
P2=0xfd; //第2行鍵盤數
delay(1);
temp=P2&0xf0;
while(temp!=0xf0)
{
switch(temp)
{
case 0xe0:ch='4';break;
case 0xd0:ch='5';break;
case 0xb0:ch='6';break;
default:ch=p;break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
P2=0xfb; //第3行鍵盤數
delay(1);
temp=P2&0xf0;
while(temp!=0xf0)
{
switch(temp)
{
case 0xe0:ch='7';break;
case 0xd0:ch='8';break;
case 0xb0:ch='9';break;
default:ch=p;break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
P2=0xf7; //第4行鍵盤數
delay(1);
temp=P2&0xf0;
while(temp!=0xf0)
{
switch(temp)
{
case 0xe0:ch='*';break;
case 0xd0:ch='0';break;
case 0xb0:ch='#';break;
default:ch=p;break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
return ch;
}
//=====LCD液晶部分=====//
//***寫指令函數***//
void LCDWrite(uchar com)//顯示
{
P0=com; //送出指令
RS=0;RW=0;EN=1; //寫指令時序
delay(10);
EN=0;
}
//***寫數據函數***//
void LCDData(uchar dat)//輸入
{
P0=dat; //送出數據
RS=1;RW=0;EN=1; //寫數據時序
delay(10);
EN=0;
}
//***屏幕初始化函數***//
void init()
{
LCDWrite(0x01); //清屏
LCDWrite(0x38); //設置16*2顯示,5*7點陣,8位數據接口
LCDWrite(0x0f); //開顯示,光標閃爍,顯示光標
LCDWrite(0x06); //地址加1,整屏右移
}
//***數字變為'*'函數***//
change(int m) //輸入數字延時后變為*
{
delay(200);
LCDWrite(m);
LCDData('*');
}
//***字幕顯示調用函數***//
void ps() //輸入密碼界面"Enter PS:"
{
char d1;
LCDWrite(0x80); //第1行第1個字符開始顯示
for(d1=0;d1<9;d1++)
{
LCDData(table2[d1]);
}
}
void error() //密碼錯誤時調用顯示"Unlock Failed"
{ char d1; //液晶屏幕第1行
LCDWrite(0x01); //清屏
LCDWrite(0x81); //第1行第1個字符開始顯示
for(d1=0;d1<13;d1++) //字符字數
{
LCDData(table0[d1]); //顯示調用table0
}
}
void error1() //密碼錯誤時調用顯示"Wrong Password"
{ char d2; //液晶屏幕第2行
LCDWrite(0xc1); //第2行第2個字符開始顯示
for(d2=0;d2<14;d2++) //字符字數
{
LCDData(table3[d2]); //顯示調用table3
}
}
void open() //密碼正確時調用顯示"Unlock Successed"
{
char d2;
LCDWrite(0xc0); //第2行第1個字符開始顯示
for(d2=0;d2<16;d2++)
{
LCDData(table1[d2]);
}
}
//===步進電機部分===//
//***緊急制動子程序***//
void stop()
{
if(braking==0)
{
if(braking==0)
while(!braking)
{P3=0xff;}
}
}
//===正反轉子程序===//
void zfz()
{ int i;
if(!forward&&ledg==1) //正轉
{ delay(10);
while(!forward)
{ stop();
for(i=0,P3=0x01;i<4;i++)
{ delay(90);
P3=P3<<1;
}
}
}
if(!reversal&&ledg==1) //反轉
{ delay(10);
while(!reversal)
{ stop();
for(i=0,P3=0xf7;i<4;i++)
{ delay(90);
P3=P3>>1;
}
}
}
}
//=====主函數=====//
//***程序初始化***//
void main()
{
RW=0;
ledg=0; //綠燈
ledr=0; //紅燈
init();
stop();
zfz();
delay(5);
ps();
//***按鍵,屏幕關聯函數***//
//*密碼1*//
LCDWrite(0x89); //第1行第10個字符位置顯示
while(keyscan()==p)
{
delay(3);
keyscan();
}
LCDData(keyscan()); //第1行第10個字符位置輸入
n0=keyscan(); //第1個密碼
ch=p;
change(0x89); //數字變*函數調用
delay(1);
//*密碼2*//
LCDWrite(0x8a);
while(keyscan()==p)
{
delay(3);
keyscan();
}
LCDData(keyscan());
n1=keyscan();
ch=p;
change(0x8a);
delay(1);
//*密碼3*//
LCDWrite(0x8b);
while(keyscan()==p)
{
delay(3);
keyscan();
}
LCDData(keyscan());
n2=keyscan();
ch=p;
change(0x8b);
delay(1);
//*密碼4*//
LCDWrite(0x8c);
while(keyscan()==p)
{
delay(3);
keyscan();
}
LCDData(keyscan());
n3=keyscan();
ch=p;
change(0x8c);
delay(1);
//*密碼5*//
LCDWrite(0x8d);
while(keyscan()==p)
{
delay(3);
keyscan();
}
LCDData(keyscan());
n4=keyscan();
ch=p;
change(0x8d);
delay(1);
//*密碼6*//
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
程序及仿真.zip
(43.75 KB, 下載次數: 28)
2018-2-10 20:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1