1、单片机原理试验课程安排专业选修课16个学时(4次)的实验。考察方式:考查(试验报告)最终交报告的时间:2011年11月20日(新主楼A317)课件、作业要求和相关软件可以通过邮箱下载:密码:mcu706试验学会使用KEIL C51的仿真调试环境以及仿真器的使用,并能使4个灯全亮。I/O口实验:循环定时(用定时器做)点亮4个灯,即每2秒闪烁点亮(亮1秒,灭1秒)一个灯,循环往复(或叫跑马灯实验)。选作其中任意一个实验:(1)PCF8576驱动的字符液晶上显示“ENG。”;(2)能对TLC549芯片的内部寄存器进行操作,输入电压变化是给出相应的值。如有感兴趣的同学还可以做实验箱上具备的其他实验组合
2、。试验报告和要求要求写明实验目的,内容等。用汇编语言或C51语言实现实验内容,并给出源代码。手写、打印均可。分组方式:2人一组,留下电话和邮件根据试验的时间安排,选择试验时间本课程的目的及意义掌握51单片机的基本结构与工作原理 熟练掌握51单片机应用系统的开发过程及手段 参考书目何立民.单片机高级级教程.北京航空航天大学出版社.2000.8马忠梅.单片机的C语言应用程序设计.北京航空航天大学出版社.1998.10(还有新版本)夏继强等.单片机实验与实践教程(二)第二版.北京航空航天大学出版社 2006.5 电子计算机的组成计算机系统硬件软件主机外设系统软件应用软件运算器控制器主存储器输入设备输
3、出设备外存储器1.1什么是单片机计算机的工作过程1.输入,将程序和数据输入内存2.运算:1)启动 2)取指令,从内存中取一条指令 3)取操作数,根据指令取数 4)运算操作 重复2)3)4)步,直至运算结束3.输出4.结束1.1什么是单片机单片机在一个芯片上集成了中央处理器(CPU)、随机存贮器(RAM)、程序存贮器(ROM或EPROM)、定时/计数器以及一些I/O接口的计算机。如:INTEL公司的8051单片机集成了:8位的CPU;振荡器;4k字节ROM;128字节RAM;两个16位定时/计数器1.1什么是单片机1.2 单片机的应用领域单片机适用于具有体积小、功耗低、控制功能强的场合:日常生活
4、中的电气产品 计算机外围设备智能仪器仪表工业测控中通讯行业 现在几乎没有单片机不存在的领域。1.3 单片机的发展史第一阶段:探索阶段。MCS-48系列:美国INTEL公司1976后陆续开发的8位单片机(第一阶段1976-1978)第二阶段:完善阶段。MCS-51系列:美国INTEL公司1980后推出的高档8位单片机,与其兼容的系列产品国内用户最多。(第二阶段:1978年)Z8系列:ZILOG公司的8位单片机MC68系列:MOTOROLA公司1979年推出的8位单片机第三阶段:向微控制器发展的阶段在原有8051内核的基础上,加强了外围电路功能。第四阶段:单片机的全面发展阶段。各种高速、低功耗、大
5、寻址范围、运算能力强的8位、16位、32位通用型及各种小型廉价的专用型,功能全面的片上系统。单片机的发展趋势低功耗管理更宽的工作电压范围高性能化混合信号集成串行扩展技术小体积、低价格ISP及基于ISP的开发环境1.4 单片机的选用单片机的性能程序存储器类型,程序存储器数据存储器的容量。计算速度接口能力功耗要求应用场合(商业级、工业级、军用级)开发的难易程度开发系统是否完备其他考虑批量产品还是一次性应用,是否需要升级芯片的供应情况,发展动向1.5 单片机应用系统按照单片机系统的扩展和配置状况,单片机应用系统可以分为:最小系统、最小功耗系统、典型系统。最小应用系统:维持单片机运行的最简单配置所构成
6、的系统(晶振,复位电路,电源,ROM等)。最小功耗系统:在能满足应用条件的前提下,设计中采用低功耗设计。如:采用CMOS工艺的单片机及其它低功耗芯片。典型应用系统 单片机要完成工业测、控功能所必须具备的硬件结构系统。D/A光电隔离光电隔离A/D光电隔离单片机I/O扩展EPROMRAMI/O显示器键盘通用外设程序存储器数据存储器I/O数字量检测模拟量检测开关量检测开关量控制伺服驱动控制测控增强基本部分外设增强1.6 单片机应用系统的开发过程1、硬件电路设计、组装、调试硬件应结合软件方案一并考虑,器件的性能匹配问题,可靠性及抗干扰设计,外接电路多时要考虑其驱动能力。2、应用程序的设计、编制软件结构
7、清晰,各功能程序实现模块化,子程序化,实现全面软件抗干扰设计,提高可靠性,在软件中设置自诊断程序等。3、应用程序的仿真调试系统在仿真器的支持下,对应用程序进行调试。在调试过程中不断修改、完善。4、应用程序的链接,固化、脱机运行。针对出现的问题,修改硬件、软件或总体设计方案。51系列单片机的结构原理2.1 概述2.2 存储器配置2.3 输入/输出端口2.4 定时/计数器 2.5 串行口 2.6 中断系统 2.7 振荡器,时钟电路,MCU时序及复位电路 2.8 80C51的节电运行 2.1 概述51系列(80C51系列)的含义:指以80C51为核心发展起来的各类单片机型号系列的总称。这类微控制器都
8、使用80c51的CPU内核及指令系统。发展:很多公司都在从事51系列的拓展开发,philips(NXP),宏晶科技,WINBOND公司,dallas,atmel,oki等。Atmel 89cXX系列 89C51,89C52,89C2051Dallas DS5000FP,DS5001FP,DS5000(T),DS2250(T)Intel公司和Philips公司联手制定80C51的zx改造计划,分别推出MCS251和80C51XA单片机,内部总线为16位,外部寻址达16M。Cygnal C8051F020,040等。宏晶科技的STC系列51单片机。51单片机片内结构 BP0口P2口P1口P3口运算
9、部件控制部件数据存储器RAM程序存储器ROM/EPROM特殊功能寄存器(SFR)中断系统定时/计数器串行口XTAL1XTAL2PSENEAALERESET8888VCCVSS51单片机片内基本资源一个中央处理器 128字节RAM(供用户自由使用)只读存储器(8031,8051,8751)ROM 80c31:片内无ROM,使用时必须扩展程序存储器 80c51:片内有4K字节掩膜ROM,用户不可以对其编程,用于大批量使用由厂家固化。87c51:片内有4K字节EPROM,在用于程序量不大时,是较理想的选择但价格比80C31稍贵。32条I/O口线 2个定时/计数器 2个优先级的5个中断源 串行I/O口
10、 片内振荡器及时钟 51单片机的管脚及片外总线结构VSS12345678910111213141516171819202122232425262728293031323334353637383940VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VDDALE/PROGP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0VSSXTAL1XTAL2RD、P3.7WR、P3.6T1、P3.5T0、P3.4INT1、P3.3INT0、P3.2TXD、P3.1RXD、P3.0RST/VPDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P1.0P1
11、.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENPSENEAALERESETALEP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0锁存器GA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0用户I/O控制总线(CB)地址总线(AB)VCC+5VD7D6D5D4D3D2D1D0数据总线(DB)2.2 存贮器配置(80C51为例)存储器分类:程序存储器(ROM):PC:0000HFFFFH共64K,访问用MOVC数据存储
12、器(RAM):片内:128字节一些特殊功能寄存器,MOV片外:64K,MOVX存储器的配置为哈佛结构,即程序存储器和数据存储器各自编址,互不影响,在硬件上用/PSEN和ALE信号来区分,软件上用不同的指令。2.2.1 程序存储器(1)功能:用于存放编好的程序和表格常数。如何工作:程序计数器(PC),也叫PC指针,是取指地址。上电复位后内容为0000H,即从0000H地址的指令顺序执行,最大为FFFFH,所以程序空间为64K。64K空间分为片内ROM和片外ROM,但统一编址。外 部内 部(EA=1)外 部(EA=0)00000FFF00000FFF1000FFFF2.2.1 程序存储器(2)在6
13、4K的程序存储器中,有5个特殊的单元,存放5种中断源的中断入口:外部中断0 0003H定时器0溢出 000BH外部中断1 0013H定时器1溢出 001BH串行口 0023H 程序举例ORG 0000HAJMP MAINORG 0003HLJMP XINT0ORG 000BHLJMP XIT0ORG 0013HLJMP XINT1 ORG 001BHLJMP XIT1ORG 0023HLJMP RTXDORG 0030HMAIN:XINT0:RTXD:2.2.2 数据存储器(1)数据存储器(RAM)用于存放中间运算结果、数据暂存或标志位等。在物理上和逻辑上分为两个地址空间:片内和片外片外000
14、0HFFFFH,用MOVX通过R0,R1及DPTR间接寻址;片内00H7FH及特殊功能寄存器(SFR)可直接或间接寻址,用MOV指令2.2.2 数据存储器(2)物理上如图所示 注意:PC寄存器在物理上是独立的,不属于内部数据专用寄存器区(SFR)。外部RAM内部RAM内部RAM区专用寄存器区0000FFFF007F80FF2.2.2 数据存储器(3)主要介绍内部RAM,也就是80C51片内RAM:内部RAM区;SFR区 工作寄存器区(00H-1FH)位寻址区(20H-2FH,共128位)00081018SFR20307F80FF数据缓冲区(30H-7FH)2.2.2.1内部RAM区(00H-7
15、FH)工作寄存器组:每组8个寄存器R0R7。组别选组取决于PSW(特殊功能寄存器:程序状态字)的RS0、RS1位。位寻址区:20H2FH,可用于位操作。数据缓冲区:一般的RAM。2.2.2.2 SFR区(特殊功能寄存器区)ACC(累加器):累加器是最常用的专用寄存器。B:在乘除指令中用到B寄存器乘 MUL AB;A与B相乘,高字节放在B中,低字节放在A中。除 DIV AB;A除以B,商放在A中,余数放在B中。其他指令中,B同一般的RAM。DPTR 数据指针:是一个16位专用寄存器,高8位为DPH,低8位为DPL。可作16位来处理,也可分别作8位来处理。DPTR常用来存16位地址,通过间接寻址访
16、问外部RAM;例:MOV DPTR,#MOVX A,DPTR或:MOV DPTR,#MOVX DPTR,A 2.2.2.2 SFR区(特殊功能寄存器区)PSW:程序状态字。是8位寄存器,它包含了程序状态信息。CY:进位标志。在执行某些算术和逻辑运算时,可被硬件或软件置位或清除。AC:辅助进位标志。当低4位数向高4位数进位或借位时,AC将被硬件置1,否则就被清除。RS0,RS1:用软件置位或清除来确定工作寄存器区。(0,0)区0(00H07H)(0,1)区1(08H0FH)(1,0)区2(10H17H)(1,1)区3(18H1FH)工作寄存器区(00H-1FH)位寻址区(20H-2FH,共128
17、位)00081018SFR20307F80FF数据缓冲区(30H-7FH)2.2.2.2 SFR区(特殊功能寄存器区)OV:溢出标志。执行算术运算时,由硬件置位或清除。=1,表示运算结果发生了溢出;0,运算结果没有溢出。乘除也会影响OV,积大于255或除数为0,OV置位否则清零。P:奇偶标志。每个指令周期都由硬件来置位或清零。A中值为1的位数为奇数,则P置位,否则清零。2.2.2.2 SFR区(特殊功能寄存器区)SP:堆栈指针(8位)它指出堆栈顶部在内部RAM中的位置。系统复位时,SP初始化为07H,即栈顶为07H。由于用到工作寄存器,所以一般让它指向更高的地址,如:MOV A,#70H MO
18、V SP,A 对堆栈的操作包括PUSH,POP当有中断和子程序调用时,16位PC会自动入栈和出栈。P0P3:端口P0,P1,P2,P3的锁存器。SBUF:串行数据缓冲器 用于存放欲发送或已接收的数据,逻辑上是一个SBUF,物理上是两个独立的寄存器。向SBUF写数,进的是发送缓冲器,从SBUF读数,取自接收缓冲器。2.2.2.2 SFR区(特殊功能寄存器区)T0,T1 定时器/计数器0,1。不能当作一个16位寄存器寻址。16位 T0:TH0,TL0 各8位 T1:TH1,TL1 各8位 将在定时/计数器一节详细讨论。其他还有IP,IE,TMOD,TCON,SCON,PCON等将在有关章节叙述。第
19、二章 51系列单片机的结构原理2.1 概述2.2 存储器配置2.3 输入/输出端口2.4 定时/计数器 2.5 串行口 2.6 中断系统 2.7 振荡器,时钟电路,MCU时序及复位电路 2.8 80C31的节电运行 2.3 输入/输出端口P0,P1,P2,P3共4个口对应32根口线。P0口(引脚32-39)既可做一般I/O口,又可作地址/数据总线,某一位的内部结构如下图:DCLQQVCCP0.X引脚P0.X锁存器读锁存器内部总线写锁存器读引脚地址/数据控制MUXP0口当控制信号为0(低电平)时,P0作一般I/O口用。输出时,外部需上拉电阻。输入时,分读锁存器和读引脚。读锁存器:是一些“读修改写
20、”指令,即以P0口作为目的操作数。如:ORL、XRL、JBC、CPL、INC、DEC、DJNZ。用上面的三态缓冲器读Q端数据。读引脚:将下面的三态缓冲器打开。为保证读入电平的正确性,应先向口位写1以保证一对FET(场效应管)截至(高阻)。当控制信号为1时,P0作地址/数据总线用。输出时:与门有效 输入时:相当于读引脚(但不用写“1”)在8031中无ROM,P0口必须作地址/数据总线使用,不能再作通用I/O口使用,但在51时可用作I/O口。P1口(引脚18)准双向口,真正的用户口,其任意一位的结构如下图所示,共有8个这样的结构作I/O用。与P0不同的是,不需要上拉电阻,输入时也有读锁存器和读引脚
21、之分。DCLQQVCCP1.X引脚P1.X锁存器读锁存器内部总线写锁存器读引脚内部上拉电阻P2口(引脚2128)内部的上拉电阻同P1口,当输出高8位地址时,有点象P0口,其任意位的结构如下图所示:DCLQQVCCP2.X引脚P2.X锁存器读锁存器内部总线写锁存器读引脚地址控制MUX内部上拉电阻P3口(引脚1017)多功能口,其位结构如下图所示:DCLQQVCCP3.X引脚P3.X锁存器读锁存器内部总线写锁存器读引脚第二功能输出第二功能输入内部上拉电阻P3口作通用I/O口输出时,与P1相同,这时第二功能输出应为1。作第二功能输出时,锁存器应为1。输入时,第二功能输出与锁存器都应置1,但输入端有点
22、不同(这与用户无关)。P3口的第二功能P3.0 RXD 串行口输入P3.1 TXD 串行口输出P3.2 /INT0 外部中断0输入P3.3 /INT1 外部中断1输入P3.4 T0 定时/计数器0外部输入P3.5 T1 定时/计数器1外部输入P3.6 /WR 外部数据写选通信号输出P3.7 /RD 外部数据读选通信号输出 C51语言编程语言编程单片机的c语言与标准C语言相比,库文件有很多不同。include在reg51.h中定义了P0、P1、P2、P3口地址以及与单片机资源相关的SFR的地址。SFR P0=0X80SFR P1=0X90SFR P2=0XA0SFR P3=0XB0在中,定义了n
23、op,左移,右移,循环移动等函数。在中,定义了内存拷贝,字符串拷贝等函数在中定义了exp,asin,cos等函数在中定义了打印函数等。pragma db cd(调试用与仿真器有关)includeincludedefine uchar unsigned chardefine uint unsigned intsbit SDA=P17;sbit SCL=P16;uchar SLAW=0X40;uchar SLAR=0X41;/*子函数的声明*/void init();void sta(void);void stop(void);void cack(void);void mack(void);void main()init();/初始化for(;).void init().