热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

单片机入门指南:基础理论与实践

本文介绍了单片机的基础知识及其应用。单片机是一种将微处理器(类似于CPU)、存储器(类似硬盘和内存)以及多种输入输出接口集成在一块硅片上的微型计算机系统。通过详细解析其内部结构和功能,帮助初学者快速掌握单片机的基本原理和实际操作方法。

一、单片机概述

 1、什么是单片机

      单片机就是在一块硅片上集成了微处理器(类比CPU)、存储器(类比硬盘和内存)及各种输入/输出接口的芯片(类比键盘鼠标控制芯片),这样一块芯片就具有了计算机的属性,因而被称为单片型微型计算机,简称单片机。

2、单片机引脚描述

     单片机引脚分为三类:①电源和时钟引脚。如VCC、GND、XTAL1、XTAL2;②编程控制引脚。如RST,PSEN_n、ALE/PROG_n、EA_n/VPP;③I/O口引脚。如P0、P1、P2、P3,4组8位I/O口。

    VCC、GND——单片机电源引脚,不同型号单片机接入对应的电压电源,常压位+5V,低压位+3.3V。

    XTAL1、XTAL2——外接时钟引脚。XTAL1为片内振荡电路的输入端,XTAL2为片内振荡电路的输出端。8051的时钟有两种方式,一种是片内时钟振荡方式,需在这两个引脚外接石英晶体和振荡电容;另一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。

    RST——单片机的复位引脚。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作,复位后程序计数器PC=0000H,即复位后将从程序存储器的0000H单元读取第一条指令码,通俗来讲,就是单片机从头开始执行程序。

    PSEN_n——程序存储器允许输出控制端。在读外部程序存储器时PSEN_n低电平有效,以实现外部程序存储器单元的读操作,由于现在我们使用的单片机内部已经有足够大的ROM,所以几乎没有人再去扩展外部ROM,因此这个引脚只需了解即可。①内部ROM读取时,PSEN_n不动作。②外部ROM读取时,在每个机器周期会动作两次。③外部RAM读取时,两个PSEN_n脉冲被跳过不会输出。④外接ROM时,与ROM的OE脚相接。

    ALE/PROG_n——在单片机扩展外部RAM时,ALE用于控制把P0口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的复用。在没有访问外部存储器器件,ALE以1/6振荡频率输出(即6分频),当访问外部存储器时,以1/12振动周期输出(12分频),从这里可以看出,当系统没有进行扩展时,ALE会以1/6振荡周期固定频率输出,因此可以作为外部时钟,或作为定时脉冲使用。PROG_n位编程脉冲的输入端,单片机的内部有程序存储器(ROM),它的作用时用来存放用户需要执行的程序,那么我们怎样才能将写好的程序存入这个ROM中?实际上,我们是通过编程脉冲输入才写进去的,这个脉冲的输出端口就是PROG_n。现在有很多单片机都已经不需要编程脉冲引脚往内部写程序了,比如我们用的STC单片机,它可以直接通过串口往里面写程序,只需要三个线与计算机相连即可。而且现在的单片机内部都已经带有丰富的RAM,所以也不需要再扩展RAM 了。因此ALE/PROG_n这个引脚的用处已经不太大。

    EA_n/VPP——EA_n接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,当读取完ROM后自动读取外部ROM。EA_n接低电平时,单片机直接读取外部ROM。8031单片机内部是没有ROM的,所以使用8031单片机时,这个引脚是一直低电平的。8751单片机烧写内部EPROM时,利用此引脚输入21V的烧写电压。因为现在我们用的单片机都有内部的ROM,所以再设计电路时此引脚始终接高电平。

    I/O口引脚——P0口、P1口、P2口和P3口;

3、电平特性

     单片机是一种数字集成芯片,数字电路中只有两种电平:高电平和低电平。

     常用的逻辑电平有TTL、CMOS、LVTTL、ECL、PECL、GTL、RS-232、RS-422、RS-485、LVDS等。其中TTL和CMOS的逻辑电平按典型电压可分为4类:5V系列、3.3V系列、2.5V系列和1.8V系列。

     5V TTL和5V CMOS是通用的逻辑电平。3.3V及以下的逻辑电平被称为低电压逻辑电平,常用的为LVTTL电平。低电压逻辑电平还有2.5V个1.8V两种。ECL/PECL和LVDS是差分输入/输出。RS-422/485和RS-232是串口的接口标准,RS-422/485是差分输入/输出,RS-232是单端输入/输出。

4、进制与逻辑运算

   进制包括二进制、8进制、10进制和16进制。

   逻辑运算包括与(&、&&)、或(|、||)、非(!)、同或(C语言中没有同或运算符,异或的非为同或)、异或(^)。

5、C51中的基本数据类型

                    

    在C语言书记中还能看到short int,long int,signed short int等数据类型,在单片机的C语言中我们默认的规则如下:short int即为int,long int即为long,前面若无unsigned符号则一律认为是signed型。

6、C51数据类型扩充定义

     单片机内部有很多的特殊功能寄存器,每个寄存器在单片机内部都分配有唯一的地址,一般我们会根据寄存器功能的不同给寄存器赋予各自的名称,当我们需要在程序中操作这些特殊功能寄存器时,必须要在程序的最前面将这些名称加以声明,声明的过程实际上就是将这些个寄存器在内存中的地址编号赋给这个名称,这样编译器在以后的程序中才可认知这些名称所对应的寄存器。实际上这些寄存器的声明已经完全被包含在51单片机的特殊功能寄存器声明头文件“reg51.h”中了。

       sfr——特殊功能寄存器的数据声明,声明一个8位的寄存器。

       sfr16——16位特殊功能寄存器的数据声明。

       sbit——特殊功能位声明,也就是声明某一个特殊功能寄存器中的某一位。

       bit——位变量声明,当定义一个位变量时可使用此符号。

       例如:sfr SCON = 0x98;SCON时单片机的串行口控制寄存器,这个寄存器在单片机内存中的地址位0x98,这样声明后,我们以后要操作这个控制寄存器时,就可以直接对SCON进行操作,这时编译器也会明白,我们实际上要操作的单片机内部0x98地址处的这个寄存器,而SCON仅仅时这个地址的一个代号或者名称而已。当然,我们也可以定义成其他的名称。

       例如:sfr16 T2 = 0xCC;声明一个16位的特殊功能寄存器,它的起始地址位0xCC。

       例如:sbit TI = SCON^1;SCON是一个8位寄存器,SCON^1表示这个8位寄存器的次低位,最低位是SCON^0;SCON^7表示这个寄存器的最高位。该语句的功能是将SCON寄存器的次低位声明为TI,以后若要对SCON寄存器的次低位操作,则可直接操作TI。

7、C51中常用的头文件

      通常由reg51.h,reg52.h,match.h,ctype.h,stdio.h,stdlib.h,absacc.h,intrins.h。但常用的却只有reg51.h或reg52.h,match.h。

      reg51.h和reg52.h是定义51单片机或52单片机特殊功能寄存器和位寄存器的,这两个头文件中的大部分内容是一样的,52单片机比51单片机多了一个定时器T2,因此reg52.h中就比reg51.h中多几行定义T2寄存器的内容。

     match.h是定义数学运算的,比如求绝对值,求方根,求正余弦等,该头文件中包含有各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。

8、C51中的运算符

                        

9、C51中的基础语句

                           

10、学习单片机应该掌握的内容

  1)、掌握单片机最小系统能够运行的必要条件:电源、晶振、复位电路。

  2)、掌握对单片机任意I/O口的操作:输出控制电平高低、输入检测电平高低。

  3)、定时器:重点掌握最常用的方式2.

  4)、中断:掌握外部中断、定时器中断、串口中断。

  5)、串口通信:掌握单片机之间通信、单片机与计算机之间的通信。




参考《新概念51单片机C语言教程入门、提高、开发》


推荐阅读
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 分享一个简化版的Silverlight链接图项目:Link Map Simplified
    本文介绍了一个使用Silverlight开发的可视化工具,主要用于展示和操作复杂的实体关系图(Graph)。该工具在犯罪调查系统中得到了广泛应用,帮助用户直观地获取和理解相关信息。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
author-avatar
mobiledu2502892513
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有