C语言程序设计中的数字频率计问题分析

2017-01-13 09:30蔡渊
中国新通信 2016年22期
关键词:周期C语言单片机

蔡渊

【摘要】 文章针对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.

猜你喜欢
周期C语言单片机
“C语言程序设计”课程混合教学探索
基于C语言的计算机软件编程技术探究
中职C语言单片机课堂教学中的趣味性探讨
计算机原理中C语言的应用价值
用等效的思想求简谐运动的周期
红沿河核电站调试启动阶段监督性定期试验项目首次执行的安排与跟踪
C8051F020与80C51单片机的异同点
单片机I/O口模拟串行通讯的C51实现方法
单片机调试方法的探讨
用PIC单片机制作的时间继电器