




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
.Word資料單片機(jī)系統(tǒng)設(shè)計(jì)實(shí)訓(xùn)報(bào)告專業(yè):生產(chǎn)過程自動化
目錄TOC\o"1-3"\h\u10744一.實(shí)驗(yàn)?zāi)康? 218560二.實(shí)驗(yàn)要求: 37950三.實(shí)驗(yàn)基本原理: 315399四.實(shí)驗(yàn)設(shè)計(jì)分析: 374241.設(shè)計(jì)思想: 317079五.實(shí)驗(yàn)要求實(shí)現(xiàn): 4262991.電路設(shè)計(jì): 4126482.主流程圖: 5314343.4x4鍵盤行列式鍵盤原理電路圖: 6326954.顯示模塊 622041五.總電路設(shè)計(jì)如下 71617六.程序 824454七.實(shí)驗(yàn)心得 13一.實(shí)驗(yàn)?zāi)康?熟悉單片機(jī)定時器的編程方法。靈活運(yùn)用單片機(jī)C語言程序中的字符串、數(shù)組、指針。熟悉數(shù)碼顯示、LCM1602液晶顯示器、YJD12864液晶顯示器的編程方法。熟悉掌握4x4矩陣鍵盤的C語言編程。二.實(shí)驗(yàn)要求:1:用4×4矩陣鍵盤組成0-f數(shù)字鍵及。2:可以自行設(shè)定或刪除8位密碼,3:用8位數(shù)碼管組成顯示電路提示信息,當(dāng)輸入密碼時,只顯示“8.”,當(dāng)密碼位數(shù)輸入完畢按下確認(rèn)鍵時,對輸入的密碼與設(shè)定的密碼進(jìn)行比較,若密碼正確,則顯示PASS,若密碼顯示錯誤時,顯示ERR.4:自由發(fā)揮其他功能.5:要求有單片機(jī)硬件系統(tǒng)框圖,電路原理圖,軟件流程圖。實(shí)驗(yàn)基本原理:這個密碼鎖的功能是使用矩陣鍵盤中的十六個鍵輸入密碼0到F還有,輸入的同時在八位數(shù)碼管上顯示用戶所輸入的密碼,未輸入的位置用橫桿填補(bǔ)表述未輸入。當(dāng)輸入的密碼超出設(shè)置的位數(shù)時,數(shù)據(jù)溢出,清零。用8位數(shù)碼管組成顯示電路提示信息,當(dāng)輸入密碼時,只顯示“8.”,當(dāng)密碼位數(shù)輸入完畢按下確認(rèn)鍵時,對輸入的密碼與設(shè)定的密碼進(jìn)行比較,若密碼正確,則顯示pass,若密碼不正確,則顯示err;模擬密碼鎖,密碼固化到ROM不能通過按鍵輸入更改。四.實(shí)驗(yàn)設(shè)計(jì)分析:1.設(shè)計(jì)思想:1.本系統(tǒng)采用單片機(jī)AT89S51作為核心元件的一款具有本機(jī)開鎖,加鎖,修改密碼和錯誤2.報(bào)警的電子密碼鎖。3.電子密碼鎖的原理是:從鍵盤輸入一組密碼,CPU把該密碼和設(shè)置密碼比較,對則將鎖打開,錯則要求重新輸入,并記錄錯誤次數(shù),如果三次錯誤,則被強(qiáng)制鎖定并報(bào)警。初步設(shè)計(jì)思路如下:
1.輸入密碼用矩形鍵盤,數(shù)字鍵,字母鍵。
2.LED數(shù)碼管顯示輸入密碼,但是只是輸出顯示符號8。采用動態(tài)掃描輸出。
3.輸入密碼錯誤時顯示ERR,密碼正確時顯示PASS。軟件的設(shè)計(jì)主要包括矩形鍵盤鍵值的讀取、LED動態(tài)掃描輸出程序、密碼判斷程序。
電子密碼鎖工作的主要過程是LED數(shù)碼管顯示密碼啊。通過鍵盤輸入密碼,按下確認(rèn)鍵后判斷密碼的正確性,正確顯示PASS,錯誤顯示ERR。程序?qū)⒎譃橹鞒绦蚝椭袛喾?wù)子程序。主程序負(fù)責(zé)鍵盤鍵值讀取,密碼判斷和開鎖,中斷服務(wù)子程序主要是負(fù)責(zé)LED數(shù)碼管顯示。根據(jù)程序功能,程序主要分為以下幾部分:1.鍵盤鍵值讀取程序鍵盤鍵值讀取程序包括鍵盤掃描、消除抖動、鍵譯碼等內(nèi)容。按鍵的識別主要有兩種方法:行反轉(zhuǎn)法和行掃描法。因?yàn)殒I盤為機(jī)械開關(guān),容易引入抖動。為了消除抖動干擾,在程序中要加入消除抖動的部分。2)LED數(shù)碼顯示程序LED數(shù)碼顯示器是一種應(yīng)用很普遍的顯示器。程序主要負(fù)責(zé)把要顯示的數(shù)字或字母對應(yīng)的顯示碼送到相應(yīng)的LED顯示管。有多位需要同時顯示時,可以采用動態(tài)刷新的方法,就可以得到穩(wěn)定的輸出。循環(huán)顯示8個數(shù)碼管,可以實(shí)現(xiàn)穩(wěn)定的數(shù)字顯示。中斷服務(wù)程序只負(fù)責(zé)數(shù)據(jù)的輸出顯示,主程序根據(jù)所處的狀態(tài)修正顯示數(shù)據(jù)。3)密碼判斷程序
密碼判斷程序放在主程序中,有按鍵時讀取,當(dāng)確定鍵按下時作出判斷。在程序中設(shè)置6字節(jié)的空間存放設(shè)定的密碼和8字節(jié)存放鍵盤輸入的數(shù)據(jù)。根據(jù)讀取的鍵盤數(shù)據(jù)和預(yù)先設(shè)定的密碼逐位比較就可以判斷輸入密碼的正確性。密碼顯示與開鎖當(dāng)密碼輸出時候,顯示屏上逐步顯示密碼,逐一顯示。4.密碼錯誤報(bào)警當(dāng)用戶鍵入正確密碼并按下“確認(rèn)”鍵時,屏幕清零會顯示PASS。當(dāng)用戶鍵入錯誤密碼按下“確認(rèn)”時,屏幕清零會顯示ERR。實(shí)驗(yàn)要求實(shí)現(xiàn):電路設(shè)計(jì):2.主流程圖:3.4x4鍵盤行列式鍵盤原理電路圖:每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。本設(shè)計(jì)發(fā)射部分采用4x4鍵盤,接收部分采用4x4鍵盤。鍵盤掃描時,首先由I/O口低四位輸出高電平,高四位輸出低電平,假若有鍵按下,那么在I/O口低四位即可讀出低電平,接著延時消抖,再具體判斷是何鍵按下。顯示模塊總電路設(shè)計(jì)如下程序#include<reg52.h>//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#defineDataPortP0//定義數(shù)據(jù)端口程序中遇到DataPort則用P0替換#defineKeyPortP1sbitLATCH1=P2^2;//定義鎖存使能端口段鎖存sbitLATCH2=P2^3;//位鎖存unsignedcharcodedofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示段碼值0~Funsignedcharcodedofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsignedcharTempData[8];//存儲顯示值的全局變量unsignedcharcodepassword[8]={1,2,3,4,5,6,7,8};//可以更改此密碼做多組測試voidDelayUs2x(unsignedchart);//us級延時函數(shù)聲明voidDelayMs(unsignedchart);//ms級延時voidDisplay(unsignedcharFirstBit,unsignedcharNum);//數(shù)碼管顯示函數(shù)unsignedcharKeyScan(void);//鍵盤掃描unsignedcharKeyPro(void);voidInit_Timer0(void);//定時器初始化/*主函數(shù)*/voidmain(void){unsignedcharnum,i,j;unsignedchartemp[8];bitFlag;Init_Timer0();while(1)//主循環(huán){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];//把按鍵值輸入到臨時數(shù)組中 for(j=0;j<=i;j++)//通過一定順序把臨時數(shù)組中 //的值賦值到顯示緩沖區(qū),從右往左輸入TempData[7-i+j]=temp[j];} i++;//輸入數(shù)值累加 if(i==9)//正常等于8即可,由于我們需要空一個用于清屏, //清屏?xí)r的按鍵不做輸入值 { i=0; Flag=1;//先把比較位置1 for(j=0;j<8;j++)//循環(huán)比較8個數(shù)值, //如果有一個不等則最終Flag值為0 Flag=Flag&&(temp[j]==dofly_DuanMa[password[j]]); //比較輸入值和已有密碼 for(j=0;j<8;j++)//清屏TempData[j]=0;if(Flag)//如果比較全部相同,標(biāo)志位置1 { TempData[0]=0x3f;//"o"TempData[1]=0x73;//"p" TempData[2]=0x79;//"E" TempData[3]=0x54;//"n" //說明密碼正確,輸入對應(yīng)操作顯示"open" } else { TempData[0]=0x79;//"E"TempData[1]=0x50;//"r" TempData[2]=0x50;//"r" //否則顯示"Err" } }} }}/*uS延時函數(shù),含有輸入?yún)?shù)unsignedchart,無返回值unsignedchar是定義無符號字符變量,其值的范圍是0~255這里使用晶振12M,精確延時請使用匯編,大致延時長度如下T=tx2+5uS*/voidDelayUs2x(unsignedchart){while(--t);}/*mS延時函數(shù),含有輸入?yún)?shù)unsignedchart,無返回值unsignedchar是定義無符號字符變量,其值的范圍是0~255這里使用晶振12M,精確延時請使用匯編*/voidDelayMs(unsignedchart){while(t--){//大致延時1mSDelayUs2x(245); DelayUs2x(245);}}/*顯示函數(shù),用于動態(tài)掃描數(shù)碼管輸入?yún)?shù)FirstBit表示需要顯示的第一位,如賦值2表示從第三個數(shù)碼管開始顯示如輸入0表示從第一個顯示。Num表示需要顯示的位數(shù),如需要顯示99兩位數(shù)值則該值輸入2*/voidDisplay(unsignedcharFirstBit,unsignedcharNum){staticunsignedchari=0; DataPort=0;//清空數(shù)據(jù),防止有交替重影LATCH1=1;//段鎖存LATCH1=0;keyPort=dofly_WeiMa[i+FirstBit];//取位碼LATCH2=1;//位鎖存LATCH2=0;DataPort=TempData[i];//取顯示數(shù)據(jù),段碼LATCH1=1;//段鎖存LATCH1=0; i++;if(i==Num) i=0;}/*定時器初始化子程序*/voidInit_Timer0(void){TMOD|=0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響 //TH0=0x00; //給定初值//TL0=0x00;EA=1;//總中斷打開ET0=1;//定時器中斷打開TR0=1;//定時器開關(guān)打開}/*定時器中斷子程序*/voidTimer0_isr(void)interrupt1{TH0=(65536-2000)/256; //重新賦值2msTL0=(65536-2000)%256;Display(0,8);//調(diào)用數(shù)碼管掃描}/*按鍵掃描函數(shù),返回掃描鍵值*/unsignedcharKeyScan(void)//鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法{unsignedcharcord_h,cord_l;//行列值中間變量KeyPort=0x0f;//行線輸出全為0cord_h=KeyPort&0x0f;//讀入列線值if(cord_h!=0x0f)//先檢測有無按鍵按下{DelayMs(10);//去抖if((KeyPort&0x0f)!=0x0f){cord_h=KeyPort&0x0f;//讀入列線值KeyPort=cord_h|0xf0;//輸出當(dāng)前列線值cord_l=KeyPort&0xf0;//讀入行線值while((KeyPort&0xf0)!=0xf0);//等待松開并輸出return(cord_h+cord_l);//鍵盤最后組合碼值}}return(0xff);//返回該值}/*按鍵值處理函數(shù),返回掃鍵值*/unsignedcharKeyPro(void){switch(KeyScan()){case0x7e:return0;break;//0按下相應(yīng)的鍵顯示相對應(yīng)的碼值case0x7d:return1;break;//1case0x7b:return2;break;//2case0x77:return3;break;//3case0xbe:return4;break;//4case0xbd:return5;break;//5case0xbb:return6;break;//6case0xb7:return7;break;//7case0xde:return8;break;//8case0xdd:return9;break;//9case0xdb:return10;break;//acase0xd7:return11;break;//bcase0xee:return12;break;//ccase0xed:return13;break;//dcase0xeb:return14;break;//ecase0xe7:return15;break;//fdefault:return0xff;break;}}七.實(shí)驗(yàn)心得在科技高度發(fā)展的今天,計(jì)算機(jī)在人們之中的作用越來越突出。而c語言作為一種計(jì)算機(jī)的語言,我們學(xué)習(xí)它,有助于我們更好的了解計(jì)算機(jī),與計(jì)算機(jī)進(jìn)行交流,因此,c語言的學(xué)習(xí)對我們尤其重要。上機(jī)實(shí)驗(yàn)是學(xué)習(xí)程序設(shè)計(jì)語言必不可少的實(shí)踐環(huán)節(jié),特別是c語言靈活、簡潔,更需要通過編程的實(shí)踐來真正掌握它。對于程序設(shè)計(jì)語言的學(xué)習(xí)目的,可以概括為學(xué)習(xí)語法規(guī)定、掌握程序設(shè)計(jì)方法、提高程序開發(fā)能力,這些都必須通過充分的實(shí)際上機(jī)操作才能完成。學(xué)習(xí)c程序設(shè)計(jì)語言除了課堂講授以外,必須保證有不少于課堂講授學(xué)時的上機(jī)時間。因?yàn)閷W(xué)時所限,課程不能安排過多的統(tǒng)一上機(jī)實(shí)驗(yàn),所以希望學(xué)生有效地利用課程上機(jī)實(shí)驗(yàn)的機(jī)會,盡快掌握用c語言開發(fā)程序的能力,為今后的繼續(xù)學(xué)習(xí)打下一個良好的基礎(chǔ)。課程上機(jī)實(shí)驗(yàn)的目的,不僅僅是驗(yàn)證教材和講課的內(nèi)容、檢查自己所編的程序是否正確,課程安排的上機(jī)實(shí)驗(yàn)的目的可以概括為如下幾個方面:1.加深對課堂講授內(nèi)容的理解課堂上要講授許多關(guān)于c語言的語法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實(shí)際問題,又必須掌握它。通過多次上機(jī)練習(xí),對于語法知識有了感性的認(rèn)識,加深對它的理解,在理解的基礎(chǔ)上就會自然而然地掌握c語言的語法規(guī)定。對于一些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機(jī)實(shí)踐中會發(fā)現(xiàn)原來理解的偏差,這是由于大部分學(xué)生是初次接觸程序設(shè)計(jì),缺乏程序設(shè)計(jì)的實(shí)踐所致。學(xué)習(xí)c語言不能停留在
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能家居網(wǎng)絡(luò)安全保險企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力項(xiàng)目商業(yè)計(jì)劃書
- 生物催化劑固定化行業(yè)跨境出海項(xiàng)目商業(yè)計(jì)劃書
- 私募股權(quán)基金企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力項(xiàng)目商業(yè)計(jì)劃書
- 證券結(jié)算AI應(yīng)用企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力項(xiàng)目商業(yè)計(jì)劃書
- 納米復(fù)合材料添加劑行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 區(qū)塊鏈技術(shù)在金融安全中的應(yīng)用行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 包子禮盒定制行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 高科技遠(yuǎn)紅外針織護(hù)膝墊行業(yè)跨境出海項(xiàng)目商業(yè)計(jì)劃書
- 傳統(tǒng)中醫(yī)五行養(yǎng)生課行業(yè)跨境出海項(xiàng)目商業(yè)計(jì)劃書
- 高空作業(yè)搬運(yùn)無人機(jī)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力項(xiàng)目商業(yè)計(jì)劃書
- 材料力學(xué)第4版單輝祖習(xí)題答案
- 消防控制室值班記錄1
- 雷尼紹探頭編程課件
- 市級優(yōu)質(zhì)公開課一元一次不等式組說課課件
- 婚前醫(yī)學(xué)檢查證明
- 婦科經(jīng)帶胎產(chǎn)雜99方方歌講解學(xué)習(xí)
- 工藝變更通知單
- 一年級音樂教案 這是什么 (市一等獎)
- 20XX-煙草車輛運(yùn)輸方案計(jì)劃
- 蘇教版二年級下冊數(shù)學(xué)競賽試卷
- 晶體幾何基礎(chǔ)
評論
0/150
提交評論