
单片机学习手册C51版.pdf
67页单片机知识学习手册项目一单片机的认识 一、单片机芯片引脚89C51 /89S51共有 40个引脚,说明如下: ⒈ 电源: ⑴ VCC(40) - 芯片电源,接 +5V ⑵ VSS(20) - 接地端; ⒉ 时钟:XTAL1(19) 、XTAL2(18) - 晶体振荡电路反相输入端和输出端 ⒊ 控制线 :控制线共有 4 根, ⑴ ALE/PROG(30): 地址锁存允许 /片内 EPROM编程脉冲 ① ALE功能:用来锁存 P0口送出的低 8 位地址 ② PROG功能:片内有 EPROM的芯片,在 EPROM编程期间,此引脚输入编程脉冲 ⑵ PSEN(29): 外 ROM读选通信号 ⑶ RST/VPP(9): 复位/备用电源 ① RST (Reset )功能:复位信号输入端 ② VPP功能:在 Vcc掉电情况下,接备用电源 (4) EA/VPP:内/ 外 ROM选择/ 片内 EPROM编程电源 89C51 /89S51芯片用内部 ROM (程序 存储器) ,所以此引脚必须接高电平+5V. 4.输入/输出口线 ?P0.0~P0.7(39~32) P0口 8 位双向口线 ?P1.0~P1.7(1~8) P1口 8 位双向口线 ?P2.0~P2.7 (21~27) P2口 8 位双向口线 ?P3.0~P3.7(10~17) P3口 8 位双向口线 其中 P3中的各位有第二功能 思考: 判断第 1 脚的方法是什么?二、单片机的最小系统 能够让单片机工作的最小硬件电路,称为单片机最 小系统。
包括单片机芯片、电源电路、晶振电路、复位电 路 1、电源电路 如果有现成的 5V 稳压电源,可直接把VCC脚与 EA脚 接+5V,然后把 VSS脚接 5V电源的地就可以了如果没有 现成的稳压电源,可通过220V交流电进行降压→整流→ 滤波→稳压得到 2、复位电路 复位是指单片机的初始状态,当单片机刚上电时,单片 机应在初始状态有时程序执行过程中会出现动作乱的现 象,也可让单片机复位一下,让程序从头开始执行单片 机复位后,各特殊功能寄存器的初始状态教材 复位电路的工作原理是一个RC电路的充电过程,因单片机的复位是高电平复位,必须在RST 引脚上保持两个机器周期以上的高电压才能让单片机可靠复位,所以上图中的电阻及电容的 大小要选择合适 复位过程是:当刚接上电源时,+5V通过 22UF的电容及 10KΩ的电阻进行充电,电容相 当于短路,所+ 5V直接加到 RST引脚上而复位,称之为上电复位,过一段时间,电容充电完 毕,流过 10KΩ的电阻的电流为零, RST引相当于与地(低电平)接在一起,单片机在工作状 态当在程序执行过程中要进行复位时,可按下按键K1,RST为高电平而复位 3、晶振电路 如右上图所示,晶振电路主要由晶振(12MHZ )与两个电容( 30PF左右)组成,为单片机 提供时钟脉冲。
三、单片机中数的使用 ⒈ 十进制数 主要特点: ① 基数是 10有 10个数码(数符)构成:0、1、2、3、4、5、6、7、8、9 ② 进、借位规则是“逢十进一、借一当十” 【例】1234.56 = 1×103+2×102+3×101+4×100+5×10-1+6×10-2= 1000+200+30+4+0.5+0.06 上述, 103、102、101、100、10-1、10-2称为十进制数各数位的“ 权 ” ⒉ 二进制数 主要特点: ① 基数是 2只有两个数码: 0 和 1 ② 进、借位规则是 “ 逢二进一、借一当二 ” 每左移一位 ,数值增大一倍;右移一位,数值减小一半 二进制数用尾缀 B作为标识符 【例】 111.11B = 1×22 +1×21 +1×20 +1×2-1+1×2-2 = 7.75 其中, 22、21、20、2-1、2-2称为二进制数各数位的“权 ” ⒊ 十六进制数 主要特点: ① 基数是 16共有 16 个数符构成: 0、1、, 、 9、A、B、C、D、E、F其中, A、B、C、D、E、F 代表的数值分别为 10、11、12、13、14、15 ② 进、借位规则是“逢十六进一、借一当十六”。
十六进制数用尾缀H 表示 在 C51中十六进制数“ 0X”开头的 【例】 0XA3.4 = 10×161+3×160+4×16-1 = 160+3+0.25 = 163.25 其中, 163、162、161、160、16-1、16-2 称为十六进制数各数位的“权” 十六进制数、二进制数和十进制数对应关系表十进制数十六进制数二进制数十进制数十六进制数二进制数00X000000B110X0B 1011B10X010001B120X0C 1100B20X02 0010B130X0D 1101B30X03 0011B140X0E 1110B40X04 0100B150X0F 1111B50X05 0101B160X10 0001 0000B60X06 0110B170X11 0001 0001B70X07 0111B180X12 0001 0010B80X08 1000B190X13 0001 0011B90X09 1001B200X14 0001 0100B100X0A 1010B210X15 0001 0101B二、数制转换⒈ 二进制数与十六进制数相互转换⑴ 二进制数转换成十六进制数① 整数部分:自右向左,四位一组,不足四位,向左填零,各部分用相应的十六进制数替代;例0101 1010B=0X5A 11110101B=0XF5 1101010B=0X 10111B=0X 1011011B=0X 1011000B=0X ② 小数部分:自左向右,四位一组,不足四位,向右填零,各部分用相应的十六进制数替代;如: 0.1101B=0.D 0.1010B=0X 0.11101B=0X ⑵ 十六进制数转换成二进制数每一位十六进制数分别用相应4 位二进制数替代。
十六进制数二进制数十六进制数二进制数0X0 0000B 0X8 1000 B 0X1 0001 B 0X9 1001 B 0X2 0010 B 0XA 1010 B 0X3 0011 B 0XB 1011 B 0X4 0100 B 0XC 1100 B 0X5 0101 B 0XD 1101 B 0X6 0110 B 0XE 1110 B 0X7 0111 B 0XF 1111 B 如 16H=0001,0110B 0X1FF=0001,1111,1111B 0X4F=0100,1111B 0X16.D=0001,0110.1101B 0X89= B 0XF8= B 0XED= B 0XBC= B ⒊ 十进制数转换成二进制数、十六进制数⑴ 整数部分的转换①十进制整数转换成二进制整数的方法:②十进制数整数转换成十六进制数的方法:除 2 取余法除 16 取余法 如 48D(十进制 )= 110000B( 二进制数 ) 323D(十进制)= 143H(十六进制数 ) ⑵ 小数部分的转换①十进制小数转换成二进制小数的方法:将小数部分乘2 取整数法0.75D(十进制数 )= 0.11B 4、二进制数运算(1) 二进制数加法运算规则: 0 + 0 = 0,0 + 1 = 1 + 0 = 1, 1 + 1 = 0(向高位进1)~:运算对象在运算符的右边功能:对运算对象的各二进位按位求反,即使每一位上的0 变 1;变 1 为 0。
~14:即~0 0 0 0 1 1 1 0 B 按位求反得0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 1 > :右移例如: a>>2功能:把 a 的各二进位向右移动2 位若 a= 0000000000001111(十进制 15),右移 2 位后为 0000000000000011(十进制 3)0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 有符号数与无符号数有符号数:最高位为符号位,最高位为“0”表示正数,最高位为“ 1”表示负数00001010B表示是正数 (+10),而 10010001B表示负数无符号数:最高位不作为符号位,而当成数值位二进制数有原码、反码与补码三种编码形式原码:二进制数的原形,可为无符号数,也可有符号数8 位无符号数原码范围: 00000000B~1111 1111B (0~FFH或 0~255)8 位有符号数原码范围:1111 1111B~0111 1111B (FFH ~7FH或-127~+127)反码:正数的反码与原码相同 ;负数的反码,符号位不变,数值部分按位取反。
如:原码:1000 0100B →反码 1111 1011B 补码:正数的补码与原码相同 ;负数的补码,符号位不变,数值部分按位取反再在(右边最低位 )加 1如:原码:1000 0100B →反码: 1111 1011B →+1→补码: 1111 1100B 补码的用途:将减法运算转换为加法运算三、单片机内部结构单片机内部包括有:一个CPU ,两个定时 /计数器 T1、T0,4KB的程序存储器, 128B(字节) 的数据存储器,中断系统,串行通信口,4 个并行 I/O 口 1、存储器的结构 单片机中的数据以8 位二进制数为一个单元进行存储的, 所以存储器的结构以8 位二进制 数为一个单元,一个单元就象一层有8 位房间的楼层,每个房间只能存放0 或 1 (1) 程序存储器ROM 89S51单片机内部有 4KB的程序存储器, 用于存放用户编写的程序 单元地址从 0000H 到 0FFFH ,在一般的单片机控制系统中一般是够用的,如果不够用,可外加芯片扩展到64KB (2)数据存储器RAM 89S51单片机内部有 256B(字节/含特殊功能寄存器 )的数据存储器,用于存放运算过程中产 生的中间结果。
如果不够用,可外加芯片扩展到64KB 为了方便数据存储器的使用,又将它分成几个区 1)工作寄存器区:地址从00H到 1FH ,共 32 个存储单元单片机复位后, 默认选择 0 区,工作区的选择由程序状态字PSW中的 RS1 、RS0两位设置 PSW程序状态字的各位定义D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV - P 各位的说明在教材11 页,请阅读工作寄存器区的选择方法 RS1 RS0 区号 0 0 0 区 0 1 1 区 1 0 2 区 1 1 3 区2)位寻址区:地址从20H到 2FH共 16 个单元,见教材 15 页的表 1.3,在这 16 个单元中 的每一位均有一个地址与它对应3)堆栈和数据缓冲区:地址从30H 到 7FH,本区主要由用户存放数据当然工作寄存器、 位地址区在没有被用时也可用来存放用户数据4)特殊功能寄存器区:地址从80H 到 FFH ,特殊功能寄存器区是分散的,见教材的15 页表 1.4在特殊功能寄存器中, 如果地址能被 8 整除,则可进行位操作如P1口的地址为 90H,90H=9X16=144 144÷8=18 所以可用 P1.0=1 将 P1.0 置 1 或 P1.2=1 清零Keil 软件的使用一、软件启动在桌面上双击,或在开始→程序→。
二、界面图1、首先建立一个工程 点击 Project→New Project 如下图所示则会出现如下图注意工程保存在什么位置(要方便自己查找 ),输入文件,保存类开会自动生成,不用管,然后 点保存,则会出如下图则会出现则出现可点是或否,影响不大则会出现:这样应建立了一个新的工。












