1. 首页 > 经典游戏 >

51单片机流水灯代码 51单片机流水灯代码怎么写

大家好我是小篇,51单片机流水灯代码,关于51单片机流水灯代码怎么写很多人还不知道,那么现在让我们一起来看看吧!

51单片机流水灯代码 51单片机流水灯代码怎么写51单片机流水灯代码 51单片机流水灯代码怎么写


51单片机流水灯代码 51单片机流水灯代码怎么写


1、#include reg52.h#define uchar unsigned char#define uint unsigned intuchar TS_Count,TM_Count,TH_Count,count_N;it LED_H=P3^0;it LED_M=P3^1;it LED_S=P3^2;void DelayMS(uint x) //延时函数{uchar t;while(x--){for(t=120;t0;t--);}}void dis_time(uchar H_t,uchar M_t,uchar S_t){ uchar i;uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,}; //定义数码管显示0~9的控制码uchar code PS_CODE[]={0x01,0x02,0x04,0x08,0x010,0x20,0x40,0x80}; //这是数码管第n位的控制码//以下几行是给每一个要显示的数码管赋值uchar dis_bit[8];dis_bit[0]=H_t/10%10; //千位dis_bit[1]=H_t%10; //百位dis_bit[2]=10; //十位dis_bit[3]=M_t/10%10;dis_bit[4]=M_t%10; //千位dis_bit[5]=10; //百位dis_bit[6]=S_t/10%10; //十位dis_bit[7]=S_t%10;for(i=0;i8;i++){P2=PS_CODE[i]; //第i个数码管的位控制字P0=DSY_CODE[dis_bit[i]]; //第i个数码管的段码控制字DelayMS(5); //延时5毫秒。

2、}}void disp_mode(uchar mode_1) //这个函数控制三个LED灯{switch(mode_1){ case 0: //模式0,全灭LED_H=1;LED_M=1;LED_S=1;TR0 = 1;break;case 1: //模式1,LED_S亮LED_H=1;LED_M=1;LED_S=0;TR0 = 0;break;case 2: //模式2,LED_M亮LED_H=1;LED_M=0;LED_S=1;TR0 = 0;break;case 3: //模式3,LED_H亮LED_H=0;LED_M=1;LED_S=1;TR0 = 0;break;}}uchar Key_code() //这个函数检测按键{uchar Key_NO;if(P1==0xfe) //P1.0按键返回键值0{Key_NO=0;}if(P1==0xfd) //P1.1按键返回键值1{Key_NO=1;}if(P1==0xfb) //P1.2按键返回键值2{Key_NO=2;}while(P1!=0xff); //等待按键释放,源程序有点错误需要加分号;return Key_NO;}void main(){uchar y=-1;uchar mode_N=0;TMOD=0X00; //定义定时器工作在模式0,13位定时器模式TH0=(8192-5000)/32; //赋初值TL0=(8192-5000)%32;IE=0X82; //开启定时器中断和总中断TR0=1; //启动定时器while(1){if(P1!=0xff) //等待按键,如果有按键按下,获取键值y=Key_code(); //获取键值switch(y){case 0: //个按键按下mode_N++; //模式控制变量加1if( mode_N3) mode_N=0;break;case 1: //第二个按键按下控制数据加switch( mode_N){case 1:if(TS_Count59) TS_Count++;break;case 2:if(TM_Count59) TM_Count++;break;case 3:if(TH_Count23) TH_Count++;break;}break;case 2: //第三个按键按下,控制数据减switch( mode_N){case 1:if(TS_Count0) TS_Count--;break;case 2:if(TM_Count0) TM_Count--;break;case 3:if(TH_Count0) TH_Count--;break;}break;}y=-1;disp_mode(mode_N);dis_time(TS_Count,TM_Count,TH_Count);//dis_time(25,26,27);}}void LED_Flash()interrupt 1 //中断服务程序,定时用。

3、{TH0=(8192-5000)/32;TL0=(8192-5000)%32;if(++count_N5){if(++TS_Count==60){TS_Count = 0;if(++TM_Count==60){TM_Count = 0;if(++TH_Count==24) TH_Count = 0;}}count_N=0;}}。

本文到这结束,希望上面文章对大家有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 836084111@qq.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息