|
單片機(jī)頻率計(jì)數(shù)器的設(shè)計(jì)ppt課件內(nèi)容預(yù)覽:
0.jpg (54.96 KB, 下載次數(shù): 57)
下載附件
2018-3-22 01:30 上傳
1.掌握單片機(jī)的工作原理,最小系統(tǒng)的設(shè)計(jì),外部中斷和
定時(shí)中斷。
2、了解數(shù)字頻率計(jì)測(cè)頻率與測(cè)周期的基本原理;熟練掌握
數(shù)字頻率計(jì)的設(shè)計(jì)與調(diào)試方法。
3、掌握3.掌握C51編寫中斷程序。
4、掌握PROTEUS仿真,燒寫器的使用,硬件電路設(shè)計(jì)、焊
接、裝配,培養(yǎng)學(xué)生利用單片機(jī)技術(shù)解決生活中的實(shí)際
問題的能力。
一、任務(wù)描述
1、設(shè)計(jì)一個(gè)能夠計(jì)數(shù)和計(jì)時(shí)的產(chǎn)品,測(cè)量1s內(nèi)的脈沖個(gè)數(shù)即
頻率計(jì),利用單片機(jī)外部中斷和定時(shí)中斷。
2、利用Keil C 軟件編寫主函數(shù)、外部中斷和定時(shí)中斷C程序
代碼。
3、測(cè)量信號(hào):方波 ;正弦波;三角波;采用用液晶顯示頻率值。
4、測(cè)量頻率范圍: 1Hz到9999Hz之間,要求頻率誤差小于1%。
0.jpg (60.53 KB, 下載次數(shù): 63)
下載附件
2018-3-22 01:32 上傳
0.jpg (59.13 KB, 下載次數(shù): 53)
下載附件
2018-3-22 01:32 上傳
0.jpg (48.54 KB, 下載次數(shù): 54)
下載附件
2018-3-22 01:32 上傳
1、進(jìn)行功能分析,工作框架搭建,工作分工。
2、使用軟硬件開發(fā)平臺(tái)proteus 7.4進(jìn)行電路仿真。設(shè)計(jì)要點(diǎn):新建電路圖設(shè)計(jì)文件,查找元器件,放置元器件,布局布線,修改元器件屬性,進(jìn)行仿真單片機(jī)程序。
3、使用單片機(jī)集成開發(fā)環(huán)境keil C2.0。要點(diǎn):C程序構(gòu)成, 關(guān)鍵詞,運(yùn)算符與表達(dá)式,數(shù)據(jù)結(jié)構(gòu),結(jié)構(gòu)化語(yǔ)句。
4、使用單片機(jī)下載軟件STC_ISP_V3.3,通過串口或USB將單片機(jī)程序下載到單片機(jī)芯片中進(jìn)行調(diào)試。
5、完善單片機(jī)產(chǎn)品硬件電路,進(jìn)行合適的電容、電阻、芯片、傳感器、顯示器件等進(jìn)行焊接,通電運(yùn)行后觀察硬件電路是否滿足要求。
6、完成實(shí)驗(yàn)文檔編寫,包括:題目、作者、摘要、關(guān)鍵詞,緒論,硬件電路,軟件流程、代碼,數(shù)據(jù)分析。
0.jpg (47.48 KB, 下載次數(shù): 52)
下載附件
2018-3-22 01:33 上傳
誤差來源:
(1)、單片機(jī)計(jì)數(shù)速率的限制引起誤差。因?yàn)椴捎玫氖?2 MHz的晶振,單
片機(jī)最大計(jì)數(shù)速度為500 kHz,所以當(dāng)被測(cè)信號(hào)越接近500 kHz時(shí),
測(cè)量結(jié)果與實(shí)際頻率的誤差就越大。而當(dāng)被測(cè)信號(hào)大于500 kHz時(shí),
頻率計(jì)將測(cè)不出信號(hào)頻率。
(2)、原理上存在±1誤差。由于該設(shè)計(jì)是在計(jì)數(shù)門限時(shí)間1秒內(nèi)的頻率信
號(hào)脈沖數(shù),所以定時(shí)開始時(shí)的第一個(gè)脈沖和定時(shí)時(shí)間到時(shí)的最后一個(gè)
脈沖信號(hào)是否被記錄,存在隨機(jī)性。
(3)、晶振的準(zhǔn)確度會(huì)影響一秒定時(shí)的準(zhǔn)確度,從而引起測(cè)量結(jié)果誤差。
減小誤差措施
(1)、選用頻率較高和穩(wěn)定性好的晶振。
(2)、測(cè)量頻率低的信號(hào)時(shí),可適當(dāng)調(diào)整程序,延長(zhǎng)門限時(shí)間,減少原理上
±1的相對(duì)誤差。
(3)、測(cè)量頻率較高的信號(hào)時(shí),可先對(duì)信號(hào)進(jìn)行分頻,再進(jìn)行測(cè)量。
單片機(jī)源程序如下:
- #include<reg51.h>
- #include <stdio.h>
- #define uchar unsigned char
- uchar display_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
- //定義數(shù)組存放顯示數(shù)據(jù)的編碼
- uchar display_data[8]={0,0,0,0,0,0,0,0}; //定義數(shù)組存放顯示數(shù)據(jù)的各位
- uchar c1,b1;
- sbit P1_1=P1^1;
- void delay(void) //延時(shí)
- {
- uchar i;
- for(i=500;i>0;i--);
- }
- void display() //顯示程序
- {
- uchar i,k;
- k=0x01;
- for(i=0;i<8;i++)
- {
- P2=0;
- P0=display_code[display_data[i]];
- P2=k;
- k=k<<1;
- delay();
- }
- P2=0;
- }
- void convert() //轉(zhuǎn)換程序
- {
- uchar i,f2;
- long f,f1,k;
- f=c1*65536+TH1*256+TL1 ;
- f1=f-f%10; //此變量是為了讓八位LED的高位為0時(shí)不顯示而設(shè)置
- for(i=7;i>0;i--) //此循環(huán)將計(jì)數(shù)值轉(zhuǎn)換為顯示數(shù)組,從高位到低位依次存放在
- //display_data[0]至display_data[7]
- {display_data[i]=f%10;
- f=f/10;
- }
- display_data[0]=f;
- k=1e7; //從這開始到本子程序結(jié)束的語(yǔ)句完成讓八位LED的高位為0時(shí)不顯示
- for(i=0;i<7;i++)
- {f2=f1/k;
- if(f2==0)
- {
- display_data[i]=10;
- k=k/10;
- }
- }
- }
- void timer1(void) interrupt 3 //定時(shí)器1中斷服務(wù)程序
- {
- c1++;
- }
- void timer0(void) interrupt 1 //定時(shí)器0中斷服務(wù)程序
- {
- TH0=0xb1; //裝入時(shí)間常數(shù)
- TL0=0xe0;
- P1_1=!P1_1; //P1.1取反,從P1.1引腳輸出25Hz的方波信號(hào),通過導(dǎo)線連接
- //到P3.5引腳輸入,以方便調(diào)試程序。若使用其它信號(hào)源,則去掉即可。
- if (b1==49)
- {
- convert();
- c1=0; //將計(jì)數(shù)值清零
- b1=0;
- TH1=0;
- TL1=0;
- }
- else b1++;
- }
- void main(void) //主函數(shù)
- {
- P1_1=0;
- c1=0;
- b1=0;
- TH1=0;
- TL1=0;
- TMOD=0x51;
- TH0=0Xb1;
- TL0=0Xe0;
- IE=0x8a;
- TCON=0x50;
- while(1)
- {
- display();
- }
- }
復(fù)制代碼
0.png (52.03 KB, 下載次數(shù): 57)
下載附件
2018-3-22 01:29 上傳
所有資料51hei提供下載:
任務(wù)2 簡(jiǎn)易數(shù)顯頻率計(jì)數(shù)器的設(shè)計(jì).rar
(986.15 KB, 下載次數(shù): 86)
2018-3-21 09:14 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|