C語言普通鎖
⑴ 求c語言或C++的電子密碼鎖程序
.課題一:電子密碼鎖(難度:★★★)
要
求:
①設計並製作一個電子密碼鎖,要求具有六位數碼管顯示、4*4鍵盤、電子鎖(可用繼電器驅動)、聲光報警電路等。
②4*4鍵盤的16個按鍵功能分別為「0」—「9」、開始、確定、取消、修改密碼、手動報警、自定義功能,要求每個按鍵被按下時都會發出按鍵提示聲音。
③用戶使用密碼鎖要先按下「開始」鍵,數碼管顯示「------」,然後再輸入六位密碼,輸入的密碼用「*」表示,最後按下「確定」輸入密碼(密碼正確時數碼管顯示「open」,綠燈閃爍三次;密碼錯誤時數碼管顯示「error」,
紅燈閃爍三次)或按下「取消」取消操作(數碼管顯示「------」
)。
④開鎖密碼輸入連續3次出現錯誤,則電子鎖進入報警狀態,並發出連續的聲光報警,直至系統復位為止。
⑤密碼鎖的初始密碼為「000000」,管理員可以對密碼鎖的密碼進行設定或修改,但修改舊密碼前必須正確輸入新密碼,然後再連續兩次輸入新密碼,如果兩次輸入的新密碼不一致則修改失敗,紅燈閃爍三次。如果修改成功,則綠燈閃爍三次。
⑥電路可以使用各種驅動方法控制電子鎖的開和關。
注意:(1)必須使用真實的電子鎖,電子鎖尺寸規格不限,自行購買;
(2)顯示器件也可以使用1602液晶顯示器。
⑵ 請問,用四個獨立按鍵來製作簡易密碼鎖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;
}
}
}
⑶ 急求用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我
⑷ 求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--);
}
⑸ 數字密碼鎖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語言使得復雜的電子系統的設計變得簡單容易,大大提高了設計效率。
如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
⑹ 密碼鎖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;
}
⑺ C語言編寫一個密碼鎖程序,急求
你好!圖片太小,是什麼型號的單片機?程序什麼時間要?
下面是一個模擬,可以根據你的要求做修改!
⑻ C語言變數鎖
在當前線程用mutex互斥鎖把改變變數鎖住,其他的線程在讀寫該變數前先獲取該鎖,這樣如果主線程在使用了該鎖,那其他線程就要等該鎖被釋放了,才能獲取到該鎖,才能對變數操作
⑼ C語言中的「_」表示什麼意思
只是一個字元
一般定義變數的時候會用到,比如int a_flag = 0;
還有一個是定義宏或宏鎖的時候會用到
比如 #define _API_ 0