开启单片机

前言:

为未来拼搏的第n天,从单片机开始。

为什么要学习单片机呢,单片机的工作涉及范围及其广如:消费电子,游戏机·音响

工业控制:机器人控制;医疗设备,通信设备,物联网等等。

前途大大滴!! 好好学吧。

本章节我们要了解的是51单片机。51单片机也是单片机中最简单的,最基础的,最好理解的。

PS 在学习单片机前还是要有一定的c语言基础的,模电数电可以边学单片机边学习,问题不大

一·原理图

学习51单片机需要了解他的原理图,才能更好的理解。

这是各个功能 模块的原理图

这是板子的真实摸样还有个lcd屏幕没有安装,也就是显示屏

引脚示意图

  • 电源引脚
    • VCC(引脚 40):主电源输入端,提供 + 5V 电压。
    • GND(引脚 20):接地端。
  • I/O 端口引脚
    • P0.0-P0.7(引脚 32-39):双功能端口,可作为通用 I/O 端口或地址 / 数据总线使用。当用作地址 / 数据总线时,需要外接上拉电阻。
    • P1.0-P1.7(引脚 1-8):通用双向 I/O 端口,每个引脚均可独立配置为输入或输出,内部提供上拉电阻。
    • P2.0-P2.7(引脚 21-28):通用双向 I/O 端口,也可用于扩展外部存储器的高 8 位地址。
    • P3.0-P3.7(引脚 10-17):通用双向 I/O 端口,同时具备复用功能,如 P3.0 为 RXD 串行输入端,P3.1 为 TXD 串行输出端,P3.2 为 INT0 外部中断请求 0 输入等。
  • 控制引脚
    • RST(引脚 9):复位输入端,高电平有效,保持两个机器周期的高电平可使单片机复位。
    • ALE/PSEN(引脚 29):地址锁存允许 / 程序存储使能信号,访问外部存储器时,ALE 用于锁存地址的低字节,PSEN 用于选通外部程序存储器。
    • EA/VPP(引脚 30):访问外部程序存储器信号,当 EA=1 时,优先访问内部程序存储器;当 EA=0 时,仅访问外部程序存储器。在 Flash 编程期间,此引脚也用于施加 12V 编程电源(VPP)。
  • 时钟引脚
    • XTAL1(引脚 19):反相振荡放大器的输入及内部时钟工作电路的输入。
    • XTAL2(引脚 18):反相振荡放大器的输出,外接晶振和电容构成时钟电路。

需要软件

   编程软件:Keil C51 是常用的集成开发环境,它提供了 C 编译器、宏汇编、链接器、库管理和仿真调试器等完整的开发方案,可以方便地进行单片机的程序编写、编译和调试,支持 C 语言和汇编语言编程。

烧录软件:STC-ISP 它们都能实现将编译好的程序烧录到芯片中。

芯片推荐STC89C52。结构经典、资料海量、成本极低,是理解底层原理的理想起点。

入门内容

led灯的点亮 闪烁 独立按键控制,流水灯。

点亮:

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

闪烁:

#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms()		//@12.000MHz
{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();//Delay500us();P2=0xFF;Delay500ms();}}

这里添加了延迟代码delay

这个函数自己可以编辑,也可以由stc提供

如下:

流水灯:

#include <REGX52.H>void Delay1ms(unsigned int xms)		//@12.000MHz
{unsigned char i, j;while (xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}}void main()
{while(1){P2=0xFE;Delay1ms(500);P2=0xFD;Delay1ms(500);P2=0xFC;Delay1ms(500);P2=0xFB;Delay1ms(500);P2=0xF7;//1110 1111Delay1ms(500);P2=0xEF;Delay1ms(500);P2=0xDF;Delay1ms(500);P2=0xCF;Delay1ms(500);P2=0xBF;Delay1ms(500);P2=0x7F;Delay1ms(500);}}

按键控制:

#include <REGX52.H>void main()
{while(1){if (P3_0==0 || P3_1==0)//当按下键后亮灯 松开后就熄灭{P2_0=0;//亮}else//按下其他键无反应{P2_0=1;//灭}}
}

按键控制亮灭状态:

#include <REGX52.H>  // 包含STC89C52寄存器定义头文件// 延时函数:精确延时x毫秒(12MHz晶振)
void Delay1ms(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)  // 检测按键按下(P3.0低电平){ Delay1ms(30);            // 按下消抖延时30mswhile(P3_0 == 0);         // 等待按键释放(阻塞式)Delay1ms(20);             // 释放消抖延时20msP2_0 = ~P2_0;  // LED状态翻转(P2.0取反)}}
}

~是取反符号 状态取反

数码管显示

#include <REGX52.H>unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39};
void shuma(unsigned char Loction,Number )
{switch(Loction){case 1: P2_4=1;P2_3=1;P2_2=1;break;case 2: P2_4=1;P2_3=1;P2_2=0;break;case 3: P2_4=1;P2_3=0;P2_2=1;break;case 4: P2_4=1;P2_3=0;P2_2=0;break;case 5: P2_4=0;P2_3=1;P2_2=1;break;case 6: P2_4=0;P2_3=1;P2_2=0;break;case 7: P2_4=0;P2_3=0;P2_2=1;break;case 8: P2_4=0;P2_3=0;P2_2=0;break;}P0=table[Number];
}void main()
{shuma(3,3);while(1){}
}

可以更改shuma中的数子,位置,显示数字。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92502.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能系列(8)如何实现无监督学习聚类(使用竞争学习)?

案例&#xff1a;鸢尾花数据集的聚类一.聚类简介神经网络能够从输入数据中自动提取有意义的特征&#xff0c;而竞争学习规则使得单层神经网络能够根据相似度将输入样本进行聚类&#xff0c;每个聚类由一个输出神经元代表并作为该类别的“原型”&#xff0c;从而实现对输入模式的…

Windows安装mamba全流程(全网最稳定最成功)

windows系统下安装mamba会遇到各种各样的问题。博主试了好几天&#xff0c;把能踩的坑都踩了&#xff0c;总结出了在windows下安装mamba的一套方法&#xff0c;已经给实验室的windows服务器都装上了。只要跟着我的流程走下来&#xff0c;大概率不会出问题&#xff0c;如果遇到其…

Autosar Dem配置-最大存储的DTC信息个数配置-基于ETAS软件

文章目录 前言 Autosar Dem相关配置 ETAS工具中的配置 生成文件分析 测试验证 总结 前言 诊断DTC开发中,会有故障快照和扩展数据的存储需求,但由于控制器的可用存储空间有限,所以无法存储所有DTC的信息,这时就需要限制存储的数量,本文介绍该参数在ETAS软件中的配置。 Au…

【MySQL】EXISTS 与 NOT EXISTS 深度解析:从原理到实战的完整指南

在复杂的业务查询中&#xff0c;我们常常需要判断“是否存在满足某条件的记录”或“找出不满足某些条件的记录”。这时&#xff0c;EXISTS 和 NOT EXISTS 子查询便成为强大的工具。它们不仅逻辑清晰、语义明确&#xff0c;而且在某些场景下性能远超 IN 或 JOIN。然而&#xff0…

面对信号在时频平面打结,VNCMD分割算法深度解密

“ 信号迷宫中的破壁者&#xff1a;VNCMD如何分解纠缠的时空密码&#xff1f;——从鲸歌到机械故障&#xff0c;宽带信号分解新纪元。”01—痛点直击&#xff1a;为什么传统方法集体失效&#xff1f;2017年&#xff0c;上海交大团队提出了一项突破性研究&#xff1a;变分非线性…

CSS优先级、HTTP响应状态码

CSS优先级 优先级&#xff1a;看CSS的来源、样式引入方式、选择器、源码顺序。 行内样式/内联样式&#xff1a;直接在HTML元素的style属性中编写CSS样式。这种方式适用于少量样式的情况&#xff0c;但不推荐在大规模开发中使用&#xff0c;因为它会使HTML文件变得冗长和难以维…

项目一系列-第2章 Git版本控制

第2章 Git版本控制 2.1 Git概述 Git是什么&#xff1f;Git是一个分布式版本控制工具&#xff0c;于管理开发过程中的文件。 Git有哪些作用&#xff1f; 远程备份&#xff1a;Git可以将本地代码备份到远程服务器&#xff0c;防止数据丢失。多人协作&#xff1a;Git运行多个开发者…

Java异常:认识异常、异常的作用、自定义异常

目录1.什么是异常&#xff1f;1&#xff09;运行时异常2&#xff09;编译时异常2.异常的作用1&#xff09;Java 异常在定位 BUG 中的核心作用2&#xff09;Java 异常作为方法内部特殊返回值的作用3&#xff09;自定义异常1.什么是异常&#xff1f; Error:代表的系统级别错误(属…

第十九天-输入捕获实验

一、输入捕获概述1、输入捕获框图2、输入捕获工作详解①设置输入捕获滤波器可以设置滤波&#xff0c;滤除一些高电平脉宽不足的脉冲信号。②设置捕获极性③输入捕获映射④输入捕获分频器这里的捕获是将计数器的值存入比较寄存器中&#xff0c;分频次的作用是设置几个上升沿/下降…

多线程问题,子线程同时操作全局变量,使用后需要清空吗 ?

背景&#xff1a;目前有一个全局变量 &#xff0c;某个方法中通过多线程&#xff0c;都操作这个变量&#xff0c;向这个全局变量中去添加元素&#xff0c;然后等所有子线程执行完了之后&#xff0c;对这个全局变量进行批量保存&#xff0c;然后这个全局变量还需要手动去清空吗&…

Netty知识储备:BIO、NIO、Reactor模型

学习Netty之前&#xff0c;首先先掌握这些基础知识&#xff1a;阻塞&#xff08;Block&#xff09;与非阻塞&#xff08;Non-Block&#xff09;&#xff0c;同步&#xff08;Synchronous&#xff09;与异步&#xff08;Asynchronous&#xff09;&#xff0c;Java BIO与NIO对比。…

用生成器守住架构,用 AI 放大效率:一套可落地的 AI 编程方法论

背景与问题 现实困境: 直接让 AI 产出整块业务代码&#xff0c;常常与现有架构风格、分层边界、依赖策略不一致&#xff0c;后续改造成本高&#xff1b;AI 对现实业务语境、领域规则难以精准把握&#xff1b;在既定模板成熟的场景下&#xff0c;代码生成器往往更快、更整齐。目…

码头岸电系统如何保障供电安全?安科瑞绝缘监测及故障定位方案解析

当岸电电网是TN-S系统时&#xff0c;船体未接专用接地线且船舶电网未与岸电零线接通&#xff0c;船舶电网发生单相接地故障时&#xff0c;人站在岸上触及船体会有触电危险&#xff0c;零线上可能出现高电压&#xff0c;单相接地电流大。当船体接专用接地线且船舶电网接入岸电零…

ESP32_u8g2移植

前言 U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD&#xff0c;并支持如SSD1306 SSD1315等多种类型的OLED驱动&#xff0c;几乎市面上常见都支持。 U8g2源码 download&#xff1a;https://github.com/olikraus/u8g21&#xff1a;环境 ESP32 S3(ESP32-S3-Dev…

MCP实现:.Net实现MCP服务端 + Ollama ,MCP服务端工具调用

本文使用.Net编写MCP服务端 Ollama &#xff0c;实现简单MCP调用&#xff0c;代码仅实现基本演示功能。 文章目录一、Ollama如何安装使用二、创建.Net8项目&#xff0c;开发MCP服务端三、开发MCP客户端&#xff0c;并对接Ollama一、Ollama如何安装使用 请移步&#xff1a;htt…

Docker的安装使用以及常见的网络问题

一、什么是DockerDocker是一种容器化技术&#xff0c;用于快速打包、分发和运行程序。他的核心思想是"一次构建&#xff0c;到处运行"&#xff0c;通过将应用及其依赖的环境打包到一个轻量级、可移植的容器中&#xff0c;实现跨平台一致运行。二、Docker的安装1.Cent…

C++入门学习

1.命名空间的介绍首先我们看到如下的代码&#xff0c;在C语言中&#xff1a;#include <stdio.h> #include <stdlib.h> int rand 10; // C语言没办法解决类似这样的命名冲突问题&#xff0c;所以C提出了namespace来解决 int main() {printf("%d\n", rand…

解决python错误:playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page() page.goto(url)page.wait_for_load_state(networkidle) 在Python环境中运行以上代码后报错: page.wait_for_load_…

爬虫逆向之雷池waf

本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的。否则由此产生的一切后果均与作者无关&#xff01; 雷池waf概念 雷池 WAF&#xff08;SafeLine&#xff09;是长亭科技开源的一款 Web 应用防火墙&#xff0c;部署在网站前面&#xff0c;把所有进来的 HTTP/…

23种设计模式解析--行为型

行为型模式&#xff08;协作的艺术&#xff09; 观察者模式 观察者模式详解 模式定义 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;用于建立对象间一对多的依赖关系。当一个对象&#xff08;Subject&#xff09;状态变化时&#xff0c;所…