蔡淵
【摘要】 文章針對C語言程序設計中的數字頻率計問題進行研究分析,使得人們能夠明確C語言的相關內容。
【關鍵詞】 頻率測試 單片機 C語言 周期
C語言使其核心內容,因此,積極對C語言程序設計中的數字頻率計問題進行研究分析勢在必行。
一、C51語言應用過程中的關鍵點分析
在整個程序設計過程中,基本上采用的是C語言進行編程。8051單片機所采用的C語言編譯器稱之為C51。在此程序中,存在一個名字為main的主程序。
1、用# include在 C語言源程序中包含庫文件,例如:# include〈reg51. h〉。2、在設計過程中,為了能給直接訪問一些特殊的功能寄存器SFR, C51采用自主形式方式進行定義,此種狀況是C語言中所不具備的,并且只能應用與單片機的程序編訂工作。例如:sfr TM O D= OX 89;3、對于片外的 I /O擴展工作的開展,基本上都采用“# define”語句對其進行定義。例如:# define PO RT A XBY TE [0x ffc0];4、在編程過程中,都會采用大到中斷程序的編程方式,中斷函數的表示方式如下:void <函數名 > ( void) interrupt [中斷向量代號 ] [using [內部寄存器組代號 ]。
二、數字頻率計主程序設計
在主程序聲明庫文件工作開展過程中,所定義的8155地址口以及所有的變量都存在一定的變化。顯示函數說明以及定時器和 8155的初始化。同時還要點亮啟動標志燈,積極地設置外部中斷作為邊沿觸發。并且還要設置分頻系數初值并測周期,對相應地方分頻系數進行有效判斷,讀周期值并將其轉換成頻率。調用顯示程序從而完成顯示頻率的功能。
# include < absacc. h>
# include < reg51. h>
# include < math. h>
# define uchar unsigned char
# define uint unsigned int
# define CO M 8155 X BY T E [0x 2000]
# define PA8155 X BY T E [0x2001]
# define PB8155 XBY TE [0x 2002 ]
# define PC8155 X BY T E [0x2003]
float fre; float mid, total, v , c, g;
uint j= 0, par= 0x 01, fen2= 0x80, fen1= 0x 00, p;
bit rflag1, rflag2;
在采用C51語言設計過程中, absacc. h 和 reg51.h占據著重要地位,因此,兩者必不可少。這兩個文件能夠定義單片機的所有寄存器以及端口。并且在上述程序中,還定義8155的各個口地址,能夠為C51編譯器硬件結構的建立,從而構建I /O變量名與其實際地址的對應關系。下文中所涉及的程序能夠是函數說明以及初始化:
void main(void)
{uint k= 0; / * 給循環變量賦初值* / void show ( void); / * 顯示函數說明* / T M OD= 0x10; / * 定時器 1方式 1, G AT E= 0 * /
COM 8155= 0xof; / * 8155的工作方式控制字* /
PB8155= fen1; / * 分頻初值賦予 8155的
PB口* /
PC8155= 0x 06; / * 點亮啟動標志燈* /
PA8155= 0x80;
EA= 1; IT1= 1; ET 1= 1; PX 1= 1; / * 開中斷 ,
三、數字頻率計顯示程序設計
設計人員應該積極對字型數碼組 ,對頻率值的單位進行有效判斷,然后將其分為 Hz, K Hz, M Hz,對頻率值的整數部分以及小數部分進行有效判斷,從而顯示頻率值以及單位數量級標志燈。小數點處理顯示程序具體如下:
PC8155= 0x 07; P A8155= table [s[6] ];
c = 0; while ( c < 10000) (+ + c; ); PA8155=0x 00; PC8155= 0x 06;
if( n= = 0) ( PA8155= 0x 00; P A8155= 0x01; ); c= 0; while (c < 1000) (+ + c; );
if( n= = 1) ( PA8155= 0x 00; P A8155= 0x02; ); c= 0; while( c < 1000) (+ + c; );
if( n= = 2) ( PA8155= 0x 00; P A8155= 0x04; );
c= 0; while (c < 1000) (+ + c; );
i+ + ;
}
小數點處理中每一次顯示都需要采用一個C循環語句進行適當的延時,并且能夠將8155的PA口數據清零,從而能夠保證下一次顯示的有效性。顯示的方法是數組 s [8]的每個值作為字形碼數組 table[ ]的下標 ,在 table [ ]數組中找到自己對應的字形碼 ,送至 8155的 P A口。最后根據 n的值 ,確定所顯示的頻率值的單位數量級。
總結:通過C51語言的利用對單片機進行設計,編程操作簡單、準確度高,還能有效避免其中存在的問題。數字頻率計的全部軟件通過相應的調試,可對其誤差進行有效分析,所得數據具有很強的實用價值。
參 考 文 獻
[1] 張杰,楊艷麗,馬莉莉等.基于單片機C語言的數字頻率計設計[J].內蒙古農業大學學報(自然科學版),2007,28(2):191-192.
[2] 孫玉霞.C語言程序設計中若干問題的探討[J].沈陽航空工業學院學報,2004,21(3):52-54.