课程导言
【程序如何在计算机上运行?计算机的内部是如何构成的?本课和同学们探讨计算机的系统组成及程序运行过程。】
前面我们了解了什么是计算机程序、算法和流程图,对计算机的程序设计和算法有了初步认知。但我们还有很多未知的问题,如程序如何在计算机上运行?计算机的内部是如何构成的?带着这些问题,本课将和同学们一起初步认识计算机的构成及程序在计算机上的运行过程。

在生活中我们一般称计算机为电脑,对电脑我们并不陌生,大家都在用,通过运行电脑中的应用程序可以炒股、看电影、玩游戏、用Word写文章等等。对电脑的外部组成也大体了解,有显示器、键盘、鼠标、喇叭、主机、电源等。

如果要问到计算机的内部构成,不是计算机专业的同学,大多数回答不上来。其实如果不学编程的话,只要我们会用计算机就行了,没有必要去了解计算机的内部构成。
但对学编程的同学们来说,了解计算机的内部构成就非常有必要,至少我们要知道自己写的程序在计算机上是如何运行的?程序是如何通过输入输出设备读取数据和输出数据的等等。
下面我们通过一个简单的计算器来认识计算机的构成,以及程序的运行过程。

上图是一个简单计算器的内部构成图,计算器主要由键盘、数码显示器、单片机构成。单片机是一个芯片,相当于电脑中的CPU,我们常用的一些智能家电都有单片机的身影。

上图是一个型号为AT89C51的单片机,在一些商用计算器上就使用了AT89C51单片机。
下面我们来分析计算器的几个主要组成部分。
键盘是计算器主要的输入设备,用户通过键盘输入需要计算的数和运算符号,输入的数和运算符号会存储到单片机的存储器中,单片机一般都带有存储器,用于存储写好的程序和数据。

计算器所需的按键有:
数字键:1,2,3,4,5,6,7,8,9,0
功能键:+,—,*,/,=,C(清零)
共计16个键,采用4 X4矩阵键盘,键盘的行和列之间都有公共端相连,8个公共端分别对接单片机AT89C51的P1.0 ~P1.7, P1口是单片机8位双向IO口,程序扫描P1口就可以完成对键盘的扫描,通过对16个按键进行编码,程序能获取被按下按键所表示的数字或运算符,从而完成键盘输入功能。

键盘编码是这样考虑的,键盘中的每个按键就是一个开关,开关正常状态为断开状态,其状态可以设置为0,开关按下后,为闭合状态,其状态可以设置为1。假定键盘所有的按键都为断开状态,即其状态值为0,且每次只能按下一个按键,如果按下多个键,则只识别第一个键,程序将忽略其它按键。

键盘按键为4行4列,设定按键1为第1行第1列,按键2为第1行第2列……,按键4为第2行第1列,以此类推。
其按键编码规则为:取该按键所在行数的按键状态值为二进制数的高4位,取该按键所在列数的按键状态值为二进制数的低4位,组成8位编码,编码时该按键状态值为1(对应其按下状态),其它按键状态值为0。

例如:按键1按下后的的编码为1000 1000,按键2按下后的编码为0100 1000,按键9按下的编码为0010 0010。
键盘编码完成后,就可以设计键盘扫描程序,定时扫描单片机P1.0 ~P1.7口,当有按键被按下时,获取按键编码,将按键编码转换为数字或运算符号。

计算器打开电源开关后,单片机控制器从存储器读入计算器主程序,主程序调用键盘扫描程序扫描键盘,每间隔20ms主程序调用一次键盘扫描程序,扫描程序读取单片机P1.0 ~P1.7口,获取键盘按键状态(键盘编码),从编码表中查找相对应的数字或运算符,存入存储器,等待主程序下次调用。

数码显示管是计算器主要的输出设备,对计算的数据和结果进行显示,数码显示管可以显示8位数字,当前只用了前4位,显示4位数字,数码显示管分别对接单片机的P2.0 ~P2.3。P2口也是单片机8位双向IO口。

主程序调用显示程序,将计算数据和结果输出到数码显示管上。显示程序算法流程图见下图。

主程序调用键盘扫描程序扫描键盘,获取键盘输入后,判断输入的数据是数字还是运算符,如果是运算符则进入运算程序,如果是数字则先将数据存储到单片机存储器中,调用显示程序,将输入的数据显示到数码管。
单片机是计算器最重要的组成部分,也是计算器的核心,包括运算器、控制器、存储器三大部分。

控制器是单片机的管理机构和指挥中心,它通过对存储于存储器的程序代码或指令的解释,不断向运算器、存储器、输入和输出设备发出有关的操作命令。
例如:在某个时刻,某种条件下从存储器的指定地址读取数据并输出到输出设备上;在某个时刻,某种条件下从输入设备上读取数据并按指定的地址存储到存储器中。
运算器是执行算术运算和逻辑运算的部件,计算器的加减乘除等操作都在控制器控制下,由运算器完成。
存储器是存放程序和数据的部件,一个存储器由成千上万个信息单元组成,每个信息单元对应有一个位置编号。可以把社区看成一个存储器,社区内的所有住户就是社区的信息单元,每个住户都有门牌号,方便查询。信息单元的位置编号就是该信息单元的地址,程序可以通过地址方便地寻址到该存储单元。
计算器的这一结构也被称为冯·诺依曼体系结构,冯·诺依曼体系结构是由美国科学家冯?诺依曼在1945年提出的,他认为计算机系统是由运算器、存储器、控制器、输入装置和输出装置五大基本部件组成的,直到现在计算机系统也一直沿用冯·诺依曼体系结构。
课程小结
课程中介绍的计算器就是一个简单的计算机系统,麻雀虽小,五脏俱全。从课程中可以了解到,计算器由键盘、显示管、单片机组成,单片机内部又分为运算器、存储器和控制器三个部分。
因此,总体来说计算器由键盘、显示管、运算器、存储器和控制器五个部分组成。键盘是用来输入运算数值的,可以称为输入装置,显示管是用来输出结果的,可以称为输出装置。计算器的这一结构也被称为冯·诺依曼体系结构。
思考与练习
1、在课程介绍的计算器中,存储器起什么作用?
2、在课程介绍的计算器中,请说出计算器的输入装置和输出装置。
3、冯·诺依曼体系结构由哪几部分组成?