ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C51单片机学习记录

2022-05-05 12:01:51  阅读:185  来源: 互联网

标签:C51 单片机 高电平 低电平 数码管 IO 按键 记录


认识单片机

单片机的特点

单片机,Micro Controller Unit ,简称 MCU 内部集成了 CPU、RAM、ROM、定时器、中断、通讯接口等一系列硬件。单片机工作时,对从传感器采集到的信息进行处理,以及对硬件做出相应的控制。单片机体积小、成本低,是一个袖珍版的计算机,虽然在性能上与 PC 机相差甚远,但能够为特定的应用领域提供针对性的解决方案。

单片机的 TTL 电平标准为:高电平 +5V,低电平 0V 。RS232 电平标准为:高电平 -12V ,低电平 +12V 。

型号信息

以单片机型号信息 STC 89C52 RC 40C - PDIP 0721 CV 4336 为例,其包含的信息大体:

  • STC:公司名。

  • 89C51:系列名。

    ​ C 表示必须用编程序烧录程序,S 表示支持串行下载,LV 表示低电压。(某些带 AD 后缀的表示自带 AD 转换)。

    ​ 51表示 ROM 为 4K ,以此类推,52 、54 、55 、58 分别带 8K 、16K 、20K 、32K 的 ROM 。

  • 40C:40 表示可支持的最高晶振频率为 40M Hz;

    ​ C (Commercial)表示商业级,I (Industrial)表示工业级,此外还有军用级。

  • PDIP:封装形式为双列直插式。

  • 0721 CV:表示该芯片是 07 年第 21 周生产的。

C51 的库函数和语法

C51包含的头文件: reg51.hreg52.hmath.hctype.hstdio.hstdlib.habsacc.h

C51 的语法和 C 语言大体相同,可使用的逻辑有 ifwhileforswitch/casedo while 。C51 中特殊的写法有:interuptsbit 等。

各组件的使用

独立按键

按键的特点是按下时导通,每个按钮都有一端接地,另一端引到 IO 口上,具体 IO 口对照如下图。当一个按键被按下时,与其相连的 IO 口的电平将会变成低电平。所以,可以通过检测 IO 口的电平来判断按键是否被按下。

image-20220504105311942

由于按键本身是通过弹片实现按压功能的,所以在一个很短的时间内会存在 “抖动” 的现象,可能会被程序误捕捉到。因此,我们需要进行 “消抖” 的处理,可以通过硬件和软件两种方式实现。由于硬件方式需要部分硬件知识,所以这里只用软件方式的实现方法。

P2 = 0xff;  				// 一开始让8个灯都熄灭
while(1) 
{
    // 如果按键被按下
    if (P3_1 == 0) {
        Delay_ms(20);  		// 对按下的过程进行延时消抖
        while (P3_1 == 0);  // 若按键未松开则阻塞于此处
        Delay_ms(20);  		// 对松开的过程进行延时消抖
        P2_0 = ~P2_0;
    }
}

image-20220504110200499

八段数码管

要使用是数码管,首先要了解数码管内部电路组织方式,数码管一般分为 共阳极共阴极 两种。
共阳极的方式是将 LED 灯阳极(接正极)的一端统一提供高电平,LED 阴极(接负极的一端)则通过 IO 口设置电平,设置为低电平的数码管才能够形成回路,使数码管亮起。
共阴极的方式则与共阳极相反,将 LED 的阴极统一接低电平,阳极由 IO 口设置,设置为高电平时数码管亮起。

我所使用的开发板使用的是共阴极的接法。

image-20220505113253627

image-20220505113344217

通过 3-8 译码器可以选择数码显示管,被选中的数码显示管就以共阴极的等待高电平的驱动。由于 IO 口高电平的驱动能力比较弱,一般会通过缓冲器来增强电流驱动能力,原来的 IO 口只需要以微弱电流提供控制信号即可。所以,只要按照原理图的 IO 口与数码管上不同端的对应关系,就能够完成显示。

实际上,驱动数码管可以用单片机,也可以用专用驱动芯片(如 TM1604 )。如果用单片机来驱动,由于每次只能完成一个数码显示管的显示,所以只能按序逐个循环刷新所有数码管的显示,利用人眼的视觉暂留来保持所有数码管可视。但这样对单片机负载较大,期间单片机也无法进行其他操作。所以更好的方式是用专用的驱动芯片来驱动,由单片机的 IO 口提供控制信号,以更好地协同工作。

标签:C51,单片机,高电平,低电平,数码管,IO,按键,记录
来源: https://www.cnblogs.com/kimkey/p/16224229.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有