《同的数据类型控制LED灯的闪烁频率.doc》由会员分享,可在线阅读,更多相关《同的数据类型控制LED灯的闪烁频率.doc(4页珍藏版)》请在金锄头文库上搜索。
1、同的数据类型控制LED灯的闪烁频率单片机的程序设计离不开对各种数据的处理,数据在单片机内存中的存放情况由数据结构决定。c语言的数据结构是以数据类型出现的。数据类型可分为基本数据类型和复杂数据类型,复杂数据类型是由基本数据类型构造而成的。C语言中的基本数据类型有:char,int,short,long,float和double这几种。其中char,int,short,long常用于指示整型数据,因此有包含有符号型和无符号型两种,float和double常用于表示实型数据。另外在c51中还有一些用于实现位操作和寄存器操作的数据类型。接下来我们将利用几个实例来演示数据类型、数据运算等操作1、本例分别
2、使用无符号整型数据和无符号字符型数据来设计延时函数,跟别用于控制D1和D2的闪烁,从而研究这两种数据的特性。2、实现方法为比较两种数据的使用效果,本例中将延时函数的循环次数设置相同,然后通过比较延时时间,直观地观察两种数据类型的使用效果。3、在keil c51中新建工程ex5,编写如下程序代码,并编译生成ex5.hex文件/实例5,用不同数据类型的延时函数控制LED灯的闪烁时间#include /*函数功能:用整型数据延时一段时间*/void int_delay(void) /定义整型数据实现的延时函数unsigned int i,j; /定义无符号整型变量,双字节数据,数值范围0-65535
3、for(j = 0;j 200;j+)for(i = 0;i 200;i+); /无任何操作的空循环,起到延时作用/*函数功能:用字符型数据延时一段时间*/void char_delay(void) /定义整型数据实现的延时函数unsigned char i,j; /定义无符号字符型变量,单字节数据,数值范围0-255for(j = 0;j 200;j+)for(i = 0;i 200;i+); /无任何操作的空循环,起到延时作用/*函数功能:主函数*/void main(void)unsigned char i;while(1) for(i = 0;i 3;i+) P1 = 0xfe; /点
4、亮p1.0口上的LED灯int_delay(); /延时一段较长时间P1=0xff; /熄灭p1.0口上的LED灯int_delay();for(i = 0;i 3;i+) P1 = 0xef;/点亮p1.4口上的LED灯char_delay();/延时一段较短时间P1=0xff;char_delay();4、在proteus中新建应用电路ex5,电路如下所示,为便于观察,在电路中增加了虚拟示波器,示波器的两个通道分别检测P1.0和P1.4端口的输出波形。虚拟示波器的添加步骤如下图所示启动仿真后,双击示波器原理图符号,弹出如下图所示的对话框,根据图中的提示步骤,可以更改示波器的各项参数。下图是仿真运行后,观察两个LED的闪烁速度,可以看出,D1的闪烁速度要慢于D2的闪烁速度。通过观察P1.0口和P1.4口的输出波形也可以得出同样的结论。那么为什么延时函数的数值一样,只是数据类型不一样,延时的时间却有差别呢?原因就在于数据类型的差别上!由于无符号整型数据占两个字节,而无符号字符型数据仅占一个字节,因此对无符号整型数据进行操作花费的时间就要长一些。所以,为了提高程序的运行速度,一般尽可能采用占用字节数据短的数据类型。