




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、內蒙古電子信息技術學院單 片 機 系 統設 計 實 訓 報 告專業: 生產過程自動化姓名:李某班級學號:。指導教師: 。實訓期間:。目錄 一實驗目的:2二實驗要求:3三 實驗基本原理:3四實驗設計分析 :31.設計思想:3五 實驗要求實現:41. 電路設計:42.主流程圖:53.4x4鍵盤行列式鍵盤原理電路圖:64. 顯示模塊6五 總電路設計如下7六 程序8七實驗心得13一實驗目的:1 熟悉單片機定時器的編程方法。2 靈活運用單片機C語言程序中的字符串、數組、指針。 3 熟悉數碼顯示、LCM1602液晶顯示器、YJD12864液晶顯示器的編程方法。4 熟悉掌握4x4矩陣鍵盤的C語言編程。二實驗
2、要求:1:用4×4矩陣鍵盤組成0f數字鍵及。2:可以自行設定或刪除8位密碼,3:用8位數碼管組成顯示電路提示信息,當輸入密碼時,只顯示“8.”,當密碼位數輸入完畢按下確認鍵時,對輸入的密碼與設定的密碼進行比較,若密碼正確,則顯示PASS,若密碼顯示錯誤時,顯示ERR.4:自由發揮其他功能.5:要求有單片機硬件系統框圖,電路原理圖,軟件流程圖。3 實驗基本原理:這個密碼鎖的功能是使用矩陣鍵盤中的十六個鍵輸入密碼0到F還有,輸入的同時在八位數碼管上顯示用戶所輸入的密碼,未輸入的位置用橫桿填補表述未輸入。當輸入的密碼超出設置的位數時,數據溢出,清零。用8位數碼管組成顯示電路提示信息,當輸入
3、密碼時,只顯示“8.”,當密碼位數輸入完畢按下確認鍵時,對輸入的密碼與設定的密碼進行比較,若密碼正確,則顯示pass,若密碼不正確,則顯示err;模擬密碼鎖,密碼固化到ROM 不能通過按鍵輸入更改。四實驗設計分析 :1.設計思想:1. 本系統采用單片機AT89S51作為核心元件的一款具有本機開鎖,加鎖,修改密碼和錯誤2. 報警的電子密碼鎖。3. 電子密碼鎖的原理是:從鍵盤輸入一組密碼,CPU把該密碼和設置密碼比較,對則將鎖打 開,錯則要求重新輸入,并記錄錯誤次數,如果三次錯誤,則被強制鎖定并報警。初步設計思路如下: 1輸入密碼用矩形鍵盤,數字鍵,字母鍵。
4、60;2LED數碼管顯示輸入密碼,但是只是輸出顯示符號8 。采用動態掃描輸出。 3. 輸入密碼錯誤時顯示ERR,密碼正確時顯示PASS。軟件的設計主要包括矩形鍵盤鍵值的讀取、LED動態掃描輸出程序、密碼判斷程序。 電子密碼鎖工作的主要過程是LED數碼管顯示密碼啊。通過鍵盤輸入密碼,按下確認鍵后判斷密碼的正確性,正確顯示PASS,錯誤顯示ERR。程序將分為主程序和中斷服務子程序。主程序負責鍵盤鍵值讀取,密碼判斷和開鎖,中斷服務子程序主要是負責LED數碼管顯示。根據程序功能,程序主要分為以下幾部分:1.鍵盤鍵值讀取程序鍵盤鍵值讀取程序包括鍵盤掃描、消除抖動、鍵譯碼等
5、內容。按鍵的識別主要有兩種方法:行反轉法和行掃描法。因為鍵盤為機械開關,容易引入抖動。為了消除抖動干擾,在程序中要加入消除抖動的部分。2) LED數碼顯示程序LED數碼顯示器是一種應用很普遍的顯示器。程序主要負責把要顯示的數字或字母對應的顯示碼送到相應的LED顯示管。有多位需要同時顯示時,可以采用動態刷新的方法,就可以得到穩定的輸出。循環顯示8個數碼管,可以實現穩定的數字顯示。中斷服務程序只負責數據的輸出顯示,主程序根據所處的狀態修正顯示數據。3)密碼判斷程序 密碼判斷程序放在主程序中,有按鍵時讀取,當確定鍵按下時作出判斷。在程序中設置6字節的空間存放設定的密碼和8字節存放鍵盤輸入
6、的數據。根據讀取的鍵盤數據和預先設定的密碼逐位比較就可以判斷輸入密碼的正確性。2. 密碼顯示與開鎖當密碼輸出時候,顯示屏上逐步顯示密碼,逐一顯示。4.密碼錯誤報警 當用戶鍵入正確密碼并按下“確認”鍵時,屏幕清零會顯示PASS。當用戶鍵入錯誤密碼按下“確認”時,屏幕清零會顯示ERR。5 實驗要求實現:1. 電路設計:2.主流程圖: 3.4x4鍵盤行列式鍵盤原理電路圖:每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結構只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。本設計發射部分采用4x4鍵盤,接收部分采用4x4鍵盤。鍵盤掃描時,首
7、先由I/O口低四位輸出高電平,高四位輸出低電平,假若有鍵按下,那么在I/O口低四位即可讀出低電平,接著延時消抖,再具體判斷是何鍵按下。4. 顯示模塊5 總電路設計如下6 程序#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#define DataPort P0 /定義數據端口 程序中遇到DataPort 則用P0 替換#define KeyPort P1sbit LATCH1=P22;/定義鎖存使能端口 段鎖存sbit LATCH2=P23;/ 位鎖存unsigned char code dofly_DuanMa=0x3f,0x0
8、6,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71;/ 顯示段碼值0Funsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分別對應相應的數碼管點亮,即位碼unsigned char TempData8; /存儲顯示值的全局變量unsigned char code password8=1,2,3,4,5,6,7,8;/可以更改此密碼做多組測試void DelayUs2x(unsigned char t);/us級
9、延時函數聲明 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 temp8;bit Flag;Init_Timer0();while (1) /
10、主循環 num=KeyPro(); if(num!=0xff) if(i=0) for(j=0;j<8;j+)/清屏 TempDataj=0; if(i<8) tempi=dofly_DuanManum;/把按鍵值輸入到臨時數組中 for(j=0;j<=i;j+) /通過一定順序把臨時數組中 /的值賦值到顯示緩沖區,從右往左輸入 TempData7-i+j=tempj; i+; /輸入數值累加if(i=9)/正常等于8即可,由于我們需要空一個用于清屏,/清屏時的按鍵不做輸入值 i=0; Flag=1;/先把比較位置1 for(j=0;j<8;j+)/循環比較8個數值,
11、/如果有一個不等 則最終Flag值為0 Flag=Flag&&(tempj=dofly_DuanMapasswordj); /比較輸入值和已有密碼 for(j=0;j<8;j+)/清屏 TempDataj=0; if(Flag)/如果比較全部相同,標志位置1 TempData0=0x3f; / "o" TempData1=0x73; / "p" TempData2=0x79; / "E" TempData3=0x54; / "n" /說明密碼正確,輸入對應操作 顯示"open&quo
12、t; else TempData0=0x79; / "E" TempData1=0x50; / "r" TempData2=0x50; / "r" /否則顯示"Err" /*- uS延時函數,含有輸入參數 unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0255 這里使用晶振12M,精確延時請使用匯編,大致延時 長度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延時函數,含有
13、輸入參數 unsigned char t,無返回值 unsigned char 是定義無符號字符變量,其值的范圍是 0255 這里使用晶振12M,精確延時請使用匯編-*/void DelayMs(unsigned char t) while(t-) /大致延時1mS DelayUs2x(245); DelayUs2x(245); /*- 顯示函數,用于動態掃描數碼管 輸入參數 FirstBit 表示需要顯示的第一位,如賦值2表示從第三個數碼管開始顯示 如輸入0表示從第一個顯示。 Num表示需要顯示的位數,如需要顯示99兩位數值則該值輸入2-*/void Display(unsigned cha
14、r FirstBit,unsigned char Num) static unsigned char i=0; DataPort=0; /清空數據,防止有交替重影 LATCH1=1; /段鎖存 LATCH1=0; keyPort=dofly_WeiMai+FirstBit; /取位碼 LATCH2=1; /位鎖存 LATCH2=0; DataPort=TempDatai; /取顯示數據,段碼 LATCH1=1; /段鎖存 LATCH1=0; i+; if(i=Num) i=0;/*- 定時器初始化子程序-*/void Init_Timer0(void) TMOD |= 0x01; /使用模式1
15、,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) /鍵盤掃描函數,使用行列反轉
16、掃描法 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);/等待松開并
17、輸出 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
18、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
19、 0xff;break; 七實驗心得在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助于我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。上機實驗是學習程序設計語言必不可少的實踐環節,特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。學習c程序設計語言除了課堂講授以外,必須保證有不少于課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機
20、實驗的機會,盡快掌握用c語言開發程序的能力,為今后的繼續學習打下一個良好的基礎。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:1加深對課堂講授內容的理解課堂上要講授許多關于c語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對于語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對于一些內容自己認為在課堂上聽懂了,但上機實踐中會發現原來理解的偏差,這是由于大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。學習c語言不能停留在學習它的語法規則,而是利用學到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。通過上機實驗來驗證自己編制的程序是否
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年水飛薊素項目節能評估報告(節能專)
- 2025年中國布邊紗夾壓腳行業市場發展前景及發展趨勢與投資戰略研究報告
- 2025醫療商業計劃書
- 中國車載攝像頭用玻璃非球面透鏡行業市場規模及投資前景預測分析
- 裝修設計合同
- 中國數控電火花機床市場競爭格局及發展戰略研究報告
- 廣告制作合同
- 2024年中國農藥殺蟲劑行業市場調查報告
- 2022-2027年中國農業生物技術行業發展前景及投資戰略咨詢報告
- 中國液晶行業投資研究分析及發展前景預測報告
- 教師成長典型案例教師個人成長案例
- 不斷把人民對美好生活的向往變為現實PPT實現人民對美好生活向往的路徑PPT課件(帶內容)
- GB/T 9286-2021色漆和清漆劃格試驗
- GB/T 33084-2016大型合金結構鋼鍛件技術條件
- GB/T 17587.3-1998滾珠絲杠副第3部分:驗收條件和驗收檢驗
- 五年級語文下冊詞句段運用專項復習教學設計
- 優秀集體評選-會計12級
- 中班科學課件:《各種各樣的鳥》
- 半條被子(紅軍長征時期故事) PPT
- 邀請函單頁模板
- 人工肝治療指南課件
評論
0/150
提交評論