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

建设部网站园林绿化资质标准织梦网站优化教程

建设部网站园林绿化资质标准,织梦网站优化教程,app订制开发公司,西安百度爱采购推广在嵌入式系统或微控制器项目中#xff0c;LED流水灯是一种常见的实验项目#xff0c;它不仅能够展示基本的GPIO#xff08;通用输入输出#xff09;控制#xff0c;还能通过不同的模式增加趣味性。本文将探讨四种不同的流水灯效果#xff0c;并通过代码示例展示如何实现它…在嵌入式系统或微控制器项目中LED流水灯是一种常见的实验项目它不仅能够展示基本的GPIO通用输入输出控制还能通过不同的模式增加趣味性。本文将探讨四种不同的流水灯效果并通过代码示例展示如何实现它们。 效果1依次亮循环 这种效果是最基本的流水灯效果LED灯按照顺序依次亮起当最后一个LED灯亮起后又从头开始循环。这种效果可以通过一个简单的for循环实现循环中依次设置每个LED灯为高电平亮然后延时一段时间再设置为低电平灭。随后下一个LED灯被点亮如此循环。 代码实现 #include Config.h #include STC8G_H_GPIO.h #include STC8G_H_Delay.h// 每个LED灯 所代表的引脚 #define LED1 P27 #define LED2 P26 #define LED3 P15 #define LED4 P14 #define LED5 P23 #define LED6 P22 #define LED7 P21 #define LED8 P20 #define LED_SW P45// GPIO配置 输入/输出 void GPIO_config(void) {// 总开关 P4 端口下的5号引脚 推挽模式GPIO_InitTypeDef GPIO_InitStructure; //结构定义GPIO_InitStructure.Pin GPIO_Pin_5; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_OUT_PP; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P4, GPIO_InitStructure);//初始化// P1端口下的 4、5号引脚 准双向口模式GPIO_InitStructure.Pin GPIO_Pin_4 | GPIO_Pin_5; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P1, GPIO_InitStructure);//初始化// P2端口下的 0 到 7 号引脚 准双向口模式GPIO_InitStructure.Pin GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P2, GPIO_InitStructure);//初始化 }int main() {int i; // 定义for循环初始化下标变量// 1. 配置8个灯和总开关SW的引脚工作模式GPIO_config();// 2. 开启总中断EA 1;// 4. 开启总开关LED_SW 0;// 5. 开启流水灯while(1) {// 依次亮for(i 0; i 8; i) {// i:1,2,3,4,5,6,7,8LED1 i 0 ? 0 : 1; // 第一个灯亮其他灯不亮LED2 i 1 ? 0 : 1; // 第二个灯亮其他灯不亮LED3 i 2 ? 0 : 1; // 以此类推LED4 i 3 ? 0 : 1;LED5 i 4 ? 0 : 1;LED6 i 5 ? 0 : 1;LED7 i 6 ? 0 : 1;LED8 i 7 ? 0 : 1;delay_ms(100); // 延迟100ms}}} 效果2依次亮顺序逆序 在效果1的基础上这种效果增加了逆序循环的部分。即当LED灯按照顺序依次亮起并熄灭后会按照逆序再次亮起并熄灭。实现这一效果需要在原有的for循环基础上增加一个逆序的循环。 代码实现 #define LED3 P15 #define LED4 P14 #define LED5 P23 #define LED6 P22 #define LED7 P21 #define LED8 P20 #define LED_SW P45// GPIO配置 输入/输出 void GPIO_config(void) {// 总开关 P4 端口下的5号引脚 推挽模式GPIO_InitTypeDef GPIO_InitStructure; //结构定义GPIO_InitStructure.Pin GPIO_Pin_5; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_OUT_PP; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P4, GPIO_InitStructure);//初始化// P1端口下的 4、5号引脚 准双向口模式GPIO_InitStructure.Pin GPIO_Pin_4 | GPIO_Pin_5; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P1, GPIO_InitStructure);//初始化// P2端口下的 0 到 7 号引脚 准双向口模式GPIO_InitStructure.Pin GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P2, GPIO_InitStructure);//初始化 }int main() {int i; // 定义for循环初始化下标变量// 1. 配置8个灯和总开关SW的引脚工作模式GPIO_config();// 2. 开启总中断EA 0;// 4. 开启总开关LED_SW 0;// 5. 开启流水灯while(1) {// 依次亮 顺序for(i 0; i 8; i) {// i:1,2,3,4,5,6,7,8LED1 i 0 ? 0 : 1; // 第一个灯亮其他灯不亮LED2 i 1 ? 0 : 1; // 第二个灯亮其他灯不亮LED3 i 2 ? 0 : 1; // 以此类推LED4 i 3 ? 0 : 1;LED5 i 4 ? 0 : 1;LED6 i 5 ? 0 : 1;LED7 i 6 ? 0 : 1;LED8 i 7 ? 0 : 1;delay_ms(100); // 延迟100ms}// 逆序for(i 8; i 0; i--) {// i:8,7,6,5,4,3,2,1LED1 i 0 ? 0 : 1; // 第一个灯亮其他灯不亮LED2 i 1 ? 0 : 1; // 第二个灯亮其他灯不亮LED3 i 2 ? 0 : 1; // 以此类推LED4 i 3 ? 0 : 1;LED5 i 4 ? 0 : 1;LED6 i 5 ? 0 : 1;LED7 i 6 ? 0 : 1;LED8 i 7 ? 0 : 1;delay_ms(100); // 延迟100ms}}} 效果3逐渐亮 这种效果要求LED灯从第一个开始逐个亮起直到所有LED灯都亮起然后再逐个熄灭直到所有LED灯都熄灭。这种效果可以通过两个嵌套的for循环实现第一个循环控制亮起的LED灯的数量第二个循环则用于设置对应数量的LED灯为高电平。在第一个循环结束后再通过一个类似的循环将LED灯逐个熄灭。 代码实现 #include Config.h #include STC8G_H_GPIO.h #include STC8G_H_Delay.h// 每个LED灯 所代表的引脚 #define LED1 P27 #define LED2 P26 #define LED3 P15 #define LED4 P14 #define LED5 P23 #define LED6 P22 #define LED7 P21 #define LED8 P20 #define LED_SW P45// GPIO配置 输入/输出 void GPIO_config(void) {// 总开关 P4 端口下的5号引脚 推挽模式GPIO_InitTypeDef GPIO_InitStructure; //结构定义GPIO_InitStructure.Pin GPIO_Pin_5; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_OUT_PP; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P4, GPIO_InitStructure);//初始化// P1端口下的 4、5号引脚 准双向口模式GPIO_InitStructure.Pin GPIO_Pin_4 | GPIO_Pin_5; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P1, GPIO_InitStructure);//初始化// P2端口下的 0 到 7 号引脚 准双向口模式GPIO_InitStructure.Pin GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P2, GPIO_InitStructure);//初始化 }int main() {int i; // 定义for循环初始化下标变量// 1. 配置8个灯和总开关SW的引脚工作模式GPIO_config();// 2. 开启总中断EA 1;// 4. 开启总开关LED_SW 0;// 5. 开启逐渐亮流水灯while(1) {// 逐渐亮for(i 8; i 0; i--) {// 依次点亮前i个灯LED1 i 1; // 如果i 1则LED1亮()否则不亮LED2 i 2; // 如果i 2则LED2亮否则不亮LED3 i 3; // 以此类推LED4 i 4;LED5 i 5;LED6 i 6;LED7 i 7;LED8 i 8;delay_ms(100); // 延迟100ms}// 逐渐灭for(i 0; i 8; i) {// 依次点亮前i个灯LED1 i 1; // 如果i 1则LED1亮否则不亮LED2 i 2; // 如果i 2则LED2亮否则不亮LED3 i 3; // 以此类推LED4 i 4;LED5 i 5;LED6 i 6;LED7 i 7;LED8 i 8;delay_ms(100); // 延迟100ms}}} 效果4奇偶亮 这种效果要求LED灯按照奇偶顺序亮起。首先所有奇数编号的LED灯如1、3、5、7亮起然后熄灭接着所有偶数编号的LED灯如2、4、6、8亮起然后熄灭。这种效果可以通过两个独立的循环实现一个用于控制奇数LED灯另一个用于控制偶数LED灯。 代码实现 #include Config.h #include STC8G_H_GPIO.h #include STC8G_H_Delay.h// 每个LED灯 所代表的引脚 #define LED1 P27 #define LED2 P26 #define LED3 P15 #define LED4 P14 #define LED5 P23 #define LED6 P22 #define LED7 P21 #define LED8 P20 #define LED_SW P45// GPIO配置 输入/输出 void GPIO_config(void) {// 总开关 P4 端口下的5号引脚 推挽模式GPIO_InitTypeDef GPIO_InitStructure; //结构定义GPIO_InitStructure.Pin GPIO_Pin_5; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_OUT_PP; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P4, GPIO_InitStructure);//初始化// P1端口下的 4、5号引脚 准双向口模式GPIO_InitStructure.Pin GPIO_Pin_4 | GPIO_Pin_5; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P1, GPIO_InitStructure);//初始化// P2端口下的 0 到 7 号引脚 准双向口模式GPIO_InitStructure.Pin GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_6 | GPIO_Pin_7; //指定要初始化的IO,GPIO_InitStructure.Mode GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P2, GPIO_InitStructure);//初始化 }int main() {int i; // 定义for循环初始化下标变量// 1. 配置8个灯和总开关SW的引脚工作模式GPIO_config();// 2. 开启总中断EA 1;// 4. 开启总开关LED_SW 0;// 5. 开启奇偶流水灯 while(1) { // 奇数LED亮1, 3, 5, 7 for(i 1; i 8; i 2) { // 从1开始每次增加2 LED1 (i 1); LED3 (i 3); LED5 (i 5); LED7 (i 7); LED2 LED4 LED6 LED8 0; // 确保其他LED关闭 delay_ms(100); // 延迟100ms } // 偶数LED亮2, 4, 6, 8 for(i 2; i 8; i 2) { // 从2开始每次增加2 LED2 (i 2); LED4 (i 4); LED6 (i 6); LED8 (i 8); LED1 LED3 LED5 LED7 0; // 确保其他LED关闭 delay_ms(100); // 延迟100ms } } } 总结 通过以上四种流水灯效果的实现我们可以看到微控制器在控制LED灯方面的强大能力。这些效果不仅展示了基本的GPIO控制技术还通过不同的模式增加了项目的趣味性和实用性。在实际应用中我们可以根据具体需求选择合适的流水灯效果并通过调整参数和添加功能来进一步优化项目。
http://www.pierceye.com/news/242808/

相关文章:

  • 仙居建设规划局网站asp 茶叶网站模板
  • 福州网页模板建站梦幻西如何建立网站做代练
  • 专业做毕业设计网站设计禹州市城乡建设局网站
  • 魔站网站开发手机商城官网
  • 沧州 网站建设公众号搭建第三方平台
  • 天津建设项目招投标网站唐山网站建设推广
  • 长沙h5建站手机图片网站源码
  • php网站项目无锡有网页制作公司吗
  • 做企业网站需要收费吗wordpress单主题
  • 潮州网站开发多少钱wordpress用户调用
  • 湖南响应式网站公司闸北建设机械网站
  • 图书管理系统网站开发教程北京今朝装饰设计有限公司
  • 济南咨询行业网站开发qq降龙是哪个公司开发的
  • 可以做go分析的网站网站如何做营销
  • 企业网站设计要求做公司网站的价格
  • 网站建设与管理中专专业网页设计公司营销crm系统
  • wordpress全站甘肃省住房和城乡建设厅安置局网站
  • 做视频网站应该选什么服务器十大暗网搜索引擎
  • 建立外贸网站多少钱淮北招聘网最新招聘信息
  • 有做浏览单的网站jsp网站开发过程
  • 做网站用小型机或服务器wordpress 喜欢
  • 网站建设与维护采访稿中国建设银行电脑版
  • 企业网站建设变相收取等级保护费手游平台十大排名
  • 影响力网站建设恩施网站开发
  • 美术馆网站建设总体要求承德信息发布微信平台
  • 同城便民网站开发为什么企业需要建设网站
  • 网站制作推荐新鸿儒黄山游玩攻略及费用
  • 二手车网站的建设app与微网站的区别是什么
  • 深圳做棋牌网站建设哪家便宜网站域名更改后怎么做映射
  • 长沙网站seo公司知名网站设计服务商