专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
初学51,自己写的LED灯程序,希望和大家交流,互相学习
2020-02-05 09:18
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
6111
23
23
初学51,自己写的LED灯程序,希望和大家交流,互相学习
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
23条回答
goolloo
2020-02-06 01:02
/***************************************************************************************************
*AT89C52RC单片机操作8个led灯
*菜鸟一号
*2012.5.8
****************************************************************************************************/
#include<reg52.h>
//sbit LED=P2^0;
typedef unsigned int uInt;
typedef unsigned char uChar;
void delay(uInt); //the function to delay for a moment
void BothToMid();
void MidToBoth();
void LeftToRight();
void RightToLeft();
void Lighter();
void Darker();
/************************************************main()********************************************/
void main()
{
void BothToMid();
void MidToBoth();
void LeftToRight();
void RightToLeft();
void Lighter();
void Darker();
while(1)
{
BothToMid();
MidToBoth();
LeftToRight();
RightToLeft();
Lighter();
Darker();
delay(500);
}
}
/*************************************************
*function: delay for a moment
*input: time type:unsigned int
*output: none
**************************************************/
void delay(uInt time)
{
uInt i;
uChar j;
for(i=0;i<time;i++)
for(j=0;j<125;j++);
}
/**************************************************
*function: let the led light from left to right one by one
*input: none
*output: none
***************************************************/
void LeftToRight()
{
uChar i;
uChar temp=0xfe;
for(i=0;i<8;i++)
{
P2=temp;
temp=(temp<<1)|1;
delay(500);
}
}
/**************************************************
*function: let the led light from right to left one by one
*input: none
*output: none
***************************************************/
void RightToLeft()
{
uChar i;
uChar temp=0x7f;
for(i=0;i<8;i++)
{
P2=temp;
temp=(temp>>1)|0x80;
delay(500);
}
}
/***************************************************
*function: let the led light from both edge to middle one by one
*input: none
*output: none
****************************************************/
void BothToMid()
{
uChar temp[4]={0x7e,0xbd,0xdb,0xe7};
uChar i;
for(i=0;i<4;i++)
{
P2=temp[i];
delay(1000);
}
}
/****************************************************
*function: let the led light from middle to both edge one by one
*input: none
*output: none
*****************************************************/
void MidToBoth()
{
uChar temp[4]={0xe7,0xdb,0xbd,0x7e,};
uChar j;
for(j=0;j<4;j++)
{
P2=temp[j];
delay(1000);
}
}
/*****************************************************
*function :wait for a moment to let the led become lighter or darker
*input: timer type:unsigned char
*output: none
*******************************************************/
void delay1(uChar timer)
{
uChar i;
while(timer--)
{
for(i=0;i<1;i++);
}
}
/******************************************************
*function:let the led become lighter and lighter
*input:none
*output:none
********************************************************/
void Lighter()
{
void delay1(uChar);
uChar maxNum;
uChar timer;
unsigned char j;
P2=0xff;
maxNum=250;
timer=0;
for(j=0;j<maxNum;j++)
{
timer++;
delay1(timer);
P2=0xff;
timer=~timer;
delay1(timer);
P2=0x00;
timer=~timer;
}
}
/*********************************************************
*function:let the led become darker and darker
*input:none
*output:none
**********************************************************/
void Darker()
{
void delay1(uChar);
uChar maxNum;
uChar timer;
unsigned char j;
P2=0x00;
maxNum=250;
timer=0;
for(j=0;j<maxNum;j++)
{
timer++;
delay1(timer);
P2=0x00;
timer=~timer;
delay1(timer);
P2=0xff;
timer=~timer;
}
}
复制代码
楼主的代码格式还是很好看的~~~
加载中...
查看其它23个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- /***************************************************************************************************
- *AT89C52RC单片机操作8个led灯
- *菜鸟一号
- *2012.5.8
- ****************************************************************************************************/
- #include<reg52.h>
- //sbit LED=P2^0;
- typedef unsigned int uInt;
- typedef unsigned char uChar;
- void delay(uInt); //the function to delay for a moment
- void BothToMid();
- void MidToBoth();
- void LeftToRight();
- void RightToLeft();
- void Lighter();
- void Darker();
- /************************************************main()********************************************/
- void main()
- {
- void BothToMid();
- void MidToBoth();
- void LeftToRight();
- void RightToLeft();
- void Lighter();
- void Darker();
- while(1)
- {
-
- BothToMid();
- MidToBoth();
- LeftToRight();
- RightToLeft();
- Lighter();
- Darker();
- delay(500);
-
- }
- }
- /*************************************************
- *function: delay for a moment
- *input: time type:unsigned int
- *output: none
- **************************************************/
- void delay(uInt time)
- {
- uInt i;
- uChar j;
- for(i=0;i<time;i++)
- for(j=0;j<125;j++);
- }
- /**************************************************
- *function: let the led light from left to right one by one
- *input: none
- *output: none
- ***************************************************/
- void LeftToRight()
- {
- uChar i;
- uChar temp=0xfe;
- for(i=0;i<8;i++)
- {
- P2=temp;
- temp=(temp<<1)|1;
- delay(500);
- }
- }
- /**************************************************
- *function: let the led light from right to left one by one
- *input: none
- *output: none
- ***************************************************/
- void RightToLeft()
- {
- uChar i;
- uChar temp=0x7f;
- for(i=0;i<8;i++)
- {
- P2=temp;
- temp=(temp>>1)|0x80;
- delay(500);
- }
- }
- /***************************************************
- *function: let the led light from both edge to middle one by one
- *input: none
- *output: none
- ****************************************************/
- void BothToMid()
- {
- uChar temp[4]={0x7e,0xbd,0xdb,0xe7};
- uChar i;
- for(i=0;i<4;i++)
- {
- P2=temp[i];
- delay(1000);
- }
- }
- /****************************************************
- *function: let the led light from middle to both edge one by one
- *input: none
- *output: none
- *****************************************************/
- void MidToBoth()
- {
-
- uChar temp[4]={0xe7,0xdb,0xbd,0x7e,};
- uChar j;
- for(j=0;j<4;j++)
- {
- P2=temp[j];
- delay(1000);
- }
- }
- /*****************************************************
- *function :wait for a moment to let the led become lighter or darker
- *input: timer type:unsigned char
- *output: none
- *******************************************************/
- void delay1(uChar timer)
- {
- uChar i;
- while(timer--)
- {
- for(i=0;i<1;i++);
- }
- }
- /******************************************************
- *function:let the led become lighter and lighter
- *input:none
- *output:none
- ********************************************************/
- void Lighter()
- {
- void delay1(uChar);
- uChar maxNum;
- uChar timer;
- unsigned char j;
- P2=0xff;
- maxNum=250;
- timer=0;
-
- for(j=0;j<maxNum;j++)
- {
- timer++;
- delay1(timer);
- P2=0xff;
- timer=~timer;
- delay1(timer);
- P2=0x00;
- timer=~timer;
-
- }
- }
- /*********************************************************
- *function:let the led become darker and darker
- *input:none
- *output:none
- **********************************************************/
- void Darker()
- {
- void delay1(uChar);
- uChar maxNum;
- uChar timer;
- unsigned char j;
- P2=0x00;
- maxNum=250;
- timer=0;
-
- for(j=0;j<maxNum;j++)
- {
- timer++;
- delay1(timer);
- P2=0x00;
- timer=~timer;
- delay1(timer);
- P2=0xff;
- timer=~timer;
-
- }
- }
复制代码楼主的代码格式还是很好看的~~~一周热门 更多>