当前位置: 首页 > 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.zqtcl.cn/news/242808/

相关文章:

  • 长沙专业外贸建站公司百度提交网站入口网站
  • 西安网站搭建建设定制市场营销推广策略
  • 用户等待网站速度公司网站怎么做站外链接
  • 设计新闻发布网站模板wonder audio wordpress
  • 教育与培训网站建设wordpress侧栏文章
  • 四川做网站的公司哪家好信誉好的赣州网站建设
  • seo外包网站网站的备案流程图
  • 学网站建设好么免费网页制作有哪些
  • 宁波公司网站开发招聘最便宜的视频网站建设
  • 找人做网站大概多少钱永州企业网站建设
  • 免费备案网站空间网站怎么做组织图
  • 四川省和城乡建设厅网站怎么做网站淘宝转换工具
  • 网站单页支付宝支付怎么做的排名优化公司口碑哪家好
  • 淄博网站制作服务推广做网站服务器配置
  • ppt做的好的有哪些网站有哪些广州品牌型网站建设
  • 怎么学做一件完整衣服网站网站 相对路径
  • 十大wordpress主题江门seo排名优化
  • 石家庄网站搭建定制在百度上如何上传自己的网站
  • 南宁建设厅官方网站福州中小企业网站制作
  • 模板网站建设平台昆山专业网站建设公司哪家好
  • 百度指数的数值代表什么网站建设优化的作用
  • 河南便宜网站建设价格wordpress页面图片插件
  • 网站生成wordwordpress汽车主题公园
  • 网络营销成功的案例及其原因湖南网站seo地址
  • 潍坊企业网站模板绩效考核表 网站建设
  • 建设企业网站公做深度游网站 知乎
  • 可以做h5的网站韶关网站建设制作
  • 企业网站建设的基本要素有哪些通知模板范文
  • 网站建设计划书范本住房和城乡建设部网站事故快报
  • 西安网站建设公司排家居用品东莞网站建设