当前位置: 首页 > news >正文

企业网站写好如何发布百度云加速

企业网站写好如何发布,百度云加速,学网页设计学费多少,注册网址要多少钱点亮一个LED灯 根据LED模块原理图,我们可以知道,通过控制P20、P21...P27这八个位置的高低电平,可以实现D1~D8八个LED灯的亮灭。VCC接的是高电平,如果P20接的是低电平,那么D1就可以亮。如果P20接的是高电平,…

点亮一个LED灯

根据LED模块原理图,我们可以知道,通过控制P20、P21...P27这八个位置的高低电平,可以实现D1~D8八个LED灯的亮灭。VCC接的是高电平,如果P20接的是低电平,那么D1就可以亮。如果P20接的是高电平,D1就不能亮,以此类推。

P20~P27一共有八个端口,依次可以用P2_0,P2_1,P2_2...P2_7进行表示。也可以直接用P2进行表示。

例如P2_0=0,表示P20是低电平,P2_1=1,表示P21是高电平。

如果只用P2表示,P2=0xFF,表示P20~P27全是高电平,因为0xFF是十六进制,转化为二进制是1111 1111,十六进制转二进制是四位一组,F表示15,1111。因此对应P20=1,P21=1,....P27=1

如果P2=0xFE,表示P20=0,P21~P27全是高电平,因为0xFE转化为二进制是1111 1110 从低位开始依次对应P20,P21,P22...P27。一个二进制数对应一个引脚。 低电平表示亮,高电平不亮。0表示低电平,1表示高电平。

 
#include <REGX52.H>
void main(){P2=0xFE;//1111 1110 点亮D1while(1){}
}

点亮一个LED

使一个LED灯闪烁

while循环使得程序一直运行下去。如果要使一个LED灯闪烁,那么就要使一个灯亮,然后灭,交替进行。

如果我们写这样的代码,可以使得一个LED灯闪烁吗?

 
#include <REGX52.H>
void main(){while(1){P2=0xFE;//1111 1110P2=0xFF;}
}

答案是不可以,因为机器的运算速度是非常的快的,我们的肉眼没办法区分两行代码的区别,所以我们看到的是灯一直亮着。如果要让肉眼看见LED灯闪烁,那就要让机器慢下来,也就是让机器延时,再运行下一段代码。

延时就是空跑,程序什么都不执行,但是需要耗费时间。一般用多个while循环函数实现。

我们可以利用STC-ISP软件自动生成延时函数。我们生成1毫秒的延时函数,然后封装成可以实现任意毫秒的延时函数。

 
#include <REGX52.H>void Delay(unsigned int xms)                //@11.0592MHz
{while(xms--){unsigned char i, j;i = 2;j = 199;do{while (--j);} while (--i);}}void main(){while(1){P2=0xFE;//1111 1110Delay(500);P2=0xFF;Delay(500);}
}

这段代码实现了周期为1s,使一个LED灯闪烁。

LED闪烁

LED流水灯

LED流水灯意思是,让D1亮,其他不亮,然后D2亮,其他不亮,.....,使得灯亮呈流水状亮。

D1对应P2_0,D2对应P2_1......D8对应P2_7。

D1对应P2 二进制的第一位(个位),D2对应P2 二进制的第二位(十位),......D8对应P2的第八位。(低位依次对应)

D1亮对应P2=0xFE,D2亮对应P2=0xFD,D3亮对应P2=0xFB,D4亮对应P2=0xF7。

D5亮对应P2=0xEF,D6亮对应P2=0xDF,D7亮对应P2=0xBF,D8亮对应P2=0x7F。

我们以四个LED灯为一组,对应的十六进制是E,D,B,7。分别表示第一个灯亮,第二个灯亮,第三个灯亮,第四个灯亮。

 
//main.c
#include <REGX52.H>
#include "Delay.h"
void main(){while(1){P2=0xfe;Delay(500);P2=0xfd;Delay(500);P2=0xfb;Delay(500);P2=0xf7;Delay(500);P2=0xef;Delay(500);P2=0xdf;Delay(500);P2=0xbf;Delay(500);P2=0x7f;Delay(500);}}
 
//Delay.c
void Delay(unsigned int xms)                //@11.0592MHz
{while(xms--){unsigned char i, j;i = 2;j = 199;do{while (--j);} while (--i);}}
 
//Delay.h
void Delay(unsigned int xms);                //@11.0592MHz

将这三个文件放到同一个组别中,实现模块化编写代码,提高代码的可移植性,便携性。我们只需要在主函数声明Delay.h的头文件即可使用Delay.c中的Delay的延时函数。

流水灯

LED流水灯plus版本

#include <REGX52.H>
#include "Delay.h"void liushui1(unsigned int xms){P2=0xfe;Delay(xms);P2=0xfd;Delay(xms);P2=0xfb;Delay(xms);P2=0xf7;Delay(xms);P2=0xef;Delay(xms);P2=0xdf;Delay(xms);P2=0xbf;Delay(xms);P2=0x7f;Delay(xms);
}
void liushui2(unsigned int xms){P2=0x7f;Delay(xms);P2=0xbf;Delay(xms);P2=0xdf;Delay(xms);P2=0xef;Delay(xms);P2=0xf7;Delay(xms);P2=0xfb;Delay(xms);        P2=0xfd;Delay(xms);        P2=0xfe;Delay(xms);        }
void ji(unsigned int xms){P2=0xAA;Delay(xms);
}
void ou(unsigned int xms){P2=0x55;Delay(xms);
}void man(){P2=0x00;Delay(500);P2=0xff;Delay(500);
}
void main(){unsigned int xms=300;while(1){int i;liushui1(xms);liushui1(xms);man();man();liushui2(xms);liushui2(xms);man();man();for(i=1;i<=5;i++){ji(xms);ou(xms);}xms-=50;if(xms==0) xms=300;}}

这段代码是用于单片机(基于8051架构)的程序,用来控制LED灯的流水灯效果和闪烁模式。程序包含几个关键函数,每个函数用于实现特定的灯光效果。

包含的头文件和自定义函数

 
#include <REGX52.H>

这行代码包含了一个专为8051单片机设计的头文件,其中包含了对单片机特定功能寄存器的定义和访问方法。

 
#include "Delay.h"

这行代码包含了一个自定义的延时函数库,里面定义的Delay函数被用来在程序中实现延时效果,使LED灯的变化速度符合人眼观察的需求。

liushui1函数

 
void liushui1(unsigned int xms){P2=0xfe;Delay(xms);P2=0xfd;Delay(xms);P2=0xfb;Delay(xms);P2=0xf7;Delay(xms);P2=0xef;Delay(xms);P2=0xdf;Delay(xms);P2=0xbf;Delay(xms);P2=0x7f;Delay(xms);
}

liushui1函数实现了LED灯的正向流水效果。通过改变P2端口的输出值,让LED依次点亮,模拟流水的效果。xms参数控制每个LED点亮的持续时间,从而影响流水的速度。

liushui2函数

 
void liushui2(unsigned int xms){P2=0x7f;Delay(xms);P2=0xbf;Delay(xms);P2=0xdf;Delay(xms);P2=0xef;Delay(xms);P2=0xf7;Delay(xms);P2=0xfb;Delay(xms);        P2=0xfd;Delay(xms);        P2=0xfe;Delay(xms);        }

liushui2函数实现了LED灯的反向流水效果,其工作原理与liushui1相似,但LED点亮的顺序相反。

ji函数和ou函数

 
void ji(unsigned int xms){ P2=0xAA; Delay(xms); }
void ou(unsigned int xms){ P2=0x55; Delay(xms); }

ji函数和ou函数用来实现特定的LED闪烁模式。ji函数让LED以0xAA(10101010二进制模式)的模式闪烁,而ou函数以0x55(01010101二进制模式)的模式闪烁。参数xms控制闪烁的持续时间。

man函数

 
void man(){ P2=0x00; Delay(500); P2=0xff; Delay(500); }

man函数用于实现所有LED全部点亮然后再全部熄灭的效果,每个状态持续500ms。

main函数

 
void main(){unsigned int xms=300;while(1){int i;liushui1(xms);liushui1(xms);man();man();liushui2(xms);liushui2(xms);man();man();for(i=1;i<=5;i++){ji(xms);ou(xms);}xms-=50;if(xms==0) xms=300;}}

main函数是程序的入口点,定义了一个无限循环,在这个循环中不断调用上述定义的函数,以实现不断变化的LED灯效果。通过调整xms的值,可以改变灯光效果的速度。当xms减到0时,程序会将其重置为300ms,保证了程序的连续运行和灯光效果的多样性。正向流水流两次,然后全部点亮全部熄灭两次,逆向流水流两次,然后全部点亮全部熄灭两次,奇偶交替变换五次,然后延时降低50毫秒,一直到延时为0,此时重新设置延时时间为300毫秒。

流水灯plus_0

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。

同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。

谢谢您的支持,期待与您在下一篇文章中再次相遇!

http://www.yayakq.cn/news/839343/

相关文章:

  • 企业网站优化公司有哪些网站开发类的合同范本
  • 乌海网站开发网页制作网站发布教学设计
  • 龙岗网站建公司网站免费建站怎么样
  • 广告素材网站哪个比较好正能量免费下载
  • 入门网站建设儿童摄影网站建设
  • 淘宝网站设计模板下载阿里云手机网站建设多少钱
  • 模具厂咋做网站做食品生产的网站
  • 网站分类有哪些山西成宁做的网站
  • 新网站百度seo如何做wordpress 文件上传插件
  • 网站建设入什么科目做旅游网站的好处
  • 网站开发创意想法外贸网站建设szjijie
  • 杭州本地品牌网站建设收费重庆自助建站系统哪家好
  • 国内全屏网站有哪些seo网络优化师就业前景
  • 黑群晖的做网站文件酷家乐手机版
  • wordpress网站排名网络系统总数
  • 网站开发买什么书网站建设规划书主题
  • 大型网站制作丹阳网站建设台州网站建设设计
  • 网站建设推广唯心磁遁8深圳建站公司设计
  • 网站建设销售好做么flash做网站的流程
  • 网站导航内链建设wordpress搜索开发
  • 拨付网站建设费用的报告公司网站招聘费如何做会计分录
  • 营销网站seo推广费用东莞网站网络推广公司
  • 汽车网站建设代理加盟app大全视频app大全
  • 五莲网站建设公司阿里云的wordpress
  • win10怎么做网站公众号开发者平台
  • 深圳建站公司哪个网站跨境电商做的最好
  • 大的网站制作外贸自建站平台怎么找
  • 广西建设职业学院官网网站天心区网站建设公司
  • 深圳教育 网站建设网站建设的一般过程包括哪些
  • 一般建设网站需要多少预算学生个人网页成品