【精品】51单片机C语言学习教程-对应 DOFLY mini80E 升级版开发板开发精品ppt课件.ppt
51单片机C语言学习教程-对应 DOFLY mini80E 升级版开发板开发2023/3/14【可编辑】什么是单片机?把微型计算机的主要功能部件集成在一个芯片上的单芯片微型计算机叫单片机。如果说单片机就是一个电脑你可能不会认可,其实它和我们用的电脑的在本质上没有区别,只是5步和100步的区别.单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就是一台计算机。单片机就是一块集成芯片,但这块集成芯片具有一些特殊的功能,而它的功能的实现要靠我们使用者自己来编程完成。编程的目的就是控制这块芯片的各个引脚在不同时间输出不同的电平(高或者低电平),进而控制与单片机各个引脚相连接的外围电路设备的工作状态。单片机的历史1971年intel公司研制出世界上第一个4位的微处理器;Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel 4004,标志着第一代微处理器问世,微处理器和微机时代从此开始。因发明微处理器,霍夫被英国经济学家杂志列为“二战以来最有影响力的7位科学家”之一。1971年11月,Intel推出MCS-4微型计算机系统(包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微处理器)其中4004(下图)包含2300个晶体管,尺寸规格为3mm4mm,计算性能远远超过当年的ENIAC,最初售价为200美元。1972年4月,霍夫等人开发出第一个8位微处理器Intel 8008。由于8008采用的是P沟道MOS微处理器,因此仍属第一代微处理器。1973年intel公司研制出8位的微处理器8080;1973年8月,霍夫等人研制出8位微处理器Intel 8080,以N沟道MOS电路取代了P沟道,第二代微处理器就此诞生。主频2MHz的8080芯片运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPS(Million Instructions Per Second)。1975年4月,MITS发布第一个通用型Altair 8800,售价375美元,带有1KB存储器。这是世界上第一台微型计算机。1976年intel公司研制出MCS-48系列8位的单片机,这也是单片机的问世。Zilog公司于1976年开发的Z80微处理器,广泛用于微型计算机和工业自动控制设备。当时,Zilog、Motorola和Intel在微处理器领域三足鼎立。20世纪80年代初,Intel公司在MCS-48系列单片机的基础上,推出了MCS-51系列8位高档单片机。MCS-51系列单片机无论是片内RAM容量,I/O口功能,系统扩展方面都有了很大的提高。单片机的历史2020世纪世纪9090年代年代单片机制造业大发展时期,单片机制造业大发展时期,MortorolaMortorola、IntelIntel、ATMELATMEL、德州仪器、德州仪器(TITI)、三菱、日立、飞利浦、)、三菱、日立、飞利浦、LGLG等公司等公司开发一大批性能优越的单片机,极大推动开发一大批性能优越的单片机,极大推动单片机的应用。近年,又有不少单片机的应用。近年,又有不少新型的高新型的高集成度的单片机产品集成度的单片机产品涌现出来,出现了产涌现出来,出现了产品丰富多彩的局面。目前,除品丰富多彩的局面。目前,除8 8位单片机得位单片机得到广泛应用外,到广泛应用外,1616位单片机、位单片机、3232位单片机位单片机也得到广大用户青睐。也得到广大用户青睐。单片机能用来干什么?工工业业控制系控制系统统数据采集系数据采集系统统自自动动控制系控制系统统自自动测试动测试系系统统检测监视检测监视系系统统智能智能仪仪表表功能模功能模块块。我们做开发、做比赛等等!我们做开发、做比赛等等!协会的好多作品!协会的好多作品!单片机的分类:按用途通用型通用型单片机单片机通用型通用型单单片机就是其内部可开片机就是其内部可开发发的的资资源(如存源(如存储储器、器、I/O等各等各种外种外围围功能部件等)可以全部功能部件等)可以全部提供提供给给用用户户。用用户户根据需要,根据需要,设计设计一个以通一个以通用用单单片机芯片片机芯片为为核心,再配以核心,再配以外外围围接口接口电电路及其它外路及其它外围设备围设备,并并编编写相写相应应的的软软件来件来满满足各种足各种不同需要的不同需要的测测控系控系统统。通常所。通常所说说的是指通用型的是指通用型单单片机。片机。专专用型用型单片机单片机专用型专用型单片机是针单片机是针对一类产品甚至某对一类产品甚至某一个产品设计生产一个产品设计生产的的例如为了满例如为了满足电子体温计的要足电子体温计的要求求在片内集成在片内集成ADC接口等功能接口等功能的温度测量控制电的温度测量控制电路。路。单片机的发展趋势30%30%60%60%80%80%60%60%Text in hereText in hereText in hereText in here单片机的发展趋势将是单片机的发展趋势将是向大容量、高性能化,外围电路内装向大容量、高性能化,外围电路内装化等方面发展化等方面发展。为满足不同用户的要求,各公司竞相推出。为满足不同用户的要求,各公司竞相推出能满足不同需要的产品。能满足不同需要的产品。1 1CPUCPU的改进的改进(1 1)增加)增加CPUCPU数据总线宽度数据总线宽度。例如,各种。例如,各种1616位单片机和位单片机和3232位位单片机,数据处理能力要优于单片机,数据处理能力要优于8 8位单片机。另外,位单片机。另外,8 8位单片位单片机内部采用机内部采用1616位数据总线位数据总线,其数据处理能力明显优于一般,其数据处理能力明显优于一般8 8位单片机。位单片机。(2 2)采用)采用双双CPUCPU结构,以提高数据处理能力。结构,以提高数据处理能力。单片机的发展趋势30%30%60%60%80%80%60%60%Text in hereText in hereText in hereText in here2 2存储器的发展存储器的发展(1 1)片内程序存储器普遍采用)片内程序存储器普遍采用闪烁(闪烁(FlashFlash)存储器)存储器。可不。可不用外扩展程序存储器,简化系统结构。用外扩展程序存储器,简化系统结构。(2 2)加大存储容量加大存储容量。目前有的单片机片内程序存储器容量。目前有的单片机片内程序存储器容量可达可达128KB128KB甚至更多。甚至更多。3 3片内片内I/OI/O的改进的改进(1 1)增加并行口)增加并行口驱动能力驱动能力,以减少外部驱动芯片。有的单,以减少外部驱动芯片。有的单片机可以直接输出大电流和高电压,以便能直接驱动片机可以直接输出大电流和高电压,以便能直接驱动LEDLED和和VFDVFD(荧光显示器)。(荧光显示器)。(2 2)有些单片机设置了一些)有些单片机设置了一些特殊的串行特殊的串行I/OI/O功能功能,为,为构成分构成分布式、网络化系统布式、网络化系统提供方便条件。提供方便条件。单片机的发展趋势30%30%60%60%80%80%60%60%Text in hereText in hereText in hereText in here4 4低功耗化低功耗化CMOSCMOS化,功耗小,配置有化,功耗小,配置有等待状态、睡眠状态、关闭状态等待状态、睡眠状态、关闭状态等等工作方式。消耗电流仅在工作方式。消耗电流仅在A A或或nAnA量级,适于电池供电的便量级,适于电池供电的便携式、手持式的仪器仪表以及其它消费类电子产品。携式、手持式的仪器仪表以及其它消费类电子产品。5 5外围电路内装化外围电路内装化众多外围电路全部装入片内,即众多外围电路全部装入片内,即系统的单片化系统的单片化是目前发展趋是目前发展趋势之一。势之一。例如,例如,美国美国CygnalCygnal公司的公司的C8051F020 C8051F020 8 8位单片机,位单片机,内部采用流水线结构,大部分内部采用流水线结构,大部分指令的完成时间指令的完成时间为为1 1或或2 2个时个时钟周期,钟周期,峰值处理能力峰值处理能力为为25MIPS25MIPS。片上集成有。片上集成有8 8通道通道A/DA/D、两路两路D/AD/A、两路电压比较器,内置温度传感器、定时器、两路电压比较器,内置温度传感器、定时器、可编程数字交叉开关和可编程数字交叉开关和6464个通用个通用I/OI/O口、电源监测、口、电源监测、单片机的发展趋势30%30%60%60%80%80%60%60%Text in hereText in hereText in hereText in here看门狗、多种类型的串行接口(两个看门狗、多种类型的串行接口(两个UARTUART、SPISPI)等。一片)等。一片芯片就是一个芯片就是一个“测控测控”系统。系统。综上所述,单片机正在综上所述,单片机正在向多功能、高性能、高速度(时钟达向多功能、高性能、高速度(时钟达40MHz40MHz)、低电压()、低电压(2.7V2.7V即可工作)、低功耗、低价格即可工作)、低功耗、低价格(几元钱)、外围电路内装化以及片内程序存储器和数据(几元钱)、外围电路内装化以及片内程序存储器和数据存储器容量不断增大存储器容量不断增大的方向发展。的方向发展。51系列单片机MCS-51MCS-51系列与系列与AT89C5xAT89C5x系列单片机系列单片机 2020世纪世纪8080年代以来,发展迅速,世界一些年代以来,发展迅速,世界一些著名厂商投放市著名厂商投放市场的产品就有几十个系列场的产品就有几十个系列,数百个品种数百个品种,IntelIntel公司的公司的MCS-48MCS-48、MCS-51MCS-51,MotorolaMotorola公司的公司的68016801、68026802,ZilogZilog公公司的司的Z8Z8系列,系列,RockwellRockwell公司的公司的65016501、65026502等。此外,荷兰等。此外,荷兰的的PhilipsPhilips公司、日本的公司、日本的NECNEC公司、日立公司等也相继推出公司、日立公司等也相继推出了各自的产品。了各自的产品。尽管机型很多,但是在尽管机型很多,但是在2020世纪世纪8080年代以及年代以及9090年代,年代,在我国在我国使用最多使用最多的的8 8位单片机还是位单片机还是IntelIntel公司公司的的MCS-51MCS-51系列系列单片机单片机以及与其兼容的单片机(称为以及与其兼容的单片机(称为5151系列单片机系列单片机)。)。51系列单片机MCS-51MCS-51系列与系列与AT89C5xAT89C5x系列单片机系列单片机 2020世纪世纪8080年代以来,发展迅速,世界一些年代以来,发展迅速,世界一些著名厂商投放市著名厂商投放市场的产品就有几十个系列场的产品就有几十个系列,数百个品种数百个品种,IntelIntel公司的公司的MCS-48MCS-48、MCS-51MCS-51,MotorolaMotorola公司的公司的68016801、68026802,ZilogZilog公公司的司的Z8Z8系列,系列,RockwellRockwell公司的公司的65016501、65026502等。此外,荷兰等。此外,荷兰的的PhilipsPhilips公司、日本的公司、日本的NECNEC公司、日立公司等也相继推出公司、日立公司等也相继推出了各自的产品。了各自的产品。尽管机型很多,但是在尽管机型很多,但是在2020世纪世纪8080年代以及年代以及9090年代,年代,在我国在我国使用最多使用最多的的8 8位单片机还是位单片机还是IntelIntel公司公司的的MCS-51MCS-51系列系列单片机单片机以及与其兼容的单片机(称为以及与其兼容的单片机(称为5151系列单片机系列单片机)。)。51系列单片机MCSMCS是是IntelIntel公司单片机的系列符号,如公司单片机的系列符号,如MCS-48MCS-48、MCS-51MCS-51、MCS-96MCS-96系列单片机。系列单片机。MCS-51MCS-51系列是在系列是在MCS-48MCS-48系列基础上于系列基础上于2020世纪世纪8080年代初发展起年代初发展起来的,是来的,是最早进入我国最早进入我国,并在我国得到广泛应用的单片机,并在我国得到广泛应用的单片机主流品种。主流品种。MCS-51MCS-51系列单片机主要包括系列单片机主要包括基本型基本型:8031/8051/87518031/8051/8751(低功耗型(低功耗型80C31/80C51/87C5180C31/80C51/87C51)增增强型强型:8032/8052/87528032/8052/8752。已为我国广大技术人员所熟悉和。已为我国广大技术人员所熟悉和掌握。在上世纪掌握。在上世纪8080年代和年代和9090年代,年代,MCS-51MCS-51系列是在我国应系列是在我国应用最为广泛的单片机机型之一用最为广泛的单片机机型之一。MCS-51MCS-51系列品种丰富,经常使用的是系列品种丰富,经常使用的是基本型基本型和和增强型增强型。51系列单片机(1 1)基本型)基本型典型产品:典型产品:8031/8051/87518031/8051/8751。80318031内部包括内部包括1 1个个8 8位位CPUCPU、128B RAM128B RAM,2121个特殊功能寄存器个特殊功能寄存器(SFRSFR)、)、4 4个个8 8位并行位并行I/OI/O口、口、1 1个全双工串行口,个全双工串行口,2 2个个1616位位定时器定时器/计数器,计数器,5 5个中断源,但个中断源,但片内无片内无程序存储器程序存储器,需外,需外扩程序存储器芯片。扩程序存储器芯片。80518051是在是在80318031的基础上,片内又的基础上,片内又集成有集成有4KB ROM4KB ROM作为程序存作为程序存储器。所以储器。所以80518051是一个程序不超过是一个程序不超过4KB4KB的小系统。的小系统。ROMROM内的内的程序是公司制作芯片时,代为用户烧制的。程序是公司制作芯片时,代为用户烧制的。87518751与与80518051相比,片内集成的相比,片内集成的4KB EPROM4KB EPROM取代了取代了80518051的的4KB 4KB ROMROM来作为程序存储器。来作为程序存储器。51系列单片机(2 2)增强型)增强型 IntelIntel公司在基本型基础上,推出公司在基本型基础上,推出增强型增强型-5252子系列子系列,典典型产品型产品:8032/8052/87528032/8052/8752。内部内部RAMRAM增到增到256B256B,80528052、片内片内程序存储器程序存储器扩展到扩展到8KB8KB,1616位定时器位定时器/计数器计数器增至增至3 3个,个,6 6个中个中断源,串行口通信速率提高断源,串行口通信速率提高5 5倍。倍。表表1-11-1列出了基本型和增强型的列出了基本型和增强型的MCS-51MCS-51系列单片机片内系列单片机片内的基本硬件资源。的基本硬件资源。1.6.2 AT89C5x1.6.2 AT89C5x(AT89S5xAT89S5x)系列单片机)系列单片机 2020世纪世纪8080年代中期以后,年代中期以后,IntelIntel精力集中在高档精力集中在高档CPUCPU芯片芯片的开发、研制上,淡出单片机芯片的开发和生产。的开发、研制上,淡出单片机芯片的开发和生产。51系列单片机MCS-51MCS-51系列系列设计上的成功设计上的成功,以及,以及较高的市场占有率较高的市场占有率,已成为许多,已成为许多厂家、电气公司竞相选用的对象。厂家、电气公司竞相选用的对象。IntelIntel公司公司以专利以专利形式把形式把80518051内核技术内核技术转让给转让给ATMELATMEL、PhilipsPhilips、CygnalCygnal、ANALOGANALOG、LGLG、ADIADI、MaximMaxim、DALLASDALLAS等公司。等公司。生产的兼容机与生产的兼容机与80518051兼容,采用兼容,采用CMOSCMOS工艺,因而常用工艺,因而常用80C5180C51系列系列单片机来称呼所有这些具有单片机来称呼所有这些具有80518051指令系统的单片机,这些兼容指令系统的单片机,这些兼容机的各种衍生品种统称为机的各种衍生品种统称为5151系列单片机系列单片机或简称为或简称为5151单片机单片机,是,是在在80518051的基础上又的基础上又增加一些功能模块增加一些功能模块(称其为(称其为增强型增强型、扩展型扩展型子系列单片机)。子系列单片机)。近年来,世界上单片机芯片生产厂商推出的近年来,世界上单片机芯片生产厂商推出的与与80518051(80C5180C51)兼容的主要产品兼容的主要产品如下表所示。如下表所示。单片机的标号信息及封装类型标识解释:STC芯片的生产公司。8表示该芯片是8051内核芯片 9表示芯片内部含有Flash E2PROM存储器。如80C51中的0表示内部含有Mask(掩膜)ROM存储器;87C51中的7表示内部含有EPROM(紫外线可擦除)ROM。C表示该器件为CMOS产品。5固定不变。单片机的标号信息及封装类型2表示该芯片的内部的程序存储空间大小。1为4KB,2为8KB,3为12KB,即该数乘上4KB就是该芯片内部的程序存储空间大小。RCSTC单片机内部RAM为512B。RD+表示内部RAM为1280B。40表示芯片外部晶振最高可接入40MHZ。C产品级别。C表示商业级,温度范围为070;I表示工业级,温度范围为-4085;A表示汽车级,温度范围为 单片机的标号信息及封装类型-40125;M为军用级,温度范围为-55150。PDIP产品封装型号。PDIP为双列直插式;PLCC为带引线的塑料芯片封装;QFP为塑料方型扁平式封装;PFP为塑料扁平组件式封装;PGA为插针网格阵列封装;BGA为球栅阵列封装。1046表示本批芯片的生产日期是10年第46周。后边的数字不详,应该是芯片制造工艺或处理工艺。51单片机外部引脚介绍 AT89C52有PDIP(双列直插封装)、PLCC(特殊引脚芯片封装,引脚向内伸出呈“丁”字形)、TQFP(四侧引脚扁平封装,引脚伸出成“L”形)三种封装方式,其中最常见的就是采用40Pin封装的双列直接PDIP封装,外形结构下图。芯片共有40个引脚,引脚的排列顺序为从靠芯片的缺口(见右图)左边那列引脚逆时针数起,依次为1、2、3、4。40,其中芯片的1脚顶上有个凹点(见右图)。在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8位可编程I/O引脚32根。STC89C52引脚介绍1、主电源引脚(2根)VCC(Pin40):电源输入,接5V电源 GND(Pin20):接地线2、外接晶振引脚(2根)XTAL1(Pin19):片内振 荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端(单片机的控制部件以主振频率为基准,发出CPU的时序信号,对指令进行译码,然后发出各种控制信号,完成一系列定时控制的微操作,用来控制单片机各部分的运行)3、控制引脚(4根)RST/VPP(Pin9):复位引 脚,引脚上出现2个机器周期的高电平将使单片 机复位。ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31):程序存储器的内外部选通,接低电平 从外部程序存储器读指令,如果接高电平则从内部程序 存储器读指令。芯片实物图片 芯片引脚功能4、可编程输入/输出引脚(32根)AT89S51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。每一根引脚都可以编程,比如用来控制电机、交通灯、霓虹灯等,开发产品时就是利用这些可编程引脚来实现我们想要的功能,尽情发挥你的想象力吧,实现你想要的:)强大无比。PO口(Pin39Pin32):8位双向I/O口线,名称为P0.0P0.7 P1口(Pin1Pin8):8位准双向I/O口线,名称为P1.0P1.7 P2口(Pin21Pin28):8位准双向I/O口线,名称为P2.0P2.7 P3口(Pin10Pin17):8位准双向I/O口线,名称为P3.0P3.7P3第二功能各引脚功能定义:第二功能各引脚功能定义:P3.0(10):RXD串行口输入P3.1(11):TXD串行口输出P3.2(12):INT0外部中断0输入P3.3(13):INT1外部中断1输入P3.4(14):T0定时器0外部输入P3.5(15):T1定时器1外部输入P3.6(16):WR外部存储器写脉冲P3.7(17):RD外部存储器写脉冲CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;ROM:用以存放程序、一些原始数据和表格;I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;一些需要了解的知识一些需要了解的知识一些需要了解的知识一些需要了解的知识六个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。预备知识:.1 关于电平特性数字电路中只有两种电平:高和低 (本课程中)定义单片机为TTL电平(晶体管-晶体管逻辑电平):高+5V 低 0VVOH-逻辑电平1的输出电压(min=2.4V)VOL-逻辑电平0的输出电压(max=0.4V)VIH-逻辑电平1的输入电压(min=2.0V)VIL-逻辑电平0的输入电压(max=0.8V)预备知识:.2 二级制与十六进制 二进制:数字电路中的两种电平特性决定了它是二进制的简短表示形式。0 0 6 1101 17 1112 108 10003 119 10014 10010 10105 10111 1011预备知识:十进制中的0-15分别表示为十六进制的0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F熟练掌握二进制与十六进制之间的转换。规律:一般把四个二进制数放在一起转换成一个十六进制数,转换时先把二进制数转换成十进制数,再把十进制数转换成十六进制数。预备知识:各种进位制的对应关系 预备知识:二二进制数的制数的逻辑运算运算 1.“与”运算运算 “与”运算是实现“必须都有,否则就没有”这种逻辑关系的一种运算。运算符为“”,其运算规则如下:00=0,01=10=0,11=1 预备知识:2.“或”运算运算 “或或”运运算算是是实现“只只要要其其中中之之一一有有,就就有有”这种种逻辑关关系系的的一一种种运运算算,其其运运算算符符为“+”。“或或”运运算算规则如下如下:0+0=0,0+1=1+0=1,1+1=1 预备知识:3.“非”运算运算 “非”运算是实现“求反”这种逻辑的一种运算,如变量A的“非”运算记作 。其运算规则如下:预备知识:4.“异或”运算 “异或”运算是实现“必须不同,否则就没有”这种逻辑的一种运算,运算符为“”。其运算规则是:预备知识:4.“同或”运算 “同或”运算是实现“必须相同,否则就没有”这种逻辑的一种运算,运算符为“”。其运算规则是:00=1,10=0,01=0,11=1C51知识C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进、扩充和移植。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。C-51C-51的特点的特点C C语言语言作为一种非常方便的语言而得到广泛作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用的支持,很多硬件开发都用C C语言编程,如:语言编程,如:各种单片机、各种单片机、DSPDSP、ARMARM等等.C C语言语言程序本身不依赖于机器硬件系统,基程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中本上不作修改就可将程序从不同的单片机中移植过来。移植过来。C C提供了很多数学函数并支持浮点运算,开提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可发效率高,故可缩短开发时间,增加程序可读性和可维护性。读性和可维护性。C C5151的数据类型的数据类型基本数据类型基本数据类型类型类型符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整整型型字字符符型型实实型型有有无无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned long intunsigned short int16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有char8-128127无无unsigned char80255C51的扩展数据类型的扩展数据类型(1)位变量)位变量bitbit的值可以是1(true),也可以是0(false)。(2)特殊功能寄存器)特殊功能寄存器sfrSTC89C52特殊功能寄存器在片内RAM区的80HFFH之间,“sfr”数据类型数据类型占用一个内存单元。利用它可访问STC89C52内部的所有特殊功能寄存器。例如:例如:sfr P1=0 x90这一语句定义P1口在片内的寄存器,在后面语句中可用“P1=0 xff”(使P1的所有引脚输出为高电平)之类的语句来操作特殊功能寄存器。(3)特殊功能寄存器)特殊功能寄存器sfr16 “sfr16”数据类型数据类型占用两个内存单元。sfr16和sfr一样用于操作特殊功能寄存器。所不同的是它用于操作占两个字节的特殊功能寄存器。例如:例如:sfr16 DPTR=0 x82语句定义了片内16位数据指针寄存器DPTR,其低8位字节地址为82H。在后面的语句中可以对DPTR进行操作。(4)特殊功能位)特殊功能位 sbitsbit 是指STC89C52片内特殊功能寄存器的可寻址位。例如:例如:sfr PSW=0 xd0;/*定义定义PSW寄存器地址为寄存器地址为0 xd0*/sbit PSW 2=0 xd2;/*定义定义OV位为位为PSW.2*/符号“”前面是特殊功能寄存器的名字,“”的后面数字定义特殊功能寄存器可寻址位在寄存器中的位置,取值必须是07。注意,不要把注意,不要把bit与与sbit混淆。混淆。bit用来定义普通的位变量,值只能是二进制的0或1。而sbit定义的是特殊功能寄存器的可寻址位,其值是可进行位寻址的特殊功能寄存器的位绝对地址,例如例如PSW寄存器OV位的绝对地址0 xd2。C-51C-51的包含的头文件的包含的头文件通常有通常有:reg51.h reg52.h math.h ctype.h reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.hstdio.h stdlib.h absacc.h常用有常用有:reg51.h reg52.hreg51.h reg52.h (定义特殊功能寄存器和位寄存器);(定义特殊功能寄存器和位寄存器);math.h math.h (定义常用数学运算);(定义常用数学运算);C-51C-51的运算符的运算符与与C C语言基本相同:语言基本相同:+-*/+-*/(加(加 减减 乘乘 除)除)=(位右移(位右移 位左移)位左移)&|&|(按位与按位与 按位或按位或)(按位异或按位异或 按位取反按位取反)C-51C-51的基本语句的基本语句 与标准与标准C C语言基本相同:语言基本相同:if if 选择语言选择语言 while while 循环语言循环语言 for for 循环语言循环语言 switch/case switch/case 多分支选择语言多分支选择语言 do-while do-while 循环语言循环语言 中断服务程序中断服务程序函数名()函数名()interrupt interrupt n n using using m m 函数内部实现函数内部实现 .I/OI/O口定义口定义sbit beep=P23;sbit beep=P23;编程语言编程语言Keil C51简介简介目前51系列单片机编程的C语言都采用Keil C51(简称C51),Keil C51是在标准是在标准C语言基础上发展起来的语言基础上发展起来的。14.1.1 Keil C51简介简介C语言是美国国家标准协会(ANSI)制定的编程语言标准,1987年ANSI公布87 ANSI C,即标准C语言。Keil C51语言语言是在是在ANSI C的基础上针对的基础上针对51单片机的硬件单片机的硬件特点进行的扩展,特点进行的扩展,并向51单片机上移植,经过多年努力,C51语言已经成为公认的高效、简洁而又贴近51单片机硬件的实用高级编程语言。目前大多数的51单片机用户都在使用C51语言来进行程序设计。用C51进行单片机软件开发,有如下优点:(1)可读性好。)可读性好。C51语言程序比汇编语言程序的可读性好,因而编程效率高,程序便于修改。(2)模块化开发与资源共享)模块化开发与资源共享。用C51开发出来的程序模块可以不经修改,直接被其他项目所用,这使得开发者能够很好地利用已有的大量的标准C程序资源与丰富的库函数,减少重复劳动。52(3)可移植性好。)可移植性好。为某种型号单片机开发的C语言程序,只需将与硬件相关之处和编译连接的参数进行适当修改,就可以方便地移植到其他型号的单片机上。例如,为51单片机编写的程序通过改写头文件以及少量的程序行,就可以方便地移植到PIC单片机上。(4)代码效率高)代码效率高。当前较好的C51语言编译系统编译出来的代码效率只比直接使用汇编语言低低20%左右,如果使用优化编译选项优化编译选项,效果会更好。53Keil C51 V9.00 即09年发布的最新版本uVision 4,版本外观改变比较大,为51单片机软件开发提供了全新的C语言环境,同时保留了汇编代码高效、快速的特点。现在,Keil C51已被完全集成完全集成到一个功能强大的全新集成开发环境(IDE)Vision4中,该环境下集成了集成了文件编辑处理、编译链接、项目(Project)管理、窗口、工具引用和仿真软件模拟器以及Monitor51硬件目标调试器等多种功能,这些功能均可在Keil Vision4环境中极为简便地进行操作。54怎样使用keil4?单片机主要掌握以下几点最小系统能够运行起来的必要条件。1.电源 2.晶振3.复位电路对单片机任意IO口的随意操作 1.输出控制电平高低 2.输出检测电平高低。定时器:重点掌握最常用的方式2中断:外部中断、定时器中断、串口中断串口通信:单片机之间、单片机与计算机间长征第一步 点灯(LED)#includesbit led=P10;void main()led=0;流水灯?位运算按位与、按位或、按位异或、按位取反按位与(&)01011100&10001001 =00001000 0 1 0 1 1 1 0 0&1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0按位或(|)00001010|00110101=00111110 0 0 0 0 1 0 1 0|0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 0按位异或()11010101 01010100=10010001 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1按位取反()(01000101)=10111010 0 1 0 0 0 1 0 1 1 0 1 1 1 0 1 0数码管数码管是一种由多个发光二极管封装在一起组成“8”字型的发光器件,其基本单元是发光二极管数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示)按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管数码管数码管引脚图如何检测?数码管分类共阳、共阴共阴极共阳极我们如何操作数码管?锁存器:锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。译码器:译码是编码的逆过程,在编码时,每一种二进制代码,都赋予了特定的含义,即都表示了一个确定的信号或者对象。把代码状态的特定含义“翻译”出来的过程叫做译码,实现译码操作的电路称为译码器。或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其原来含义的电路。可以将较少输入变为较多输出的器件74HC573锁存器74HC573操作?1脚三脚三态态允允许许控制端低控制端低电电平有效平有效 1D8D为为数据数据输输入端入端 1Q8Q为为数据数据输输出端出端 LE为锁为锁存控制端存控制端;OE为为使能端。使能端。74HC573操作?真真值值表中的字母含表中的字母含义义如下:如下:H代表高代表高电电平,平,L代代表低表低电电平,平,X代表任意代表任意电电平,平,Z代表高阻代表高阻态态,即,即他既不是高他既不是高电电平也不是低平也不是低电电平。平。Q代表上次的代表上次的电电平状平状态态。74HC138译码器138如何操作?A0、A1、A2三个数据三个数据输入端输入端E1、E2、E3是哪个使能端是哪个使能端八个数据输出口八个数据输出口VCC、GND138如何操作?数码管怎样显示?共阴数码管码表:uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71共阳数码管码表:uchar code table =0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e基于电路图,显示方式?静态显示?动态扫描?静态显示方式 LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。几个周期的认识 1、时钟周期 时钟周期T又称为状态周期,是时序中最小的时间单位。具体计算就是1/fosc。也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。2、机器周期 机器周期定义为实现特定功能所需的时间,或完成某一规定操作所需的时间,通常由若干时钟周期构成。具体计算为:时钟周期 X cycles。如果单片机是12周期的话,那么机器周期就是T12。假设晶振频率为12M,单片机为12周期的话,那么机器周期就是1us。3、指令周期 置零周期是时序中的最大时间单位,