版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 頻率計(jì)的程序設(shè)計(jì)</b></p><p><b> 1頻率計(jì)設(shè)計(jì)</b></p><p><b> 編寫頻率計(jì)程序。</b></p><p> 要求:1)能夠測量頻率并顯示。</p><p> 2)能夠進(jìn)行閘門時(shí)間選擇。</p>
2、<p> 2設(shè)計(jì)過程及論文的基本要求</p><p> ?。?).課程設(shè)計(jì)論文是體現(xiàn)和總結(jié)課程設(shè)計(jì)成果的載體,一般不應(yīng)少于3000字。</p><p> (2).學(xué)生應(yīng)撰寫的內(nèi)容為:中文摘要和關(guān)鍵詞、目錄、正文、參考文獻(xiàn)等。課程設(shè)計(jì)論文的結(jié)構(gòu)及各部分內(nèi)容要求可參照《沈陽工程學(xué)院畢業(yè)設(shè)計(jì)(論文)撰寫規(guī)范》執(zhí)行。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。</p&
3、gt;<p> ?。?).論文要求打印,打印時(shí)按《沈陽工程學(xué)院畢業(yè)設(shè)計(jì)(論文)撰寫規(guī)范》的要求進(jìn)行打印。</p><p> (4). 課程設(shè)計(jì)論文裝訂順序?yàn)椋悍饷?、任?wù)書、成績?cè)u(píng)審意見表、中文摘要和關(guān)鍵詞、目錄、正文、參考文獻(xiàn)。</p><p><b> 3.時(shí)間進(jìn)度安排;</b></p><p><b> 中文摘
4、要</b></p><p> 數(shù)字頻率計(jì)是計(jì)算機(jī)、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測量儀器。它是一種用十進(jìn)制數(shù)字顯示被測信號(hào)頻率的數(shù)字測量儀器。它的基本功能是測量正弦信號(hào),方波信號(hào)及其他各種單位時(shí)間內(nèi)變化的物理量。在進(jìn)行模擬、數(shù)字電路的設(shè)計(jì)、安裝、調(diào)試過程中,由于其使用十進(jìn)制數(shù)顯示,測量迅速,精確度高,顯示直觀,經(jīng)常要用到頻率計(jì)。 </p><p> 本數(shù)字頻率計(jì)
5、將采用定時(shí)、計(jì)數(shù)的方法測量頻率,采用一個(gè) LCD顯示器動(dòng)態(tài)顯示5數(shù)。測量范圍從1Hz-2MHz的方波。</p><p> 基本設(shè)計(jì)原理是通過控制按鈕來控制閘門時(shí)間,利用T1進(jìn)行定時(shí),定的時(shí)間即為閘門時(shí)間,同時(shí)在定時(shí)的同時(shí)利用T0進(jìn)行計(jì)數(shù),一旦時(shí)間到了,就開始對(duì)TH0和TL0中的數(shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換后的BCD碼利用液晶顯示器顯示出來即可。</p><p> 頻率測量儀器使用在生產(chǎn)和科研的
6、各個(gè)部門,也是某些大型系統(tǒng)的重要組成部分,實(shí)現(xiàn)頻率測量有專用的頻率測量儀器,但不易用于特殊場合.本設(shè)計(jì)介紹的用單片機(jī)實(shí)現(xiàn)的頻率測量儀,利用分頻和單片機(jī)的計(jì)數(shù)功能來實(shí)現(xiàn)等精度的測量.該頻率測量儀器可獨(dú)立使用;也可方便的嵌入電路系統(tǒng)中;并且將降低產(chǎn)品的成本,有利于新產(chǎn)品的設(shè)計(jì)與研制。</p><p> 本次設(shè)計(jì)通過對(duì)一個(gè)基于單片機(jī)的功能實(shí)現(xiàn)頻率計(jì)的設(shè)計(jì)學(xué)習(xí),詳細(xì)介紹了單片機(jī)應(yīng)用中的數(shù)據(jù)轉(zhuǎn)換顯示,LED顯示原理,單片
7、機(jī)的定時(shí)原理。從而達(dá)到學(xué)習(xí)、了解單片機(jī)相關(guān)指令在各方面的應(yīng)用。</p><p><b> 目錄</b></p><p><b> 課程設(shè)計(jì)任務(wù)書I</b></p><p> 單片機(jī) 課程設(shè)計(jì)成績?cè)u(píng)定表III</p><p><b> 中文摘要IV</b><
8、/p><p> 1 設(shè)計(jì)任務(wù)描述1</p><p> 1.1設(shè)計(jì)題目:串行通信電路1</p><p> 1.2設(shè)計(jì)要求:1</p><p> 1.2.1設(shè)計(jì)目的:1</p><p> 1.2.2基本要求:1</p><p> 1.2.3發(fā)揮部分:1</p>&l
9、t;p><b> 2 設(shè)計(jì)思路2</b></p><p><b> 3設(shè)計(jì)方框圖3</b></p><p> 4 各部分程序設(shè)計(jì)4</p><p> 4.1程序初始化4</p><p> 4.2系統(tǒng)時(shí)鐘初始化5</p><p> 4.3交叉開關(guān)初始
10、化5</p><p> 4.4定時(shí)器0/1初始化5</p><p> 4.5 LCD初始化6</p><p> 4.6 測頻部分6</p><p> 4.7 測占空比部分8</p><p> 5 編程過程所遇問題9</p><p> 5.1 P5口問題9</
11、p><p> 5.2 交叉開關(guān)問題9</p><p> 5.3 數(shù)組問題9</p><p> 5.4 定義變量問題9</p><p> 6 編程過程未解決問題9</p><p> 6.1 占空比測量問題9</p><p> 6.2 液晶屏LCD問題9</p>&
12、lt;p> 7 元器件清單10</p><p> 8 主要器件介紹11</p><p> 8.1 C8051f020單片機(jī)11</p><p> 8.1.1管腳圖11</p><p> 8.1.2簡介11</p><p><b> 小結(jié)13</b></p>
13、<p><b> 致謝14</b></p><p><b> 參考文獻(xiàn)15</b></p><p><b> 程序源代碼16</b></p><p><b> 1 設(shè)計(jì)任務(wù)描述</b></p><p> 1.1設(shè)計(jì)題目:串行通
14、信電路</p><p><b> 1.2設(shè)計(jì)要求:</b></p><p> 1.2.1設(shè)計(jì)目的:</p><p> ?。?)掌握了解單片機(jī)各部分的綜合應(yīng)用</p><p> (2)熟悉Silicon Laboratories IDE的仿真方法。</p><p> 1.2.2基本要求:&l
15、t;/p><p> ?。?)能夠測量頻率并顯示。</p><p> ?。?)能夠進(jìn)行閘門時(shí)間選擇</p><p> 1.2.3發(fā)揮部分:</p><p><b> ?。?)量程切換。</b></p><p> ?。?)占空比的測量。</p><p><b> 2
16、設(shè)計(jì)思路</b></p><p> 由于此程序是基于C8051F020單片機(jī)的程序設(shè)計(jì),主要的設(shè)計(jì)思路是利用信號(hào)發(fā)生器產(chǎn)生1HZ~2MHZ的方波,通過單片機(jī)的P0^0端口輸入進(jìn)單片機(jī),進(jìn)過單片機(jī)的處理,再由51單片機(jī)的實(shí)驗(yàn)箱的液晶屏進(jìn)行顯示,具體思路如下:</p><p> ?。?)首先是對(duì)單片機(jī)的定時(shí)計(jì)數(shù)部分進(jìn)行初始化的設(shè)定。選擇片外的12M晶振,</p>&
17、lt;p> 對(duì)液晶顯示器進(jìn)行初始化設(shè)定,對(duì)定時(shí)計(jì)數(shù)部分進(jìn)行特殊功能寄存器的初始化設(shè)置和選擇。</p><p> ?。?)計(jì)數(shù)器T0和定時(shí)器T1的應(yīng)用。</p><p> 采用T0對(duì)外部輸入的脈沖進(jìn)行計(jì)數(shù),用T1來設(shè)置閘門時(shí)間。當(dāng)T1發(fā)生中斷的時(shí)候關(guān)閉計(jì)數(shù)器T0,并把此時(shí)的TH0、TL0的數(shù)據(jù)儲(chǔ)存起來,為后續(xù)的數(shù)據(jù)處理做準(zhǔn)備,此部分是本頻率計(jì)設(shè)計(jì)的核心部分,此部分分的對(duì)計(jì)數(shù)器T0和
18、定時(shí)器T1的開啟關(guān)閉設(shè)計(jì)時(shí)應(yīng)該注意,因?yàn)楫?dāng)外部輸入的脈沖頻率較大時(shí),會(huì)對(duì)測量結(jié)果產(chǎn)生較大的誤差,所以盡量做到啟動(dòng)定時(shí)時(shí)就對(duì)外部脈沖進(jìn)行計(jì)數(shù),定時(shí)器T1發(fā)生中斷就停止T0的計(jì)數(shù)此時(shí)所測的頻率較為準(zhǔn)確。</p><p> ?。?)數(shù)據(jù)的轉(zhuǎn)化部分。</p><p> 由于T1發(fā)生中斷,此時(shí)記錄T0的計(jì)數(shù)值。因?yàn)橘A存的數(shù)據(jù)為十六進(jìn)制,所以需對(duì)此數(shù)據(jù)進(jìn)行轉(zhuǎn)化成十進(jìn)制,存入事先定義好的數(shù)組,為下一部
19、分的顯示部分做準(zhǔn)備。此部分的要求也較高,因?yàn)橐炎畲笾礔FFF,數(shù)據(jù)轉(zhuǎn)化成65536,所以存數(shù)據(jù)的數(shù)組應(yīng)為一維,至少長度為五。并且要按位存入數(shù)組,對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)化時(shí)要分好是十進(jìn)制還是十六進(jìn)制。</p><p> (4)數(shù)據(jù)的顯示部分。</p><p> 對(duì)液晶顯示器進(jìn)行初始化之后,在對(duì)數(shù)組中的數(shù)據(jù)進(jìn)行按位的顯示,最后顯示出所測數(shù)據(jù)。</p><p> ?。?)占空
20、比的測量部分。</p><p> 此部分的原理是利用定時(shí)器T1的定時(shí)功能,對(duì)P0^0進(jìn)行定義,當(dāng)檢測到P0^0有上升沿時(shí)啟動(dòng)定時(shí)器,但檢測到下降延時(shí),記錄此時(shí)的TH0、TL0的值,此時(shí)的數(shù)為高電平的時(shí)間,在檢測到上升沿時(shí)停止計(jì)時(shí),記錄此時(shí)的TH0、TL0的值,此時(shí)記錄的值為整個(gè)脈沖的周期。兩部分相除所得的即為所測脈沖的占空比。再經(jīng)過數(shù)據(jù)處理存入數(shù)組,送到顯示部分顯示。</p><p>
21、 以上為我編寫的程序的主要思路。</p><p><b> 3設(shè)計(jì)方框圖</b></p><p><b> 4 各部分程序設(shè)計(jì)</b></p><p><b> 4.1程序初始化</b></p><p> 此部分的主要內(nèi)容為對(duì)主程序的初始化,定義變量和庫函數(shù)的調(diào)用,其中
22、包括定義長整形,無符號(hào)字符型、無符號(hào)整形、無符號(hào)長整形、位型。還包括數(shù)組的定義等。</p><p> #include<c8051f020.h></p><p> #include<intrins.h></p><p> unsigned long x;</p><p> unsigned char *lcd;
23、</p><p> unsigned char M;</p><p> unsigned char n;</p><p> unsigned char h;</p><p> unsigned char e;</p><p> unsigned int tl0;</p><p> u
24、nsigned int tl00;</p><p> unsigned int th00;</p><p> unsigned char m1;</p><p> unsigned char m11;</p><p> unsigned int th0;</p><p> unsigned long t;&l
25、t;/p><p> unsigned long t0;</p><p> unsigned long t00;</p><p> unsigned char aaa;</p><p> unsigned char A;</p><p> sbit P52=P1^1;</p><p>
26、sbit P51=P1^0;</p><p> sbit P53=P1^2;</p><p> sbit P58=P1^7;</p><p> sbit a=P2^0;</p><p> sbit b=P2^1;</p><p> sbit c=P2^2;</p><p> sbit
27、 d=P2^7;</p><p> sbit in=P0^0;</p><p> unsigned char temp,data1;</p><p> unsigned char HMS[9]={"freoufce:"},YMD[10]={0x0,0x00,0X0,0X0,0x00,"KHZ"};</p>
28、<p> unsigned char YME[10]={0x0,0x00,0X0,0X0,0x00,"HZ"};</p><p> unsigned char YMM[10]={0x0,0x0,0X0,0X0,0x00,"MHZ"};</p><p> unsigned char ZK[2]={0x0,0x00};</p>
29、<p> unsigned char ZKB[14]={"ZHAN KONG BI :"};</p><p> #define SYSCLK 11059200</p><p> void SYSCLK_Init(void);</p><p> void PORT_Init(void);</p><p>
30、; void Time01_Init(void);</p><p> void LCD_Init(void);</p><p> unsigned int Frequence;</p><p> unsigned int WAN,QIAN,BAI,SHI,GE,FF;</p><p> 4.2系統(tǒng)時(shí)鐘初始化</p>&
31、lt;p> void SYSCLK_Init(void)</p><p><b> {</b></p><p> int i; </p><p> OSCXCN=0x67; //啟動(dòng)外部11.0592MHZ晶振</p><p
32、> for(i=0;i<255;i++);</p><p> while((OSCXCN & 0x80) == 0x00);</p><p> OSCICN=0x88; //選擇外部晶振作為系統(tǒng)時(shí)鐘</p><p><b> }</b></p><p>
33、4.3交叉開關(guān)初始化</p><p> void PORT_Init(void)</p><p><b> {</b></p><p> XBR0=0x00;</p><p> XBR1=0x02; //交叉開關(guān)使能T0</p><p>
34、XBR2=0x40; //使能交叉開關(guān)</p><p> P74OUT=0xf0;</p><p> P1MDOUT=0xff;</p><p><b> }</b></p><p> 4.4定時(shí)器0/1初始化</p><p> void
35、Time01_Init(void)</p><p><b> {</b></p><p> EA=0; //關(guān)總使能</p><p> TR0=0; //關(guān)定時(shí)器T0</p><p> TR1=0;
36、 //關(guān)定時(shí)器T1</p><p><b> IE=0x00;</b></p><p><b> TF1=0;</b></p><p> TMOD=0x15; //定時(shí)器1為16位定時(shí)器方式</p><p><b>
37、 IP=0x08;</b></p><p> CKCON=0x18;</p><p><b> }</b></p><p> 4.5 LCD初始化</p><p> void LCD_Init(void)</p><p><b> {</b><
38、/p><p><b> P6=0x09;</b></p><p> for(x=0;x<50000;x++);</p><p> P7=0x30; //一行顯示</p><p><b> P6=0x08;</b><
39、/p><p><b> P6=0X09;</b></p><p> for(x=0;x<1000;x++);</p><p><b> P7=0x0e;</b></p><p><b> P6=0x08;</b></p><p><b&g
40、t; P6=0X09;</b></p><p> for(x=0;x<1000;x++);</p><p><b> P7=0x06;</b></p><p><b> P6=0x08;</b></p><p><b> P6=0X09;</b>&l
41、t;/p><p> for(x=0;x<5000;x++);</p><p> P7=0x01; //清屏</p><p><b> P6=0x08;</b></p><p><b> P6=0X09;</b></p
42、><p> for(x=0;x<5000;x++);}</p><p><b> 4.6 測頻部分</b></p><p> 4.6.1 量程選擇部分</p><p> if(P52==1) //判斷P52端口是否為1</p>&l
43、t;p> {b=0; //燈亮</p><p><b> ET1=1;</b></p><p> TH1=(-SYSCLK/1000)>>8; //定時(shí)1ms</p><p> TL1=-SYSCLK/1000;<
44、/p><p> TR1=1; //啟動(dòng)T0、T1</p><p><b> TR0=1;}</b></p><p> else if(P51==1) //判斷P51端口是否為1</p><p><b&g
45、t; {a=0;</b></p><p> TR0=1; //啟動(dòng)T0</p><p><b> TF1=0; </b></p><p> for(aaa=0;aaa<239;aaa++) </p><p>
46、; {TH1=0x4c; </p><p><b> TL1=0x00;</b></p><p> TR1=1; //此部分for循環(huán)利用查詢方式</p><p> while(!TF1); 定時(shí)1s<
47、/p><p><b> TF1=0;}</b></p><p><b> ET1=1;</b></p><p> TH1=0x4c; </p><p><b> TL1=0x00;</b></p><p><b> }</b>
48、</p><p> else if(P53==1) //判斷P52端口是否為1</p><p><b> { c=0;</b></p><p><b> ET1=1;</b></p><p> TH1=(-SYSCLK/1000)>>
49、;8;</p><p> TL1=-SYSCLK/1000;</p><p><b> TR1=1;</b></p><p><b> TR0=1; }</b></p><p> Else //如若P5端口全部為0,則把
50、燈全部關(guān)斷</p><p> { P2=0xff;</p><p><b> TR0=0;</b></p><p> YME[0]=0x00; //無檔時(shí)對(duì)數(shù)組清零</p><p> YME[1]=0x00; </p><p> YME
51、[2]=0x00; </p><p> YME[3]=0x00; </p><p> YME[4]=0x00;}</p><p><b> }</b></p><p> 4.6.2 測頻顯示部分</p><p><b> P6=0x0d;</b></p>
52、<p> for(x=0;x<1000;x++);</p><p> if(P58==0)</p><p><b> {h=9;</b></p><p> lcd=&HMS;} //將"freoufce:"顯示出來</p>
53、<p><b> else</b></p><p><b> {h=14;</b></p><p> lcd=&ZKB;} //將"ZHAN KONG BI :"顯示出來</p><p> for(M=h;M>0
54、;M--)</p><p><b> {</b></p><p> data1=*lcd;</p><p><b> P7=data1;</b></p><p><b> P6=0x0c;</b></p><p><b> P6=0x
55、0d;</b></p><p><b> lcd++;</b></p><p> for(x=0;x<100;x++);</p><p><b> }</b></p><p> if(P58==0)</p><p><b> {h=7;&
56、lt;/b></p><p> if(P52==1)</p><p> {lcd=&YMD;} //將"KHZ"的數(shù)據(jù)顯示出來</p><p> else if(P51==1)</p><p> {lcd=&YME;}
57、 //將"HZ"的數(shù)據(jù)顯示出來</p><p> else if(P53==1)</p><p> {lcd=&YMM;} //將"MHZ"的數(shù)據(jù)顯示出來</p><p><b> else</b></p>&
58、lt;p> {lcd=&YME;}} //將"0HZ"的數(shù)據(jù)顯示出來</p><p><b> else</b></p><p><b> { h=2;</b></p><p> lcd=&ZK;}
59、 //顯示預(yù)算后的占空比</p><p> for(M=h;M>0;M--)</p><p><b> {</b></p><p> data1=*lcd;</p><p> if (data1<0x40)</p><p> data1+=0x30
60、;</p><p><b> P7=data1;</b></p><p><b> P6=0x0c;</b></p><p><b> P6=0x0d;</b></p><p><b> lcd++;</b></p><p>
61、; for(x=0;x<100;x++);</p><p><b> }</b></p><p><b> }</b></p><p> 4.7 測占空比部分</p><p> { d=0; //燈亮</p&
62、gt;<p><b> TH1=0;</b></p><p><b> TL1=0;</b></p><p> while(!in); //查詢方波上升沿</p><p> TR1=1; /
63、/啟動(dòng)定時(shí)器T1</p><p> while(in); //查詢方波下降沿</p><p> th0=TH1;tl0=TL1; //記錄高電平時(shí)間</p><p> while(!in); //查詢方波上升沿</
64、p><p><b> TR1=0;</b></p><p> th00=TH1;tl00=TL1;</p><p> t0=th0*0x100+tl0; //對(duì)所得數(shù)據(jù)進(jìn)行計(jì)算</p><p> t00=th00*0x100+tl00;</p><p>
65、 t=t0*100/t00;</p><p> ZK[0]=t/10; //存入數(shù)組</p><p> ZK[1]=t%10;</p><p><b> TH1=0;</b></p><p><b> TL1=0;</b></p&g
66、t;<p><b> }</b></p><p> 5 編程過程所遇問題</p><p><b> 5.1 P5口問題</b></p><p> 編程中遇到需要對(duì)量程進(jìn)行切換問題,需用P5口,過程中忽略了P5口不可位尋址,最終轉(zhuǎn)化到P1口,進(jìn)行判斷,并且須定義了中間變量A.</p>&l
67、t;p> 5.2 交叉開關(guān)問題</p><p> 編程中遇到了對(duì)可位尋址端口進(jìn)行賦值,但觀察無效,其忽略了交叉開關(guān)問題,將賦值語句加到了交叉開關(guān)使能的上端,致使語句無效,最終發(fā)現(xiàn)問題解決。</p><p><b> 5.3 數(shù)組問題</b></p><p> 由于顯示和存儲(chǔ)數(shù)據(jù)時(shí)需用到數(shù)組,所以要定義數(shù)組,但過程中發(fā)現(xiàn),數(shù)組的大小
68、一定要足夠大才能完整顯示</p><p> 5.4 定義變量問題</p><p> 在進(jìn)行占空比測量時(shí),須定義變量,由于定時(shí)器1定時(shí)時(shí)需要較多的變量,忽略了長整形,浮點(diǎn)型等的區(qū)別,造成數(shù)據(jù)的無法采集。</p><p> 6 編程過程未解決問題</p><p> 6.1 占空比測量問題</p><p> 由于低
69、頻段周期較長,會(huì)造成定時(shí)器溢出,無法準(zhǔn)確記錄周期和高電平時(shí)間,所以只能測量1KHZ~6KHZ.</p><p> 6.2 液晶屏LCD問題</p><p> 液晶屏一行顯示,并且只能從側(cè)面看清顯示的數(shù)據(jù)。</p><p><b> 7 元器件清單</b></p><p><b> 8 主要器件介紹<
70、;/b></p><p> 8.1 C8051f020單片機(jī)</p><p><b> 8.1.1管腳圖</b></p><p> 圖7.1 c8051f020引腳圖</p><p><b> 8.1.2簡介</b></p><p> C8051F020 器
71、件是完全集成的混合信號(hào)系統(tǒng)級(jí)MCU芯片, 具有64 個(gè)數(shù)字I/O 引腳 (C8051F020/2)或32 個(gè)數(shù)字I/O 引腳(C8051F021/3)。下面列出了一些主要特性; </p><p> 1. 高速、流水線結(jié)構(gòu)的8051 兼容的CIP-51 內(nèi)核(可達(dá)25MIPS) </p><p> 2. 全速、非侵入式的在系統(tǒng)調(diào)試接口(片內(nèi)) &l
72、t;/p><p> 3. 真正12 位(C8051F020/1)或10 位(C8051F022/3)、100 ksps 的8 通道ADC,帶PGA和模擬多路開關(guān) </p><p> 4. 真正8 位500 ksps 的ADC,帶PGA 和8 通道模擬多路開關(guān) </p><p> 5. 兩個(gè)12 位DAC,
73、具有可編程數(shù)據(jù)更新方式 </p><p> 6. 64K 字節(jié)可在系統(tǒng)編程的FLASH 存儲(chǔ)器 </p><p> 7. 4352(4096+256)字節(jié)的片內(nèi)RAM </p><p> 8. 可尋址64K 字節(jié)地址空間的外部數(shù)據(jù)存儲(chǔ)器接口 </p><p> 9.h
74、8697; 硬件實(shí)現(xiàn)的SPI、SMBus/ I2C 和兩個(gè)UART 串行接口 </p><p> 10. 5 個(gè)通用的16 位定時(shí)器</p><p> 11. 具有5 個(gè)捕捉/比較模塊的可編程計(jì)數(shù)器/定時(shí)器陣列 </p><p> 12. 片內(nèi)看門狗定時(shí)器、VDD 監(jiān)視器和溫度傳感器 </p><p> 13 具有片內(nèi)VDD 監(jiān)視
75、器、看門狗定時(shí)器和時(shí)鐘振蕩器的C8051F020 是真正能獨(dú)立工作的片上系統(tǒng)。 </p><p> C8051F020單片機(jī)所有模擬和數(shù)字外設(shè)均可由用戶固件使能/禁止和配置。FLASH 存儲(chǔ)器還具有在系統(tǒng)重新編程能力,可用于非易失性數(shù)據(jù)存儲(chǔ),并允許現(xiàn)場更新8051 固件。片內(nèi)JTAG 調(diào)試電路允許使用安裝在最終應(yīng)用系統(tǒng)上的產(chǎn)品MCU 進(jìn)行非侵入式(不占用片內(nèi)資源)、全速、在系統(tǒng)調(diào)試。該調(diào)試系統(tǒng)支持觀察和修改存儲(chǔ)
76、器和寄存器,支持?jǐn)帱c(diǎn)、觀察點(diǎn)、單步及運(yùn)行和停機(jī)命令。在使用JTAG 調(diào)試時(shí),所有的模擬和數(shù)字外設(shè)都可全功能運(yùn)行。</p><p><b> 小結(jié)</b></p><p> 本次我課程設(shè)計(jì)的題目是頻率計(jì)的程序設(shè)計(jì),這次課程設(shè)計(jì)我們查閱了許多的相關(guān)文獻(xiàn)和書籍。因?yàn)閯偪吹竭@個(gè)題目的時(shí)候,大家都不了解。前期都處于迷茫狀態(tài)。此次課設(shè)是二周的時(shí)間,第一天,老師對(duì)每個(gè)題目都做了
77、解釋及其具體的要求,使邏輯電路的輪廓逐漸清晰起來。知道了從何處下手。</p><p> 大家都知道,課程設(shè)計(jì)是用我們課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練;是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過程。所以我很珍惜這次機(jī)會(huì),在老師講完的時(shí)候,我們就有了一個(gè)模塊的思路。</p><p> 我們今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開實(shí)踐這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ)。在這
78、次的課程設(shè)計(jì)中,不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世。這一周內(nèi), 我感觸最深的當(dāng)屬查閱大量的設(shè)計(jì)資料了。無論是課本上的,還是網(wǎng)上的都瀏覽了不少相關(guān)的設(shè)計(jì)思路,從中也借鑒了別人的思想,開闊了自己的思路。</p><p>
79、 在設(shè)計(jì)程序之前,設(shè)計(jì)者必</p><p> 通過這次訓(xùn)練,我能夠更好的綜合運(yùn)用所學(xué)知識(shí)、獨(dú)立分析和解決實(shí)際問題。培養(yǎng)了自己的創(chuàng)新意識(shí)和創(chuàng)新能力,并獲得了科學(xué)研究的基礎(chǔ)訓(xùn)練和培養(yǎng)了團(tuán)隊(duì)協(xié)作精神。</p><p> 。在與老師交流、請(qǐng)教之間,課學(xué)對(duì)所用的知識(shí)內(nèi)部有一個(gè)深刻的理解,知道具體應(yīng)用的是哪一部分的知識(shí)。更要有一個(gè)清晰的思路和一個(gè)完整的結(jié)構(gòu)框圖。在設(shè)計(jì)邏輯電路時(shí),不能妄想一次就將整
80、個(gè)電路圖設(shè)計(jì)好。 反復(fù)修改、不斷改進(jìn)是整個(gè)設(shè)計(jì)過程的必經(jīng)之路。要養(yǎng)成文件管理的好習(xí)慣,因?yàn)槊總€(gè)模塊可能仿真的次數(shù)很多,如果不整理好文件,最后可能一團(tuán)糟。一個(gè)邏輯圖的完美與否不僅僅是實(shí)現(xiàn)其應(yīng)有的功能, 而應(yīng)該讓人一看就能明白你的設(shè)計(jì)結(jié)構(gòu)。在設(shè)計(jì)課程過程中遇到問題是很正常的,但我們應(yīng)該將每次遇到的問題分析清楚,并及時(shí)解決,以免下次再碰到同樣的問題。設(shè)很快就結(jié)束了。一周的時(shí)間雖然短暫,但在這一星期的課程設(shè)計(jì)中收獲很多。</p>
81、<p> 將以前的知識(shí)運(yùn)用到實(shí)踐中,大大提升了自己的動(dòng)手能力。在設(shè)計(jì)與仿真的過程中,對(duì)某些元件的功能及特點(diǎn)有了很好的了解,這對(duì)以后的學(xué)習(xí)或是工作有很大的幫助。</p><p> 課設(shè)雖然結(jié)束了,但是實(shí)踐與求知的路并未結(jié)束。</p><p><b> 致謝</b></p><p> 在這次課程設(shè)計(jì)的過程中,首先要感謝的是呂勇軍老
82、師。沒有老師的幫助,我們要完成整個(gè)程序是很困難的。就算是很簡單的一個(gè)問題,我們有時(shí)候也會(huì)檢查不出來,這時(shí)候多虧了老師的幫助。是老師的正確指導(dǎo),才使我的課程設(shè)計(jì)更加完整。</p><p> 由于此次課程設(shè)計(jì)涉及的內(nèi)容以前沒有經(jīng)常應(yīng)用,遇到了很大的困難,設(shè)計(jì)能夠順利的完成,真的很感謝老師。在老師的講解下,我才有了比較清晰地設(shè)計(jì)框圖。在每個(gè)模塊電路的設(shè)計(jì)過程中也遇到了很多的問題。每次請(qǐng)教老師的時(shí)候,老師都能很仔細(xì)、耐
83、心的為我們解答,不管是容易的問題,還是復(fù)雜的問題。每次老師在講解以后,我們都會(huì)恍然大悟,而且老師也會(huì)給出更好的設(shè)計(jì)提議。使我們?cè)O(shè)計(jì)得更快,更順利。</p><p> 在這里,對(duì)其他給我?guī)椭娜艘脖硎菊\摯的謝意。</p><p> 也感謝學(xué)校能夠提供一次鍛煉學(xué)生將理論與實(shí)踐相結(jié)合的能力的機(jī)會(huì)。</p><p> 對(duì)我們組來說,是一個(gè)合作的團(tuán)體,所以也感謝我組成員
84、對(duì)我的幫助,每次遇到問題的時(shí)候,他們一定會(huì)幫我解決問題,并鼓勵(lì)我。所以在問題解決的同時(shí),也學(xué)會(huì)了新的東西。大家在一起討論、研究與測試,各自發(fā)揮所長。真的很高興能有這樣的一次機(jī)會(huì)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]李光飛 ,樓苗然主編.51系列單片機(jī).北京:北京航空航天大學(xué)出版社,2003</p><p>
85、 [2]萬光毅 .Soc單片機(jī)實(shí)驗(yàn)、實(shí)踐應(yīng)用設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,2006</p><p> [3]何立民 .單片機(jī)高級(jí)教程. 北京:北京航空航天大學(xué)出版社,2000</p><p> [4]張俊謨 . Soc單片機(jī)原理應(yīng)與用——基于C8051F系列. 北京:北京航空航天大學(xué)出版社,2007</p><p><b> 程序源代碼&l
86、t;/b></p><p> #include<c8051f020.h></p><p> #include<intrins.h></p><p> unsigned long x;</p><p> unsigned char *lcd;</p><p> unsigned c
87、har M;</p><p> unsigned char n;</p><p> unsigned char h;</p><p> unsigned char e;</p><p> unsigned int tl0;</p><p> unsigned int tl00;</p><
88、p> unsigned int th00;</p><p> unsigned char m1;</p><p> unsigned char m11;</p><p> unsigned int th0;</p><p> unsigned long t;</p><p> unsigned lon
89、g t0;</p><p> unsigned long t00;</p><p> unsigned char aaa;</p><p> unsigned char A;</p><p> sbit P52=P1^1;</p><p> sbit P51=P1^0;</p><p&g
90、t; sbit P53=P1^2;</p><p> sbit P58=P1^7;</p><p> sbit a=P2^0;</p><p> sbit b=P2^1;</p><p> sbit c=P2^2;</p><p> sbit d=P2^7;</p><p> sb
91、it in=P0^0;</p><p> unsigned char temp,data1;</p><p> unsigned char HMS[9]={"freoufce:"},YMD[10]={0x0,0x00,0X0,0X0,0x00,"KHZ"};</p><p> unsigned char YME[10]=
92、{0x0,0x00,0X0,0X0,0x00,"HZ"};</p><p> unsigned char YMM[10]={0x0,0x0,0X0,0X0,0x00,"MHZ"};</p><p> unsigned char ZK[2]={0x0,0x00};</p><p> unsigned char ZKB[14
93、]={"ZHAN KONG BI :"};</p><p> #define SYSCLK 11059200</p><p> void SYSCLK_Init(void);</p><p> void PORT_Init(void);</p><p> void Time01_Init(void);</p&
94、gt;<p> void LCD_Init(void);</p><p> unsigned int Frequence;</p><p> unsigned int WAN,QIAN,BAI,SHI,GE,FF;</p><p> void main (void)</p><p><b> { </b
95、></p><p> WDTCN=0xde;</p><p> WDTCN=0xad;</p><p> LCD_Init();</p><p> SYSCLK_Init();</p><p> PORT_Init();</p><p> Time01_Init(); <
96、/p><p><b> A=P5;</b></p><p><b> P1=A;</b></p><p><b> while(1)</b></p><p><b> {A=P5;</b></p><p><b>
97、P1=A;</b></p><p><b> EA=1;</b></p><p> if(P58==0)</p><p> {if(P52==1)</p><p><b> {b=0;</b></p><p><b> ET1=1;</b
98、></p><p> TH1=(-SYSCLK/1000)>>8;</p><p> TL1=-SYSCLK/1000;</p><p><b> TR1=1;</b></p><p><b> TR0=1;</b></p><p><b>
99、; }</b></p><p> else if(P51==1)</p><p><b> {a=0;</b></p><p><b> TR0=1;</b></p><p><b> TF1=0; </b></p><p>
100、for(aaa=0;aaa<239;aaa++)</p><p><b> {</b></p><p> TH1=0x4c; </p><p><b> TL1=0x00;</b></p><p><b> TR1=1;</b></p><p&
101、gt; while(!TF1);</p><p><b> TF1=0;</b></p><p><b> }</b></p><p><b> ET1=1;</b></p><p> TH1=0x4c; </p><p><b>
102、 TL1=0x00;</b></p><p><b> }</b></p><p> else if(P53==1)</p><p><b> { c=0;</b></p><p><b> ET1=1;</b></p><p>
103、TH1=(-SYSCLK/1000)>>8;</p><p> TL1=-SYSCLK/1000;</p><p><b> TR1=1;</b></p><p><b> TR0=1; }</b></p><p><b> else</b></p&g
104、t;<p> { P2=0xff;</p><p><b> TR0=0;</b></p><p> YME[0]=0x00; </p><p> YME[1]=0x00; </p><p> YME[2]=0x00; </p><p> YME[3]=0x00; <
105、;/p><p> YME[4]=0x00;}</p><p><b> }</b></p><p><b> else</b></p><p><b> { d=0;</b></p><p><b> TH1=0;</b>
106、</p><p><b> TL1=0;</b></p><p> while(!in);</p><p><b> TR1=1;</b></p><p> while(in);</p><p> th0=TH1;tl0=TL1;</p><p&
107、gt; while(!in);</p><p><b> TR1=0;</b></p><p> th00=TH1;tl00=TL1;</p><p> t0=th0*0x100+tl0;</p><p> t00=th00*0x100+tl00;</p><p> t=t0*100/
108、t00;</p><p> ZK[0]=t/10;</p><p> ZK[1]=t%10;</p><p><b> TH1=0;</b></p><p><b> TL1=0;</b></p><p><b> }</b></p>
109、;<p><b> P6=0x0d;</b></p><p> for(x=0;x<1000;x++);</p><p> if(P58==0)</p><p><b> {h=9;</b></p><p> lcd=&HMS;}</p><
110、p><b> else</b></p><p><b> {h=14;</b></p><p> lcd=&ZKB;}</p><p> for(M=h;M>0;M--)</p><p><b> {</b></p><p>
111、; data1=*lcd;</p><p><b> P7=data1;</b></p><p><b> P6=0x0c;</b></p><p><b> P6=0x0d;</b></p><p><b> lcd++;</b></p&
112、gt;<p> for(x=0;x<100;x++);</p><p><b> }</b></p><p> if(P58==0)</p><p><b> {h=7;</b></p><p> if(P52==1)</p><p> {lc
113、d=&YMD;}</p><p> else if(P51==1)</p><p> {lcd=&YME;}</p><p> else if(P53==1)</p><p> {lcd=&YMM;}</p><p><b> else</b></p>
114、<p> {lcd=&YME;}}</p><p><b> else</b></p><p><b> { h=2;</b></p><p><b> lcd=&ZK;}</b></p><p> for(M=h;M>0;M--)
115、</p><p><b> {</b></p><p> data1=*lcd;</p><p> if (data1<0x40)</p><p> data1+=0x30;</p><p><b> P7=data1;</b></p><
116、p><b> P6=0x0c;</b></p><p><b> P6=0x0d;</b></p><p><b> lcd++;</b></p><p> for(x=0;x<100;x++);</p><p><b> }</b>
117、</p><p><b> }</b></p><p><b> }</b></p><p> void SYSCLK_Init(void)</p><p><b> {</b></p><p><b> int i;</b&g
118、t;</p><p> OSCXCN=0x67;</p><p> for(i=0;i<255;i++);</p><p> while((OSCXCN & 0x80) == 0x00);</p><p> OSCICN=0x88;</p><p><b> }</b>&l
119、t;/p><p> void PORT_Init(void)</p><p><b> {</b></p><p> XBR0=0x00;</p><p> XBR1=0x02;</p><p> XBR2=0x40;</p><p> P74OUT=0xf0;&l
120、t;/p><p> P1MDOUT=0xff;</p><p><b> }</b></p><p> void Time01_Init(void)</p><p><b> {</b></p><p><b> EA=0;</b></p&g
121、t;<p><b> TR0=0;</b></p><p><b> TR1=0;</b></p><p><b> IE=0x00;</b></p><p><b> TF1=0;</b></p><p> TMOD=0x15;&
122、lt;/p><p><b> IP=0x08;</b></p><p> CKCON=0x18;</p><p><b> }</b></p><p> void TIMER1_ISR(void) interrupt 3 using 1</p><p><b>
123、 {</b></p><p><b> TR0=0;</b></p><p><b> ET1=0;</b></p><p><b> TF1=0;</b></p><p><b> TR1=0;</b></p><
124、;p><b> TF0=0;</b></p><p> Frequence=TH0*0x100+TL0;</p><p> if(P52==1)</p><p> {WAN=Frequence/0x2710;</p><p> YMD[0]=WAN;</p><p> FF=Fr
125、equence%0x2710;</p><p> QIAN=FF/0x03e8;</p><p> YMD[1]=QIAN;</p><p> FF=FF%0x03e8;</p><p> BAI=FF/0x64;</p><p> YMD[2]=BAI;</p><p> FF=F
126、F%0x64;</p><p> SHI=FF/0x0a;</p><p> YMD[3]=SHI;</p><p> FF=FF%0x0a;</p><p><b> GE=FF;</b></p><p> YMD[4]=GE;}</p><p> else
127、if(P51==1)</p><p> {WAN=Frequence/0x2710;</p><p> YME[0]=WAN;</p><p> FF=Frequence%0x2710;</p><p> QIAN=FF/0x03e8;</p><p> YME[1]=QIAN;</p><
128、;p> FF=FF%0x03e8;</p><p> BAI=FF/0x64;</p><p> YME[2]=BAI;</p><p> FF=FF%0x64;</p><p> SHI=FF/0x0a;</p><p> YME[3]=SHI;</p><p> FF=F
129、F%0x0a;</p><p><b> GE=FF;</b></p><p> YME[4]=GE;}</p><p> if (P53==1)</p><p> {WAN=Frequence/0x2710;</p><p><b> YMM[0]=0;</b>&
130、lt;/p><p> FF=Frequence%0x2710;</p><p> QIAN=FF/0x03e8;</p><p> YMM[4]=QIAN;</p><p> FF=FF%0x03e8;</p><p> BAI=FF/0x64;</p><p><b> YM
131、M[2]=0;</b></p><p> FF=FF%0x64;</p><p> SHI=FF/0x0a;</p><p><b> YMM[3]=0;</b></p><p> FF=FF%0x0a;</p><p><b> GE=FF;</b>&
132、lt;/p><p> YMM[1]=0; }</p><p><b> TH0=0x00;</b></p><p><b> TL0=0x00;</b></p><p><b> TH1=0x00;</b></p><p> TL1=0x00;}&
133、lt;/p><p> void LCD_Init(void)</p><p><b> {P6=0x09;</b></p><p> for(x=0;x<50000;x++);</p><p><b> P7=0x30;</b></p><p><b>
134、 P6=0x08;</b></p><p><b> P6=0X09;</b></p><p> for(x=0;x<1000;x++);</p><p><b> P7=0x0e;</b></p><p><b> P6=0x08;</b></
135、p><p><b> P6=0X09;</b></p><p> for(x=0;x<1000;x++);</p><p><b> P7=0x06;</b></p><p><b> P6=0x08;</b></p><p><b>
136、; P6=0X09;</b></p><p> for(x=0;x<5000;x++);</p><p><b> P7=0x01;</b></p><p><b> P6=0x08;</b></p><p><b> P6=0X09;</b><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)頻率計(jì)課程設(shè)計(jì)
- 單片機(jī)頻率計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)--基于單片機(jī)的頻率計(jì)
- 簡易頻率計(jì)單片機(jī)課程設(shè)計(jì)
- 單片機(jī)簡易頻率計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---頻率計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--- 基于單片機(jī)的頻率計(jì)設(shè)計(jì)
- 用8051單片機(jī)實(shí)現(xiàn)頻率計(jì)
- 單片機(jī)課程設(shè)計(jì)--頻率計(jì)的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)數(shù)字頻率計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告-簡易頻率計(jì)
- 單片機(jī)簡易頻率計(jì)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)----基于51系列單片機(jī)的頻率計(jì)
- 基于c8051f020單片機(jī)的電機(jī)變頻遙控控制系統(tǒng)
- 基于單片機(jī)C8051F020太陽光導(dǎo)入器的研究.pdf
- 基于C8051F020單片機(jī)的多生理信號(hào)檢測儀.pdf
- 單片機(jī)課程設(shè)計(jì)(數(shù)字頻率計(jì))
- 單片機(jī)課程設(shè)計(jì)---數(shù)字頻率計(jì)
- 單片機(jī)數(shù)字頻率計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字頻率計(jì)
評(píng)論
0/150
提交評(píng)論