单片机原理及应用物理与电子工程学院:李刚手机:18062818313课程QQ群:131314607概论一.课程考核方式二.课程学习方法三.单片机概述四.预备知识五.虚拟仿真平台搭建六.小结2一.课程考核方法1.课程要求:总成绩达到70分以上,视为及格2.总成绩=平时成绩(40%)+考试成绩(60%)3.平时成绩=上机实验(40%)+平时作业和考勤(60%)上机实验:共6次,完成相关实验报告平时作业和考勤:方案一:单片机硬件电路实物+设计报告+课堂讲解要求:提前与老师确定题目和计划实施时间等,经老师同意后,可以按照预定计划实施;方案二:常规作业+平时出勤34二.课程学习方法与途径1.购买开发板或者自己设计开发板,在开发板上验证课本知识,增强自己对知识的理解和记忆;2.搭建单片机虚拟仿真平台,该仿真平台上验证自己对知识的理解;平台软件:Keil+Proteus软件;3.充分利用网络资源,如网络视频课程等,多途径地对同一知识进行对比理解,选择自己最容易理解的方式;推荐书籍:1.51单片机C语言教程—入门、提高、开发、拓展全攻略———郭天祥著2.爱上单片机——杜洋著5三.单片机概述●学单片机需要什么基础?1.只需要掌握很基本的数电模电知识,如二进制、十进制、十六进制之间的转换,与、或、非逻辑关系等;2.如果要用C语言编程,需具备简单的C语言基础;3.了解基本的微机原理知识;6三.单片机概述●什么是单片机?◆单板机将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配在一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)。单板机单板机的I/O设备简单,软件资源少,使用不方便。早期主要用于微型计算机原理的教学及简单的测控系统,现在已很少使用。三.单片机概述◆单片机在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机(Single-Chip-Microcomputer),即单片机。我就是单片机单板机单片机三.单片机概述◆为什么要学习单片机?1.获得该门课程的学分,满足毕业要求;2.掌握一门技能,提升就业机会和质量;3.为以后学习高端的嵌入式处理器打下基础;三.单片机概述◆单片机能够做什么(应用领域)?★工业自动化控制:数据采集、测控技术;★智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等;★通信设备:调制解调器、程控交换技术、手机、小灵通等;★消费类电子产品:洗衣机、电冰箱、空调机、电视机、微波炉、手机、IC卡、汽车电子设备等;★武器装备:飞机、军舰、坦克、导弹、航天飞机、鱼雷制导、智能武器等。。。。。。四.预备知识数制转换及其基本逻辑门电路C51知识1.数制十进制:0、1、2、3、4、5、6、7、8、9;规则:逢十进一。一般表达式为:0011221110101010ddddNnnnnD其中,展开式中的10称为基数,各位加权数为0~9。例如:01231041031021011234单片机常用的数制有十进制、二进制、十六进制。四.预备知识二进制:0、1;规则:逢二进一。二进制的后缀为B;十进制数后缀为D,但十进制数可不带后缀。一般表达式为:其中,展开式中的2称为基数,各位加权数为0,1。例如:0123212021211101B001122112222bbbbNnnnnB四.预备知识十六进制:符号集:0~9、A、B、C、D、E、F;规则:逢十六进一。一般表达式为其中,展开式中的16称为基数,各位加权数为0~9、A~F。例如:四.预备知识0011221116161616hhhhNnnnnH01231681612161516138HDFC2.数制转换(1)十六进制数转换成十进制数方法是按进制的表达式展开,然后按照十进制运算求和。例如:112121211011013B(2)二进制与十六进制数之间的转换从低位起,从右到左,每四位(最后一组不足时左边添0凑齐4位)二进制数对应一位十六进制数。例如:5728816816121615161380123HDFC四.预备知识(3)十进制整数转换成二、十六进制整数转换规则:“除基取余”。十进制整数不断除以转换进制基数,直至商为0。每除一次取一个余数,从低位排向高位。例如:四.预备知识四.预备知识3.数制转换工具应用十进制39转换为二进制:十进制208转换为十六进制:有符号位有原码,反码和补码三种表示法。原码:原码就是机器码。反码:正数的反码与原码相同;负数的反码为:符号位不变,数值部分按位取反。补码:正数的补码表示与原码相同。负数的补码为其反码加1,但原符号位不变。四.预备知识4.有符号数的表示方法例如,求8位二进制数补码:X=+4[X]补=00000100BX=-4原码为10000100B其反码为11111011B[X]补=11111100B在原码中,零可以表示成+0(00000000B),也可以表示成-0(10000000B)。在反码中,零可以表示成+0(00000000B),也可以表示成-0(11111111B)。在补码中,由于补码的特殊规律,零只有一种表示方法:在计算机中,有符号位一律用补码表示,这样可以简化计算机的硬件结构。四.预备知识5.位、字节和字★位(bit):二进制数中的一位,其值不是“1”,就是“0”。★字节(Byte):一个8位的二进制数为一个字节。字节是计算机数据的基本单位。★字(Word):两个字节就是一个字。另外,有时还会用到“半字节”,即4位二进制。四.预备知识6.BCD码BCD码(BinaryCodedDecimal):即用二进制代码表示的十进制数。具体来说,就是用4位二进制代码表示十进制的一位数,一个字节可以表示两个十进制数,称为压缩的BCD码。如10000111表示87也可以用一个字节表示一位十进制的数,这种BCD码称为非压缩的BCD码。如00000111表示十进制的7四.预备知识7.ASCⅡ码由于计算机中使用的是二进制数,因此计算机中使用的字母、字符也要用特定的二进制表示。目前普遍采用的是ASCⅡ码(AmericanStandardCodeforInformationInterchange)。它采用7位二进制编码表示128个字符,其中包括数码0~9以及英文字母等可打印的字符。可见,在计算机中一个字节可以表示一个英文字母。四..预备知识16行*8列=128四.预备知识8.二进制的逻辑运算1.“与”运算“与”运算是实现“有0为0,全1为1”这种逻辑关系的一种运算。运算符为“·”,其运算规则如下:0·0=0,0·1=1·0=0,1·1=1四.预备知识2.“或”运算“或”运算是实现“有1为1,全0为0”这种逻辑关系的一种运算。运算符为“+”,其运算规则如下:0+0=0,0+1=1+0=1,1+1=1四.预备知识3.“非”运算“非”运算是实现“求反”这种逻辑的一种运算,如变量A的“非”运算记作。其运算规则如下:A四.预备知识5.“异或”运算“异或”运算是实现“相异为1,相同为0”这种逻辑的一种运算,运算符为“”。其运算规则是:四.预备知识6.缓冲器缓冲器并不改变输入信号状态,只是提高信号的驱动能力,有些缓冲器还带一个门控端OE,如下图所示,当其为0时候,缓冲器使能。当其为高电平时,呈现高阻状态。四.预备知识门控D锁存器边沿D触发器门控D锁存器:EN端是门控端,高电平使能。D为输入端,当EN=1时,锁存器的输出端Q与输入端D状态相同。当EN=0时,输出Q将维持原来的状态不变。五.C51知识C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。而针对8051的C语言(即C51)日趋成熟,成为了专业化的实用高级语言。与标准C语言相比,C51包含的数据类型、变量存储模式、输入输出处理、函数等方面有一定差异,需根据单片机存储结构及内部资源定义相应的数据类型和变量,而其它语法规则、程序结构及程序设计方法等与标准的C语言程序设计相同。1.C51语言概述C51程序的基本单位是函数。一个C51源程序至少包含一个主函数,也可以是一个主函数和若干个其它函数。主函数是程序的入口;主函数中的所有语句执行完毕,则程序结束。2.C51的程序结构通过一个可实现LED闪烁控制功能的源程序说明C51程序的基本结构。五.C51知识LED指示灯闪烁电路原理图程序:五.C51知识C51语言程序的基本结构:五.C51知识1.对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解;2.寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;3.程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;4.提供的库包含许多标准子程序,具有较强的数据处理能力;5.由于具有方便的模块化编程技术,使已编好程序可容易地移植;C51与ASM-51相比,有如下优点:3.C51的数据结构C51的变量在程序执行过程中,数值可以发生改变的量称为变量。在变量的基本属性是变量名和变量值。一旦在程序中定义了一个变量,C51编译器就会给这个变量分配相应的存储单元。此后变量名就与存储单元地址相对应,变量值就与存储单元的内容相对应。定义一个变量的格式如下:[存储种类]数据类型[存储类型]变量名五.C51知识五.C51知识(1)存储种类存储种类是指变量在程序执行过程中的作用范围。变量的存储种类有四种:自动(auto)外部(extern)静态(static)寄存器(register)五.C51知识自动变量:使用存储种类说明符auto定义的变量称为自动变量。自动变量作用范围在定义它的函数体或复合语句内部,在定义它的函数体或复合语句被执行时,C51才为该变量分配内存空间,当函数调用结束返回或复合语句执行结束时,自动变量所占用的内存空间被释放,这些内存空间又可被其他的函数体或复合语句使用。定义变量时,如果省略存储种类,则变量默认为自动(auto)变量。由于80C51单片机访问片内RAM速度最快,通常将函数体内和复合语句中使用频繁的变量放在片内RAM中,且定义为自动变量,可有效地利用片内有限的RAM资源。五.C51知识外部变量:使用外部种类存储符extern定义的变量称为外部变量。在一个函数体内,要使用一个已在该函数体外或别的程序模块文件中定义过的外部变量时,该变量在本函数体内要用extern说明。外部变量被定义后,即分配了固定的内存空间,在程序的整个执行时间内都是有效的。通常将多个函数或模块共享的变量定义为外部变量。外部变量是全局变量,在程序执行期间一直占有固定的内存空间。当片内RAM资源紧张时,不建议将外部变量放在片内RAM。五.C51知识静态变量:使用static定义的变量称为静态变量。它又分为内部静态变量和外部静态变量。外部静态变量是在函数外部定义的静态变量。它在程序中一直可见,但在定义的范围之外是不可见的。如在多文件或多模块处理中,外部静态变量只在文件内部或模块内部有效。在函数体内部定义的静态变量为内部静态变量,它在对应的函数体内有效,一直存在,但在函数体外不可见,这样不仅使变量在定义它的函数体外被保护,还可以实现当离开函数时值不被改变。五.C51知识寄存器变量:使用存储种类说明符register定义的变量称为寄存器变量。通常将使用频率最高的那些变量定义为寄存器变量,但目前已不推荐使用这种方式。(2)数据类型数据的不同格式叫做数据类型有符号数据类型的可以忽略signed标识符,如signedint等价于int,signedchar等价于char等。五.C51知识五.C51知识为了更有效地利用51单片机的内部结构,C51还增加了一些特殊的数据类型,它们分别对应于bit