热门标签 | 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语言教程入门、提高、开发》


推荐阅读
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • C语言标准及其GCC编译器版本
    编程语言的发展离不开持续的维护和更新。本文将探讨C语言的标准演变以及GCC编译器如何支持这些标准,确保其与时俱进,满足现代开发需求。 ... [详细]
  • 本文详细介绍了C语言的起源、发展及其标准化过程,涵盖了从早期的BCPL和B语言到现代C语言的演变,并探讨了其在操作系统和跨平台编程中的重要地位。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文介绍了几种不同的编程方法来计算从1到n的自然数之和,包括循环、递归、面向对象以及模板元编程等技术。每种方法都有其特点和适用场景。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
  • C语言基础入门:7个经典小程序助你快速掌握编程技巧
    本文精选了7个经典的C语言小程序,旨在帮助初学者快速掌握编程基础。通过这些程序的实践,你将更深入地理解C语言的核心概念和语法结构。 ... [详细]
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社区 版权所有