- 实验目的
- 学习单片机程序开发软件Keil uVision的使用方法
- 学习单片机IO口控制LED的方法
- 学习使用循环程序设置延时时间的方法
- 实验仪器
硬件:X86型兼容计算机,单片机开发板;软件:Keil uVision和烧录软件
- 实验内容
- 设计程序控制LED逐个点亮并变换花色;
- 硬件方案:LED需用杜邦线连接到单片机任一IO口,为共阴极连接,故IO口输出低电平时LED点亮;
- 软件原理:使用循环程序控制LED点亮的时间;
- 要求:控制LED以循环方式点亮;
我们先用第一种方法实现--数组法。
#include<reg51.h> #define uchar unsigned char uchar tab[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay() { uchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); } void main() { uchar i; while(1) { for(i=0;i<8;i++) { P1=tab[i];//向p1口送出点亮数据的数组元素 delay(); } } }
下面我们用循环的方法去实现流水灯。
#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int void delay(uint i) { uchar t; while(i--) { for(t=0;t<120;t++); } } void main() { P1=0xfe; while(1) { delay(500); P1=_crol_(P1,1); } }
接下来,我们用最后一种方法--移位去实现。
#include<reg52.h> void delay(unsigned int t) { unsigned i,j; for(i=0;i<t;t++) for(j=0;j<125;j++); } void main() { unsigned char i,temp; while(1) { temp=0xfe; for(i=0;i<8;i++) {P0=~temp; delay(500); temp=temp<<1; } } }
在这里,简单解释一下什么是头文件吧。
在代码中引用头文件,其实际意义就是将这个头文件中的全部内容放到引用 头文件的位置处,免去我们每次编写同类程序都要将头文件中的语句重复编写。 在代码中加入头文件有两种书写方法,分别为#include 和#include "reg52.h",包含头文件时都不需要在后面加分号。两种写法的区别如下:
①当使用<>包含头文件时,编译器先进入到软件安装文件夹处开始搜索这个 头文件,也就是 KEILC51/C51/INC 这个文件夹下,如果这个文件夹没有引用的头 文件,编译器将会报错。
②当使用""包含头文件时,编译器先进入到当前工程所在文件夹处开始搜索 该头文件,如果当前工程所在文件夹下没有该头文件,编译器将继续回到软件安 装文件夹处搜索这个头文件,若找不到该头文件,编译器将报错。