news 2026/5/26 16:19:53

51单片机__LED相关

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
51单片机__LED相关

51单片机__LED相关

单片机介绍

单片机,英文Micro Controller Unit,简称MCU
内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能
单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备(例如电机,LED等)的控制
单片机跟计算机相比,单片机算是一个袖珍版计算机,一个芯片就能构成完整的计算机系统。但在性能上,与计算机相差甚远,但单片机成本低、体积小、结构简单,在生活和工业控制领域大有所用
同时,学习使用单片机是了解计算机原理与结构的最佳选择

单片机应用

单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

STC89C52单片机

开发板原理图和复位单路

创建工程并实现LED控制

1)点亮LED灯

观察原理图,LED灯低电平点亮,下面开始编写代码:

#include<REGX52.H>voidmain(){P2=0;}// 现象:所有LED灯均被点亮

2)实现LED_1灯闪烁

延时方法与实现:

通过单片机驱动外围显示电路,为了能够让人眼识别到所显示内容的变化,需要保证所显示的内容有所停留。在单片机中,实现这一效果有两种方式,一种是通过C语言编写一段延时效果的程序或者子程序,实现该目的。另一种是调用单片机自带的定式/计数器,这里暂时使用第一种方式。

使用单片机烧录软件AiCube-ISP-v6.96A,生成一段500ms的延时函数。

// 延时500msvoidDelay500ms(void)//@11.0592MHz{unsignedchardata i,j,k;_nop_();i=4;j=129;k=119;do{do{while(--k);}while(--j);}while(--i);}

#include<REGX52.H>#include<INTRINS.H>// 解决 _nop_ 报错// 延时500msvoidDelay500ms(void)//@11.0592MHz{unsignedchardata i,j,k;_nop_();i=4;j=129;k=119;do{do{while(--k);}while(--j);}while(--i);}voidmain(){while(1){P2=0xFE;// 1111 1110Delay500ms();// 延时0.5sP2=0xFF;// 1111 1111Delay500ms();// 延时0.5s}}// 现象: LED_1 闪烁,其他LED灯不亮

3)实现LED流水灯

第一种方式:使用数组实现流水灯效果

#include<REGX52.H>#include<INTRINS.H>// 解决 _nop_ 报错// 延时500msvoidDelay500ms(void)//@11.0592MHz{unsignedchardata i,j,k;_nop_();i=4;j=129;k=119;do{do{while(--k);}while(--j);}while(--i);}// 定义流水灯数组unsignedcharLedCode[]={0xFE,0xFD,0xFB,0xF7,0Xef,0xDF,0xBF,0x7F};voidmain(){unsignedchari;while(1){for(i=0;i<8;i++){P2=LedCode[i];Delay500ms();}}}// 现象:LED灯从低到高依次点亮//附加内容://0xFE 1111 1110//0xFD 1111 1101//0xFB 1111 1011//0xF7 1111 0111//0Xef 1110 1111//0xDF 1101 1111//0xBF 1011 1111//0x7F 0111 1111

第二种方式:左右移运算符实现

#include<REGX52.H>#include<INTRINS.H>// 解决 _nop_ 报错// 延时500msvoidDelay500ms(void)//@11.0592MHz{unsignedchardata i,j,k;_nop_();i=4;j=129;k=119;do{do{while(--k);}while(--j);}while(--i);}voidmain(){unsignedcharLed=0x01;// 0000 0001while(1){P2=~Led;// 取反,输出到P2端口Delay500ms();// 延时500ms// 使用左移运算符Led=Led<<1;// 如果移到最右边,重新从最左边开始if(Led==0x00){Led=0x01;}}}// 现象:LED灯从低到高依次点亮

第三种方式:循环左右移函数的调用

1.cror() - 循环右移函数

头文件:#include <intrins.h>
原型:unsigned char _cror_(unsigned char val, unsigned char n);

功能:将 8 位数据循环右移 n 位,移出的位从左边补入

示例:

unsignedchardata=0x81;// 二进制:10000001data=_cror_(data,1);// 结果:0xC0 (11000000)// 原:10000001 → 右移1位 → 11000000

2.crol() - 循环左移函数

头文件:#include <intrins.h>
原型:unsigned char _crol_(unsigned char val, unsigned char n);

功能:将 8 位数据循环左移 n 位,移出的位从右边补入

示例:

unsignedchardata=0x81;// 二进制:10000001data=_crol_(data,1);// 结果:0x03 (00000011)// 原:10000001 → 左移1位 → 00000011

流水灯应用示例:

#include<REGX52.H>#include<INTRINS.H>// 解决 _nop_ 报错// 延时500msvoidDelay500ms(void)//@11.0592MHz{unsignedchardata i,j,k;_nop_();i=4;j=129;k=119;do{do{while(--k);}while(--j);}while(--i);}voidmain(){unsignedcharaa;aa=0xFE;// 1111 1110while(1){P2=aa;Delay500ms();aa=_crol_(aa,1);// 循环左移函数}}// 现象:LED灯从低到高依次点亮

注意:这两个函数是 C51 编译器特有,仅适用于 51 单片机开发。

综合练习:双向流水灯

#include<REGX52.H>#include<INTRINS.H>// 包含移位函数头文件// 延时500msvoidDelay500ms(void)//@11.0592MHz{unsignedchardata i,j,k;_nop_();i=4;j=129;k=119;do{do{while(--k);}while(--j);}while(--i);}voidmain(){unsignedcharaa;unsignedchardirection=0;// 0:左移, 1:右移unsignedcharcounter=0;// 计数左移/右移的次数aa=0xFE;// 1111 1110,第一个灯亮while(1){P2=aa;Delay500ms();// 左移8次后改为右移if(direction==0){aa=_crol_(aa,1);// 循环左移counter++;if(counter>=7)// 左移7次后(共8个状态){direction=1;// 改为右移方向counter=0;// 计数器清零}}// 右移8次后改为左移else{aa=_cror_(aa,1);// 循环右移counter++;if(counter>=7)// 右移7次后(共8个状态){direction=0;// 改为左移方向counter=0;// 计数器清零}}}}// 现象:LED左右依次点亮
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 11:07:27

FastAPI 路径操作依赖项

FastAPI 路径操作依赖项 引言 FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持并基于标准 Python 类型提示。依赖项是 FastAPI 中一个强大的特性,它允许我们在请求处理期间执行各种操作,例如身份验证、数据验证、权限检查等。本文将深入…

作者头像 李华
网站建设 2026/5/26 6:02:02

亲测好用10个AI论文工具,专科生轻松搞定论文写作!

亲测好用10个AI论文工具&#xff0c;专科生轻松搞定论文写作&#xff01; AI 工具助力论文写作&#xff0c;专科生也能轻松应对 在如今的学术环境中&#xff0c;AI 工具正逐渐成为学生和研究者不可或缺的助手。尤其是在论文写作过程中&#xff0c;AI 不仅能够帮助提高效率&…

作者头像 李华
网站建设 2026/5/16 18:51:20

如何使用奥比中光的Viewer查看录像.bag视频呢?

问题描述&#xff1a;如何使用奥比中光的Viewer查看录像.bag视频呢&#xff1f;问题解答&#xff1a;你这个现象 100% 正常&#xff0c;而且你并没有做错任何一步 &#x1f44d; 只是理解上差了一点点&#xff0c;我给你把这一步彻底纠正。一、你刚才做的这件事&#xff0c;本质…

作者头像 李华
网站建设 2026/5/26 14:02:34

渗透测试有前途!网络安全学习路线揭秘,小白也能逆袭

技术门槛高&#xff1f;竞争激烈&#xff1f;真实情况是&#xff0c;这个行业求贤若渴。“我零基础能学网络安全吗&#xff1f;”“学了渗透测试真的能找到工作吗&#xff1f;”很多初学者满怀兴趣地打开第一本安全教材&#xff0c;却被密密麻麻的概念和代码吓退。在技术论坛上…

作者头像 李华
网站建设 2026/5/18 22:35:27

python_flask汽车销售推荐交流系统小程序_61iro583

目录系统概述核心功能技术实现应用价值项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理系统概述 Python Flask汽车销售推荐交流系统小程序是一款基于Flask框架开发的轻量级Web应用&#xff0c;旨在为用户提供汽车销售信息推荐和在线交流平台。系统…

作者头像 李华
网站建设 2026/5/22 5:59:48

AI 流式对话该怎么做?SSE、fetch、axios 一次讲清楚

在做 AI 对话产品 时&#xff0c;很多人都会遇到一个问题&#xff1a; 为什么有的实现能像 ChatGPT 一样逐字输出&#xff0c;而有的只能“等半天一次性返回”&#xff1f; 问题的核心&#xff0c;往往不在模型&#xff0c;而在 前后端的流式通信方式。 本文从实战出发&#x…

作者头像 李华