基于AT89S52單片機(jī)設(shè)計定時炸彈的畢業(yè)設(shè)計
《基于AT89S52單片機(jī)設(shè)計定時炸彈的畢業(yè)設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《基于AT89S52單片機(jī)設(shè)計定時炸彈的畢業(yè)設(shè)計(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 單片機(jī)技術(shù) 定時炸彈的設(shè)計說明書 題目 定時炸彈 院系 電氣工程系________ 班級 車輛電子111_______ 姓名 袁湘華 ___________ 目錄 1設(shè)計目的 2作品意義 3功能簡介 4電路原理圖 5程序 6心得體會 7不足與改進(jìn) 8元器件清單 摘要:在一次看電影的時候,我看到了一個爆炸場面。雖然電影中是恐怖分子的不法行為引起的爆炸,但是我卻想到了定時炸彈在控制和實現(xiàn)等各方面的優(yōu)點,因而突發(fā)靈感,想要利用51單片機(jī)自
2、己制作一個模仿的定時炸彈,一來是想要鍛煉自己的實際動手能和創(chuàng)新思維,而來是想要提高自己的視野和團(tuán)隊合作精神。 1設(shè)計目的: 鍛煉自己的各方面的綜合能力,包括創(chuàng)新、設(shè)計、焊接、調(diào)試、編程等知識水平和溝通、交流、團(tuán)結(jié)協(xié)作等一些綜合素質(zhì),深入了解52單片機(jī)的實際應(yīng)用。 2作品意義: 定時炸彈是一個危險的物品,但我們不能因為危險而遠(yuǎn)離它,恰恰相反我要去深入了解它,了解它的原理這樣才不會懼怕它并用它造福。在一些人工開鑿方面,光靠人力是很難實現(xiàn)的,而且也存在這安全性問題,用定時炸彈來實現(xiàn)卻要方便得多,不僅速度快、效率高、風(fēng)險小,而且也便于實時性地操作,控制起來極為方便,可以滿足很多方面的要求。
3、 3功能簡介 3.1、開機(jī)輸入密碼才可使用,此密碼作為拆彈密碼(初始密碼為0123) 3.2、可以隨意輸入1小時以內(nèi)的定時時間,并顯示。 3.3、倒計時時間能夠顯示直至結(jié)束為止。 3.4、時間少于10秒進(jìn)行聲光提示。 3.5、每次按鍵時都有聲光提示。 3.6、允許在指定時間內(nèi)輸入密碼進(jìn)行拆彈。密碼錯誤會導(dǎo)致提前爆炸。 3.7、按下解鎖密碼鍵后不論解除危險都將剩最后10秒。解鎖失敗馬上爆炸。 3.8、也可以剪斷紅線或藍(lán)線進(jìn)行拆彈,剪錯線都有引發(fā)爆炸的可能。 3.9、倒計時結(jié)束時進(jìn)行模仿爆炸,同時有聲光提示。 4電路原理圖 PCB
4、圖
單片機(jī)——STC89C52
按 鍵
部 分
指示電 路
電源模 塊
顯示電路
爆炸部分
定時炸彈總體電路框圖
5程序
#include
5、 unsigned char code init[4]={0,1,2,3}; unsigned char show[4]={0}; unsigned char min=0; //分 unsigned char sec=0; //秒 unsigned char n,m; //最后倒計時10計時次數(shù) bit flag=0;//標(biāo)示確認(rèn)鍵是否按下 bit flag0=0;//密碼錯誤標(biāo)示位 bit flag1=0;//密碼輸入足夠 bit time1=0;//時間設(shè)置完標(biāo)志位 unsigned char number=0; void Dela
6、y(int t)
{
unsigned int i,j;
for(i=0;i 7、=~(key|hey);
while(P1!=0xf0);
switch(key)
{
case 0x11: K=1; break;
case 0x12: K=2; break;
case 0x14: K=3; break;
case 0x18: K=C; break;
case 0x21: K=4; break;
case 0x22: K=5; break;
case 0x24: K=6; break;
case 0x28: K=D; break;
case 0x41: K=7; break;
case 0x42: 8、 K=8; break;
case 0x44: K=9; break;
case 0x48: K=E; break;
case 0x82: K=0; break;
default : K=F; break;
}
return(K);
}
void disp(unsigned char post,unsigned char past)
{
switch(post)
{
case 0:P0=P0&0XF0;P0=P0|past;break; //p0=PAST
case 1:P0&=0X0f;P0|=past<<4;break; 9、
case 3:P2&=0XF0;P2|=past;break;
case 2:P2&=0X0f;P2|=past<<4;break;
}
Delay(10);
}
void led_init() //數(shù)碼管初始化
{
disp(0,0);
disp(1,0);
disp(2,0);
disp(3,0);
}
void led_ok() //解鎖成功
{ disp(0,8);
disp(1,8);
disp(2,8);
disp(3,8);
green=0;
}
void clean() //清除函數(shù)
{
10、 number=0;
flag1=0;
flag0=0;
led_init();
flag=0;
flag0=0;
}
void int1() //定時中斷初始化
{
TMOD=0x11;
TH0=0x4c;
TL0=0xf7;
TH1=0x4c;
TL1=0xf7;
IT0=1;
EX0=1;
IT1=1;
EX1=1;
ET0=1;
TR0=0;
TR1=0;
ET1=1;
EA=1;
}
void main()
{
unsigned char num,i=0;
in 11、t1();
led_init();
red=1;
green=1;
end=1;
beep=1;
while(1)
{
num=ScanKey44();
if(num!=F) //有鍵按下
{
if(!flag0)
{
if(num==D) //按下確認(rèn)鍵
{
flag=1;
if(flag1) //密碼輸入完畢
{
for(i=0;i<4;i++)
{
flag0 12、=1;
if(show[i]!=init[i]) //校驗錯誤
{
clean();
flag=1;
red=0;
beep=0;
Delay(500);
beep=1;
red=1;
break;
}
}
if(flag0)//密碼輸入正確
{
min=0;
sec=0;
13、 P0=0xff;
P2=0XFF;
number=0;
green=0;
TR1=0;
}
}
}
else if(num==C)//按下clean鍵
{
clean();
}
else if(flag==1) //之前按下確認(rèn)鍵
{
if(num<=9) //按下數(shù)字鍵
{
number++; 14、
beep=0;
Delay(100);
beep=1;
show[number-1]=num;
disp(number-1,num);
if(number==4)
{
flag1=1;
number=0;
}
}
}
}
else //密碼對時 設(shè)置時間
{
if(!time1)//沒設(shè)置時間
{
if 15、(num<=9)
{
switch(number)
{
case 0:min=min+num*10;disp(number,num);number++;
break;
case 1:min=min+num;disp(number,num); number++;
break;
case 2:if(num<=5) {sec=sec+num*10;disp(number,num);number++;}
break;
case 3:se 16、c=sec+num;disp(number,num);number++;
break;
}
if(number>3)
{
time1=1;
}
}
}
else
{
if(num==D)
{
TR0=1;
}
}
}
}
if((TR0==1)&&(min==0)&&(sec<1))
{
EA=0;
end=0;
beep=0;
17、
green=1;
red=0;
while(1);
}
///////////////////解鎖/////////////////////
if((TR0==1)&&(num==E))
{
clean();
TR0=0;
TR1=1;
flag=1;
if(flag==1) //之前按下確認(rèn)鍵
{
if(num<=9) //按下數(shù)字鍵
{
number++;
show[number-1]=nu 18、m;
disp(number-1,num);
if(number==4)
{
flag1=1;
}
}
}
if(flag1==1) //密碼輸入完畢
{
for(i=0;i<4;i++)
{
flag0=1;
if(show[i]!=init[i])
{
num=0;
led_init();
flag0=0;
B 19、reak;
}
}
}
}
}
}
void timer0(void) interrupt 1 //倒計時
{
static char time=0;
TH0=0x4c; //4c
TL0=0xf7;
time++;
if(time>=10)
{
time=0;
m++;
if((min==0)&(sec<=10)) beep=~beep;
if(m>=2)
{
m=0;
if(sec>0)
{
sec--;
}
else
if( 20、(sec==0)&&(min>0))
{
sec=59;
min--;
}
}
disp(0,min/10%10);
disp(1,min%10);
disp(2,sec/10%10);
disp(3,sec%10);
}
}
void timer1(void) interrupt 3 //按下解鎖鍵最后10秒
{
static char tim=0;
TH1=0x4c;
TL1=0xf7;
tim++;
if(tim>=10)
{
tim=0;
beep=~beep;
21、
red=~red;
n++;
if(n==20)
{
led_init();
EA=0;
red=0;
green=1;
beep=0;
end=0;
}
}
}
void int0(void) interrupt 0 //解鎖失敗爆炸
{
led_init();
TR0=0;
EA=0;
end=0;
red=0;
beep=0;
}
void int3(void) interrupt 2 //解鎖成功
{
led 22、_ok();
TR0=0;
green=0;
red=1;
EA=0;
end=1;
}
6心得體會
首先在設(shè)計這個項目的時候我開始考慮的是用到定時器作為倒計時的裝置,然后聲光模擬爆炸情形。后面發(fā)現(xiàn)過于簡單,而后加了矩陣按鍵,以及密碼鎖的原理應(yīng)用,和爆炸電路。由于加了這么多的部分,故課程設(shè)計的過程中,我感觸最深的當(dāng)屬查閱大量的設(shè)計資料了,數(shù)字電路部分有AT89S52單片機(jī)、CD4511譯碼器、數(shù)碼管等等,模擬電路部分有三端穩(wěn)壓器、三極管、發(fā)光二極管、蜂鳴器、繼電器以及電阻電容等等。為了讓自己的設(shè)計更加完善,查閱這方面的設(shè)計資料是十 23、分必要的,同時也是必不可少的,花費(fèi)了我一天的時間。由于原理圖的設(shè)計出現(xiàn)了不少的問題對后面的調(diào)試造成了許多困難,比如在原理圖里面的三極管與封裝的引腳不同,使之連線出錯,單片機(jī)的IO口用高低平難以驅(qū)動蜂鳴器及LED燈。而后我用低電平驅(qū)動得以實現(xiàn)功能;對于爆炸電路的P3,7口驅(qū)動繼電器與參數(shù)不符驅(qū)動不了,而后百度資料才改好。硬件電路的調(diào)試成功對于軟件的編程起到了有利的局面。由于思路不夠嚴(yán)謹(jǐn),一直未能調(diào)試成功,不得已的情況下請教了大三的學(xué)長后,順著他提供的思路下去,我也一步步走向了成功。
通過這次的制作設(shè)計我深刻的體會到一個人想要完成一個項目是十分有難度的,做電子制作設(shè)計需要有嚴(yán)謹(jǐn)?shù)乃枷?,正確的思路 24、以及堅持不懈、永不放棄的決心。帶著這樣的態(tài)度,我的項目才得以成功。
7不足與改進(jìn)
首先數(shù)碼管經(jīng)過CD4511譯碼出來后“6”和“9”的顯示有一橫沒有。其次在顯示的時候第一位數(shù)碼管的顯示會有點混亂。最后在進(jìn)行模擬爆炸的時候,我采用的是用一個極性電容反接加上正電壓讓它過壓爆炸。但是實際上在倒計時完后10才爆炸。
改進(jìn):
將模擬爆炸的電容采用較小容量的電容可延短電源爆炸響應(yīng)時間。
<——————經(jīng)過多次測試可行————————>
8元器件清單
元件清單
材料
數(shù)目
材料
數(shù)目
單片機(jī)AT89S52
1
三極管S9012
2
12M晶振
1
蜂鳴器
1
30pF瓷片電容
2
綠發(fā)光二極管
1
電解電容22uF/25V
1
紅發(fā)光二極管
1
電解電容47uF/16V
1
40P鎖警
1
1k排阻(一排8個)
1
液晶插槽40P
2
三端穩(wěn)壓器KA7815
1
金屬膜電阻100歐
2
三端穩(wěn)壓器KA7805
1
200歐
1
繼電器
1
330歐
30
獨立共陰數(shù)碼管
4
1k歐
3
譯碼器CD4511
4
22k歐
1
帶鎖開關(guān)
1
33k歐
1
小按鈕
12
62K
4
電源插座
1
16P底座
5
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運(yùn)動會安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊教研組工作總結(jié)
- 2024年小學(xué)高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學(xué)期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報告
- 2025年學(xué)校元旦迎新盛典活動策劃方案
- 2024年學(xué)校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告