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

正文內(nèi)容

基于單片機(jī)的4位數(shù)字頻率計(jì)設(shè)計(jì)論文含程序-閱讀頁

2025-06-23 08:50本頁面
  

【正文】 ..0]。其組成圖見 附圖 2 右上部分。由于輸入標(biāo)準(zhǔn)時(shí)鐘脈沖為 1024Hz,要得到 的 FGATE 計(jì)數(shù)值相當(dāng)小,約為 20,誤差很大,故在實(shí)際設(shè)計(jì)中把第四檔閘門電平時(shí)間調(diào)整為 ,這樣第三、四檔公用一個(gè)閘門電平,同時(shí)在計(jì)數(shù)和鎖存時(shí)要做相應(yīng)的移位,因?yàn)闇y量第四檔頻率時(shí)有 4位有效數(shù)字。從組成圖中也可以看出分頻器由這 三種計(jì)數(shù)器并聯(lián)組成,通過 3個(gè) 4選 1選擇器(一個(gè) 74LS153 和一個(gè) 4_1MUX),由 STAT[1..0]選擇使用的 FGATE、 FCLR 和FTRIGGER。 FTRIGGER 送控制器 TRIGGER 作為控制器工作脈沖。這三個(gè)信號的時(shí)序圖如下: 由圖可以看出 FGATE 由高變低,即計(jì)數(shù)結(jié)束時(shí), FTRIGGER 信號才產(chǎn)生,這時(shí)控制器開始工作,判斷計(jì)數(shù)是否有效,然后發(fā)出一系列指令 直到 FCLR 信號到來,計(jì)數(shù)器清零,準(zhǔn)備進(jìn)入下一次計(jì)數(shù)。為了解決在第一檔向第二檔轉(zhuǎn)換時(shí)等待時(shí)間過長的問題,分頻器由 TRIGGER 端口接收一個(gè)計(jì)數(shù)器的溢出脈沖,當(dāng)計(jì)數(shù)器溢出時(shí),在脈沖上升沿將內(nèi)部計(jì)數(shù)器置為 FGATE 結(jié)束高電平的最后一個(gè)計(jì)數(shù)器值。另外, RESET 信號上升沿到來時(shí),計(jì)數(shù)器被置為零,這樣就可以馬上重新開始計(jì)數(shù),實(shí)現(xiàn)了復(fù)位的效果。五個(gè)輸出: 5個(gè) 5bit 十進(jìn)制 BCD 輸出。由一橋接器 BRIDGE 和 4個(gè) LATCH_4_1 1 個(gè) LATCH_4_1 鎖存器組成。因?yàn)? 4兩檔使用同一個(gè)分頻器,故測量第四檔時(shí)有 4 位有效數(shù)字,通過橋接器轉(zhuǎn)換后就能保證數(shù)據(jù)有效數(shù)字最高位與鎖存器第五位對齊。輸入輸出對應(yīng)表如下: 表格 2 橋接器功能表 STAT = 0, 1, 2 STAT = 3 OUT5 = IN3 = IN4 數(shù)字頻率計(jì)實(shí)驗(yàn)報(bào)告 202171 19 OUT4 = IN2 = IN3 OUT3 = IN1 = IN2 OUT2 0 = IN1 表格 3 LATCH_4_16 功能表 輸入 輸出 CLK SET RESET OUT 0 0 = IN 0 1 0 1 0 F 0 0 0 F 數(shù)字頻率計(jì)實(shí)驗(yàn)報(bào)告 202171 20 鎖存器單元 LATCH_4_1 和 LATCH_4_16 均為 4bit 鎖存器,其唯一不同在于置位時(shí), LATCH_4_16 鎖存器內(nèi)容置為 F,另一個(gè)置 1。 module latch_4_16(clk, set, reset, in, out)。 input[3:0] in。 reg[3:0] out。b1111。 else out = in。它由一個(gè)控制器核心模塊 CONTROL_CORE和寄存器 OFREGISTER組成。其功能表見右。 輸 出 端 口 四 個(gè) : 鎖 存 器 工 作 脈 沖LATCH_CLK、 OFREGISTER 清 零脈沖 CLROF、鎖存器狀態(tài) LATCH_STAT[1..0]和當(dāng)前檔位狀態(tài) STAT[1..0]。 count 寄存器,用來標(biāo)志當(dāng)前工作脈沖序號。 reset_reg 寄存器,用來標(biāo)志復(fù)位周期。 由上述介紹我們知道有三種情況能到達(dá) 0T 狀態(tài):計(jì)數(shù)結(jié)束、計(jì)數(shù)中溢出和復(fù)位。 RESET 信號在上升沿將 reset_reg 置為 1,并進(jìn)行復(fù)位操作,即狀態(tài)寄存器分別置值。不是,則檢測 OF 端口是否為 1,為 1 則有溢出,要進(jìn)行換檔, flag 標(biāo)志置 1,并發(fā)出 OFREGISTER 清零信號 CLROF,沒有溢出,則檢測計(jì)數(shù)器最高兩位,兩位均為 0,則說明檔位不夠,要調(diào)低檔位,輸入 輸出 CLK CLR OF 1 0 數(shù)字頻率計(jì)實(shí)驗(yàn)報(bào)告 202171 21 flag 標(biāo)志置 2,如果不均為 0,則該計(jì)數(shù)值有效, flag 置為 0; 當(dāng) 2T 脈沖到來時(shí),檢測是否是復(fù)位周期,是 則跳過,不是則繼續(xù)。 flag=0,計(jì)數(shù)有效,發(fā)出鎖存器時(shí)鐘脈沖 LATCH_CLK,將當(dāng)前計(jì)數(shù)值打入鎖存器。當(dāng) 4T 脈沖到來時(shí),在其下降沿將 stat_reg的內(nèi)容打入 STAT,在下一次高電平到來之前實(shí)現(xiàn)檔位轉(zhuǎn)換 。 input clk, reset, of, clr。 output counter_clrn, latch_clk, clrof。 output[1:0] latch_stat, stat。 always (posedge clk or posedge reset or posedge clr) begin if(reset) begin //復(fù)位脈沖 latch_stat = 1。 counter_clrn = 1。 flag = 0。 reset_reg = 1。 count = 0。 if(reset_reg == 0) begin //非復(fù)位周期 counter_clrn = 0。 latch_stat = 0。 if(of == 1) begin //有溢出 數(shù)字頻率計(jì)實(shí)驗(yàn)報(bào)告 202171 22 clrof = 1。 end else if(of == 0) begin //沒有溢出 if((IN3 == 0) amp。 (IN4 == 0)) begin //檔位不夠 flag = 2。 end end end end else if(count == 1) begin //T2 脈沖 count = count + 1。 if(flag == 1) begin // 溢出 if(stat_reg == 3) begin // 已經(jīng)在最高檔 latch_stat = 2。 latch_stat = latch_stat。 if(stat_reg == 0) begin //當(dāng)前在最低檔 stat_reg = 0。 //向下調(diào)檔 end end else begin latch_clk = 1。 latch_clk = 0。 數(shù)字頻率計(jì)實(shí)驗(yàn)報(bào)告 202171 23 reset_reg = 0。 //T4 下降沿打入 STAT end endmodule 另外,由 STAT 決定小數(shù)點(diǎn) 位置的電路 POINT 也應(yīng)該在控制器中,系統(tǒng)圖上將其單獨(dú)畫了出來,具體實(shí)現(xiàn)見附圖 1右下角。 另外,在高檔位向低檔位轉(zhuǎn)換時(shí),會(huì)產(chǎn)生第一次測量不準(zhǔn)的現(xiàn)象,尤其是在第一檔上特別明顯。因?yàn)槿齻€(gè)分頻器是并行獨(dú)立計(jì)數(shù)分頻,因此無法保證換檔時(shí)各個(gè)分頻器狀態(tài)同步,解決方案是改進(jìn)分頻器,采用統(tǒng)一結(jié)構(gòu)。 實(shí)驗(yàn)中采用的 CPU 式的指令周期結(jié)構(gòu)是不錯(cuò)的,保證了系統(tǒng)的穩(wěn)定性和快速響應(yīng),但是由于剛剛接觸,設(shè)計(jì)的時(shí)候邏輯、時(shí)序設(shè)計(jì)不夠簡潔,很多地方還有待改進(jìn)。更重要的是在通過設(shè)計(jì)實(shí)現(xiàn)自己的想法的過程中,通過和老師、同學(xué)的有效交流,不斷 的分析各種情況,解決遇到的實(shí)際問題,大大特提高了自己分析問題和解決問題的能力,收獲非常的大。測量初始化模塊設(shè)置堆棧指針 (SP) 、工作寄存器、中斷控制和定時(shí) / 計(jì)數(shù)器的工作方式。在對定時(shí) / 計(jì)數(shù)器的計(jì)數(shù)寄存器清 0 后 ,置運(yùn)行控制位 TR 為 1 ,啟動(dòng)對待測信號的計(jì)數(shù)。計(jì)數(shù)閘門結(jié)束時(shí) TR 清 0 ,停止計(jì)數(shù)。對 10 進(jìn)制數(shù)的最高位進(jìn)行判別 ,若該位不為 0 ,滿足測量數(shù)據(jù)有效位數(shù)的要求 ,測量值和量程信息一起送到顯示模塊 。當(dāng)上述測量判斷過程直到計(jì)數(shù)閘門寬度達(dá)到 1s ,這時(shí)對應(yīng)的頻率測量范圍為 100Hz 999Hz ,如果測量結(jié)果仍不具有 3 位有效數(shù)字 ,頻率計(jì)則 使用定時(shí)方法測量待測信號的周期。待測信號的上跳沿到來后 ,置運(yùn)行控制位 TR 為 1 ,以單片機(jī)工作周期為單位 ,啟動(dòng)對待測信號的周期測量。 16 位定時(shí) / 計(jì)數(shù)器的最高計(jì)數(shù)值為 65535 ,這樣在待測信號的頻率較低時(shí) ,定時(shí) / 計(jì)數(shù)器將發(fā)生溢出。待測信號的周期由 3 個(gè)字節(jié)組成 :定時(shí) / 計(jì)數(shù)器溢出次數(shù)、定時(shí) / 計(jì)數(shù)器的高 8 位和低 8 位。為提高運(yùn)算數(shù)字頻率計(jì)實(shí)驗(yàn)報(bào)告 202171 25 精度 ,這里采用浮點(diǎn)數(shù)算術(shù)運(yùn)算。第二字節(jié)為尾數(shù)的高字節(jié) 。待測信號周期的 3 個(gè)字節(jié)定點(diǎn)數(shù)首先通過截取高 16 位、設(shè)置數(shù)符和計(jì)算階碼轉(zhuǎn)換為上述格式的浮點(diǎn)數(shù)。浮點(diǎn)數(shù)到 BCD 碼轉(zhuǎn)換模塊把用浮點(diǎn)數(shù)格式表達(dá)的信號頻率值變換成本頻率計(jì)的顯示格式 ,送到顯示模塊顯示待測信號的頻率值。 (2)系統(tǒng)軟件框圖 系統(tǒng)軟件設(shè)計(jì)采用模塊化設(shè)計(jì)方法。上電后 ,進(jìn)入系統(tǒng)初始化模塊 ,系統(tǒng) 件開始運(yùn)行。 圖 4 系統(tǒng)軟件流程圖 (3)浮點(diǎn)數(shù)學(xué)運(yùn)算程序 8031 系列單片機(jī)屬于微控制器 ,由于其 CPU字長和指令功能的限制 ,它適用于控制領(lǐng)域 ,在信號處理方面不很擅長。從周期到頻率的換算過程包括 : 3字節(jié)定點(diǎn)數(shù)到浮點(diǎn)數(shù)的轉(zhuǎn)換、浮點(diǎn)數(shù)數(shù)學(xué)運(yùn)算和浮點(diǎn)數(shù)到 BCD 碼的轉(zhuǎn)換。 ( 4) 實(shí)測結(jié)果和誤差分析 為了衡量這次設(shè)計(jì)的頻率計(jì)的工作情況和測量精度 ,我們對系統(tǒng)進(jìn) 行了試驗(yàn)。 表 1 頻率測量對比表 如圖 3 信號予處理電路所示 ,待測信號在進(jìn)入單片機(jī)之前經(jīng)過了 10 2 次分頻。由表 1 頻率測量對比表可以看出 ,頻率測量的測量精度大于周期測量的測量精度。誤差表達(dá)式為 d f / f = | dN/ N| + | dt/ t| 這里 N 為計(jì)數(shù)值 ,t 為閘門時(shí)間。當(dāng)僅顯示 3 位有效數(shù)字時(shí) ,該項(xiàng)誤差可以忽略。在表 1 中 ,待測信號頻率大于 2 KHz 時(shí)的誤差就來源于計(jì)數(shù)誤差。當(dāng)待測信號頻率小于 2 KHz 時(shí) ,直接測量的是信號的周 期。在進(jìn)行周期測量時(shí)進(jìn)入單片機(jī)的信號頻率小于 100Hz ,使用 12MHz 時(shí)鐘這時(shí)的最小計(jì)數(shù)值為 10000 。待測信號的周期測量值通過浮點(diǎn)數(shù)數(shù)學(xué)運(yùn)算變換成頻率值 ,這時(shí)的誤差來源于浮點(diǎn)數(shù)數(shù)學(xué)運(yùn)算和數(shù)制之間的轉(zhuǎn)換所帶來的誤差。*/ /*目前狀態(tài)下只是顯示 0到 9999HZ 的頻率 */ include include define uint unsigned int define uchar unsigned char define ulong unsigned long define SEG1 XBYTE[0xfcec] define SEG2 XBYTE[0xfced] define SEG3 XBYTE[0xfcee] define SEG4 XBYTE[0xfcef] Uchar codetab1[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}。 ulong m=0。/*01010001 T1 計(jì)數(shù) ,T0 定時(shí) */ TH1=0。 TH0=(6553646197)/256。 數(shù)字頻率計(jì)實(shí)驗(yàn)報(bào)告 202171 30 TR0=1。//啟動(dòng)計(jì)時(shí)器 1 EA=1。//開定時(shí)器 0中斷 while(1)。 TL0=(6553646197)%256。 TR1=0。 if(m10) { SEG1=tab1[10]。 SEG3=tab1[10]。 TH1=TL1=0。 SEG2=tab1[10]。 SEG4=tab1[m%10]。} else if(m1000) { SEG1=tab1[10]。 SEG3=tab1[m%100/10]。 TH1=TL1=0。 SEG2=tab1[m%1000/100 ]。 SEG4=tab1[m%1000%100%10]。 } else { SEG1=tab1[11]。 SEG3=tab1[11]。 } TR1=1
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1