AutoLeaders控制组—李佳旭 单片机学习笔记(LED灯 独立按键 数码管)

本文主要是介绍AutoLeaders控制组—李佳旭 单片机学习笔记(LED灯 独立按键 数码管),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一 环境搭建
    • 1.开发软件Keil5C51
    • 2.烧录软件
    • 3.普中51单片机开发板
  • 二 单片机简介
    • 1 基本介绍
    • 2 命名规则
    • 3 管脚图
    • 4 逻辑运算
  • 三 实操一:点亮一个LED
    • 1 创建工程
    • 2 创建文件
    • 3 LED原理图
    • 4 写程序
    • 5 烧录
  • 四 实操二 LED闪烁
    • 1 利用stc烧录软件
    • 2 函数名
    • 3 编写程序
  • 实操三:独立按键的运用
    • 1 独立按键原理图
    • 2 消抖
    • 3 独立按键控制LED灯状态
  • 实操四: 数码管的运用
    • 1 数码管原理图
    • 2 消影
    • 3 程序
    • 4 数码管段码表(十六进制)

一 环境搭建

1.开发软件Keil5C51

在这里插入图片描述

2.烧录软件

在这里插入图片描述

3.普中51单片机开发板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1 LED数码管
2 点阵
3 蜂鸣器
4 复位键
5 模数转换器
6 独立按键
7 无线模块
8 红外设备
9 矩阵按键
10 LED灯

这里推荐一下B站视频教学,内容很详细。
https://www.bilibili.com/video/BV1Mb411e7re?p=1

二 单片机简介

1 基本介绍

  1. 单片机(Micro Controller Unit ,即MCU)

  2. MCU是Microcontroller Unit 的简称,中文叫微控制器,俗称单片机,是把CPU的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制,诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。

结构图如下
在这里插入图片描述

CPU:(中央处理单元)负责处理和执行指令 CPU的核心是从程序或应用程序获取指令并执行计算。该过程分为三个关键阶段:获取,解码和执行。CPU从RAM中提取指令,对指令的实际含义进行解码,然后使用CPU的相关部分执行指令。

RAM: RAM是随机存取存储器(random access memory),是计算机内部存储器中的一种,也是其中最重要的,计算机和手机中一般把其叫做(运行)内存,它的速度要比硬盘快得多,所以用运行程序在RAM中,而存放运行时不用的数据则在硬盘中,什么时候需要数据,便把数据从硬盘中拿到内存,但同时RAM断电会丢失数据,所以我们电脑如果断电了就会丢失原来正在运行的数据。

ROM:ROM是只读存储器(Read-Only Memory),它具有断电不丢失数据的特性。

2 命名规则

在这里插入图片描述
以我们学的stc 89 c 52 rc 40 I-PDIP 40为例

stc公司 12t/6t8051系列 工作电压5.5v到3.8v 8k字节程序空间及512ram空间 工作频率40mhz 工作温度范围-40℃到85℃ 封装类型为PDIP 管脚40

3 管脚图

在这里插入图片描述
P1/2 :用于连接外部设备
Vcc: 电源正极
Gnd:电源负极
XTAL: 晶振,用于给单片机提高时间,驱动代码运行
RST: 用于复位

4 逻辑运算

在写程序时,我觉得逻辑运算符会比较重要。
在这里插入图片描述
特别注意以下六个运算符

0001 & 0010 -> 0000
0001 | 0010  -> 0011
0001 ^ 0010 -> 0011
~0011 1000 -> 1100 0111
0000 0011 << 0000 1100  //需要移位的数字 << 移位的次数
0000 1011 >> 0000 0010  //右移一位相当于除2,右移n位相当于除以2的n次方。这里是取商哈,余数就不要了。

三 实操一:点亮一个LED

1 创建工程

在这里插入图片描述
点new project
在这里插入图片描述
新建文件夹
在这里插入图片描述
创建工程名称

在这里插入图片描述
选择单片机类型
在这里插入图片描述
均可,建议选否。

2 创建文件

在这里插入图片描述
在这里插入图片描述

3 LED原理图

在这里插入图片描述
在图中,我们可以看到LED最终连到了单片机管脚上。单片机控制电路输出高低电频来控制LED的亮灭。(因为这个单片机LED模块是共阳的,所以输入0LED灯才会亮)

4 写程序

#include <STC89C5xRC.H>void main()
{P2 = 0xFE; //1111 1110
}

5 烧录

在这里插入图片描述
Keil一般默认不打开create hex file。(使用我们需要打开这个设置)

在这里插入图片描述
之后打开stc烧录软件 先选择并调试好对应的单片机类型和程序,最后下载编程。
在这里插入图片描述
成功一般有这个标识。

四 实操二 LED闪烁

1 利用stc烧录软件

在这里插入图片描述
编写延时代码

2 函数名

有nop时应该添加 #include <INTRINS.H>

3 编写程序

#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_();i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){P2=0xFE;Delay500ms();P2=0xFF;Delay500ms();}
}

实操三:独立按键的运用

1 独立按键原理图

在这里插入图片描述
​- 独立按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。

  • 注意按键的顺序与L/O口顺序并不相同,第一个按键由P31控制

2 消抖

  • 原因:当按键时,由于机械触电的弹性作用,一个开关在闭合时不会马上稳定的接通,在断开时也不会一下子断开,所以开关闭合及断开会伴随一连串的抖动。
    在这里插入图片描述

消抖一般操作:

		if(P3_1==0){Delay(20);  //消除下降沿抖动while(P3_1==0);   Delay(20);  //消除上升沿抖动P2_0=~P2_0;

3 独立按键控制LED灯状态

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

实操四: 数码管的运用

1 数码管原理图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

138译码器控制数码管
首先, 控制P22 P23 P24来控制数码管,然后选数码管的笔画,最终呈现数据。

2 消影

原因 :每次位选和段选之间几乎没有延迟,而且还没有对上次运行进行清零,就会导致运行时紊乱,出现重影。
一般解决方法:在每次显示后进行delay(时间不能太长,才能保证数码管的亮度),然后再P0=0x00.进行清零

	P0=nixietable[num];delay(1);P0=0x00;

3 程序

#include <REGX52.H>
void delay(unsigned char ms)		//@11.0592MHz
{while(ms--){unsigned char i, j;i = 2;j = 199;do{while (--j);} while (--i);}}
unsigned char nixietable[]={0x3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
void nixie(unsigned char loc,num)
{switch(loc){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=nixietable[num];delay(1);   P0=0x00;
}
void main()
{
nixie(7,2);
while(1)
{}
}

4 数码管段码表(十六进制)

在这里插入图片描述

这篇关于AutoLeaders控制组—李佳旭 单片机学习笔记(LED灯 独立按键 数码管)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771302

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

poj 2594 二分图最大独立集

题意: 求一张图的最大独立集,这题不同的地方在于,间接相邻的点也可以有一条边,所以用floyd来把间接相邻的边也连起来。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <sta

poj 3692 二分图最大独立集

题意: 幼儿园里,有G个女生和B个男生。 他们中间有女生和女生认识,男生男生认识,也有男生和女生认识的。 现在要选出一些人,使得这里面的人都认识,问最多能选多少人。 解析: 反过来建边,将不认识的男生和女生相连,然后求一个二分图的最大独立集就行了。 下图很直观: 点击打开链接 原图: 现图: 、 代码: #pragma comment(