【卒業プロジェクト】11-シングルチップマイコンによる電子パスワードロックの設計(模式図+模擬プロジェクト+解答エッセイ+解答PPT)

【卒業プロジェクト】11-シングルチップマイコンによる電子パスワードロックの設計(模式図+模擬プロジェクト+解答エッセイ+解答PPT)

ミッションステートメント

主な研究内容:
51 個のシングルチップ マイクロコンピュータを主な制御として、マトリックス キーボード、液晶ディスプレイ、およびパスワード ストレージを周辺回路として使用する電子コンビネーション ロック システムを設計し、パスワードの設定、パスワードの変更、正しいパスワードのロック解除、エラーのプロンプト、プログラミングおよびその他の機能要件によるアラーム。

研究方法:
1. 電子コンビネーション ロックの構造を分析し、その機能要件を決定します;
2. システムのハードウェアとソフトウェアを設計します;
3. PROTEUS ソフトウェアを使用して、電子コンビネーション ロックの機能をテストします。
データリンク

回路図プロジェクト ファイル
回路図スクリーンショット
シミュレーション プロジェクト ファイル
ソース コード プロジェクト ファイル
解答エッセイ (低反復率)、18046 ワード

設計書

まとめ

この設計は、シングルチップ マイクロコンピュータの電子コンビネーション ロック設計に基づいており、電子コンビネーション ロックは、コンビネーション ロックのロック解除、ロック解除、およびパスワードの変更の機能を実現する必要があり、LED ライトでその状態を示すのに役立ちます。とブザー。51個のシングルチップマイクロコンピュータとその周辺回路を使用して制御システムを構成する必要があります。シングルチップマイコン、LCD1602ディスプレイ、キーボード、AT2402ストレージ、ブザーとそのLEDを組み合わせた最小限のシステムです。
ロックの現在の開発背景の分析を通じて、システム機能の実現が決定されます。次に、システムのハードウェアとソフトウェアを設計します。システム全体は、機能モジュールとしてモジュール形式で設計され、最終的に一緒に組み立てられた回路の各サブ回路で構成される制御システムアプリケーション回路です。ソフトウェア設計もモジュール形式でプログラムを書き、ソフトウェアドライバを機能ごとに分割し、最終的にメイン関数に呼び出すことです。最後に、Proteus ソフトウェアを使用してシステムをシミュレートし、システム回路を接続し、デバッグのためにプログラムをシングル チップにインポートします。
最後に、システムの機能とシステムの安定性をテストし、設計の対応する機能を要約して完成させ、この設計を完成させます。

フレームワーク アーキテクチャの設計

ここに画像の説明を挿入

ここに画像の説明を挿入

はじめに 1
第 1 章 はじめに 2
第 1 節 電子コンビネーションロックの研究背景 2
第 2 節 電子コンビネーションロックの研究状況と動向 3
1. 研究状況 3
2. 研究動向 3 第
3 節 電子コンビネーションロックの研究意義
4 主な研究内容4
章 2 章 電子ダイヤル錠の設計方式 6
1 章 システム設計機能解析 6
2 章 電子ダイヤル錠のシステム構成 6 3 章
本章のまとめ 7
章 3 章 電子ダイヤル錠のハードウェア設計 8
1 節 MCU 最小システム8
セクション 2 マトリックスボタン回路 9
セクション 3 AT24C02 回路 10
セクション 4 LCD1602 表示回路 11
セクション 5 ブザーと LED 回路 12
セクション 6 電源回路 13
セクション 7 システム一般回路 13
セクション 8 この章のまとめ 14
第 4 章 システムソフトウェア設計 15 セクション
1 プログラミングソフトウェアの紹介 15 セクション
2 メインプログラム設計 15
1. メインプログラム設計プロセス 15
2. メインプログラムソースコード 17
セクション 3 AT24C02 プログラム設計 17 1. AT24C02
プログラムフロー設計 17
2. AT24C02 プログラム 18
セクション 4 マトリックスキーボードプログラム設計19
1. キーボード入力ブロックのプログラムフローチャート 19
2. マトリックス キーボード プログラム 20
セクション 5 ブザー アラームおよび LED プログラム設計 22
1. アラームおよび表示ランプ プログラム設計プロセス 22
2. ブザー アラームおよび LED プログラム ソース コード 23
セクション 6 LCD1602 ディスプレイ プログラム設計 24
1、LCD1602 ディスプレイ プログラム設計プロセス 24
2. LCD1602 プログラムのソースコード 24
セクション 7 本章のまとめ 25 第 5 章
システムシミュレーション 27 セクション 1
シミュレーションソフトウェアの紹介 27
セクション 2 システムシミュレーション 28
1. シミュレーション回路の構築 28
2. 機能シミュレーション 28
セクション 3 この章のまとめ 31
まとめ33
謝辞 34
参考文献 35 付録
36
1. 英文原文 36
2. 英訳 39
3. ソースコード 42

設計指示および設計文書

ここに画像の説明を挿入ここに画像の説明を挿入ここに画像の説明を挿入ここに画像の説明を挿入

ソースコード表示

ここに画像の説明を挿入

//退格
void password_back_answer()
{
	if(j>=0)
	{
		if(j==0)
		{
			password_save[0]=0;
		}
		else
		{
			password_save[--j]=0;
			lcd_wchar(1,10+j,'_');
		}
	}
}

//取消
void password_cancel_answer()
{
	uchar i;
	lcd_wstr(1,10,"______");
	for(i=0;i<j;i++)
	{
		password_save[i]=0;
	}
	j=0;
}

//密码正确
void succeed_answer()
{
	led_green=0;
	led_red=1;
	confirm_flag=0;
	fail_times=0;
	lcd_wcmd(0x01);
	lcd_wstr(0,0,"The password is");
	lcd_wstr(1,0,"right. Welcome!");
	lcd_delay(3000);
}

//密码错误,蜂鸣器报警
void fail_alarm()
{
	uint i;
	for(i=0;i<2000;i++)
	{
		DelayMs(1);
		beep=~beep;
	}
}
//密码错误
void fail_answer()
{	
	fail_times++;
	led_red=0;
	if(fail_times==3)
	{	
		fail_times=0;
		lcd_wcmd(0x01);
		lcd_wstr(0,0,"The password is");
		lcd_wstr(1,0,"wrong. Sorry!");
		fail_alarm();
		lcd_delay(3000);
		input_admin_password();
		ReadFromROM(read_password,6,6);
		password_confirm();
		if(confirm_flag)
		{
			led_green=0;
			led_red=1;
			confirm_flag=0;
			lcd_wcmd(0x01);
			lcd_wstr(0,0,"The adm code is");
			lcd_wstr(1,0,"wright. Welcome!");
			lcd_delay(3000);
			lcd_wcmd(0x01);
			lcd_wstr(0,1,"Do you want to");
			lcd_wstr(1,1,"show the code?");
			key=16;
			while((key!=confirm)&&(key!=password_cancel))
			{
				keydown();
			}
			if(key==confirm)
			{
				display_password();
				lcd_delay(6000);
				function_choose();
			}
			else
			{
				function_choose();
			}
		}
		else
		{ 
			lcd_wcmd(0x01);
			lcd_wstr(0,0,"The adm code is");
			lcd_wstr(1,0,"wrong. Sorry!...");
			fail_alarm();
			lcd_delay(3000);
			lcd_wcmd(0x01);
			lcd_wstr(0,0,"Lock is locked!!");
			lcd_wchar(1,2,':');
			lcd_wchar(1,5,':');
			lcd_wstr(1,9,"......");
			EA=1;
			while(count_second!=1)
			{
				display_initial_time();
			}
			count_second=0;
			lock_flag=1;
			while(lock_flag)
			{
				display_lock_time();
			}
			system_start();
		}
	}
	else
	{
		lcd_wcmd(0x01);
		lcd_wstr(0,0,"The password is");
		lcd_wstr(1,0,"wrong. Again...");
		lcd_delay(3000);	
		input_password();
		ReadFromROM(read_password,0,6);
		password_confirm();
		if(confirm_flag)
		{
			succeed_answer();
			function_choose();
		}
		else
		{
			fail_answer();
		}
	}	
}


おすすめ

転載: blog.csdn.net/qq_22592979/article/details/128108726