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

正文內(nèi)容

[工程科技]基于51單片機(jī)和cpld試驗(yàn)開發(fā)板的設(shè)計(jì)(參考版)

2025-01-19 06:27本頁面
  

【正文】 尤其,感謝父母,是你們的愛給了我無限動(dòng)力,也感謝自己的執(zhí)著給我和身邊的人帶來微笑!參考文獻(xiàn)[1] . 浙江:浙江大學(xué)出版社,2006[2] 鄒應(yīng)全. :西安電子科技大學(xué)出版社,2007[3] 周立功,:北京航天航空大學(xué)出版社,2003[4] 馬潮, 詹衛(wèi)前, :清華大學(xué)出版社,2003[5] 楊恒 .零起點(diǎn)學(xué)單片機(jī)與CPLD/FPGA 北京:北京航天航空大學(xué)出版,200727。你們?cè)跓o形中感染了我,使我充分認(rèn)識(shí)自我和社會(huì),把我的意志鍛煉的如此之強(qiáng)。當(dāng)然也感謝其他所有的老師教給我相關(guān)電子通信方面的知識(shí),才有了本設(shè)計(jì)。李老師嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我學(xué)習(xí)中的榜樣,他循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪。 本設(shè)計(jì)的不足之處就是手工復(fù)制性不足,關(guān)于PCB制作,我用的是熱轉(zhuǎn)印制作方法,可是走線很細(xì),又是雙面板,要多次制作或許成功。反面有跳線焊盤,這樣就不擔(dān)心開關(guān)放置反了。 本設(shè)計(jì)中也有幾處“匠心”的設(shè)計(jì):(1) 板子左側(cè),下邊有兩個(gè)缺口,焊接跨線之后,方便夾示波器等儀表探頭地線。 軟件調(diào)試最能學(xué)到知識(shí),運(yùn)用Keil51編程和調(diào)試程序,運(yùn)用Protues進(jìn)行單片機(jī)系統(tǒng)仿真,確保了設(shè)計(jì)的可行性。USB下載采用的是AVR單片機(jī)CDC方案,方便沒有串口的計(jì)算機(jī)可以用USB虛擬一個(gè)串口(即使有串口,還是使用USB接口方便),照樣使用要實(shí)現(xiàn)USB轉(zhuǎn)串口系統(tǒng),需要給AVR單片機(jī)燒寫固件驅(qū)動(dòng)程序,其中容思位的設(shè)置很講究,不能有錯(cuò)誤,否則此系統(tǒng)不能正常工作。 在設(shè)計(jì)中,USB轉(zhuǎn)串口的設(shè)計(jì)有難度,調(diào)試也不容易。不僅使整個(gè)系統(tǒng)所用的元器件減少,縮小PCB面積,更重要的是減少焊接點(diǎn)和連線,在PCB設(shè)計(jì)中盡可能的使用圓弧走線,從而大大減少故障率和受干擾的概率,使系統(tǒng)的可靠性大大提高。}if(beep_time ==0) BUZZR(OFF)。break。 break。 0x0f。case BM3: //模式 3,連續(xù)長聲BUZZR(ON)。case BM2+0x10: //模式 2 的 2 狀態(tài)if(beep_time==0) beep_modle = BM2。 beep_modle = BM2+0x10。beep_time = BM2 amp。 break。 beep_time = BM1。break。//開蜂鳴器 beep_time = BM0。//蜂鳴器發(fā)聲時(shí)間長度控制變量switch (beep_modle){case 0:break。//發(fā)聲模式選擇全局變量,其它任務(wù)中通過該變量啟動(dòng)蜂鳴器發(fā)聲void task3_init(void){beep_modle = BM0。 蜂鳴器多模式發(fā)聲任務(wù)流程圖部分程序解讀如下: include /***蜂鳴器模式定義***/define BM0 0x01define BM1 0x02define BM2 0x11define BM3 0x22define ON 0define OFF 1define BUZZR(x) BUZZR=(x)sbit BUZZR = P1^0。 蜂鳴器發(fā)聲 蜂鳴器是 IO 口驅(qū)動(dòng)的簡單開關(guān)控制,Mini51 板上的蜂鳴器是采用的有源蜂鳴器,接通電源就發(fā)出單 音頻聲音,單片機(jī)的控制只是控制其發(fā)聲時(shí)長和開關(guān)頻度,從而產(chǎn)生不同的效果,看似“接通”“延時(shí)”“斷 開”如此簡單的控制,如果考慮多任務(wù)模式,不用常規(guī)死循環(huán)延時(shí)(那樣極大的浪費(fèi) CPU 資源,不適合 多任務(wù)模式),還要實(shí)現(xiàn)多種發(fā)聲模式可選擇,這就需要我們突破傳統(tǒng)程序設(shè)計(jì)思路,這里還是基于定時(shí) 器中斷任務(wù)輪詢的思路,采用狀態(tài)機(jī)控制,程序流程圖如圖所示,這里實(shí)現(xiàn)了單次短發(fā)聲,單次長發(fā)聲, 連續(xù)短發(fā)聲,連續(xù)長發(fā)聲,根據(jù)需要還可以添加更多種發(fā)聲模式,這樣在其它需要發(fā)聲處,只要給出發(fā)聲模式即可。 lcd_put_xyns(1,2,16,str_buff+16)。}else if(fly_t 12) fly_t=0。//將顯示內(nèi)容用空白字符替換,產(chǎn)生閃爍效果if(fly_space!=15) str_buff[fly_space+1]=39。if(fly_t 3){str_buff[fly_space]=39。 //首先關(guān)閉閃爍標(biāo)志}void task1(void){static uchar fly_t=0。 39。i32。lcd1602_init()。 //定義全局顯示緩沖區(qū)uchar fly_space。閃爍控制原理是根據(jù)閃爍控制標(biāo)志位,周期替換顯示內(nèi)容為空白字符符。 //一次性讀取鍵值if(key_num != 0xff)//判斷是否有鍵按下{switch (state_dn)//采用狀態(tài)機(jī)記住前后按鍵變化情況{……}}else //按鍵釋放觸發(fā)任務(wù)執(zhí)行{switch (state_up){……}}} LCD 顯示 LCD 顯示刷新流程圖 LCD 顯示刷新流程圖如圖 4 所示,給 LCD 分配全局變量顯示緩沖區(qū)并在獨(dú)立任務(wù)中周期刷新顯示, 這樣做的好處是程序設(shè)計(jì)思路清晰,各任務(wù)獨(dú)立,程序可讀性好,缺點(diǎn)是占用太多內(nèi)存,沒有更新的數(shù)據(jù) 也不斷刷新,浪費(fèi)了 CPU 資源。 //長按鍵計(jì)數(shù)器,控制長按鍵時(shí)間uchar key_num。 //有鍵按下狀態(tài)機(jī)變量static uchar state_up = 0。//長按鍵連續(xù)執(zhí)行頻度,時(shí)間間隔 void task0_init(void)//任務(wù)初始化,在主程序 sys_init()中調(diào)用{KEY_PORT = 0xff;//按鍵端口初始化} 本任務(wù)開始時(shí)需要執(zhí)行一次的任務(wù)初始化函數(shù),在主程序 sys_init()中調(diào)用,僅僅執(zhí)行一次。//長按鍵時(shí)間設(shè)置,2s,其中 50 為本任務(wù)執(zhí)行頻度define WAIT_DN_TIME 50*1。define KEY0_UP 0x15define KEY1_UP 0x16define KEY2_UP 0x17define KEY3_UP 0x18 以上定義按鍵彈起對(duì)應(yīng)按鍵的關(guān)聯(lián)狀態(tài),數(shù)據(jù)本身沒有實(shí)際意義,只要不重復(fù)就行,由于在程序中多 處使用,如果使用常數(shù),程序可讀性差,容易出錯(cuò)。 以 50Hz 的頻度掃描鍵盤,基本不會(huì)出現(xiàn)按鍵丟失現(xiàn)象。 按鍵掃描 按鍵掃描任務(wù)流程圖 按鍵輸入需要要實(shí)現(xiàn)以下功能:按鍵去抖動(dòng),快速單次觸發(fā),長按單次觸發(fā),長按多次連續(xù)觸發(fā),同 一按鍵既有長按又有短按功能。}}} 紅色數(shù)字表示任務(wù)執(zhí)行的頻度,即每秒鐘執(zhí)行多少次。} if(task_delay[7]==0) {task7()。} if(task_delay[6]==0) {task6()。} if(task_delay[5]==0) {task5()。} if(task_delay[4]==0) {task4()。} if(task_delay
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1