51单片机LED灯渐明渐暗实验
1.概述
这篇文章介绍使用单片机控制两个LED彩灯亮度渐明渐暗效果,详细介绍了操作步骤以及完整的程序代码,动手就能制作的小实验。
2.操作步骤
2.1.硬件搭建
1.硬件准备
名称 | 型号 | 数量 |
---|---|---|
单片机 | STC12C2052AD | 1 |
LED彩灯 | 无 | 2 |
晶振 | 12MHZ | 1 |
电容 | 30pf | 2 |
电阻 | 100欧姆 | 2 |
面包板 | 无 | 1 |
连接线 | 无 | 5 |
2.硬件链接电路图
根据下面的电路图将与元器件与单片机连接好,注意LED灯只需要连接19和18两个引脚即可,其他不需要链接。
2.2.程序代码
/*************************************************************
* 程序名: 两个LED灯亮度渐亮渐暗
* 编写人: bruce
* 硬件支持:TC12C2052 外部12MHZ晶振
* 日 期: 2023-11-14
* 修改日志: 通过控制LED灯亮和灭的时间实现亮度渐变效果,可修改a变量值观察LED灯变化效果
/*************************************************************/
#include<STC12C2052AD.H>
sbit LED1 = P1 ^ 7;
sbit LED2 = P1 ^ 6;
/*********************************************************************************************
函数名:毫秒级CPU延时函数
调 用:DELAY_MS (?);
参 数:1~65535(参数不可为0)
返回值:无
结 果:占用CPU方式延时与参数数值相同的毫秒时间
备 注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){
unsigned int i;
while( --a != 0){
for(i = 0; i < 600; i++);
}
}
void main(void){
while(1){
unsigned char a;
for(a=1;a<20;a++){
LED1 = 0;
LED2 = 1;
// 通过修改延迟值改变灯亮灭的时间,达到渐亮渐暗效果
DELAY_MS(a);
LED1 = 1;
LED2 = 0;
DELAY_MS(20-a);
}
for(a=19;a>0;a--){
LED1 = 0;
LED2 = 1;
DELAY_MS(a);
LED1 = 1;
LED2 = 0;
DELAY_MS(20-a);
}
}
}
2.3.烧录程序
使用Keil工具编译程序,打开STC-ISP软件选择编译后的hex文件,设置外部晶振,下载程序。将程序烧录到单片机后,在给单片机冷启动(断掉5V电源在上电)使单片机切换为外部晶振,观察两个LED灯交替明暗变化。
原文地址:https://blog.csdn.net/m0_38039437/article/details/134546374
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_4531.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。