版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。(4)P3口介紹P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口。復(fù)位系統(tǒng)(5)上電復(fù)位電路AT89C51的上電復(fù)位電路如圖4.2所示,只要在RST復(fù)位輸入引腳上接一電容至Vcc端,下接一個(gè)電阻到地即可。對(duì)于CMOS型單片機(jī),由于在RST端內(nèi)部有一個(gè)下拉電阻,故可將外部電阻去掉,而將外接電容減至1μF。上電復(fù)位的工作過程是在加電時(shí),復(fù)位電路通過電
容加給RST端一個(gè)短暫的高電平信號(hào),此高電平信號(hào)隨著Vcc對(duì)電容的充電過程而逐漸回落,即RST端的高電平持續(xù)時(shí)間取決于電容的充電時(shí)間。為了保證系統(tǒng)能夠可靠地復(fù)位,RST端的高電平信號(hào)必須維持足夠長的時(shí)間。上電時(shí),Vcc的上升時(shí)間約為10ms,而振蕩器的起振時(shí)間取決于振蕩頻率,如晶振頻率為10MHz,起振時(shí)間為1ms;晶振頻率為1MHz,起振時(shí)間則為10ms。在如圖的復(fù)位電路中,當(dāng)Vcc掉電時(shí),必然會(huì)使RST端電壓迅速下降到0V以下,但是,由于內(nèi)部電路的限制作用,這個(gè)負(fù)電壓將不會(huì)對(duì)器件產(chǎn)生損害。另外,在復(fù)位期間,端口引腳處于隨機(jī)狀態(tài),復(fù)位后,系統(tǒng)將端口置為全“l(fā)”態(tài)。如果系統(tǒng)在上電時(shí)得不到有效的復(fù)位,則程序計(jì)數(shù)器PC將得不到一個(gè)合適的初值,因此,CPU可能會(huì)從一個(gè)未被定義的位置開始執(zhí)行程序。圖4.2上電復(fù)位電路(6)手動(dòng)復(fù)位電路手動(dòng)按鈕復(fù)位需要人為在復(fù)位輸入端RST上加入高電平。一般采用的辦法是在RST端和正電源Vcc之間接一個(gè)按鈕。如圖4-3所示,當(dāng)人為按下按鈕時(shí),則Vcc的+5V電平就會(huì)直接加到RST端。手動(dòng)按鈕復(fù)位的電路如所示。由于人的動(dòng)作再快也會(huì)使按鈕保持接通達(dá)數(shù)十毫秒,所以,完全能夠滿足復(fù)位的時(shí)間要求。圖4.3手動(dòng)復(fù)位電路(7)晶振系統(tǒng)晶振是給單片機(jī)提供工作信號(hào)脈沖的.這個(gè)脈沖就是單片機(jī)的工作速度.比如12M晶振.單片機(jī)工作速度就是每秒12M.單片機(jī)內(nèi)部也有晶振,接外部晶振可以或得更穩(wěn)定的頻率。因?yàn)榫д衽c單片機(jī)的腳XTAL0和腳XTAL1構(gòu)成的振蕩電路中會(huì)產(chǎn)生偕波(也就是不希望存在的其他頻率的波),這個(gè)波電路的影響不大,但會(huì)降低電路的時(shí)鐘振蕩器的穩(wěn)定性,如圖4.4所示。80C51型單片機(jī)內(nèi)有一高增益反相放大器,按如圖連接可構(gòu)成自激振蕩電路,振蕩頻率取決于石英晶體的振蕩頻率,范圍可取1.2—12MHz,C01.C02主要起頻率微調(diào)和穩(wěn)定作用,電容值可取5—30Pf。圖4.4晶振電路4.3.2控制電路介紹(1)按鍵機(jī)械式按鍵再按下或釋放時(shí),由于機(jī)械彈性作用的影響,通常伴隨有一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來。抖動(dòng)時(shí)間的長短與開關(guān)的機(jī)械特性有關(guān),一般為5~10ms,如圖4.5所示。圖4.5按鍵控制電路(2)LED電路LED顯示器具有功耗低,接口控制方便等優(yōu)點(diǎn),能直接與單片機(jī)接口,可方便地實(shí)現(xiàn)各種不同的操作。16個(gè)發(fā)光二極管L1-L16分別接在單片機(jī)P0.0-P0.7,P2.0-P2.7。輸出“0”,發(fā)光二極管亮。圖4.6LED顯示電路4.3.3Proteus電路仿真圖圖4.7電路原理圖4.4軟件設(shè)計(jì)4.4.1程序流程圖開始開始讀入四個(gè)開關(guān)狀態(tài)判斷開關(guān)狀態(tài)燈依次向下移動(dòng)、單、雙數(shù)燈亮向中間亮循環(huán)前面三種無輸入圖4.9主程序流程圖在主程序中,應(yīng)該盡量的使得任務(wù)簡化,不要讓中斷服務(wù)程序作過多復(fù)雜的任務(wù),而要盡量把這些復(fù)雜的任務(wù)放到主程序中間去完成。中斷流程如圖所示。去抖功能:讀入鍵值,存入地址,然后延遲10ms后,也就是一個(gè)很短的時(shí)間之后,再次讀入一個(gè)鍵值,兩次鍵值相比較,如果一樣則不是因?yàn)橥獠吭蚨秳?dòng)產(chǎn)生按鍵,如果不一樣則說明是別的原因產(chǎn)生的按鍵抖動(dòng)。這樣的一個(gè)程序就可以去除因?yàn)槎秳?dòng)產(chǎn)生的錯(cuò)誤輸入信號(hào)。4.4.2軟件程序及分析(1)主要程序分析:#include<reg51.h>//定義8051寄存器的頭文件#include<intrins.h>//定義intrins.h函數(shù)#include<math.h>//定義數(shù)學(xué)函數(shù)#include<stdio.h>#defineu8unsignedchar//定義無符號(hào)字符#defines8signedchar#defineu16unsignedshort//定義無符號(hào)整型#defines16signedshort#defineu32unsignedint//定于無符號(hào)整型#defines32signedint#definefp32float//定義浮點(diǎn)數(shù)#definefp64double//雙倍精度浮點(diǎn)數(shù)#defineINT8Uunsignedchar#defineINT16UunsignedintsbitK1=P1^0;//按鍵1sbitK2=P1^1;//按鍵2sbitK3=P1^2;//按鍵3sbitK4=P1^3;//按鍵4#defineKEY_CHK_TIM10//按鍵檢測時(shí)間u8__g_key_value;//獲取到按鍵的值跑馬燈數(shù)組:codeu16dispcode[16]={ 0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff, 0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f};雙流水燈數(shù)組:codeu16dispcode1[16]={ 0xfe7f,0xfc3f,0xf81f,0xf00f,0xe007,0xc003,0x8001,0x0000, 0x7ffe,0x3ffc,0x1ff8,0x0ff0,0x07e0,0x03c0,0x0180,0x0000};定時(shí)器初始化函數(shù):voidtime_init(void){ TMOD|=0x01; TH0=0xf8; TL0=0x2f;//設(shè)定定時(shí)器初值(65535-63535)大約60msTR0=1;//打開定時(shí)器 ET0=1;//開中斷 EA=1; ES=1; }(2)跑馬燈運(yùn)行方式:voiddisp0(void)//調(diào)用前面的跑馬燈數(shù)組{ u8i;//定義i for(i=0;i<16;i++) { P0=dispcode[i]>>8;//P0口運(yùn)行第二行數(shù)組 P2=dispcode[i];//P1口運(yùn)行第一行數(shù)組 delay_ms(100);//延時(shí)100ms }}(3)鴛鴦燈運(yùn)行方式:voiddisp1(void){ delay_ms(100);//延時(shí)100ms P0=0xaa;//P0口8個(gè)LED單數(shù)亮 P2=0xaa;//P0口8個(gè)LED燈亮 delay_ms(100); P0=0x55;//雙數(shù)燈亮 P2=0x55;//雙數(shù)燈亮 delay_ms(100);//延時(shí)100ms}(4)雙流水燈運(yùn)行方式:voiddisp2(void){ u8i; for(i=0;i<8;i++) { P0=dispcode1[i]>>8;//P0口運(yùn)行第二行數(shù)組,逐個(gè)點(diǎn)亮,向中間 P2=dispcode1[i];//P2口運(yùn)行第一行數(shù)組,逐個(gè)點(diǎn)亮,向中間 delay_ms(100); } for(i=8;i<16;i++) { P0=dispcode1[i]>>8;//向兩邊亮 P2=dispcode1[i];//向兩邊亮 delay_ms(100);//延時(shí)100ms }}(5)按鍵掃描函數(shù):voidkey_scan(void){static u16 k1_pre_kep_tim=0;//k1按鍵按下保持時(shí)間static u8 k1_press_flag=0;//k1按鍵按下標(biāo)志static u8 k1_short_press_flag=0;//k1短按觸發(fā)標(biāo)志static u16 k2_pre_kep_tim=0;//k2按鍵按下保持時(shí)間static u8 k2_press_flag=0;//k2按鍵按下標(biāo)志static u8 k2_pre_ctn_tim=0;//按鍵連續(xù)觸發(fā)的間隔延時(shí)計(jì)數(shù)static u16 k3_pre_kep_tim=0;//k3按鍵按下保持時(shí)間static u8 k3_press_flag=0;//k3按鍵按下標(biāo)志static u8 k3_pre_ctn_tim=0;//k1短按觸發(fā)標(biāo)志static u16 k4_pre_kep_tim=0;//k4按鍵按下保持時(shí)間static u8 k4_press_flag=0;//k4按鍵按下標(biāo)志if(K1==1)//當(dāng)按鍵松開為真{ k1_pre_kep_tim=0;//k1按鍵按下保持時(shí)間清零 k1_press_flag=0;//k1按鍵按下標(biāo)志清零if(k1_short_press_flag==1)//短按標(biāo)志為1{ k1_short_press_flag=0;//短按標(biāo)志清零 __g_key_value=1;//觸發(fā)1號(hào)短按鍵 } }elseif(k1_press_flag==0){ k1_pre_kep_tim++;//累加定時(shí)中斷次數(shù)if(k1_pre_kep_tim>KEY_CHK_TIM){ k1_short_press_flag=1;//短按標(biāo)志置1 }if(k1_pre_kep_tim>300){ k1_pre_kep_tim=0;//中斷計(jì)數(shù)清零 k1_short_press_flag=0;//清除按鍵短按的有效標(biāo)志 k1_press_flag=1;//自鎖按鍵置位,避免一直觸發(fā) __g_key_value=11;//觸發(fā)長按 }(6)主程序:if(con_f==1){ disp0();//只運(yùn)行跑馬燈 }if(con_f==2){ disp1();//只運(yùn)行鴛鴦燈 }if(con_f==3){ disp2();//只運(yùn)行雙流水 }if(con_f==4){ disp0();//循環(huán)以上三種 disp1(); disp2(); } }}五、組裝調(diào)試5.1硬件硬件包括MCS-51單片機(jī),LED發(fā)光二極管,晶振,電容,開關(guān),電源,電阻及導(dǎo)線。將所有硬件配齊,按電路原理圖組裝好電路,在電路板上一一對(duì)應(yīng),所有硬件準(zhǔn)備就緒后,接通電源,軟硬結(jié)合。首先用燒錄軟件給單片機(jī)芯片加載*.hex文件,等待加載完畢,運(yùn)行電路。當(dāng)按下K1時(shí),跑馬燈開始,16個(gè)LED燈從上到下逐個(gè)點(diǎn)亮,第一個(gè)燈亮,然后滅,然后每個(gè)間隔時(shí)間為100ms;當(dāng)按下K2時(shí),鴛鴦燈開始,16個(gè)LED燈先單數(shù)亮,然后雙數(shù)亮,間隔時(shí)間也是100ms;當(dāng)K3按下時(shí),雙流水燈開始,16個(gè)LED燈依次往中間移動(dòng),然后再依次往外移動(dòng),亮過的燈不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年電工技術(shù)期末考試試題及答案(名師系列)
- 2026上海浦東新區(qū)婦女聯(lián)合會(huì)文員公開招聘2人筆試備考試題及答案解析
- 2026甘肅慶陽市慶城縣事業(yè)單位引進(jìn)高層次和急需緊缺人才80人筆試備考題庫及答案解析
- 2025-2026廣東中山南區(qū)街道招聘公辦幼兒園臨聘教職工7人筆試備考試題及答案解析
- 2025年棗莊嶧城區(qū)衛(wèi)生健康系統(tǒng)公開招聘工作人員(27人)備考題庫附答案
- 2026天津市口腔醫(yī)院專業(yè)技術(shù)崗位工作人員(人事代理制)招聘27人筆試備考題庫及答案解析
- 2026陜西長嶺紡織機(jī)電科技有限公司招聘(13人)筆試參考題庫及答案解析
- 2025廣東文藝職業(yè)學(xué)院招聘事業(yè)編制人員5人考試歷年真題匯編附答案
- 2025年黑河北安北崗街道辦事處城鎮(zhèn)公益性崗位招聘10人(公共基礎(chǔ)知識(shí))綜合能力測試題附答案
- 2025年昆明市西山區(qū)前衛(wèi)社區(qū)衛(wèi)生服務(wù)中心招聘勞務(wù)派遣人員招聘(9人)備考題庫附答案
- 中考數(shù)學(xué)常見幾何模型簡介
- 新媒體數(shù)據(jù)分析與應(yīng)用學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 2022年內(nèi)蒙古交通運(yùn)輸廳所屬事業(yè)單位考試真題及答案
- 第六講通量觀測方法與原理
- 海水淡化PX能量回收裝置維護(hù)說明書
- 婦產(chǎn)科學(xué)(第9版)第二章女性生殖系統(tǒng)解剖
- 中醫(yī)經(jīng)絡(luò)之-特定穴課件
- GB/T 9122-2000翻邊環(huán)板式松套鋼制管法蘭
- GB/T 5563-2013橡膠和塑料軟管及軟管組合件靜液壓試驗(yàn)方法
- GB/T 4963-2007聲學(xué)標(biāo)準(zhǔn)等響度級(jí)曲線
- 金融支付清算系統(tǒng)術(shù)語大全(中英文對(duì)照)
評(píng)論
0/150
提交評(píng)論