freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的電子智能搶答器_畢業(yè)設(shè)計(jì)論文-預(yù)覽頁

2025-10-04 05:43 上一頁面

下一頁面
 

【正文】 制對單片機(jī)而言是沒有區(qū)別的??尚行苑治觯喊l(fā)聲模塊在本設(shè)計(jì)中用于報(bào)警,只要能夠發(fā)出一定頻率的提示音即可。早在1985年便出現(xiàn)了51單片機(jī)專用的C語言,簡稱C5l。匯編語言是為了方便使用而設(shè)計(jì)的一種符號(hào)語言。它是計(jì)算機(jī)所能提供的最快、最有效的語言??紤]到本設(shè)計(jì)整體結(jié)構(gòu)簡單,生成的代碼占用空間小,一般的單片機(jī)足以滿足需求,并且對時(shí)序的要求不高。如果你使用C語言編程,那么Keil幾乎就是你的不二之選。通過Proteus軟件的使用我們能很容易獲得一個(gè)強(qiáng)大,方便的單片機(jī)實(shí)驗(yàn)系統(tǒng)。本設(shè)計(jì)即是采用Keil作為集成開發(fā)環(huán)境,以Proteus作為仿真原理圖、PCB設(shè)計(jì)工具。隨著技術(shù)的發(fā)展,硬件電路的集成度越來越高,各種功能強(qiáng)大的芯片降低了硬件設(shè)計(jì)的復(fù)雜程度。(2)留有一定設(shè)計(jì)余地。本次設(shè)計(jì)采用的硬件電路均在一塊開發(fā)板上,硬件電路已經(jīng)經(jīng)過生產(chǎn)廠商的測試,比較可靠,可以放心的使用,將更多經(jīng)歷投入到軟件的設(shè)計(jì)過程中去。本設(shè)計(jì)所采用STC89C52RC單片機(jī)擁有8K的程序空間,基本上能夠滿足電子搶答器的設(shè)計(jì)所需的空間大小。(5)I/O端口:在設(shè)計(jì)的初期就要對各個(gè)I/O口資源合理分配,可以預(yù)留若干備用,也許在后期的調(diào)試過程中就會(huì)派上用場。由于采用并行傳輸數(shù)據(jù),液晶模塊的DB0DB7接單片機(jī)P0口。單片機(jī)與其他微機(jī)一樣,它的各種操作都是按著節(jié)拍有序的工作的。圖32外部震蕩源電路Fig. 32 external oscillators circuitC1和C2通常取30pF左右,可以穩(wěn)定頻率并對震蕩頻率有微調(diào)作用[[] 李朝青. 單片機(jī)原理及接口技術(shù)[M]. 北京:北京航空航天大學(xué)出版社, 2006 :34.]。在單片機(jī)應(yīng)用中主要是獨(dú)立鍵盤和矩陣鍵盤。圖33 按鍵電路Fig. 33 key circuit在這個(gè)4*3的矩陣鍵盤中,上兩行8個(gè)按鍵是8為選手的搶答按鍵,最下面一行是主持人控制的加減分按鍵和開始、復(fù)位按鍵。 使CPU回到初始狀態(tài),從0000H地址開始執(zhí)行程序的過程腳系統(tǒng)復(fù)位,系統(tǒng)的復(fù)位可分為硬件復(fù)位和軟件復(fù)位[[] 程相波, 衛(wèi)安軍. 基于MCS51單片機(jī)的八路搶答器設(shè)計(jì)方法研究[J]. 北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào), 2007, 6(2).]。軟件復(fù)位就是用一系列指令來模擬硬件復(fù)位功能。復(fù)位電路如圖24所示。需要強(qiáng)調(diào)的是,在本設(shè)計(jì)中的主持人復(fù)位,并沒有使系統(tǒng)回到0000H開始執(zhí)行,只是回到搶答的開始階段開始執(zhí)行程序,不屬于以上所述的復(fù)位的范疇。單片機(jī)內(nèi)部通過編程控制I/O口的高低電平就能控制蜂鳴器的響鈴時(shí)常和頻率。為了設(shè)計(jì)出優(yōu)質(zhì)低廉的PCB,應(yīng)遵循一些原則。在確定特殊元件的位置時(shí)要遵守以下原則:a) 縮短高頻元器件間的連線,以減少它們的分布參數(shù)和相互的電磁干擾。那些笨重、發(fā)熱量多的元器件,不宜裝在印制板上,應(yīng)裝在機(jī)箱底板上,熱敏元件應(yīng)遠(yuǎn)離發(fā)熱元件。元器件應(yīng)均勻、整齊、緊湊地排列在PCB上。 布線 I/O口的導(dǎo)線應(yīng)盡量避免相鄰平行,最好加線間地線,以避免發(fā)生反饋藕合。導(dǎo)線間的最小距離主要由最壞情況下的線間絕緣電阻和擊穿電壓決定。長時(shí)間受熱時(shí),易發(fā)生銅箔膨脹和脫落現(xiàn)象。為了增加焊盤的抗剝離強(qiáng)度,可采用方形焊盤。根據(jù)上述要求,我們設(shè)計(jì)PCB。這是電路板設(shè)計(jì)的先期工作,主要是完成原理圖的繪制,包括生成網(wǎng)絡(luò)表。在繪制印制電路板之前,要對電路板有一個(gè)大體的規(guī)劃,比如電路板采用多大的物理尺寸,采用幾層電路板,各元件采用何種封裝形式及其安裝位置等。(4) 裝入網(wǎng)絡(luò)表及元件封裝。(5) 元件布局。一般先進(jìn)行自動(dòng)布線,然后手工布線進(jìn)行調(diào)整。最終本設(shè)計(jì)生成的PCB圖如圖36所示??刂骑@示屏顯示正確的信息是顯示模塊軟件的主要職責(zé)。并在需要的時(shí)候提供當(dāng)前的時(shí)間供其他模塊調(diào)用。l 主函數(shù)模塊:程序都是從主函數(shù)開始運(yùn)行的,主函數(shù)要控制這個(gè)程序運(yùn)行的流程,將各個(gè)模塊有機(jī)的結(jié)合起來,使系統(tǒng)穩(wěn)定的工作。本設(shè)計(jì)中根據(jù)我們的設(shè)計(jì)要求和搶答器系統(tǒng)的工作流程,可以得到系統(tǒng)的程序總流程圖,如圖42所示。對矩陣鍵盤進(jìn)行按鍵掃描的基本原理是對矩陣鍵盤的一條列線置為低電平,然后掃描行線,根據(jù)各行線的狀態(tài)就能判斷該列線上所有按鍵的狀態(tài)。圖43按鍵掃描流程圖Fig. 43 buttons scan flow chart從圖43中我們可以看出程序是先將一根行線置高,然后掃描列線。定時(shí)器分為軟件定時(shí)器和硬件定時(shí)器,軟件定時(shí)器是靠指令延時(shí)完成定時(shí)任務(wù)的。當(dāng)預(yù)定的定時(shí)時(shí)間后向CPU發(fā)送一次中斷請求,執(zhí)行中斷服務(wù)程序。為了確保計(jì)時(shí)的準(zhǔn)確性,本設(shè)計(jì)中我們采用單片機(jī)內(nèi)部的定時(shí)器并且以中斷的方式計(jì)數(shù)。顯示模塊程序主要用于控制LCD12864顯示各種需要的信息。在這里僅對它的指令系統(tǒng)做一介紹。對LCD12864的操作實(shí)際上是對ST7920驅(qū)動(dòng)芯片的操作,單片機(jī)將指令發(fā)送給ST7920再由ST7920控制LCD顯示頻顯示出各種圖形和文字。根據(jù)表41中的指令,我們就能夠根據(jù)我們自己的需求編寫出所需要的函數(shù)來命令12864液晶顯示特定的內(nèi)容。有了上述的基本液晶控制函數(shù)之后,就可以通過調(diào)用以上的控制函數(shù)來進(jìn)一步的完成我們先是模塊的程序設(shè)計(jì)。對圖像的顯示需要事先制作好圖像的字模數(shù)據(jù),將數(shù)據(jù)存放在一個(gè)數(shù)組中以供圖像顯示函數(shù)調(diào)用。是因?yàn)镚DRAM中的這部分字節(jié)的值是隨機(jī)的,為了解決這個(gè)問題,我們需要事先清空繪圖區(qū)的數(shù)據(jù),即對繪圖區(qū)全部寫0。搶答成功選手的顯示和犯規(guī)選手顯示相同,采用字符顯示方式。這部分首先我們將8為選手的登封存在一個(gè)數(shù)組中,顯示程序根據(jù)需要來調(diào)用每位選手的分?jǐn)?shù)顯示在屏幕上。對液晶的初始化,生產(chǎn)廠商給了以下建議流程,如圖45所示。第三步顯示清屏。計(jì)分模塊主要功能是對所有選手的得分進(jìn)行統(tǒng)計(jì)并在主持人的控制下對以為選手的得分進(jìn)行加分或者減分的操作。這種操作簡單便捷,在需要發(fā)出提示音的時(shí)候(本設(shè)計(jì)中需要發(fā)生的有倒計(jì)時(shí)的最后5秒提示音和選手搶答犯規(guī)是的告警音)能夠方便的的控制蜂鳴器的停啟。在預(yù)備時(shí)間結(jié)束前搶答視為犯規(guī)。搶答成功后鎖定按鍵,使其他選手的按鍵無效。開機(jī)初始狀態(tài)。預(yù)備搶答倒計(jì)時(shí)狀態(tài)。 搶答犯規(guī)顯示。正式搶答階段倒計(jì)時(shí)顯示。效果如圖55所示。效果如圖557所示。 復(fù)位顯示所有選手得分。無人搶答顯示。本次畢業(yè)設(shè)計(jì)用STC89C52RC芯片,實(shí)現(xiàn)了單片機(jī)系統(tǒng)及外圍電路構(gòu)成的搶答器系統(tǒng),利用單片機(jī)內(nèi)部定時(shí)計(jì)數(shù)器將軟硬件有機(jī)的結(jié)合到一起。l 可以顯示搶答成功的選手和搶答犯規(guī)的選手。l 選手答題后主持人進(jìn)行加分或減分。本設(shè)計(jì)的結(jié)構(gòu)簡易,PCB的設(shè)計(jì)和制作都比較簡單,采用單片機(jī)的最新系統(tǒng)板即可實(shí)現(xiàn),用單片機(jī)開發(fā)板上現(xiàn)有的硬件電路完全能夠滿足需求。在本設(shè)計(jì)中顯示模塊作為一個(gè)獨(dú)立的模塊它要與單片機(jī)之間進(jìn)行通信,這就要對LCD12864的指令系統(tǒng)比較熟悉。對液晶模塊的使用讓我學(xué)會(huì)了用單片機(jī)與外部設(shè)備進(jìn)行通信的一般方式,使用串并行的方式各自的特點(diǎn)。本設(shè)計(jì)還有很大的提升空間,主要有以下幾個(gè)方面:(1) 界面的美觀性設(shè)計(jì),使人機(jī)之間有更好的互動(dòng)。 在以后各種軟硬件條件允許的情況下可以增加上述的功能,進(jìn)一步完善設(shè)計(jì)。大家一起相互促進(jìn)、相互幫助營造出大學(xué)這樣一個(gè)廣泛交流的氛圍和良好的學(xué)術(shù)環(huán)境。最后,我要感謝我的家人,謝謝你們的默默支持,能讓我專心于學(xué)業(yè)。 //倒計(jì)時(shí)時(shí)間 選手編號(hào) cent為中間變量 uchar Score[]={0,0,0,0,0,0,0,0,0}。 sbit LCD12864_RW_PORT = P1^1。define LCD12864_DA_PORT P0/////////////////////////////////////////////////////////////////////////////////延時(shí)x毫秒,輸入要延時(shí)的毫秒數(shù)///////////////////////////////////////////////////////////////////////////////void delay(char x){ uchar j。} } }/////////////////////////////////////////////////////////////////////////////////按鍵掃描程序,返回按下的鍵值,我們只取112//////////////////////////////////////////////////////////////////////////////uint kscan(void){ unsigned char i, temp,num=0。 temp=P3。 temp=P3。 switch(temp) { case 0xee:num=1。 case 0xbe:num=3。 case 0xed:num=5。 case 0xbd:num=7。 case 0xeb:num=9。 //1 case 0xbb:num=11。 //復(fù)位 default:break。 //高八位賦初值 TL0=0xf6。 LCD12864_DA_PORT = 0xff。 while((LCD12864_DA_PORTamp。i5。 LCD12864_RW_PORT = 0。Nop()。Nop()。 }/////////////////////////////////////////////////////////////////////////不檢測忙信號(hào)寫入命令字 _da 為待寫入的命令字////////////////////////////////////////////////////////////////////////void LCD12864_NoWaitIdle_COM_Write(uchar _da) { LCD12864_RS_PORT = 0。 Nop()。Nop()。 LCD12864_E_PORT = 0。 LCD12864_DA_PORT = da。Nop()。Nop()。 LCD12864_RESET = 1。 LCD12864_NoWaitIdle_COM_Write(0x30)。 LCD12864_NoWaitIdle_COM_Write(0x01)。 }///////////////////////////////////////////////////////////////////////設(shè)定液晶顯示圖像////////////////////////////////////////////////////////////////////void LCD12864_PHOTO_SET(){ LCD12864_COM_Write(0x36)。}/////////////////////////////////////////////////////////////////////////設(shè)定液晶顯示字符////////////////////////////////////////////////////////////////////////void LCD12864_HANZI_SET(){ LCD12864_COM_Write(0x30)。}/////////////////////////////////////////////////////////////////////////ST7920 漢字字符寫入//參數(shù)說明: xpos 待寫入的X位置//ypos 待寫入的Y位置//daH 待寫入的漢字的高八位 daL待寫入的漢字的低八位//////////////////////////////////////////////////////////////////////void LCD12864_HANZI_WRITE(uchar xpos,uchar ypos,uchar daH,uchar daL){ uchar xy_pos。 /*計(jì)算轉(zhuǎn)換地址*/ else if(ypos==2) xy_pos = 0x88 + xpos。 LCD12864_Data_Write(daH)。}///////////////////////////////////////////////////////////////////////圖像寫入/////////////////////////////////////////////////////////////////////void LCD12864_PHOTO_WRITE(uchar *img){ uchar x,y,i,j。 /*設(shè)置起始 繪圖區(qū)的 X地址坐標(biāo)*/ for(i=0。 for(j=0。 } y++。i32。j10。 } }/////////////////////////////////////////////////////////清空繪圖區(qū)中的數(shù)據(jù)///////////////////////////////////////////////////////void clear(){ uchar x,y,i,j。 /*設(shè)置起始 繪圖區(qū)的 Y地址坐標(biāo)*/ x=0x80。 LCD12864_COM_Write(x)。 k++。 /*設(shè)置顯示圖片*/ if(time==1) {LCD12864_PHOTO_WRITE(pic1)。} else if(time ==
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1