单片机是控制电子产品的大脑

现如今,我们生活中的许多电器都使用了单片机。例如:手机、电视机、冰箱、洗衣机、以及按下开关,LED就闪烁的儿童玩具。那么,单片机在这些电器中究竟做了些什么呢?

单片机是这些电器动作的关键,是指挥硬件运行的。例如:接收按钮或按键的输入信号,按照事先编好的程序,指挥马达和LCD的外围功能电路动作。

那么,单片机是如何构成的呢?如图1所示。

单片机是由CPU、内存、外围功能等部分组成的。如果将单片机比作人,那么CPU是负责思考的,内存是负责记忆的,外围功能相当于视觉的感官系统及控制手脚动作的神经系统。

图1:单片机的构成要素

尽管我们说CPU相当于人的大脑,但是它却不能像人的大脑一样,能有意识的、自发的思考。CPU只能依次读取并执行事先存储在内存中的指令组合(程序)。当然CPU执行的指令并不是“走路”、“讲话”等高难度命令,而是一些非常简单的指令,象从内存的某个地方“读取数据”或把某个数据“写入”内存的某个地方,或做加法、乘法和逻辑运算等等。然而这些简单指令的组合,却能实现许多复杂的功能。

会思考的CPU

让我们从CPU的构成来了解它的作用吧,如图2所示。

图2:CPU的作用

◇程序计数器CPU读取指令时需要知道要执行的指令保存在内存的什么位置,这个位置信息称为地址(相当于家庭住址)。程序计数器(PC)就是存储地址的寄存器。通常,PC是按1递增设计的,也就是说,当CPU执行了0000地址中的指令后,PC会自动加1,变成0001地址。每执行一条指令PC都会自动加1,指向下一条指令的地址。可以说,PC决定了程序执行的顺序。

◇指令解码电路指令解码电路是解读从内存中读取的指令的含义。运算电路是根据解码结果操作的。确切地讲,指令解码电路就是我们在“数字电路入门(2)”中学过的解码电路,只不过电路结构稍微复杂些,所以,指令解码电路的工作原理就是从被符号化(被加密)的指令中,还原指令。◇运算电路运算电路也称为ALU(Arithmetic and Logic Unit),是完成运算的电路。能进行加法、乘法等算术运算、也能进行AND、OR 、BIT-SHIFT等逻辑运算。运算是在指令解码电路的控制下进行的。通常运算电路的构成都比较复杂。◇CPU内部寄存器CPU内部寄存器是存储临时信息的场所。有存储运算值和运算结果的通用寄存器,也有一些特殊寄存器,比如存储运算标志的标志寄存器等。也就是说,运算电路进行运算时,并不是在内存中直接运算的,而是将内存中的数据复制到通用寄存器,在通用寄存器中进行运算的。CPU的工作原理

让我们通过一个具体运算3+4,来说明CPU的操作过程吧。

假设保存在内存中的程序和数据如下。

◇步骤1:当程序被执行时,CPU就读取当前PC指向的地址0000中的指令(该操作称为指令读取)。经过解码电路解读后,这条指令的意思是“读取0100地址中的内容,然后,保存到寄存器1”。于是CPU就执行指令,从0100地址中读取数据,存入寄存器1。

寄存器1: 0→3(由0变为3)由于执行了1条指令,因此,PC的值变为0001

◇步骤2:由于PC的值为0001,因此CPU就读取0001地址中的指令,经解码电路解码后,CPU执行该指令。然后PC再加1。

寄存器2:0→4(由0变为4)PC:0001→0000

◇步骤3:由于PC的值为0002,因此CPU从0002地址中读取指令,送给指令解码电路。解码结果是:将寄存器1和寄存器2相加,然后将结果存于寄存器1。

寄存器1:3→7

PC:2→3

于是3+4的结果7被存于寄存器1,加法运算结束。CPU就是这样,依次处理每一条简单的指令。

能记忆的内存

内存是单片机的记忆装置,主要记忆程序和数据,大体上分为ROM和RAM两大类。

◇ROM

ROM(Read Only Memory)是只读内存的简称。保存在ROM中的数据不能删除,也不会因断电而丢失。ROM主要用于保存用户程序和在程序执行中保持不变的常数。

大多数瑞萨(Renesas)的单片机都用闪存作为ROM。这是因为闪存不仅可以象ROM一样,即使关机也不会丢失数据,而且还允许修改数据。◇RAM

RAM(Random Access Memory)是可随机读/写内存的简称。可以随时读写数据,但关机后,保存在RAM中的数据也随之消失。主要用于存储程序中的变量。

在单芯片单片机中(*1),常常用SRAM作为内部RAM。SRAM允许高速访问,但是,内部结构太复杂,很难实现高密度集成,不适合用作大容量内存。

除SRAM外,DRAM也是常见的RAM。DRAM的结构比较容易实现高密度集成,因此,比SRAM的容量大。但是,将高速逻辑电路和DRAM安装于同一个晶片上较为困难,因此,一般在单芯片单片机中很少使用,基本上都是用作外围电路。

(*1)单芯片单片机是指:将CPU,ROM,RAM,振荡电路,定时器和串行I/F等集成于一个LSI的微处理器。单芯片单片机的基础上再配置一些系统的主要外围电路,而形成的大规模集成电路称为系统LSI。

“为何要使用单片机……”

为什么很多电器设备都要使用单片机呢?

让我们用一个点亮LED的电路为例,来说明。如图3所示,不使用单片机的电路是一个由LED,开关和电阻构成的简单电路。

图3:不安装单片机的LED电路

使用单片机的电路如图4所示。

图4:安装单片机的LED电路图

很显然,使用单片机的电路要复杂得多,而且设计电路还要花费精力与财力。好象使用单片机并没有什么优点。但是,现在下结论还为时尚早。

如果我们让这个电路做一些比较复杂的操作,会怎么样呢。例如:如果希望LED在按下开关后,经过一段时间再点亮或熄灭,那么,对于安装有单片机的电路来说,只需更改单片机中的程序就可以了,并不需更改原电路。另一方面,对于没有单片机的电路来说,就必须在元电路中加入定时器IC,或者用标准逻辑IC和FPGA构成逻辑电路,才能实现这个功能。

也就是说,在更改和添加新功能时,带有单片机的电路显然更加容易实现。这正是电器设备使用单片机的原因。单片机可真是个方便的东西哦!

单片机双字节数乘法运算实验_单片机究竟是如何构成的呢相关推荐

  1. 单片机双字节数乘法运算实验_单片机语音芯片既有flash又有EEPROM

    为什么单片机语音芯片既有flash又有EEPROM 单片机语音芯片运行时的数据存在于RAM (随机存储器)中,停电后无法保留RAM的数据时,如何在停电后不丢失数据呢?这需要使用EEPROM和FLASH ...

  2. 单片机双字节数乘法运算实验_单片机入门——单片机的基本构成及工作原理(1)...

    本连载讲解作为嵌入式系统开发技术人员所必需具备的基础知识.这些基础知识是硬件和软件技术人员都应该掌握的共通技术知识. 有了电子电路和数字电路的基础知识,就可以开始学习嵌入式系统的核心元件-单片机.从本 ...

  3. 单片机双字节数乘法运算实验_基于单片机指纹电子密码锁——硬件设计2

    指纹识别模块 ATK-AS608 指纹识别模块是 ALIENTEK 推出的一款高性能的光学指纹识别模块.芯片内置 DSP 运算单元,集成了指纹识别算法,能高效快速采集图像并识别指纹特征.模块配备了串口 ...

  4. 单片机炫彩灯实训报告_单片机跑马灯(流水灯)控制实验报告

    单片机跑马灯(流水灯)控制实验报告 1单片机实验报告单片机实验报告姓名 学号一.一. 实验实现功能实验实现功能1计数器功能 2流水灯二.具体操作具体操作1计数器功能计数器功能数码管的动态显示.每按一次 ...

  5. 单片机彩灯移动实验_单片机课程设计彩灯实验.doc

    单片机课程设计彩灯实验 彩灯控制器设计 1.项目要求及参数 1.1用指令语句实现对C51的控制,从而实现对彩灯变化的控制. 1.2用定时器控制彩灯变化,用语句查询方式实现程序设计. 1.3用定时器控制 ...

  6. 判断数组相同数c语言_单片机常用的14个C语言算法,看过的都成了大神!

    算法(Algorithm):计算机解题的基本思想方法和步骤. C语言入门视频教程_9天精通Linux C语言 - 创客学院​www.makeru.com.cn 算法的描述:是对要解决一个问题或要完成一 ...

  7. 单片机彩灯移动实验_单片机彩灯实验

    一. 任务要求 实验内容:利用 C8051F310 单片机设计一个彩灯控制器 主要功能和技术指标要求: 1. 控制 LED 七段数码管按照特定方式闪烁. 2. 闪烁模式不少于 4 种. 3. 利用键盘 ...

  8. 单片机彩灯移动实验_单片机动态控制64个彩灯实验报告

    目录 一.课题名称---------------------3 二.设计目的---------------------3 三.系统原理图--------------------3 四.方案论证---- ...

  9. 单片机节日彩灯实训报告_单片机数字钟实训报告

    单片机数字钟实训报告 学院:电子工程学院 专业:机电一体化 班级: 姓名: 手机号: 一.任务及要求 用51单片机设计时.分.秒计时器,具体要求如下. 1.具有时.分.秒计时功能和8位数码管显示功能, ...

最新文章

  1. 20145223《信息安全系统设计》 实验四 驱动程序设计
  2. python3.5怎么使用-Python3.5常见内置方法参数用法实例详解
  3. 数字对 (长乐一中模拟赛day2T2)
  4. MacBook的mission control的功能
  5. flink file sink
  6. Java:重写equals()和hashCode()
  7. 未能加载文件或程序集“Autofac, Version=3.4.0.0,
  8. 前端学习(3303):函数组件组件子组件useRef聚焦
  9. rdd分片 spark_Spark分区
  10. MSComm写串口通信驱动步骤
  11. mysql怎么从1开始递增
  12. C#实现TreeView向XML的绝对转换类
  13. myBatis-plus异常提示For input string: {0=null}
  14. LeetCode初级算法笔记整理
  15. 利用python将txt文本批量转化为excel格式文件
  16. 瑞芯微rv1126/1109软硬件解压缩对比---附:关于内存对齐的那些事
  17. 分享虚拟机VirtualBox安装win7系统完整步骤。
  18. VIVO NEX3高层预热,差0.4到100%屏占比,这得让多少人心动
  19. MAC恢复出厂设置(官方教程)
  20. PS创意合成苹果橘子

热门文章

  1. 关于孟岩一篇文章的讨论
  2. 高级Spring之Scope 详解
  3. MATLAB中的乘除法 “ * ” 和 “ .* ” and “ / ” 和 “ ./ ”
  4. Commons Collections
  5. PotPlayer播放列表另存为
  6. Linux/Centos nethogs 按进程监控网络带宽
  7. nginx - nginx的安装部署
  8. Ubuntu SSE指令集 编程实例---复数乘法与共轭乘法
  9. Linux下查看CPU核数
  10. 【自动化测试】自动化测试框架那些事儿