C语言查询按键控制8个流水灯

阅读: 评论:0

C语言查询按键控制8个流水灯

C语言查询按键控制8个流水灯

C语言查询按键控制8个流水灯

一.仿真电路图


注意发光二极管的方向以及接的电阻的大小。

二.C语言代码

/****************************************************************************&
&函数功能:用AT89C51实现左右开花和左移右移的流水灯,以及一个数码管显示		 &
&端口说明:P0口控制数码管显示,P1口控制八个发光二极管,P3.0和P3.1控制两个按键(3.1没用到)&
*****************************************************************************/#include"AT89X51.h"	//头文件包含声明,以下程序中的端口P0、P1、P3_0和P3_1等的说明都包含在该文件中unsigned char  denmabiao[]={0xe7,0xdb,0xbd,0x7e};	//左右开花流水灯码表/*******延时函数******/
void delay(void)
{unsigned int  i,j;for(i=0;i<50;i++) 	 //双重循环实现延时,循环时间的长短可以通过修改50或2000的值来改变for(j=0;j<2000;j++);
}/*******开花流水灯*******/
void kaihua(void)  
{      unsigned char  i; //定义循环变量for(i=0;i<4;i++)	  //循环语句,通过查表实现开花流水灯{P1=denmabiao[i];  //将相应的表值送到P1口delay();		  //延时}
}/*注意*——左移和右移并不是绝对的,硬件中灯的摆放不同,移的方向也会不同***/
/******右移流水灯******/
void right(void)
{unsigned char data i; //定义循环变量unsigned char  a;a=0x7f;			      //右边第一个灯亮 01111111for(i=0;i<8;i++)	  //从右边起,第二个到第八个灯亮{   P1=a;delay();		  //适当延时?a=(a>>1)+0x80;    //向右移一位再与0x80位于,以保证每次只有一个灯被点亮	00111111+10000000=10111111}
}/****左移流水灯****/
void left(void)
{unsigned char data i; //变量定义unsigned char  a;a=0xfe;			   //左边第一个灯亮for(i=0;i<8;i++)	   //从左边起,第二个到第八个灯亮{P1=a;delay();		   //适当延时,以避免乱码a=(a<<1)|0x01;   //向左移一位再与0x01位于,以保证每次只有一个灯被点亮}
}/******主函数*****/
void main(void)
{char x=0;while(1) 				  //无限循环,以保证只要一上电,系统一直运行0.1.2{ if(P3_0==0){	x=x+1;while(!P3_0);if(x==3)x=0;}if(x==0)kaihua();else if(x==1)left();elseright();}
} 

使用的工具:keil c 、proteus

本文发布于:2024-02-04 22:37:55,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170717967660331.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:按键   流水   语言
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23