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

第一周单片机学习笔记及心得

本人呢 是23届机械电子工程专业的学生 对单片机的兴趣 是源于 C语言 对于编程有自己的执着与专注 对于大三的我来说与其迷茫于实习与找工作 不如真正找到点自己有信心 和有兴趣的事情做 偶然的机会下了解到博客以后就用博客记录下自己的学习历程

#include (REGX52.H) void main () { P2=0xFE; while (1) { }

跟着B站学,点亮的第一个LED灯 !有一点点C语言基础简单程序还是看得懂的

第一个程序比较简单 总结一下;

首先用C语言编写单片机代码需要加入头文件 <REGX52.H> 代码中P2对应着单片机P2口 单片机中的cpu在对应寄存器中写值0或者1寄存器再通过驱动器放大信号控制P2口输出高低电平 LED灯正极接电源 P2口应该输出低电平 对P2口赋值 1111 1110 但是得用16进制 0x开头 下面while 循环体 为了控制 单片机进入循环 比喻开关灯 不能一直进行这个动作 以致LED 灯的受损(用于兜圈子)

第二个程序LED闪烁

​ #include <REGX52.H> #include <INTRINS.H> void Delay500ms() { unsigned char i,j,k; _nop_(); i=4; j=205; k=187; do { do { while(--k); } while(--j); }while(--i); } void main () { while(1) { P2=0xFE; Delay500ms (); P2=0xFF; Delay500ms (); } } ​

第二个代码基于第一个上 前面先是定义了延时子函数 后面在在主函数中循环体里调用 实现LED灯的闪烁

第三个代码流水灯:

#include <REGX52.H> #include <INTRINS.H> void Delay500ms() { unsigned char i,j,k; _nop_(); i=4; j=205; k=187; do { do { while(--k); } while(--j); }while(--i); } void main () { while(1) { P2=0xFE; Delay500ms (); P2=0xFD; Delay500ms (); P2=0xFB; Delay500ms (); P2=0xF7; Delay500ms (); P2=0xEF; Delay500ms (); P2=0xDF; Delay500ms (); P2=0xBF; Delay500ms (); P2=0x7F; Delay500ms (); } }

流水灯代码前面延时子函数部分同上循环体里通过控制P2口 控制输出高低电频 配合延时函数实现流水灯效果

代码4独立按键控制LED :

#include <REGX52.H> void main() { while(1) { if(P3_0==0) { P2_0=0; } else { P2_0=1; } } }

这个代码运用了if语句 P3_0 为独立按键口 且if函数整体都放在了while函数里 这里有个疑问 我用按钮控制的P3_ 0口 用P1口就不行。 P3_0 为位寄存器 代码中应该赋值0或1 P3 为 8位一体的寄存器 及字节寄存器

代码5独立按键消抖“起保停”:

#include <REGX52.H> void Delay (unsigned int xms) { unsigned char i,j; while (xms) { i=2; j=239; do { while (--j); }while (--i); xms--; } } void main () { while (1) { if(P3_0==0) { Delay(20); while (P3_0==0); Delay(20); P2_0=~P2_0; } } }

程序前面为自定义延时函数 可以根据需要延时 while 循环体中 if 判断按键按下启动 delay延时 while 判断是否松手 类似于自锁 最后P2_0取反 实现 控制LED灯熄灭

代码6 独立按键实现二制

#include <REGX52.H> void Delay (unsigned int xms) { while (xms) { unsigned char i,j; i=2; j=239; do { while (--j); } while (--i); xms--; } } void main() { unsigned char LEDnum=0; while(1) { if(P3_0==0) { Delay (20); while (P3_0==0); Delay(20); LEDnum++; P2=~LEDnum; } } }

代码 7 独立按键控制位移

#include <REGX52.H> void Delay(unsigned int xms); unsigned char LEDNum; void main() { P2=~0x01; //上电默认LED1点亮 while(1) { if(P3_1==0) //如果K1按键按下 { Delay(20); while(P3_1==0); Delay(20); LEDNum++; //LEDNum自增 if(LEDNum>=8) //限制LEDNum自增范围 LEDNum=0; P2=~(0x01<<LEDNum); //LED的第LEDNum位点亮 } if(P3_0==0) //如果K2按键按下 { Delay(20); while(P3_0==0); Delay(20); if(LEDNum==0) //LEDNum减到0后变为7 LEDNum=7; else //LEDNum未减到0,自减 LEDNum--; P2=~(0x01<<LEDNum); //LED的第LEDNum位点亮 } } } void Delay(unsigned int xms) { unsigned char i, j; while(xms--) { i = 2; j = 239; do { while (--j); } while (--i); } }

一周学习的代码哈哈有点少 后面会继续坚持的

http://www.cnnetsun.cn/news/1256234.html

相关文章:

  • 计算机毕业设计 java 新能源汽车运力管理系统 Java 智能新能源汽车运力管理平台 SpringBoot+MySQL 新能源汽车运力管理系统
  • Firefly ITX-RK3588 实战:MIPI CSI摄像头采集,FFmedia本地HDMI预览与GStreamer网络推流全链路解析
  • Linux Mint远程开发环境搭建:SSH配置与root权限管理避坑指南
  • Feign服务调用超时全解析:从Eureka注册中心到网络配置的深度排查
  • Linux网络性能实战:一键公网测速脚本在边缘设备与云服务器上的部署与应用
  • 5分钟搞定:用Docker快速部署OpenWRT镜像(附Zabbix监控配置)
  • 零基础学网络安全的难度如何?
  • LCD时序参数配置实战:从TFT-RGB接口到HSYNC/VSYNC信号调试技巧
  • Chatbot智能问诊系统架构设计与实现:从技术选型到生产环境部署
  • DeOldify开源模型对比分析:与其它图像上色项目的效果与技术差异
  • 【书生·浦语】internlm2-chat-1.8b入门指南:Ollama界面操作+提问技巧详解
  • Anything V5商业应用探索:电商配图、游戏立绘一键生成
  • 丹青幻境效果展示:水墨晕染、工笔细描、写意泼墨三种风格生成对比
  • Qwen2.5-VL-7B-Instruct从入门到精通:图文混合提问全流程演示
  • 手把手教你玩转NXP i.MX 8M Plus开发板:多媒体接口与工业通信全解析
  • Python FFmpeg 实战指南:从安装到视频处理
  • VMAF实战:从原理到调优,构建精准视频质量评估体系
  • WeKnora企业级部署:基于Docker Swarm的高可用架构
  • Vue组件间通信方式大全:从Props到Vuex的10种方法
  • 开源GEO系统源码获取方法详解,附完整下载与配置教程
  • PRIMARK突袭验厂如何应对
  • 从零到万亿:Kimi-K2的MuonClip优化器如何驯服MoE大模型训练
  • Qwen-Image-2512-SDNQ效果展示:广告创意AI生成作品集
  • 硬件工程师进阶指南:从零到一掌握背板设计精髓
  • 5分钟部署Qwen2.5-0.5B-Instruct:网页推理服务搭建与问题诊断
  • 别再瞎找了!千笔AI,研究生论文写作神器
  • MacBook也能流畅运行!Ollama部署LFM2.5-1.2B-Thinking全攻略
  • 利用快马平台与免费Java资源,十分钟搭建可运行的学生管理系统原型
  • 利用快马平台AI能力,十分钟快速复刻openclaw101网站原型
  • PMP考试必备:这些英文术语缩写你掌握了吗?(附记忆技巧)