实物演示■
多媒体讲解■
单片机控制i/o口输出是学习单片机的第一步,首先通过LED的方式学习i/o口的控制。层层递进学习
要控制8个LED灯形成流水灯的效果,先得使第一个LED点亮,其他7个LED熄灭,延时一段时间后,再使第2个LED点亮,其他7个LED熄灭,接着第3个、第4个......直到第8个LED,然后如此循环。
1、8个LED灯形成流水灯的效果
2、理解并掌握延时函数的调用
3、采用不同的方法完成流水灯的设计
1、for循环语句
(1)for循环语句
for循环语句的格式如下:
for(表达式1;表达式2;表达式3)
{
程序语句组;
}
式中“表达式1”是用来给循环变量赋初始值的,所以这一句为初始化语句。“表达式2”是循环的条件,一般书写逻辑关系或一般关系表达式。“表达式3”可以用来修改循环变量的值,对循环变量进行增或减的操作。
for语句的具体执行过程如下:首先计算出表达式1的值作为循环控制变量的初值,再检测循环条件表达式2的结果,当满足循环条件时就进入循环体内执行语句。执行循环体一遍之后,接着去执行表达式3,然后根据表达式3修改后的计算结果来再次判断是否满足循环条件2,若满足就再次执行循环体内的语句,一直执行到循环条件表达式2的结果为假(0值)时,退出循环体,程序将会执行这个for语句的下一条语句。
2、子程序的编写与调用
在编写程序过程中,有些程序代码完全相同或相似,为了简化程序,可以把这些重复的程序段单独列出,并按一定的格式编写成子程序,从而方便主程序调用。主程序在执行过程中如果需要某一子程序,通过调用指令来调用该子程序,子程序执行完后又返回到主程序,继续执行后面的程序段。
数据类型说明符 子程序函数名称(输出参数列表)
{
函数参数定义;
函数体;
}
对于不需输入变量与返回数值的子程序,主程序中调用只要写入”名称();”,就能够调用了。如:delay();
3、关于全局变量与局部变量
在参考程序中,我们可以看到“unsigned int i;”是在延时子函数里面定义的。那么写在函数里面和外面有什么区别呢?在函数体外定义的变量称为全局变量,在函数体内定义的变量称为局部变量,所以参考程序中定义的变量i就是局部变量。全局变量在整个程序中都是有效的,可供程序中所有的函数共同使用,程序编译时会占用固定的数据存储区;而局部变量只能在定义它的函数体内起作用,函数退出循环体,变量的数据存储区将释放。所以我们在编程时要养成节约内存的习惯,能使用局部变量,就不要使用全局变量。
4、语句P1=0x7f中,是将右边的值送到单片机的P1口,执行了数据从端口输出。
5、主函数中调用延时函数只要写入delay( );这里延时的子函数没有参数。
将P1端口与LED一端进行连接