51系列-C语言程序详解

来源:本站
导读:目前正在解读《51系列-C语言程序详解》的相关信息,《51系列-C语言程序详解》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《51系列-C语言程序详解》的详细说明。
简介:While(条件语句) 与 for(条件语句) 单独使用所表达的循环,是在句首先执行判断,为真循环,为假转下一句执行。其中语句的括号内为判断条件语句。

1.单个LED灯,单个按键

//C语言的头文件 //这是第一种注释方式;

#include

#include <> //预处理命令

void main(void) //主函数名,必须有一个主函数,void为数据类型

{

unsigned int a; //定义变量,a为int类型,无符号整型。语句必须分号结尾

do{ //do-while 组成的循环过程,过程的开始

for (a=0; a<500; a++); //这是一个条件循环,判断a的值是否小于500,真循环-耗时,假转下句

P1_0 = 0; //位赋值语句,设 P1.0 口为低电平—置0,点亮 LED

for (a=0; a<500; a++); //这又是一个判断循环

P1_0 = 1; //设 P1.0 口为高电平,熄灭 LED

}

while(1); //do-while 组成循环过程的末尾,需要对do的过程进行一次判断

}

程序说明:

While(条件语句) 与 for(条件语句) 单独使用所表达的循环,是在句首先执行判断,为真循环,为假转下一句执行。其中语句的括号内为判断条件语句。

Do-while合用,是需要对do的过程再进行一次判断。While(条件语句)为真循环,为假跳转。while(1)表示高电平为真循环do,否则,低电平跳转。由于P1.0 口为高电平结尾,因此,又回到do再循环,无限反复。

2.多个LED灯,单个按键

#include

#include <> //预处理命令

void main(void) //主函数名,必须有一个主函数,void为数据类型

{

unsigned int a; //定义变量,a为int类型,无符号整型。语句必须分号结尾

do{ //do-while 组成的循环过程,过程的开始

for (a=0; a<500; a++); //这是一个条件循环,判断a的值是否小于500,真循环-耗时,假转下句

P1_0 = 0; //位赋值语句,设 P1.0 口为低电平—置0,点亮 LED

P1_1 = 0;

P1_2 = 0;

P1_3 = 0;

for (a=0; a<500; a++); //这又是一个判断循环

P1_0 = 1; //设 P1.0 口为高电平,熄灭 LED

P1_1 = 1;

P1_2 = 1;

P1_3 = 1;

}

while(1); //do-while 组成循环过程的末尾,需要对do的过程进行一次判断

}

程序说明:

每个口用位赋值指令来开关P1口的各个LED。可以用字节赋值指令一次性的开关8位P1口LED。

P1=0; //P1口8位置低电平,点亮8个LED

P1=1; // P1口8位置低电平,关闭8个LED

#include

#include <> //预处理命令

void main(void) //主函数名,必须有一个主函数,void为数据类型

{

unsigned int a; //定义变量,a为int类型,无符号整型。语句必须分号结尾

do{ //do-while 组成的循环过程,过程的开始

for (a=0; a<500; a++); //这是一个条件循环,判断a的值是否小于500,真循环-耗时,假转下句

P1 = 0; //字节赋值语句,设 P1 口为低电平—置0,点亮 8个LED

for (a=0; a<500; a++); //这又是一个判断循环

P = 1; //设 P1 口为高电平,熄灭 LED

}

while(1); //do-while 组成循环过程的末尾,需要对do的过程进行一次判断

}

l LED循环问题(跑马灯):

每个口用位赋值指令来开关P1口的各个LED,用位指令赋值顺序开关,实现跑马灯。

#include

#include <> //预处理命令

void main(void) //主函数名,必须有一个主函数,void为数据类型

{

unsigned int a; //定义变量,a为int类型,无符号整型。语句必须分号结尾

do{ //do-while 组成的循环过程,过程的开始

for (a=0; a<500; a++); //这是一个条件循环,判断a的值是否小于500,真循环-耗时,假转下句

P1_0 = 0; //位赋值语句,设 P1.0 口为低电平—置0,点亮 LED

P1_1 = 1;

P1_2 = 1;

P1_3 = 1;

for (a=0; a<500; a++); //这又是一个判断循环

P1_0 = 1; //设 P1.0 口为高电平,熄灭 LED

P1_1 = 0;

P1_2 = 1;

P1_3 = 1;

for (a=0; a<500; a++); //这又是一个判断循环

P1_0 = 1;

P1_1 = 1;

P1_2 = 0;

P1_3 = 1;

for (a=0; a<500; a++); //这又是一个判断循环

P1_0 = 1;

P1_1 = 1;

P1_2 = 1;

P1_3 = 0;

for (a=0; a<500; a++); //这又是一个判断循环

P1_0 = 1; //设 P1.0 口为高电平,熄灭 LED

P1_1 = 1;

P1_2 = 1;

P1_3 = 1;

}

while(1); //do-while 组成循环过程的末尾,需要对do的过程进行一次判断

}

用循环语句实现跑马灯,需要使用数组—表data。每个字节--8位来表达P1口各个位的电平高低,也就是亮与灭。

#include

#include <> //预处理命令

void main(void) //主函数名,必须有一个主函数,void为数据类型

{

unsigned int a; //定义变量,a为int类型,无符号整型。语句必须分号结尾

do{ //do-while 组成的循环过程,过程的开始

for (a=0; a<500; a++); //这是一个条件循环,判断a的值是否小于500,真循环-耗时,假转下句

P1 = 0; //字节赋值语句,设 P1 口为低电平—置0,点亮 8个LED

for (a=0; a<500; a++); //这又是一个判断循环

P = 1; //设 P1 口为高电平,熄灭 LED

}

while(1); //do-while 组成循环过程的末尾,需要对do的过程进行一次判断

}

3. 键盘与数码管

//键盘扫描法--数码管显示键值。行P1.0~3 列P1.4~7

#include

unsigned char code tabyin[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//0到F的16个键值

unsigned char code tabyang[ ]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,

0x88,0x83,0xc6,0xa1,0x86,0x8e};//0到F的16个键值

//延时函数

void Delayt(unsigned char t)

{

unsigned char i;

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

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

}

//键值判断函数

bit pkey(void)

{

P1=0xf0;

if(P1!=0xf0)

{

Delayt(25);

if(P1!=0xf0)

return 1;

else

return 0;

}

else

return 0;

}

//主函数

void main(void)

{

unsigned char key,j,k,s;

while(1)

{

if(pkey()==1)

{

P1=0xfe;

k=0xfe;

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

{

s=P1&0xf0;

switch(s)

{

case 0xe0: key=4*j+0; break;

case 0xd0: key=4*j+1; break;

case 0xb0: key=4*j+2; break;

case 0x70: key=4*j+3; break;

default: break;

}

k=(k<<1)|0x01;

P1=k;

}

}

P2=0x00;

P3=0xff;

P3=tabyang[key];

Delayt(200);

P2=tabyin[key];

Delayt(250);

}

}

提醒:《51系列-C语言程序详解》最后刷新时间 2024-03-14 01:09:34,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《51系列-C语言程序详解》该内容的真实性请自行鉴别。