阜阳网站建设专业机构网络规划师
2026/6/20 2:35:25 网站建设 项目流程
阜阳网站建设专业机构,网络规划师,什么叫关键词,房地产公司网站源码目录 2.0 LED原理图 2.1 项目示例1#xff1a;点亮一个LED ✅点亮LED主函数 2.2 项目示例2#xff1a; LED闪烁 ✅STC-ISP 软件自动生成软件延时函数#xff1a; ✅LED 闪烁主函数 2.3 项目示例3#xff1a;LED流水灯 ✅基础版主函数#xff1a; ✅升级版主函数点亮一个LED✅点亮LED主函数2.2 项目示例2 LED闪烁✅STC-ISP 软件自动生成软件延时函数✅LED 闪烁主函数2.3 项目示例3LED流水灯✅基础版主函数✅升级版主函数2.0 LED原理图LED 电平规则低电平 LED点亮、高电平 LED熄灭2.1项目示例1点亮一个LED✅点亮LED主函数#include REGX52.H// 引入52单片机寄存器头文件REGX52兼容所有51/52内核单片机 void main() { // P20xFE; // 二进制11111110仅点亮P2.0 P20x55; // 二进制01010101P2口LED 隔一个亮一个偶脚亮、奇脚灭 while(1); // 死循环保持引脚电平状态防止程序跑飞 }2.2项目示例2LED闪烁✅STC-ISP 软件自动生成软件延时函数✅LED 闪烁主函数#include REGX52.H // 51/52单片机寄存器定义头文件必备用于操作P2口等IO引脚 #include INTRINS.H // 内核函数头文件必须包含因为代码中用到了 _nop_() 空操作函数 /************************** 延时函数 **************************/ void Delay500ms(void) // 延时函数名延时500毫秒 { // 12MHz 该延时函数的适配条件【晶振12MHz】精准延时500ms unsigned char i, j, k; // 定义3个无符号字符型变量用于三层循环计数实现延时 _nop_(); // 执行1个空操作指令作用延时微调保证500ms延时精度无实质逻辑 i 4; // 外层循环初始化计数值 j 205; // 中层循环初始化计数值 k 187; // 内层循环初始化计数值 do // 三层嵌套循环通过变量自减循环消耗CPU运行时间实现软件延时 { do { while (--k); // 内层k自减到0再执行中层 } while (--j); // 中层j自减到0再执行外层 } while (--i); // 外层i自减到0延时函数执行完毕 } /************************** 主函数-程序入口 **************************/ void main(void) { while(1) // 死循环程序上电后一直重复执行循环内的代码永不停止 { P20xFE; // 赋值二进制 1111 1110 → P2.0引脚置低电平点亮对应LED其余引脚高电平灯灭 Delay500ms();// 调用延时函数保持LED点亮状态 500毫秒 P20xFF; // 赋值二进制 1111 1111 → P2口所有引脚置高电平熄灭全部LED Delay500ms();// 调用延时函数保持LED熄灭状态 500毫秒 } }STC小程序生成软件延时函数中包含代码_nop_要引入头文件#include否则会报错2.3项目示例3LED流水灯✅基础版主函数#include REGX52.H // 51/52单片机寄存器头文件用于操作P2口IO引脚必备头文件 #include INTRINS.H // 单片机内核函数头文件必须包含因为延时函数中用到了_nop_()空操作函数 /********************* 延时函数软件延时500毫秒 *********************/ void Delay500ms() // 函数名延时500ms单位毫秒(ms) { // 12MHz 该延时函数适配【12MHz晶振】延时精度准确51单片机标配 unsigned char i, j, k; // 定义3个无符号字符型变量用于三层嵌套循环计数消耗CPU时间实现延时 _nop_(); // 执行1个CPU空操作仅用于延时精度微调不影响程序逻辑 i 4; // 外层循环计数初始化 j 205; // 中层循环计数初始化 k 187; // 内层循环计数初始化 do // 三层do-while嵌套循环通过变量自减至0实现精准延时 { do { while (--k); // 内层k自减减到0后执行下一层循环 } while (--j); // 中层j自减减到0后执行外层循环 } while (--i); // 外层i自减减到0后延时函数执行完毕 } /********************* 主函数程序入口流水灯核心逻辑 *********************/ void main() { while(1) // 死循环无限重复执行循环内代码实现LED持续流水灯效果 { P20xFE; // 二进制1111 1110 → 仅P2.0引脚置低电平对应第一个LED点亮 Delay500ms();// 保持当前点亮状态500ms肉眼可见的亮灯时长 P20xFD; // 二进制1111 1101 → 仅P2.1引脚置低电平对应第二个LED点亮 Delay500ms(); P20xFB; // 二进制1111 1011 → 仅P2.2引脚置低电平对应第三个LED点亮 Delay500ms(); P20xF7; // 二进制1111 0111 → 仅P2.3引脚置低电平对应第四个LED点亮 Delay500ms(); P20xEF; // 二进制1110 1111 → 仅P2.4引脚置低电平对应第五个LED点亮 Delay500ms(); P20xDF; // 二进制1101 1111 → 仅P2.5引脚置低电平对应第六个LED点亮 Delay500ms(); P20xBF; // 二进制1011 1111 → 仅P2.6引脚置低电平对应第七个LED点亮 Delay500ms(); P20x7F; // 二进制0111 1111 → 仅P2.7引脚置低电平对应第八个LED点亮 Delay500ms(); } }✅升级版主函数修改延时函数实现流水灯任意切换速度#include REGX52.H // 51/52单片机寄存器核心头文件用于操作P2口IO引脚必备 #include INTRINS.H // 51内核函数头文件软件生成的延时代码标配兼容所有延时模板 /********************* 通用毫秒级延时函数 (重点核心) *********************/ void Delay1ms(unsigned int xms) // 12MHz 晶振 精准延时 { // 函数功能自定义延时【xms 毫秒】xms是延时的毫秒数可调参数 unsigned char i, j; // 定义局部变量用于1ms基准延时的循环计数 while(xms--) // 外层循环执行 xms 次【1ms延时】总延时 xms * 1ms { i 2; j 239; do { while (--j); // 内层双层循环执行一次 精准延时1毫秒 } while (--i); } } /********************* 主函数 - 正向流水灯核心逻辑 *********************/ void main() { while(1) // 死循环无限重复执行流水灯代码实现持续流水效果 { P20xFE; // 二进制1111 1110 → 仅P2.0引脚低电平 → 第一个LED点亮 Delay1ms(200);// 保持亮灯状态 200毫秒 P20xFD; // 二进制1111 1101 → 仅P2.1引脚低电平 → 第二个LED点亮 Delay1ms(200); P20xFB; // 二进制1111 1011 → 仅P2.2引脚低电平 → 第三个LED点亮 Delay1ms(200); P20xF7; // 二进制1111 0111 → 仅P2.3引脚低电平 → 第四个LED点亮 Delay1ms(200); P20xEF; // 二进制1110 1111 → 仅P2.4引脚低电平 → 第五个LED点亮 Delay1ms(200); P20xDF; // 二进制1101 1111 → 仅P2.5引脚低电平 → 第六个LED点亮 Delay1ms(200); P20xBF; // 二进制1011 1111 → 仅P2.6引脚低电平 → 第七个LED点亮 Delay1ms(200); P20x7F; // 二进制0111 1111 → 仅P2.7引脚低电平 → 第八个LED点亮 Delay1ms(200); } }为什么参数用unsigned int xms而不是unsigned charunsigned char取值范围0 ~ 255→ 最多只能延时 255msunsigned int取值范围0 ~ 65535→ 最大可延时65 秒完全满足 51 单片机所有项目的延时需求流水灯、按键消抖、数码管、蜂鸣器都够用

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询