當前位置:首頁 » 編程語言 » c語言編輯密碼鎖
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言編輯密碼鎖

發布時間: 2022-08-15 08:16:46

1. 求51單片機c語言編的簡易密碼鎖程序

假設晶振為12M,數碼管共陰,且由P1口控制器;LED高電平點亮。
#include<reg51.h>
void
delay(int);
/*延時程序*/
sbit
P3_0=P3^0;
int
main()
{
P3_0=0;
/*發光二極體的初始狀態為滅,即:未解鎖*/
while(1)
/*等待解鎖*/
{
P0=0x0FF;
/*P0初始化,先全寫1,等待輸入*/
if(P0&0x0f==0x02)
/*驗證密碼是否為2*/
break;
P1=0x79;
/*密碼錯誤,數碼管顯示為E*/
delay(3);
/*延時大約3秒*/
}
P1=0x73;
/*密碼正確,數碼管顯示為P*/
delay(3);
/*延時大約3秒*/
P3_0=1;
/*LED點亮,密碼鎖解開*/
...
/*解鎖後的其他任務*/
return
0;
}
void
delay(int
t)
{
int
i=125;
for(;t>0;t--)
for(;i>0;i--);
}

2. 51單片機 C語言 數碼管 密碼鎖

密碼鎖製作電路及程序設計流程
http://hi..com/lsxshaoxin/item/f13aaf1ec38168e45e53b131

--------------------------------------------------------------------------------------------
以下的單片機c語言和電路手冊資料值得參考一下。特別適合電子從業人員

不平凡的單片機學習資料,很好的單片機教程,超好用,一個不佔內存的教程,有案例。

http://hi..com/dzkfw/blog/item/4a188216fd986b12c83d6d05.html

1、最新版單片機編程寶典下載地址,學習單片機編程必備手冊

2、單片機c語言運用例子

3、十天學會單片機c語言和單片機製作,最好的單片機資料

這款軟體也很不錯,推薦一下 [特別好用,資料覆蓋范圍廣] :電路公式計算器http://hi..com/dzkfw/blog/item/7a947b4f588099d1d0c86a3e.html

3. 單片機c語言密碼鎖程序

include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

#define DataPort P0 //定義數據埠 程序中遇到DataPort 則用P0 替換
#define KeyPort P1
sbit LATCH1=P2^2;//定義鎖存使能埠 段鎖存
sbit LATCH2=P2^3;// 位鎖存

unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};// 顯示段碼值0~F
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應相應的數碼管點亮,即位碼
unsigned char TempData[10]; //存儲顯示值的全局變數
unsigned char code password[8]={1,2,3,4,5,6,7,8};
//可以更改此密碼做多組測試

void DelayUs2x(unsigned char t);//us級延時函數聲明
void DelayMs(unsigned char t); //ms級延時
void Display(unsigned char FirstBit,unsigned char Num);//數碼管顯示函數
unsigned char KeyScan(void);//鍵盤掃描
unsigned char KeyPro(void);
void Init_Timer0(void);//定時器初始化
/*------------------------------------------------
主函數
------------------------------------------------*/
void main (void)
{
unsigned char num,i,j;
unsigned char temp[8];
bit Flag;
Init_Timer0();

while (1) //主循環
{

num=KeyPro();
if(num!=0xff)
{
if(i==0)
{
for(j=0;j<8;j++)//清屏
TempData[j]=0;
}
if(i<8)
{
temp[i]=dofly_DuanMa[num];//把按鍵值輸入到臨時數組中
for(j=0;j<=i;j++) //通過一定順序把臨時數組中
//的值賦值到顯示緩沖區,從右往左輸入
TempData[7-i+j]=temp[j];
}
i++; //輸入數值累加
if(i==9)//正常等於8即可,由於我們需要空一個用於清屏,
//清屏時的按鍵不做輸入值
{
i=0;
Flag=1;//先把比較位置1
for(j=0;j<8;j++)//循環比較8個數值,
//如果有一個不等 則最終Flag值為0
Flag=Flag&&(temp[j]==dofly_DuanMa[password[j]]);
//比較輸入值和已有密碼
for(j=0;j<8;j++)//清屏
TempData[j]=0;
if(Flag)//如果比較全部相同,標志位置1
{
TempData[0]=0x3f; // "o"
TempData[1]=0x73; // "p"
TempData[2]=0x79; // "E"
TempData[3]=0x54; // "n"
//說明密碼正確,輸入對應操作 顯示"open"
}
else
{
TempData[0]=0x79; // "E"
TempData[1]=0x50; // "r"
TempData[2]=0x50; // "r"
//否則顯示"Err"
}

}
}
}
}
/*------------------------------------------------
uS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字元變數,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編,大致延時
長度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延時函數,含有輸入參數 unsigned char t,無返回值
unsigned char 是定義無符號字元變數,其值的范圍是
0~255 這里使用晶振12M,精確延時請使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{

while(t--)
{
//大致延時1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
顯示函數,用於動態掃描數碼管
輸入參數 FirstBit 表示需要顯示的第一位,如賦值2表示從第三個數碼管開始顯示
如輸入0表示從第一個顯示。
Num表示需要顯示的位數,如需要顯示99兩位數值則該值輸入2
------------------------------------------------*/
void Display(unsigned char FirstBit,unsigned char Num)
{
static unsigned char i=0;

DataPort=0; //清空數據,防止有交替重影
LATCH1=1; //段鎖存
LATCH1=0;

DataPort=dofly_WeiMa[i+FirstBit]; //取位碼
LATCH2=1; //位鎖存
LATCH2=0;

DataPort=TempData[i]; //取顯示數據,段碼
LATCH1=1; //段鎖存
LATCH1=0;

i++;
if(i==Num)
i=0;

}
/*------------------------------------------------
定時器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
//TH0=0x00; //給定初值
//TL0=0x00;
EA=1; //總中斷打開
ET0=1; //定時器中斷打開
TR0=1; //定時器開關打開
}
/*------------------------------------------------
定時器中斷子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
TH0=(65536-2000)/256; //重新賦值 2ms
TL0=(65536-2000)%256;

Display(0,8); // 調用數碼管掃描

}

/*------------------------------------------------
按鍵掃描函數,返回掃描鍵值
------------------------------------------------*/
unsigned char KeyScan(void) //鍵盤掃描函數,使用行列反轉掃描法
{
unsigned char cord_h,cord_l;//行列值中間變數
KeyPort=0x0f; //行線輸出全為0
cord_h=KeyPort&0x0f; //讀入列線值
if(cord_h!=0x0f) //先檢測有無按鍵按下
{
DelayMs(10); //去抖
if((KeyPort&0x0f)!=0x0f)
{
cord_h=KeyPort&0x0f; //讀入列線值
KeyPort=cord_h|0xf0; //輸出當前列線值
cord_l=KeyPort&0xf0; //讀入行線值

while((KeyPort&0xf0)!=0xf0);//等待松開並輸出

return(cord_h+cord_l);//鍵盤最後組合碼值
}
}return(0xff); //返回該值
}
/*------------------------------------------------
按鍵值處理函數,返回掃鍵值
------------------------------------------------*/
unsigned char KeyPro(void)
{
switch(KeyScan())
{
case 0x7e:return 0;break;//0 按下相應的鍵顯示相對應的碼值
case 0x7d:return 1;break;//1
case 0x7b:return 2;break;//2
case 0x77:return 3;break;//3
case 0xbe:return 4;break;//4
case 0xbd:return 5;break;//5
case 0xbb:return 6;break;//6
case 0xb7:return 7;break;//7
case 0xde:return 8;break;//8
case 0xdd:return 9;break;//9
case 0xdb:return 10;break;//a
case 0xd7:return 11;break;//b
case 0xee:return 12;break;//c
case 0xed:return 13;break;//d
case 0xeb:return 14;break;//e
case 0xe7:return 15;break;//f
default:return 0xff;break;
}
}

4. 求51單片機C語言編的密碼鎖程序

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define BIN(a,b,c,d,e,f,g,h) ((a<<7)+(b<<6)+(c<<5)+(d<<4)+(e<<3)+(f<<2)+(g<<1)+(h<<0))
//下面的code表示數組存放在ROM中,因為這個數組的值不需要改寫
uchar code KeyCode[16]={15,14,12,8,30,28,24,16,60,56,48,32,120,112,96,64};//值為m*(n+1)的乘積,用於Key()
uchar dis[6];
msdelay(uint x)//延時子函數
{uchar j;
while(x--)
{for(j=0;j<125;j++){;}
}
}
//鍵盤子程序一,鍵盤值與數組值對比得到
uchar Key(void)
{uchar temp,m,n,i,j,matrix,k;
P1=0xF0; /*行線電平為高,列線為低*/
temp=P1&0xf0;
if (temp==0xf0) return(16); /*行仍為高,無按健,退出*/
else msdelay(10);
for(i=1;i<16;i=i*2)
{m=i;
for(j=1;j<16;j=j*2)
{n=(~j)&0x0f;
P1=(m<<4)|n; /*m為P1的行值由i循環得到,n為列值,由j循環並取反得到*/
temp=P1&0xf0;
if (!temp)
{do{temp=P1&0xf0;}while(!temp);
matrix=m*(n+1);/*為避免乘積重復,n+1*/
for(k=0;k<16;k++){if (matrix==KeyCode[k]) return(k);} //KeyCode:見前
return(16);
} //if loop
}//j loop
}//i loop
}//Key end
//用Switch...case語句得到鍵盤值*/
uchar Key1(void)
{uchar temp,m,n,i,j,matrix;
P1=0xF0; /*行線電平為高,列線為低*/
temp=P1&0xf0;
if (temp==0xf0) return(16); /*行仍為高,無按健,退出*/
else msdelay(10);
for(i=1;i<16;i=i*2)
{m=i;
for(j=1;j<16;j=j*2)
{n=(~j)&0x0f;
P1=(m<<4)|n;/*m為P1的行值由i循環得到,n為列值,由j循環並取反得到*/
temp=P1&0xf0;
if (!temp)
{do{temp=P1&0xf0;}while(!temp);
matrix=m*(n+1);
switch(matrix) //此方法的基本思路:
{case 15:return(1); break; //由循環得到的m,n值賦於P1埠實現逐個鍵掃描
case 14:return(2); break; //同時由m,n+1的值相乘得到對應鍵點de的積
case 12:return(3); break; //m*(n+1)值掃描鍵點對應而得出鍵值
case 8:return(4); break; //
case 30:return(5); break; //
case 28:return(6); break; //
case 24:return(7); break; //
case 16:return(8); break;
case 60:return(9); break;
case 56:return(0); break;
case 48:return(10); break;
case 32:return(11); break;
case 120:return(12); break;
case 112:return(13); break;
case 96:return(14); break;
case 64:return(15); break;
default:return(16);
} //switch end
} //if loop
}//j loop
}//i loop
}//Key end
//依次掃描16個按鍵
uchar Key2(void)
{uchar temp;
P1=0xF0; /*使P1=1111 0000,行線電平為高,列線為低*/
temp=P1&0xf0;
if (temp==0xf0) return(16); /*讀P1=1111 xxxx,表示行仍為高,無按健,退出(x表示不關心)?/
else msdelay(10);
P1=0x1e; /*P1=0001 1110,行一為高,列一為低,掃描第一個按鍵*/
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(1);}
P1=0x1d; /*P1=0001 1101,行一為高,列二為低,掃描第二個按鍵,下面掃描其餘按鍵*/
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(2);}
P1=0x1b;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(3);}
P1=0x17;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(4);}
P1=0x2e;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(5);}
P1=0x2d;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(6);}
P1=0x2b;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(7);}
P1=0x27;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(8);}
P1=0x4e;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(9);}
P1=0x4d;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(0);}
P1=0x4b;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(10);}
P1=0x47;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(11);}
P1=0x8e;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(12);}
P1=0x8d;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(13);}
P1=0x8b;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(14);}
P1=0x87;
temp=P1&0xf0;
if (!temp) {do{temp=P1&0xf0;}while(!temp);
return(15);}

return(16); //掃描all按鍵都未按下,則輸出16
}//Key2 end.
////////時鍾中斷顯示子程序
void T0_int() interrupt 1
{static uchar i;
if (i==6){i=0;}
P0=5-i;
P0=P0|(dis[i]<<4);
i++;
TL0=0;
TH0=252;}

void distri(uint disnum)
{uint temp;
dis[0]=0;
dis[1]=disnum/10000;
temp=disnum%10000;
dis[2]=temp/1000;
temp=temp%1000;
dis[3]=temp/100;
temp=temp%100;
dis[4]=temp/10;
dis[5]=temp%10;
}
Main()
{uchar KeyVal,i=0;
TMOD=0x01;
IE=0x82;
TH0=252;
TL0=0;
TR0=1;
distri(0);
do{
KeyVal=Key();
if (KeyVal!=16) dis[1]=KeyVal; //注意:當有按鍵時才賦於顯示位dis[1],否則出錯,請分析!
}while(1);
}

5. 求C語言或C++的電子密碼鎖程序

#include <stdio.h>
#include <conio.h> /*conio庫,調用無回顯getch()就是輸入後不顯示*/
#include <iostream>
using namespace std;
int main ()
{
int j=0;
int i;
char code[10];
char s;
for (i=3;i!=0;--i)
{
j=0;
printf("你還有%d次機會,請輸入密碼:\n",i);
cout<<"888888";
cout<<"\b\b\b\b\b\b";
while ((s=getch())!='\r')
{
code[j]=s;
if( s == '\b' ) //遇到退格鍵可以刪除前一個輸入
{
printf("\b8\b");
code[--j]=code[--j];
}
else
{
//putchar('*'); /*輸入的信息將以*號輸出*/
cout<<"F";
}
code[++j]='\0';
}
if (code[0]=='1'&&code[1]=='2'&&code[2]=='3'&&code[3]=='4'&&code[4]=='5'&&code[5]=='6'&&code[6]=='\0')
{
printf("\n密碼正確\n");
break;
}
//system("cls");
}
return 0;
}

不好意思,樓主,最近沒怎麼上網路,這個程序應該符合你的條件的,有什麼不懂的可以找我呢,單片機我不知道呢,不過這個程序是符合你的條件的,HI我吧

6. C語言編寫一個密碼鎖程序,急求

你好!圖片太小,是什麼型號的單片機?程序什麼時間要?

下面是一個模擬,可以根據你的要求做修改!

7. 請問,用四個獨立按鍵來製作簡易密碼鎖C語言程序該怎麼編寫

這個可以模擬那種撥碼形式的密碼鎖方式來設計,比如OFO共享單車的撥碼方式。
#include<reg51.h>
#define uchar unsigned char
uchar mima[4]={1,2,3,4};
uchar keymm[4]={0,0,0,0};
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit led=P1^4;
bit flag=0;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i<120;i++);
}
main()
{
uchar i;
led=1;
while(1)
{
if(key1==0)
{
while(key1==0);
keymm[0]++;
keymm[0]%=10;
}
if(key2==0)
{
while(key2==0);
keymm[1]++;
keymm[1]%=10;
}
if(key3==0)
{
while(key3==0);
keymm[2]++;
keymm[2]%=10;
}
if(key4==0)
{
while(key4==0);
keymm[3]++;
keymm[3]%=10;
}
for(i=0;i<4;i++)
{
if(keymm[i]!=mima[i])break;
if(i==3)flag=1;
}
if(flag)
{
i=10;
while(i--)
{
led=~led;
delay(100);
}
flag=0;
}
}
}

8. 急求用C語言編寫的電子密碼鎖程序

#include <stdio.h>
#include <conio.h> /*conio庫,調用無回顯getch()就是輸入後不顯示*/
void main ()
{
int i=1;
int j;
char code[10];
for(;i<=3;i++)
{
printf("你還有%d次機會,請輸入密碼:\n",4-i);
for(j=0;j<10;j++)
{
code[j]=getch();

if(code[j]=='\b') /* 遇到退格鍵可以刪除前一個輸入*/
{
printf("\b \b");
code[--j]=0;
}
else
printf("*"); /*輸入的信息將以*號輸出*/
if(code[j]=='\r')/*遇到回車程序跳出*/
break;
}
if(code[0]=='1'&&code[1]=='2'&&code[2]=='3')/*密碼是123*/
{
printf("\nright\n");
break;
}
else
printf("\nwrong\n");
if(i==4)
{
printf("你的機會已用盡");
break;
}
}
}
樓主,我已經修改了,如果還有什麼問題,可以繼續HI我

9. 數字密碼鎖C語言編程

近年來,隨著生活水平的不斷改善,個人財富日益增長,人們對安全防盜的要求也逐漸提高。安全可靠、使用方便的電子密碼鎖成了人們防盜的首選。以Max +PlusⅡ(Multiple Array Matrix and ProgrammingLogic User SystemⅡ,多陣列矩陣及可編程邏輯用戶系統Ⅱ)為工作平台,使用PLD可編程器件和VHDL語言設計的帶音樂的電子密碼鎖具有密碼預置,誤碼鎖死及開鎖音樂提示等功能。這種設計不僅簡化了系統結構,降低了成本,更提高了系統的可靠和保密性。採用PLD可編程邏輯器件開發的數字系統,可以方便地升級和改進。

1 設計思路
密碼鎖電路由鍵盤控制、密碼設置和音樂演奏三大功能模塊組成,原理如圖1所示。Count,Keyvalue,Contrl,Smdisplay構成鍵盤控制模塊,Songer是音樂演奏模塊,Set是密碼設置模塊。

1.1 鍵盤控制
鍵盤主要完成向系統輸入數據,傳送命令等功能。它是一個機械彈性按鍵開關的集合,利用機械觸點的合、斷作用產生高、低電平。通過對電平高低狀態的檢測,以確認按鍵按下與否。一個電壓信號通過機械觸點的斷開、閉合過程的波形如圖2所示。

在該鍵盤電路中,Count模塊提供鍵盤的行掃描信號Q[3..0]。在沒有按鍵按下時,信號EN為高電平,行掃描輸出信號Q[3..0]的循環變化順序為0001 OO100100 1000 0001(依次掃描4行按鍵);當有按鍵按下時,信號EN為低電平,行掃描輸出信號Q[3..0]停止掃描,並鎖存當前的行掃描值。例如按下第一行的按鍵,那麼Q[3..O]=0001。
Keyvalue模塊的主要功能是對輸入按鍵的行信號Q[3..0]和列信號14[3..0]的當前組合值進行判斷來確定輸入按鍵的鍵值。
Contrl模塊的主要功能是實現按鍵的消抖,判斷是否有按鍵按下。確保對按鍵的提取處於圖2所示的閉合穩定時間范圍內,這就對本模塊的輸入時鍾信號有一定的要求,在本設計中該模塊輸入的時鍾信號頻率為64 Hz。Smdisplay模塊主要是完成數碼管動態掃描和七段解碼顯示的功能。
1.2 音樂演奏電路Songer
根據聲樂學知識,組成樂曲的每個音符的發音頻率值及其持續的時間是樂曲能連續演奏所需的兩個基本要素。獲得這兩個要素所對應的數值以及通過純硬體的手段來利用這些數值實現所希望樂曲的演奏效果是關鍵。如圖3所示,該電路需要由NOTETABS(音調發生器)、TONETABA、SPEAKER(數控分頻器)三個模塊組成,分別實現了聲音產生、節拍控制、音調控制的功能。

1.3 密碼設置
Set模塊是實現密碼鎖功能的核心模塊。其主要作用是設置密碼,Set為設置密碼的有效信號,可以實現修改密碼的功能。En為輸入密碼確認信號,當輸入完六位密碼後確認輸入,一旦輸入的密碼跟所設置的密碼一致時,則輸出信號OP有效(高電平);OP控制演奏音樂,此時音樂響起。若密碼不正確,則指示輸入錯誤及輸入次數,輸完三次無效後密碼鎖鎖死,必須由RESET信號(啟動信號,給一個低電平)重新打開密碼鎖功能。

2 電路的VHDL描述
鍵盤控制電路,音樂演奏電路以及密碼設置模塊均使用硬體描述語言VHSIC Hardware Description Lan-guage(VHDL)設計而成。例如:TONETABA的VHDL模型如下:

VHDL語言具有很強的電路描述和建模能力,能從多個層次對數字系統進行建模和描述,支持各種模式的設計方法:自頂向下與自底向上或混合方法,從而大大簡化了硬體的設計任務,提高了設計效率和可靠性。它同時具有與具體硬體電路無關和與設計平台無關的特性,所以用VHDL進行電子系統設計,設計者可以專心致力於其功能的實現,而不需要對其他相關因素花費過多的時間和精力。
設計步驟
3.1 設計輸入
首先在合適的路徑下建立本設計的文件夾,然後用VHDL語言編輯Count,Keyvalue,Contrl,Smdisplay等電路,並在Max+PlusⅡ軟體中使用文本編輯器輸入上述各電路模塊的VHDL程序,編譯生成各模塊;最後在Max+PlusⅡ軟體中使用圖形編輯器以自底向上的方法編輯原理圖。先編輯圖3電路,以Singer.gdf命名,其次使用「Create default Symbol」生成Songer模塊,然後再編輯如圖1所示原理電路圖。
3.2 模擬測試及編程下載配置
將設計好的項目存檔,並將其設置成Project。選擇目標器件為ACEX系列中的EP1K30QC208-2,啟動編譯,如果發現編譯出現錯誤,修正後再次編譯。編譯後即可對波形文件進行模擬,並進行測試和波形分析。分析完成後進行編程下載配置。
3.3 硬體測試
在高電平時,通過鍵盤的0~F號鍵進行6位密碼輸入,密碼輸入完畢後通過單擊確認鍵進行密碼設置確認。當輸入的密碼與設置的密碼一致時,揚聲器開始循環演奏樂曲,且數碼管SM8顯示輸入密碼的次數,數碼管SM7顯示密碼輸入是否正確。如果密碼正確,則SM7顯示『0』;如果密碼錯誤,則SM7顯示『E』。數碼管SM6~SM1顯示輸入的6位密碼。在密碼輸入正確開始演奏樂曲時,如果將撥位開關KD4撥向上,則數碼管SM8顯示樂曲的音符,而此時若將撥位開關KD3撥向上則停止演奏樂曲。發光二極體LED1~LED4顯示輸入按鍵的鍵值,LED16監控是否有按鍵按下。

4 結 語
使用Max+PlusⅡ軟體和VHDL語言設計電路,思路簡單,功能明了;不僅可以進行邏輯模擬,還可以進行時序模擬;使用PLD器件不僅省去了電路製作的麻煩,還可以反復多次進行硬體實驗,非常方便地修改設計,且設計的電路保密性很強。總之,採用Max+PlusⅡ軟體和VHDL語言使得復雜的電子系統的設計變得簡單容易,大大提高了設計效率。

如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!

10. 密碼鎖c語言編程代碼

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
intmain()
{
charpassword[10],password2[10];
memset(password,0,sizeof(password));
memset(password2,0,sizeof(password2));
printf("請設置8位數以內密碼: ");
scanf("%s",password);
printf("請設置校驗密碼: ");
scanf("%s",password2);
if(atoi(password2)==atoi(password))
{
printf("密碼輸入正確!: ");
}
else
{
printf("密碼輸入錯誤!: ");
}
return0;
}