内容正文:
任务2 花样灯
1.了解花样灯的工作过程。
2.掌握查表程序的设计方法。
3.掌握有参函数的调用及声明。
4.能够设计并制作花样灯控制系统。
花样灯是按时间依次让灯呈现出规定的花样,相对跑马灯来说,控制的显示数据之间没有规律,显示上具有多变性和复杂性,如下图所示。
本任务使用单片机的P2口控制8只LED,循环实现如下图所示四种花样的显示,完成花样灯控制系统的设计与制作。
花样 D8 D7 D6 D5 D4 D3 D2 D1 数据编码
一 ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ 0xff
★ ☆ ☆ ☆ ☆ ☆ ☆ ★ 0x7e
★ ★ ☆ ☆ ☆ ☆ ★ ★ 0x3c
★ ★ ★ ☆ ☆ ★ ★ ★ 0x18
★ ★ ★ ★ ★ ★ ★ ★ 0x00
★ ★ ★ ☆ ☆ ★ ★ ★ 0x18
★ ★ ☆ ☆ ☆ ☆ ★ ★ 0x3c
★ ☆ ☆ ☆ ☆ ☆ ☆ ★ 0x7e
注: ★ 灯亮 ☆ 灯灭
花样 D8 D7 D6 D5 D4 D3 D2 D1 数据编码
二 ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ 0xff
★ ☆ ☆ ☆ ☆ ☆ ☆ ☆ 0x7f
★ ★ ☆ ☆ ☆ ☆ ☆ ☆ 0x3f
★ ★ ★ ☆ ☆ ☆ ☆ ☆ 0x1f
★ ★ ★ ★ ☆ ☆ ☆ ☆ 0x0f
★ ★ ★ ★ ★ ☆ ☆ ☆ 0x07
★ ★ ★ ★ ★ ★ ☆ ☆ 0x03
★ ★ ★ ★ ★ ★ ★ ☆ 0x01
★ ★ ★ ★ ★ ★ ★ ★ 0x00
花样 D8 D7 D6 D5 D4 D3 D2 D1 数据编码
三 ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ 0xff
☆ ★ ☆ ★ ☆ ★ ☆ ★ 0xaa
★ ☆ ★ ☆ ★ ☆ ★ ☆ 0x55
☆ ★ ☆ ★ ☆ ★ ☆ ★ 0xaa
★ ☆ ★ ☆ ★ ☆ ★ ☆ 0x55
四 ☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ 0xff
☆ ☆ ☆ ☆ ★ ★ ★ ★ 0xf0
★ ★ ★ ★ ☆ ☆ ☆ ☆ 0x0f
☆ ☆ ☆ ☆ ★ ★ ★ ★ 0xf0
★ ★ ★ ★ ☆ ☆ ☆ ☆ 0x0f
☆ ☆ ☆ ☆ ☆ ☆ ☆ ☆ 0xff
一、有参函数定义的一般形式
函数类型 函数名(形式参数表)
//表明该函数带有参数传递
{
局部变量定义;
函数体语句;
}
2.形参与实参
形参:在定义函数时,函数名后面括号中的变量称为“形参”,定义时不赋值,由调用函数将值传递过来。
实参:主调用函数后面括号中的表达式为“实参”,实参必须有确定的值。该值在调用时按对应关系传递给形参。注意:在C语言中参数的传递是单向的。
函数返回值通过“return(x)”返回,返回值是通过函数名带回的,所以一个函数只能有一个返回值。
1.函数返回值
[例] 定义一个返回两个整数的最大值的函数max( )。
int max( int x, int y )
{
int z ;
z = x > y ? X :y ;
return(z);
}
二、有参函数调用的一般形式
函数名(实参列表);
有参函数在被调用时,调用函数将要运算的对象以实参的形式传递给有参函数,有参函数再将运算对象带入自身函数体内执行,并在函数结束时返回结果供调用它的函数使用。
三、自定义函数的声明
[extern] 函数类型 函数名(形式参数表);
函数的声明是把函数名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便调用函数时系统进行对照检查。函数的声明后面要加分号。如果声明的函数在文件内部,则声明时不用加“extern”,如果声明的函数不在文件内部,而在另一个文件中,声明时须带“extern”,指明使用的函数在另一个文件中。
[例] 有参函数的调用及声明。
#include <AT89X51.H> // 包含AT89单片机寄存器的头文件
#include <stdio.h> /*包含I/O库函数文件(它当中定义了C51中的输入和输出函数)*/
int max(int x,int y); //对max函数进行声明
main( ) //主函数