资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
同的数据类型控制LED灯的闪烁频率单片机的程序设计离不开对各种数据的处理,数据在单片机内存中的存放情况由数据结构决定。c语言的数据结构是以数据类型出现的。数据类型可分为基本数据类型和复杂数据类型,复杂数据类型是由基本数据类型构造而成的。C语言中的基本数据类型有:char,int,short,long,float和double这几种。其中char,int,short,long常用于指示整型数据,因此有包含有符号型和无符号型两种,float和double常用于表示实型数据。另外在c51中还有一些用于实现位操作和寄存器操作的数据类型。接下来我们将利用几个实例来演示数据类型、数据运算等操作1、本例分别使用无符号整型数据和无符号字符型数据来设计延时函数,跟别用于控制D1和D2的闪烁,从而研究这两种数据的特性。2、实现方法为比较两种数据的使用效果,本例中将延时函数的循环次数设置相同,然后通过比较延时时间,直观地观察两种数据类型的使用效果。3、在keil c51中新建工程ex5,编写如下程序代码,并编译生成ex5.hex文件/实例5,用不同数据类型的延时函数控制LED灯的闪烁时间#include /*函数功能:用整型数据延时一段时间*/void int_delay(void) /定义整型数据实现的延时函数unsigned int i,j; /定义无符号整型变量,双字节数据,数值范围0-65535for(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; /点亮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口的输出波形也可以得出同样的结论。那么为什么延时函数的数值一样,只是数据类型不一样,延时的时间却有差别呢?原因就在于数据类型的差别上!由于无符号整型数据占两个字节,而无符号字符型数据仅占一个字节,因此对无符号整型数据进行操作花费的时间就要长一些。所以,为了提高程序的运行速度,一般尽可能采用占用字节数据短的数据类型。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号