任务和程序.docx

上传人:b****6 文档编号:7409490 上传时间:2023-01-23 格式:DOCX 页数:16 大小:18.51KB
下载 相关 举报
任务和程序.docx_第1页
第1页 / 共16页
任务和程序.docx_第2页
第2页 / 共16页
任务和程序.docx_第3页
第3页 / 共16页
任务和程序.docx_第4页
第4页 / 共16页
任务和程序.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

任务和程序.docx

《任务和程序.docx》由会员分享,可在线阅读,更多相关《任务和程序.docx(16页珍藏版)》请在冰豆网上搜索。

任务和程序.docx

任务和程序

任务1:

控制8个发光二极管闪烁

#include//包含头文件REG51.H,定义了MCS-51单片机的特殊功能寄存器

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

while

(1){

P1=0x00;//将P1口的八位引脚清0,点亮八个LED

delay(200);//延时

P1=0xff;//将P1口的八位引脚置1,熄灭八个LED

delay(200);//延时

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务2:

模拟汽车转向灯控制程序

P3口状态

驾驶员发出的命令

P3.0

P3.1

1

1

驾驶员未发出命令

1

0

驾驶员发出左转指示

0

1

驾驶员发出右转指示

0

0

驾驶员发出故障显示命令

#include

sbitP1_0=P1^0;//定义P1.0引脚位名称为P1_0

sbitP1_1=P1^1;//定义P1.1引脚位名称为P1_1

sbitP3_0=P3^0;//定义P3.0引脚位名称为P3_0

sbitP3_1=P3^1;//定义P3.1引脚位名称为P3_1

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

bitleft,right;//定义位变量left、right表示左、右状态

while

(1){//while循环语句,由于条件一直为真,该语句为无限循环

left=P3_0;//读取P3.0引脚的(左转向灯)状态并赋值给left

right=P3_1;//读取P3.1引脚的(右转向灯)状态并赋值给right

P1_0=left;//将left的值送至P1.0引脚

P1_1=right;//将right的值送至P1.1引脚

delay(200);//调用延时函数,实际参数为200

P1_0=1;//将P1.0引脚置1输出(熄灭LED)

P1_1=1;//将P1.1引脚置1输出(熄灭LED)

delay(200);//调用延时函数,实际参数为200

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务3:

采用if语句实现的模拟汽车转向灯控制程序

P3口状态

驾驶员发出的命令

P3.0

P3.1

1

1

驾驶员未发出命令

1

0

驾驶员发出左转指示

0

1

驾驶员发出右转指示

0

0

驾驶员发出故障显示命令

#include

sbitP1_0=P1^0;//定义P1.0引脚位名称为P1_0

sbitP1_1=P1^1;//定义P1.1引脚位名称为P1_1

sbitP3_0=P3^0;//定义P3.0引脚位名称为P3_0

sbitP3_1=P3^1;//定义P3.1引脚位名称为P3_1

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

while

(1){//while循环

if(P3_0==0)P1_0=0;//如果P3.0(左转向灯)状态为0,则点亮左转灯

if(P3_1==0)P1_1=0;//如果P3.1(右转向灯)状态为1,则点亮右转灯

delay(200);//延时

P1_0=1;//左转灯回到熄灭状态

P1_1=1;//右转灯回到熄灭状态

delay(200);//延时

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务4:

采用if-else-if语句实现的模拟汽车转向灯控制程序

P3口状态

驾驶员发出的命令

P3.0

P3.1

1

1

驾驶员未发出命令

1

0

驾驶员发出左转指示

0

1

驾驶员发出右转指示

0

0

驾驶员发出故障显示命令

#include//包含头文件REG51.H

sbitP1_0=P1^0;//定义P1.0引脚位名称为P1_0

sbitP1_1=P1^1;//定义P1.1引脚位名称为P1_1

sbitP3_0=P3^0;//定义P3.0引脚位名称为P3_0

sbitP3_1=P3^1;//定义P3.1引脚位名称为P3_1

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

while

(1){//while循环

if(P3_0==0&&P3_1==0)//如果P3.0和P3.1状态都为0

{P1_0=0;//则点亮左转灯和右转灯

P1_1=0;

delay(200);

}

elseif(P3_0==0)//如果P3.0(左转向灯)状态为1

{P1_0=0;//则点亮左转灯

delay(200);

}

elseif(P3_1==0)//如果P3.1(右转向灯)状态为1

{P1_1=0;//则点亮右转灯

delay(200);

}

else

{

;//空语句

}

P1_0=1;//左转灯回到熄灭状态

P1_1=1;//右转灯回到熄灭状态

delay(200);

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务5:

采用switch语句实现的模拟汽车转向灯控制程序

P3口状态

驾驶员发出的命令

P3.0

P3.1

1

1

驾驶员未发出命令

1

0

驾驶员发出左转指示

0

1

驾驶员发出右转指示

0

0

驾驶员发出故障显示命令

#include//包含头文件REG51.H

sbitP1_0=P1^0;

sbitP1_1=P1^1;

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

unsignedcharledctr;//定义转向灯控制变量ledctr

P3=0xff;//P3口作为输入口,必须先置全1

while

(1){

ledctr=P3;//读P3口的状态送到ledctr

ledctr=ledctr&0x03;//与操作,屏蔽掉高6位无关位,取出P3.0和P3.1引脚的状态(0x03即二进制数00000011B)

switch(ledctr)

{

case0:

P1_0=0;P1_1=0;break;//如P3.0、P3.1都为0则点亮左、右灯

case1:

P1_1=0;break;//如果P3.1(右转向灯)为0则点亮右灯

case2:

P1_0=0;break;//如果P3.0(左转向灯)为0则点亮左灯

default:

;//空语句,什么都不做

}

delay(200);//延时

P1_0=1;//左转灯回到熄灭状态

P1_1=1;//右转灯回到熄灭状态

delay(200);//延时

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务6:

采用顺序结构实现的流水灯控制程序

#include

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

while

(1){

P1=0x01;//点亮第1个发光二极管

delay(200);//延时

P1=0x02;//点亮第2个发光二极管

delay(200);//延时

P1=0x04;//点亮第3个发光二极管

delay(200);//延时

P1=0x08;//点亮第4个发光二极管

delay(200);//延时

P1=0x10;//点亮第5个发光二极管

delay(200);//延时

P1=0x20;//点亮第6个发光二极管

delay(200);//延时

P1=0x40;//点亮第7个发光二极管

delay(200);//延时

P1=0x80;//点亮第8个发光二极管

delay(200);//延时

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务7:

采用循环结构实现的流水灯控制程序

#include//包含头文件REG51.H

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

unsignedchari,w;

while

(1)

{

w=0x01;//信号灯显示字初值为01H

while(w)

{

P1=w;//显示字取反后,送P1口

delay(200);//延时

w<<=1;//显示字左移一位

}

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务8:

采用数组实现的流水灯控制程序

#include//包含头文件REG51.H

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

unsignedchari;

unsignedchardisplay[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

while

(1){

for(i=0;i<8;i++)

{

P1=display[i];//显示字送P1口

delay(200);//延时

}

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务9:

用4个按键控制8只发光二极管的显示,

按下S1键,D3、D4灯亮;

按下S2键,D2、D5灯亮;

按下S3键,D1、D6灯亮;

按下S4键,D0、D7灯亮;

不按键,D2、D3、D4、D5灯亮;

注:

发光二极管高电平点亮,输入高电平表示有键按下;S1—S4接P3.0—P3.3;

L0—L7接P1.0—P1.7。

#include

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

unsignedcharledctr;

P3=0xff;

while

(1){

ledctr=P3;

ledctr=ledctr&0X0F;

switch(ledctr)

{

case1:

P1=0x18;break;//按下S1键,D3、D4灯亮;

case2:

P1=0x24;break;//按下S2键,D2、D5灯亮;

case4:

P1=0x42;break;//按下S3键,D1、D6灯亮;

case8:

P1=0x81;break;//按下S4键,D0、D7灯亮;

case0:

P1=0x3c;break;//不按键,D2、D3、D4、D5灯亮;

default:

P1=0x00;

}

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

任务10:

简易密码锁程序

四个按键输入密码,8个发光二极管显示输入的密码和是否开门的信号

P3.0—P3.3接S0—S3,开关按下为低电平;

P1.0---P1.7接L0—L7,高电平灯亮。

S0按下时,灯L0显示,其余灯灭,延时1S后灯L6亮表示密码错误,该状态保持3S;

S1按下时,灯L1显示,其余灯灭,延时1S后灯L6亮表示密码错误,该状态保持3S;

S2按下时,灯L2显示,其余灯灭,延时1S后灯L6亮表示密码错误,该状态保持3S;

S3按下时,灯L3显示,其余灯灭,延时1S后灯L7亮,表示密码正确,开门,该状态保持3S;

#include

sbitP3_0=P3^0;//控制开锁,用发光二极管代替

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

unsignedcharbutton;//保存按键信息

unsignedcharcodetab[7]={0x01,0x02,0x04,0x08,0x40,0x80,0x00};//定义显示段码表,分别对应显示字符:

0、1、2、3,-、E、P

P3=0xff;//读P0口引脚状态,需先置全1

while

(1){

button=P3;//读取P0口上的按键状态并赋值到变量button

button&=0x0f;//采用与操作保留低4位的按键状态,其他位清0

switch(button)//判断按键的键值

{

case0x0e:

P1=tab[4];delay(400);P1=tab[5];break;//0#键按下,密码输入错误,L6亮。

case0x0d:

P1=tab[1];delay(400);P1=tab[5];break;/1#键按下,密码输入错误,L6亮。

case0x0b:

P1=tab[2];delay(400);P1=tab[5];break;//2#键按下,密码正确,L6亮。

case0x07:

P1=tab[3];delay(400);P1=tab[4];break;//3#键按下,密码输入错误,L7亮。

}

delay(1200);//显示状态停留约3秒

}

}

//函数名:

delay

//函数功能:

实现软件延时

//形式参数:

unsignedchari;

//i控制空循环的外循环次数,共循环i*255次

//返回值:

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

项目二验收要求:

用if-else-if语句和switch语句实现下列功能:

4个按键控制8个发光二极管的显示,要求:

(1)单独按下S1键,L0--L3亮;

(2)单独按下S2键,L4--L7亮;

(3)单独按下S3键,L2--L5亮;

(4)单独按下S4键,L1--L6亮;

(5)无键按下,L0--L7亮;

(6)其他情况,L0--L7都不亮;

注:

S1--S4按键接P3.1--P3.4,按下为低电平;灯L0--L7接P1.0--P1.7

if-else-if语句程序

#include

sbitS1=P3^1;

sbitS2=P3^2;

sbitS3=P3^3;

sbitS4=P3^4;

voiddelay(unsignedchari);

voidmain()

{

while

(1)

{

if(!

S1&&S2&&S3&&S4){P1=0x0f;}

elseif(S1&&!

S2&&S3&&S4){P1=0xf0;}

elseif(S1&&S2&&!

S3&&S4){P1=0x3c;}

elseif(S1&&S2&&S3&&!

S4){P1=0x7e;}

elseif(S1&&S2&&S3&&S4){P1=0xff;}

else{P1=0x00;}

delay(200);

}

}

voiddelay(unsignedchari)

{

unsignedcharj,k;

for(k=0;k

for(j=0;j<255;j++);

}

Switch语句程序

#include

voiddelay(unsignedchari);//延时函数声明

voidmain()//主函数

{

unsignedcharledctr;//保存按键信息

P3=0xff;//读P0口引脚状态,需先置全1

while

(1){

ledctr=P3;//读取P0口上的按键状态并赋值到变量ledctr

ledctr&=0x0f;//采用与操作保留低4位的按键状态,其他位清0

switch(ledctr)//判断按键的键值

{

case0x0e:

P1=0x0f;break;

case0x0d:

P1=0xf0;break;

case0x0b:

P1=0x3c;break;

case0x07:

P1=0x7e;break;

case0x00:

P1=0xff;break;

default:

P1=0x00;

}

delay(200);//显示状态停留约3秒

}

}

voiddelay(unsignedchari)//延时函数,无符号字符型变量i为形式参数

{

unsignedcharj,k;//定义无符号字符型变量j和k

for(k=0;k

for(j=0;j<255;j++);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1