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

正文內(nèi)容

單片機(jī)的系統(tǒng)開發(fā)設(shè)計(jì)方案(更新版)

2025-06-03 13:36上一頁面

下一頁面
  

【正文】 x00。 }顯示模塊程序的流程較簡單,在此就不畫流程圖,其源程序如下所示: void ScrShift(uchar keyIndex) /*六位數(shù)碼管順序左移*/{ uchar i。通過按鍵來控制系統(tǒng)的功能,主程序的流程圖如圖所17示:開 始 系統(tǒng)初始化 鍵盤處理子程序鍵盤處理 時 鐘時鐘處理子程序 串行通信串行處理子程序 A/D、D/A轉(zhuǎn)換 LED顯示 返 回圖17 系統(tǒng)主程序主程序流程圖時鐘子程序的流程圖如圖18所示:開 始定時中斷10ms 是否為60? Y N是否為60? N Y 小時加1,分鐘復(fù)位是否為24? Y Y N秒加1,毫秒復(fù)位分鐘加1,秒復(fù)位 Y小時復(fù)位返 回 圖18 時鐘流程圖—,當(dāng)開關(guān)被按下時為“0”電平,因此要取反向和0X0F作AND運(yùn)算,但同時只能按下一個鍵,其源程序如下所示://one key detect Void Inputkey1(void) { Byte keytmp。當(dāng)按下復(fù)位鍵時系統(tǒng)復(fù)位,單按下功能1鍵時發(fā)光二極管D5閃動2次,當(dāng)按下功能2鍵D5閃動3次,當(dāng)按下功能3鍵D5閃動4次,相應(yīng)的按下功能4鍵D5閃動5次。電路的工作原理是3—8譯碼器將單片機(jī)輸出的三位二進(jìn)制代碼不同的八種組合“翻譯”成不同的對應(yīng)輸出信號,其對應(yīng)的8種組合分別與一個輸出對應(yīng),8個輸出在任何情況下都只有一個有效,在此我們只用其中的6種對應(yīng)信號。 圖12 TLC5618的內(nèi)部結(jié)構(gòu)16位的數(shù)據(jù)中,前4位(D15—D12)為編程控制位,其功能如下表1所示;后12位(D11—D0)為數(shù)據(jù)位,用于模擬數(shù)據(jù)的輸出。這時可在SCLK端輸入一串脈沖將結(jié)果從DOUT端移出,讀入單片機(jī)中處理。我們將此三個管腳接地,表示其地址為000B。單片機(jī)外圍電路如圖9所示:圖9 單片機(jī)外圍電路單片機(jī)外圍電路由復(fù)位電路、晶振電路、外部存儲器電路組成。 D/A轉(zhuǎn)換芯片TLC5618TLC5618是可編程雙路12位數(shù)/模轉(zhuǎn)換器,TLC5618的特點(diǎn):(1);(2)3線串行接口;(4)高阻抗基準(zhǔn)輸入;(5)電壓輸出范圍為基準(zhǔn)電壓的兩倍。對比兩種設(shè)計(jì)方案,我選擇方案二來設(shè)計(jì)此系統(tǒng),因?yàn)榉桨付挠布娐繁确桨敢惠^簡單;方案二配上外部的采集電路和相應(yīng)的軟件就可以實(shí)現(xiàn)各種不同的功能,而方案一只能實(shí)現(xiàn)一種功能;方案二的軟件控制過程也比方案一的較為簡單和直觀,方案二的性能也比方案一的穩(wěn)定,所以選擇方案二來設(shè)計(jì)此系統(tǒng)。該設(shè)計(jì)要求實(shí)現(xiàn):(1)、能夠進(jìn)行D/A轉(zhuǎn)換功能;(2)、能夠進(jìn)行A/D轉(zhuǎn)換功能;(3)、設(shè)計(jì)串行通信接口,實(shí)現(xiàn)與PC機(jī)的通信;(4)、具有人機(jī)對話功能,可通過鍵盤進(jìn)行輸入;(5)、LED顯示器能夠根據(jù)按鍵的輸入進(jìn)行相應(yīng)的顯示;(6)、自制+5V穩(wěn)壓電源。從目前單片機(jī)的發(fā)展趨勢來看,單片機(jī)控制技術(shù)已成為電子設(shè)計(jì)技術(shù)及計(jì)算機(jī)技術(shù)不可缺少的一個重要部分,因此單片機(jī)系統(tǒng)在電子世界里有著較好的前景,進(jìn)行單片機(jī)的系統(tǒng)開發(fā)設(shè)計(jì)在當(dāng)今電子領(lǐng)域有著重大的意義。此方案的特點(diǎn)是:硬件電路的實(shí)現(xiàn)較為簡單、所用元器件也較少、系統(tǒng)可以配上外部的各種傳感器采集電路作為系統(tǒng)的被測對象的模擬輸入信號來源,如壓力、溫度、濕度的采集等等;配上相應(yīng)的模擬采集電路和軟件就可以實(shí)現(xiàn)各種不同的功能、還能用LED數(shù)碼管十進(jìn)制顯示相應(yīng)的測量數(shù)據(jù),如可以顯示測得的壓力、溫度、濕度;還可以實(shí)現(xiàn)和PC機(jī)串行通信和ISP編程下載功能,不需要編程器直接從PC上下載程序。使用外部參考時,—VDD的基準(zhǔn)電壓;(5)GND 接地引腳;(6)DOUT 數(shù)據(jù)輸出引腳;(7) 片選信號輸入引腳;(8)SCLK 時鐘信號輸入引腳,最高為5MHz。D1為下載指示燈,R1為限流電阻,發(fā)光二極管的壓降為2V,電流取5mA,其阻值為:R1=52/=600Ω,考慮到和ISP一起共電,在此取1K?,F(xiàn)只有這一個I2C總線芯片,[3]。當(dāng)為低電平時,在下降沿MAX187的T/H電路進(jìn)入保持狀態(tài),并開始轉(zhuǎn)換。DAC輸出電壓范圍為基準(zhǔn)電壓的兩倍,其輸出極性與基準(zhǔn)電壓輸入相同;基準(zhǔn)電壓來自基準(zhǔn)電壓芯片MC1403的輸出端,其輸出基準(zhǔn)電壓為VO=+,上電時內(nèi)部電路把DAC寄存器復(fù)位至0,輸出緩沖器具有可達(dá)電源電壓幅度的輸出。圖13 TLC5618的操作時序表1 D15—D12編程控制位的功能編 程 位代 碼 功 能D15D14D13D121XXX把串行接口寄存器的數(shù)據(jù)寫入鎖存器A并用緩沖器鎖存數(shù)據(jù)更新鎖存器B0XX0寫鎖存器B和雙緩沖鎖存器0XX1僅寫雙緩沖鎖存器X1XX14μS建立時間X0XX3μS建立時間XXXX上電(Power-up)操作XX1X斷電(Power-down)方式 LED數(shù)碼管顯示電路 LED數(shù)碼顯示電路如圖14所示: 圖14 LED數(shù)碼顯示電路 LED顯示電路由74LS138譯碼器,三極管放大電路,限流電阻電路、共陽極LED數(shù)碼管、驅(qū)動共陽級LED數(shù)碼管的74LS47等組成。鍵盤輸入電路與單片機(jī)的連接電路如圖15所示:圖15 鍵盤電路鍵盤用以控制程序的執(zhí)行時數(shù)據(jù)的輸入或是特殊功能的設(shè)置及操作,在此設(shè)計(jì)中用到5個按鍵,在硬件電路上采用AT89S52的P2端口的5條I/O線當(dāng)作輸入用,用程序來控制,在鍵沒有按下的時候?qū)?yīng)的輸入端為高電平,當(dāng)有一個鍵按下時對應(yīng)的輸入端為低電平,經(jīng)過輪流掃描判斷輸入端是否為低電平,便可以知道是按下了哪個鍵[4]。但在此我們沒有外部傳感器采集電路,因而不能進(jìn)行A/D和D/A轉(zhuǎn)換,整個軟件系統(tǒng)是這樣來設(shè)計(jì)的:首先上位機(jī)編輯好源程序再轉(zhuǎn)換為相應(yīng)的可執(zhí)行的二進(jìn)制代碼文件由串口通信程序經(jīng)過串口傳送到單片機(jī)中存儲。 Else if(keytmp= =16) keydaata =KEY5。i6。經(jīng)過以上幾個主要的步驟設(shè)計(jì)出如圖23和圖24所示的PCB板圖。在未來的工作和學(xué)習(xí)中,我將以更好的成績來回報各位領(lǐng)導(dǎo)和老師。 //sbit CS =P1^5。uchar DisplayArray[6]。 /*系統(tǒng)主程序*/void ScanKeys(void)。 /*環(huán)掃方案*/void GradualFlash(void)。 /*調(diào)整時間*/void ScanSeg7()。 /*令定時器2作為串口波特率發(fā)生器 /*|TF2|EXF2|RCLK|TCLK|EXEN2|TR2|C/T2|CP/RL2|*/ TL2=0xd9。 /*優(yōu)先Timer0中斷*/ /*| | | PT2| PS | PT1| PX1| PT0| PX0|*/ ClearScr()。 /*鍵盤掃描判斷*/ if(keyPtr!=0x55) { switch(c_keyCode[keyPtr]) { case 0x0a: case 0x0b: case 0x0c: case 0x0d: case 0x0e: case 0x0f: ClearScr()。 } ClearScr()。 UARTKeyFlag=0xaa。iScan4。0x02)==0x00) /*第二列被按*/ { keyFlag|=(0x0001(iScan*4+1))。0x08)==0x00) /*第四列被按*/ { keyFlag|=0x0001(iScan*4+3)。 /*掃描鍵盤*/ if(keyFlag!=0) { Delay(1000)。j++) { uintTemp=((uint)0x0001)j。 }/*************************************************************************/void KeyHandle(uchar keyIndex) /*按鍵處理模塊*/{ switch(c_keyCode[keyIndex]) /*按數(shù)字鍵N:循環(huán)播放第N首音樂*/ { case 0x00: break。 case 0x08: break。 case 0x0c: hour++。 } break。 /*環(huán)掃方案*/ case 0x03: GradualFlash()。}/*************************************************************************/void StopAutoShow(void) /*停止流水燈自動循環(huán)演示*/{ LEDAutoFlag=0。 /*每流完一個流程下一個水滴的流程就要相應(yīng)減少一個燈*/ s_dropdown_i。 if(LEDCycle500usFlag==1) /*判斷500us是否到*/ { LEDCycle500usFlag=0。 if(++s_gradualFlash_OverCounter=6) /*漸明漸暗6/2=3個周期后如果自動演示功能打開則跳到下一方案*/ { s_gradualFlash_OverCounter=0。 } } } }}/*************************************************************************/void SlowFlash(void) /*慢閃方案*/{ static uchar s_slowFlashCounter。 /*每100ms燈亮滅改變一次*/ if(++s_fashFlashCounter=30) /*快閃30/2=15個周期以后如果自動演示功能打開則跳到下一方案*/ { s_fashFlashCounter=0。 for(i=0。i) { SBUF=DisplayArray[i1]。 TI=0。 min%=60。 } /*************************************************************************/ void ScanSeg7() /*數(shù)碼管掃描顯示*/{ static uchar s_scanCounter。 /**/ TH0=TH0Global。 temp=6553610000。 /*秒加一*/ modifyTimeFlag=1。 switch(rcv) { case 48: UARTKeyFlag=0x0d。 case 50: UARTKeyFlag=0x01。 case 52: UARTKeyFlag=0x04。 case 54: UARTKeyFlag=0x06。 case 56: UARTKeyFlag=0x09。 case 65: UARTKeyFlag=0x03。 case 67: UARTKeyFlag=0x0b。 case 69: UARTKeyFlag=0
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1