c语言程序控制流水灯点亮次数,五种编程方式实现流水灯的单片机C程序.doc

单片机C语言编程实现流水灯控制
本文详细介绍了五种不同的编程方式来实现单片机C语言控制流水灯的程序,包括顺序结构、循环结构、位运算符、数组以及位移操作等方法,每种方式均配有延时函数。通过这些方法,可以实现不同效果的流水灯控制。
部署运行你感兴趣的模型镜像

44cb7578e1df5412b94317daaa3307ba.gif五种编程方式实现流水灯的单片机C程序.doc

下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。

2.下载的文档,不会出现我们的网址水印。

3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。

文档包含非法信息?点此举报后获取现金奖励!

下载文档到电脑,查找使用更方便

15

积分

还剩页未读,继续阅读

关 键 词:的C语言流水灯程序

流水灯的实现方式

编程方式实现

单片机C语言

种方式流水灯

单片机流水灯C语言源程序

流水灯c语言程序

单片机流水灯C语言程序

单片机流水灯C语言程序.doc

C语言实现流水灯

资源描述:

五种编程方式实现流水灯的单片机C程序

//功能:采用顺序结构实现的流水灯控制程序

/*此方式中采用的是字操作(也称为总线操作)*/

#include void delay(unsigned char i);//延时函数声明

void main()//主函数

{

while(1) {

P1 = 0xfe; //点亮第1个发光二极管,0.000389s

delay(200); //延时

P1 = 0xfd; //点亮第2个发光二极管,0.155403s,0.1558

delay(200); //延时

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

delay(200); //延时

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

delay(200); //延时

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

delay(200); //延时

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

delay(200); //延时

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

delay(200); //延时

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

delay(200); //延时

}

}

//函数名:delay

//函数功能:实现软件延时

//形式参数:unsigned char i;

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

//返回值:无

void delay(unsigned char i)//延时函数,无符号字符型变量i为形式参数

{

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

for(k = 0; k < i; k++)//双重for循环语句实现软件延时

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

}

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

//此方式中采用的移位,按位取反等操作是位操作

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

void delay(unsigned char i); //延时函数声明

void main()//主函数

{

unsigned char i,w;

while(1)

{

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

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

{

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

delay(200);// 延时

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

}

}

}

//函数名:delay

//函数功能:实现软件延时

//形式参数:unsigned char i;

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

//返回值:无

void delay(unsigned char i)//延时函数,无符号字符型变量i为形式参数

{

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

for(k = 0; k < i; k++)//双重for循环语句实现软件延时

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

}

/*********************************************************************/

//功能:采用位运算符编写的流水灯控制程序,显示效果为依次熄灭信号灯

//此方式也是典型的顺序结构

#include void delay(unsigned char i); //延时函数声明

void main()//主函数

{

while(1) {

P1 = 0x00;//P1口全部清0,即点亮8个发光二极管

delay(200); //延时

P1 = P1 | 0x01;//熄灭第1个发光二极管

delay(200); //延时

P1 = P1 | 0x03;//熄灭第1、2个发光二极管

delay(200); //延时

P1 = P1 | 0x07;//熄灭第1~3个发光二极管

delay(200); //延时

P1 = P1 | 0x0f;//熄灭第1~4个发光二极管

delay(200);//延时

P1 = P1 | 0x1f;//熄灭第1~5个发光二极管

delay(200);//延时

P1 = P1 | 0x3f;//熄灭第1~6个发光二极管

delay(200);//延时

P1 = P1 | 0x7f;//熄灭第1~7个发光二极管

delay(200);//延时

P1 = P1 | 0x7f;//熄灭所有发光二极管

delay(200);//延时

}

}

//函数名:delay

//函数功能:实现软件延时

//形式参数:unsigned char i;

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

//返回值:无

void delay(unsigned char i)//延时函数,无符号字符型变量i为形式参数

{

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

for(k = 0; k < i; k++)//双重for循环语句实现软件延时

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

}

/**********************************************************/

//功能:采用数组实现的流水灯控制程序

//此方式也是典型的循环结构

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

void delay(unsigned char i); //延时函数声明

void main()//主函数

{

unsigned char i;

unsigned char display[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};

while(1)

{

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

{

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

delay(200);//延时

}

}

}

//函数名:delay

//函数功能:实现软件延时

//形式参数:unsigned char i;

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

//返回值:无

void delay(unsigned char i)//延时函数,无符号字符型变量i为形式参数

{

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

for(k = 0; k < i; k++)//双重for循环语句实现软件延时

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

}

#include#include #define uint unsigned int

#define uchar unsigned char

void delay(uint z)

{

uint x, y;

for(x = z; x > 0; x--)

for(y = 110; y > 0; y--);

}

void main()

{

uchar a, i, j;

while(1)

{

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

{

a = 0xfe;

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

{

P2 = a;

delay(200);

a = _crol_(a, 1); //11111110

}

a = 0x7f;

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

{

P2 = a;

delay(200);

a = _cror_(a, 1);

}

}

P2 = 0xff;

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

{

delay(300);

P2 = ~P2;

}

}

}

展开阅读全文

温馨提示:

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。

2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。

3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。

4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。

5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。

6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。

7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

bb6249c6567dd4384e6ab3556cfc22ed.gif 

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本文标题:五种编程方式实现流水灯的单片机C程序.doc

链接地址:https://www.renrendoc.com/p-13841753.html

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

1、一盏一盏:第一盏灯先亮--延时--熄灭--延时--下一盏灯; 2、利用数组方法点亮:定义一个数组(即0xfe,0xfd,0xfb,0xf7,0xef,oxdf,0xbf,0x7f:依次代表只有第一盏灯,第二盏灯....亮),再利总线,按顺序点亮八盏灯; 3、利用移位方法点亮:(1)、利用移位运算和按位或运算,依次点亮八盏灯; (2)、包含intrins头文件(里面含有移位函数),使用相应的左移或右移函数进行移位, 下面是代码和注释,详细解释了点亮流水灯的思路,附件含有源代码和仿真文件,有需要的可以下载 //方式0控制流水灯循环点亮 #include //包含51单片机寄存器定义的头文件 #include //包含函数_nop_()定义的头文件 unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//流水灯控制码,该数组被定义为全局变量 sbit P17=P1^7; /************************************************************** 函数功能:延时约150ms **************************************************************/ void delay(void) { unsigned char m,n; for(m=0;m<200;m++) for(n=0;n<250;n++) ; } /************************************************************** 函数功能:发送一个字节的数据 **************************************************************/ void Send(unsigned char dat) { P17=0; //P1.7引脚输出清0信号,对74LS164清0 _nop_(); //延时一个机器周期 _nop_(); //延时一个机器周期,保证清0完成 P17=1; //结束对74LS164的清0 SBUF=dat; //将数据写入发送缓冲器,启动发送 while(TI==0) //若没有发送完毕,等待 ; TI=0; //发送完毕,TI被置“1”,需将其清0 } /******************************************* 函数功能:主函数 ******************************************/ void main(void) { unsigned char i; SCON=0x00; //SCON=0000 0000B,使串行口工作于方式0 while(1) { for(i=0;i<8;i++) { Send(Tab[i]); //发送数据 delay(); //延时 } } }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值