基于C语言的MCS-51单片机教程 课件全套 陈和洲 1.1 认知51单片机-3.5 12864显示的数字电子万年历系统的设计与制作_第1页
基于C语言的MCS-51单片机教程 课件全套 陈和洲 1.1 认知51单片机-3.5 12864显示的数字电子万年历系统的设计与制作_第2页
基于C语言的MCS-51单片机教程 课件全套 陈和洲 1.1 认知51单片机-3.5 12864显示的数字电子万年历系统的设计与制作_第3页
基于C语言的MCS-51单片机教程 课件全套 陈和洲 1.1 认知51单片机-3.5 12864显示的数字电子万年历系统的设计与制作_第4页
基于C语言的MCS-51单片机教程 课件全套 陈和洲 1.1 认知51单片机-3.5 12864显示的数字电子万年历系统的设计与制作_第5页
已阅读5页,还剩433页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元1:认知51单片机知识与能力目标熟悉单片机的基本概念1掌握内部存储器的结构、外部引脚及功能2理解单片机的存储结构3掌握单片机最小应用系统构成4引入:点亮一个LED发光二极管1.什么是单片机2.MCS-51单片机的内部结构及引脚3.MCS-51单片机的最小系统单元1:认知51单片机认知51单片机4.MCS-51单片机的存储器结构2.任务要求3.电路及清单4.硬件电路设计1.任务目的6.运行测试5.程序及下载

引入:点亮一个LED发光二极管2、任务要求通过此任务,了解什么是单片机和单片机最小系统,以及单片机应用系统的制作过程。1、任务目的在万能板上焊接单片机控制一个LED发光二极管点亮的控制电路,并将给定的一个LED发光二极管点亮.hex程序文件下载到单片机中,实现发光二极管点亮的效果。

引入:点亮一个LED发光二极管3、电路及元器件清单表1-1一个发光二极管点亮控制系统电路元器件清单元器件名称参数数量元器件名称参数数量IC插座DIP401电阻1kΩ1单片机AT89S511电阻10kΩ1晶体振荡器12MHz1电阻330Ω1瓷片电容30pf2电阻2kΩ1发光二极管1电解电容10uf1弹性按键1引入:点亮一个LED发光二极管

引入:点亮一个LED发光二极管4、电路制作经验介绍:1、焊接单片机应用系统电路时,一般不直接将单片机芯片焊接在电路板上,二是焊接在与单片机芯片引脚对应的直插式插座上,以方便单片机芯片的插入与拔出,在这里采用的是DIP40插座。2、晶振电路焊接时尽可能地靠近单片机芯片,以减小电路分布电容,从而使频率更加稳定。

引入:点亮一个LED发光二极管5、程序及下载

一个发光二极管点亮控制系统的硬件电路,仅仅只有硬件是没有办法实现灯亮的效果的,还必须将控制程序烧录到单片机芯片的内部存储器中,才能实现。因此,一个单片机应用系统是由硬件系统和软件系统两部分组成,二者缺一不可。参考程序如下:

引入:点亮一个LED发光二极管/*************************************************程序名称:一个LED灯点亮.C*功能描述:让P1.0口的一个LED灯点亮************************************************/#include<reg51.h>//头文件,定义了MCS-51单片机的特殊功能寄存器sbitLED=P1^0;//定义P1.0口/*************************************************名称:main()*功能:实现灯的点亮*输入:无*输出:无************************************************/voidmain(){LED=0;//点亮P1.0对应的LEDwhile(1);}

引入:点亮一个LED发光二极管对一个LED灯点亮.C源程序进行编译和链接后,生成一个LED灯点亮.hex二进制代码文件如下::04000F00C29080FE1D:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF知识补充:

用C语言或汇编语言编写的程序称为源程序,源程序必须经过编译、链接等操作,变成目标程序,即二进制程序,单片机才能够执行。

引入:点亮一个LED发光二极管程序的下载步骤

(1)首先将下载器的一端与计算机的USB接口连接,另一端连接到单片机应用系统的ISP下载口,打开系统的电源,启动智峰ISP下载软件progisp172软件,出现如图所示的主窗口画面,如果软件上“PRG”和“USB”位置上颜色显示正常(不是灰色),表示计算机与单片机系统连接正常。

引入:点亮一个LED发光二极管程序的下载步骤

(2)在上图所示的主窗口中单击“SelectChip”按钮,左键单击选择单片机应用系统对应的单片机芯片的型号,如图所示。

引入:点亮一个LED发光二极管程序的下载步骤

(3)在上图所示的界面中,点击“擦除”按钮,当下面的提示窗口出现“芯片擦除成功”字样,则表明原单片机芯片里的程序已擦除完毕,如图所示。

引入:点亮一个LED发光二极管程序的下载步骤

(4)在上图所示的界面,点击“调入Flash”按钮,通过路径选择需要烧录的hex文件,如图所示,选中要烧录的hex文件。

引入:点亮一个LED发光二极管程序的下载步骤

(5)在上图所示的界面中,,点击“打开”按钮,则进入如图1-7所示的界面,点击“自动”按钮,则会在如图所示的界面下出现程序下载进度指示,当程序下载完毕,则会在提示窗口出现“成功”的字样。

引入:点亮一个LED发光二极管6、运行测试接通电路板电源,即可观察到LED灯点亮。

1.2认知51单片机控制功能强可靠性高应用优点工业控制结构简单家用电器智能化仪器仪表电子玩具控制功能强可靠性高体积小价格低

1.2.1什么是单片机单片微控制器I/O随机内存中央处理器端口只读存储器中断系统定时器/计数器CPURAMROM集成电路块T/C单片机概念单片机接口电路及外设等硬件系统控制程序软件系统烧录2、单片机应用系统及组成

3、MCS-51系列单片机51单片机是对目前所有兼容Intel8031指令系统的单片机的俗称。该系列单片机的始祖是Intel公司。80C51单片机目前是8位单片机的经典代表。(1)Intel公司的MCS-51系列的单片机Intel公司的8031单片机开创了MCS-51系列单片机的新时代,型号包括8031、8051、8751、80C31、80C51、87C51等。其技术特点如下:基于MCS-51核的处理器结构;32个I/O引脚;2个定时/计数器;5个中断源128(Byte)内部数据存储器。

3、MCS-51系列单片机(2)Atmel公司的MCS-51系列单片机Atmel公司MCS-51系列单片机是目前最受欢迎的单片机,其中应用最广泛地89系列单片机的特点如下:内部含Flash存储器。在系统的开发过程中可以非常方便地进行程序的修改,大大缩短了系统的开发周期。同时,在系统工程中,能有效地保存一些数据信息,即使外界电源损坏也不影响信息的保存。和80C51插座兼容。89系列单片机的引脚与80C51是一样的,所以用89系列单片机可以直接代换80C51。静态时钟方式。89系列单片机采用静态时钟方式,可以节省电能,这对降低便携式产品的功耗十分有用。可以反复系统试验。用89系列单片机设计的系统,可以反复进行系统试验,每次试验可以编入不同的程序,这样可以保证用户系统设计达到最优。而且按照用户的需要,还可以进行修改,使系统不断满足用户的最新要求。型号Flash(KB)ISPEEPROM(KB)RAM(B)fmax(MHz)Vcc(V)I/O引脚UART/16位TimesWDTSPIAT89C20512----128242.7~6.0151/2----AT89C40514----128242.7~6.0151/2----AT89S514Yes--128244.0~5.5321/2Yes--AT89S528Yes--256334.0~5.5321/3Yes--AT89S825316Yes2256242.7~5.5321/3YesYes表1-2Atmel公司MCS-51系列单片机型号表型号Flash(KB)ISPEEPROM(KB)RAM(B)fmax(MHz)Vcc(V)I/O引脚UART/16位TimesWDTSPIAT89C20512----128242.7~6.0151/2----AT89C40514----128242.7~6.0151/2----AT89S514Yes--128244.0~5.5321/2Yes--AT89S528Yes--256334.0~5.5321/3Yes--AT89S825316Yes2256242.7~5.5321/3YesYes

MCS-51单片机内部结构框图

1.2.2MCS-51单片机的内部结构及引脚MCS-51单片机的内部结构1

1.2.2MCS-51单片机的内部结构及引脚1

CPU:CPU是中央处理器的简称,是单片机的核心部件内存:4KB的ROM和256B的RAM23并行I/O接口:共有4个8位并行I/O接口定时器/计数器:2个16位定时器/计数器45中断控制:5个中断源和2个中断优先级6串行接口:异步工作方式的全双工串行通信接口MCS-51单片机的内部结构

8051单片机的引脚2.1.2.2MCS-51单片机的内部结构及引脚1.1.2分析单片机硬件系统STC89C51单片机电源引脚时钟电路引脚控制信号引脚I/O口引脚VCCVSSXTAL1XTAL2P0、P1、P2和P3RST/VPD/VPP

1.2.3MCS-51单片机的最小系统

单片机最小系统是指单片机能进行正常工作的最简单电路。包括单片机、电源电路、时钟电路和复位电路,四者缺一不可。单片机最小系统

时钟电路模块单片机电路模块电源接口复位电路模块1.2.3MCS-51单片机的最小系统a)上电复位b)按键复位

复位是指使单片机内部各寄存器的值变为初始状态。单片机复位的条件:当RST(9引脚)端出现高电平并保持两个机器周期以上。1、复位电路1.2.3MCS-51单片机的最小系统

2、时钟电路单片机需要一个时钟信号来驱动,保证各个操作按一定顺序完成。18XTAL1是时钟信号输入端,19XTAL2是输出端。时钟电路中的电容一般取值为30pF左右,在通常情况下,51单片机使用的晶振频率为6MHz或12MHz,在通信系统中常用11.0592MHz。11.2.4MCS-51单片机的存储器结构单片机内部存储器

在单片机内部具有数据存储器RAM和程序存储器ROM两个内存存储资源。片内数据存储器又叫内部RAM,也叫随机存储器,主要用于数据缓冲和中间数据的暂存,同时这种内存在使用过程中可随时进行写入和读取信息,但在断电时将丢失存储内容。片内程序存储器ROM,也叫只读存储器,主要是用来存放计算机中所事先编制好的程序和表格常数。1.2.4MCS-51单片机的存储器结构

51单片机内部有256个字节(B)的RAM,分为两部分:1、低128字节(单元地址00H~7FH):用于用户数据的存储。2、高128字节(单元地址80H~0FFH):存放51单片机特殊功能寄存器。

1、片内数据存储器1.2.4MCS-51单片机的存储器结构

51单片机芯片中有4KB的片内程序内存单元,其地址为0000H~0FFFH,其中地址为0003H~002AH的单元在使用时是有特殊规定的。

地址为0000H~0002H的3个单元是系统的启动单元,在单片机进入复位后,会自动从0000H单元开始执行指令程序。2、片内程序存储器表1-3中断源地址分配表中断入口地址中断地址区间中断源0003H0003H~000AH外部中断0000BH000BH~0012H定时器/计数器中断T00013H0013H~001AH外部中断1001BH001BH~0022H定时器/计数器中断T10023H0023H~002AH串行口中断1.2.4MCS-51单片机的存储器结构

地址为0003H~002AH的40个单元则被平均分为5段,每段8个单元,分别用作5个中断源的中断地址区。单元2:51单片机开发环境的搭建知识与能力目标熟悉KeilC51软件的开发环境1熟练KeilC51软件的操作过程2Keil主界面窗口

菜单命令栏输出窗口

编辑窗口工程窗口

单元2:51单片机开发环境的搭建1、熟悉KeilμVision2界面Keil开始窗口单元2:51单片机开发环境的搭建2、KeilC51软件的操作过程第一步:启动KeilμVision2新建工程界面单元2:51单片机开发环境的搭建第二步:建立工程文件1、新建工程文件选择工程要保存的路径,然后输入工程文件的名字的界面单元2:51单片机开发环境的搭建第二步:建立工程文件2、选择工程要保存的路径,然后输入工程文件的名字选择芯片型号的界面单元2:51单片机开发环境的搭建第二步:建立工程文件3、选择芯片型号

工程文件已经创建成功的界面。新建程序文件界面单元2:51单片机开发环境的搭建第三步:建立程序文件1、新建程序文件新建文件后出现的界面。保存程序的界面单元2:51单片机开发环境的搭建第三步:建立程序文件2、保存程序文件将文件添加到工程的界面单元2:51单片机开发环境的搭建第三步:建立程序文件3、将文件添加到工程然后单击“AddFiletoGroup’SourceGroup1’选项,出现的对话框。选择“例子1.c”文件,然后单击“Add”按钮及“Close”按钮,出现的界面。#include<reg51.h>//头文件,定义了MCS-51单片机的特殊功能寄存器#include<stdio.h>voidmain(){SCON=0x52;TMOD=0x20;TH1=0xf3;TR1=1;printf(“HellowelcometoKeilC51\n”);while(1);}第三步:建立程序文件4、在编辑窗口编辑程序在输入上述程序时,可以看到事先保存待编辑文件的好处就是:KeilC51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会减少用户犯错误,提高编程的效率。当程序输入完毕后,如图所示的界面。单元2:51单片机开发环境的搭建第四步:配置工程属性将鼠标移到左边窗口的“Target1”上,单击鼠标右键打开快捷菜单,在单击“OptionsforTarget1”选项,具体如图所示。单元2:51单片机开发环境的搭建第四步:配置工程属性弹出如图所示的“OptionsforTarget1”对话框。将Xtal(晶振频率)改为所使用单片机的频率。单元2:51单片机开发环境的搭建第四步:配置工程属性在上图中单击“Output”选项卡,弹出如图所示的界面,点击“CreateExecutable”选项前面的小方框,当小方框内出现“√”时,表明已确认该选项,再单击“确定”按钮,就可产生后缀为.hex的可执行文件,该文件可以下载到单片机的存储器中。单元2:51单片机开发环境的搭建第五步:程序调试在主界面中,单击“Project”菜单,在下拉菜单中单击“BuiltTarget”选项。编译成功后,再单击“Debug”菜单,在下拉菜单中单击“Start/StopDebugSession”选项,如图所示。单元2:51单片机开发环境的搭建第五步:程序调试就会出现如图所示的调试界面。单元2:51单片机开发环境的搭建第五步:程序调试在上图所示的界面中,单击“Debug”菜单中的“Go”选项;然后在单击Debug”菜单中的“StopRunning”选项;再单击“View”菜单中“SerialWindow#1”选项就可以查看运行结果。具体的每一步的操作如图1-3所示,最后的结果如图4所示。图1单元2:51单片机开发环境的搭建第五步:程序调试图2单元2:51单片机开发环境的搭建第五步:程序调试图2单元2:51单片机开发环境的搭建第五步:程序调试图3单元2:51单片机开发环境的搭建第五步:程序调试图4单元3:C51程序设计基础知识与能力目标了解C51的特点、关键字1掌握C51的数据类型(尤其是扩展数据类型)2掌握C51的基本运算、语句3掌握C51的函数、预处理指令4

单元3:C51程序设计基础1对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理23程序有规范的结构,可分成不同的函数,这种方式可使程序结构化具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读45提供的库包含许多标准子程序,具有较强的数据处理能力6由于具有方便的模块化编程技术,使已编好程序可容易地移植C51的优点基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255单元3:C51程序设计基础2、C51的数据类型扩展数据类型单元3:C51程序设计基础2、C51的数据类型1)sfr:定义特殊功能寄存器地址。其定义的语法规则如下:sfr

特殊功能寄存器名称=字节地址常数;例如:sfrP0=0x80;//定义一个特殊功能寄存器变量P02)sfr16:定义双字节特殊功能寄存器地址,其定义的语法规则如下:sfr16双字节特殊功能寄存器名称=字节地址常数;例如:sfr16DPTR=0x82;//定义DPTR低端地址82H扩展数据类型单元3:C51程序设计基础2、C51的数据类型3)sbit:定义能够按位寻址的特殊功能寄存器中的位变量,其定义的语法规则如下:sbit

位变量名=位地址表达式;这里的位地址表达式有三种形式:直接地址、特殊功能寄存器名带位号、字节地址带位号,所以这里的定义方式有三种,分别如下:sbit

位变量名=位地址常数;(位地址常数:特殊功能寄存器内的绝对位地址)sbit

位变量名=特殊功能寄存器名^位号;sbit

位变量名=特殊功能寄存器字节地址^位号;例:特殊功能寄存器P0口的名称及各位的分布如下:以特殊功能寄存器P0口的P0.0位定义为例,三种定义方法如下:方法1:sbitP0_0=0x80;方法2:sbitP0_0=P0^0;方法3:sibtP0_0=0x80^0;扩展数据类型单元3:C51程序设计基础2、C51的数据类型4)bit:定义片内RAM的位变量。其值只有0或1。但注意不能用它定义指针,也用其不能定义数组。例:bitN3_4;//定义一个片内RAM位变量N3_4补充说明:1、C51编译器在头文件“reg51.h”中定义了全部sfr、sfr16和sbit变量,因此当我们程序中如果需要使用这些,可以用一条预处理命令#include<reg51.h>把这个头文件包含到C51程序中,无须重新定义即可使用。2、使用sbit的几点说明:用sbit定义的位变量必须能够按位操作,而不能对无位操作功能的位定义位变量。用sbit定义的位变量必须放在函数外面作为全局变量,而不能在函数内部定义。用sbit每次只能定义一个位变量。单元3:C51程序设计基础3、标识符和关键字1)C语言中标识符是指软件开发者在程序中自定义的字符序列,用来命名程序中需要辨认的对象,包括:符号常量、变量、数组及函数等。标识符的定义注意事项如下:由字母、数字、下划线构成。首字符必须是字母或下划线。长度不得大于32个字符,通常是8个字符。严格区分大小写字母。不应该使用C语言中的保留标识符来做自定义的变量或函数等的标识符。单元3:C51程序设计基础3、标识符和关键字2)下面列出了C语言的所有关键字,在使用时应慎用这些关键字,不要将其作为标识符来用:Auto、enum、restrict、unsigned、break、extern、return、void、case、float、short、volatile、char、for、signed、while、const、goto、sizeof、Bool、continue、if、static、default、inline、struct、_Imaginary、do、int、switch、double、long、typedef、else、register、union等。1)算术运算符71注意:“/”:参与运算的变量都是整数时,结果也为整数,舍去小数;若除数或被除数中一个为负数,则结果随机器而定。、“%”:参与运算的变量必须都是整数。4、C51的基本运算单元3:C51程序设计基础2)自增、自减运算符:“++”、“--”72++i与i++的区别:举例:i的初值为3j=++i;//先i=3+1=4,再将4赋值给jj=i++;//先将i的值3赋值给j,再将i的值加1,变为4前置运算和后置运算的区别:前置运算是变量的值先加1或减1,然后再以该变量变化后额值参加其它运算。后置运算是变量的值先参加有关运算,然后变量的值再加1或减1。相关知识点3)关系运算符:73关系表达式一般形式:表达式关系运算符表达式关系表达式的值:真(成立)用“1”表示

假(不成立)用“0”表示4)逻辑运算符:74逻辑表达式一般形式:表达式逻辑运算符表达式逻辑表达式的值:真(成立)用“1”表示

假(不成立)用“0”表示5)位运算符:75举例:设下列程序执行前,value已经定义为unsignedchar,且

value=0x83,分析每一条语句执行后value的值。value|=0x17; //value=value&=0x34; //value=value^=0x0f; //value=value=~value; //value=value=value>>1; //value=value=value<<2;//value=0x970x14

0x1B

0xe4

0x72

0xc8

6)赋值运算符:771)基本赋值运算符“=”:其功能是把某个常量、变量或表达式的值赋值给另外一个变量。2)复合赋值运算符复合赋值运算符有:“+=”、“-=”、“*=”、“/=”、“%=”、“^=”、“~=”、“&=”、“|=”、“<<=”、“>>=”。例如:i+=2;等价于i=i+2;a%=5;等价于a=a%5;7)强制类型转换运算符:78其一般形式为:(类型说明符)(表达式)其功能是:把表达式的运算结果强制转换为类型说明符所表示的类型。单元3:C51程序设计基础4、C51的基本语句if语句第一种形式:if(表达式)语句举例:输出两个整数中的较大者80if语句第二种形式:if(表达式)语句1;else语句2;81举例:输出两个整数中的较大者82if语句第三种形式:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式n)语句nelse语句n+183举例:输入1~7转换为对应的星期英文switch语句switch语句的一般格式是:switch(变量){ case常量1:语句1; case常量2:语句2;case常量3:语句3;…….case常量n:语句n;default:语句n+1;}执行switch语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量后的语句;若都不相等,则执行default后的语句。举例:自动售货机商品价格的查询任务描述:自动售货机可以售出薯片3.0元,爆米花2.5元,巧克力4.0元,可乐3.5元四种商品。在屏幕上显示菜单。当用户输入编号1~4时,显示相应商品的价格;输入其它编号,显示价格为0。解决方案:(1)定义整型变量x用于存放用户输入编号(2)定义双精度实型变量y用于存放价钱(3)根据x值使用switch语句判断用户选择商品价格y的值(4)输出商品价格y程序while语句一般格式:while(表达式)

循环体语句;执行过程:89任务描述:小张的行李箱密码忘记,密码是四位,每位密码是由0~9之间的数字构成。请编写模拟小张寻找密码的过程。举例:寻找密码任务分析:密码是一个四位整数,而四位整数的取值范围是0000~9999,共计10000个,那么我们需要在这10000个四位整数中逐个寻找,直到找到与密码符合的四位整数为止。91解决方案:(1)定义整形变量password用于存放密码(2)定义整形变量value,赋初值0,用于存放每次比较的四位整数(3)用value的值与password的值进行比较,若不相等则修改value的值(value++)继续进行比较,直到找到为止(4)输出找到的四位密码(5)返回程序do-while语句一般格式:do{

循环体语句;}while(表达式);执行过程:94请用do-while语句改写上面寻找密码的函数。for语句一般格式:for(表达式1;表达式2;表达式3){

循环体语句;}执行过程:96表达式1:初值表达式,对循环变量赋初值表达式2:条件表达式,给出循环的条件循环体语句:被反复执行的语句表达式3:步长表达式,改变循环变量的值任务描述:由计算机随机生成100以内的一个整数,用键盘输入你猜的整数(假定1~99内),与计算机产生的被猜数比较,若相等,显示猜中;若不相等,显示与被猜数的大小关系,最多允许猜5次,如果用户猜的次数大于5次,则提示游戏结束。案例四:猜数字游戏任务分析:要求计算机随机产生一个0~99的一个整数,设置一个计数器控制猜的次数,最多5次。98解决方案:(1)本例要使用随机函数,这些函数包含在头文件:stdlib.h和timen.h中(2)定义整形变量key用于存放随机数(3)定义整形变量temp存放用户猜的数字(4)定义整形变量i作为循环变量(5)调用srand()设置随机数种子(6)调用rand()函数产生1~100之间的随机数(7)使用循环让用户进行猜数字游戏,用计数循环语句for语句控制循环5次。如果不到5次猜对,则利用break语句,提前结束程序;如果用户猜的次数达到5次仍没猜对,则循环正常结束。程序相关知识点101break语句break语句用在switch语句中,使程序跳出switch语句,执行switch语句后的语句。break语句用于while、do-while、for语句中使程序终止循环,而执行循环体后面的其他语句相关知识点102continue语句只用于while、do-while、for语句中,跳过循环中剩下的语句,而强制执行下一次循环。103C程序是由函数构成,函数是C语言程序的基本模块,通过对函数模块的调用实现特定的功能。1)函数的定义:一般形式:函数返回值类型函数名(形式参数列表){

声明部分

执行部分}1064、C51函数相关知识点—函数2)函数的分类:从用户角度分:标准函数和用户自定义函数。从参数形式分:无参函数和有参函数。从函数返回值来分:无返回值函数和有返回值函数。1073)函数的声明:

C语言程序,对函数实行“先定义,后调用”的原则。即:如果函数定义在调用前,则可以直接调用,无需声明;但如果函数定义在调用之后,则先声明才能调用。标准库函数的声明:程序开头部分用#include进行文件包含。用户自定义函数的声明:函数返回值类型函数名(形式参数列表);4)函数的调用:一般来说,按照函数在程序中出现的位置来划分,C语言有三种常用的函数调用方式:函数表达式。函数作为表达式中的一项出现在表达式中,以函数的返回值参与表达式的运算。函数语句。把函数调用作为一个语句。函数参数。函数作为另外一个函数调用的实际参数。108举例:输入立方体的长、宽、高,求体积及三个面的面积。109相关知识点—编译预处理1)宏定义用标识符来代表一个字符串(给字符串取个名字)。C语言用“#define”进行宏定义。宏定义分为:不带参数的宏定义和带参数的宏定义。不带参数的宏定义:#define标识符字符串1106、C51的编译预处理相关知识点—编译预处理带参数的宏定义:#define标识符(参数表)字符串111说明:带参数宏定义的本质仍然是是参数替换,容易发生错误。所以为了避免出错,建议将宏定义“字符串”中所有形参用括号括起来。宏定义带参数时应注意宏名与参数表之间不能有空格。带参数的宏定义与函数相似但两者有本质的区别:函数调用在程序运行时;带参数的宏定义在编译时进行字符串替换。函数调用时,会给形参分配临时的内存单元;宏展开时不给形参分配内存空间。函数的形参要定义类型,且要求形参和实参类型一致。宏参数不存在类型问题。112相关知识点—编译预处理2)文件包含C语言中,扩展名为“.h”的文件被称为头文件。文件包含命令以“#include”开始的预处理命令,其功能是将指定的文件内容嵌入到文件包含命令所在的地方。格式:#include“文件名”

#include<文件名>113相关知识点—编译预处理3)条件编译预处理程序提供了条件编译功能,可以按照不同的条件编译不同的程序部分,产生不同的目标代码文件。114单元4:单片机应用系统的开发方法知识与能力目标熟悉单片机应用系统的开发过程1熟悉单片机应用系统的开发方法2熟悉Proteus仿真软件的基本操作31、单片机应用系统的开发流程产品定型定型设计;组装正式产品;编写技术报告及使用说明书;产品验收;交付使用或投入批量生产硬件设计硬件电路原理图的设计;元器件的选择;印制电路板的设计;组装并进行初步电气检查;软件设计绘制软件功能图;确定算法和数据结构;划分程序模块,画流程图;编写程序,编译、连接;仿真调试;联机调试检查硬件、排除故障;装入软件运行,并调试;反复调试直至符合设计要求;脱机运行考核模拟现场脱机运行;现场运行考核,考核系统的稳定性、可靠性和抗干扰性;有针对性的解决问题,直至系统能稳定运行;任务的提出总体论证项目调研、可行性分析;确定项目实现功能;确定项目实现的技术指标;确定系统的组成方案;总体设计系统功能分配;确定软硬件任务及相互关系;单片机系统的选型;拟定调试方案和手段;单片机应用系统的开发方法通常有两种:通过硬件仿真器开发单片机应用系统通过软件模拟开发单片机机应用系统单元2:51单片机开发环境的搭建2、单片机应用系统的开发方法:Proteus软件认知及使用1.Proteus软件初步认知1.Proteus软件初步认知1.Proteus软件初步认知Proteus软件是由英国LabCenterElectronics公司开发的EDA工具软件。是目前世界上最先进、最完整的多种型号微处理器系统的设计与仿真平台,真正实现了在计算机中完成电路原理图设计、电路分析与仿真、微处理器程序设计与仿真、系统测试与功能验证到形成印制电路板的完整电子设计、研发过程。

Proteus软件由ISIS(IntelligentSchematicInputSystem)和ARES(AdvancedRoutingandEditingSoftware)两部分组成,其中ISIS主要完成原理图设计和交互仿真,ARES主要用于PCB设计,生成PCB文件。ProteusISIS启动界面Proteus软件认知及使用浏览对象方位控制按钮

标题栏菜单栏标准工具栏

浏览窗口

图形编辑窗口绘图工具栏

对象选择按钮对象选择器窗口

ProteusISIS的工作界面Proteus软件认知及使用花样流水灯仿真电路图

Proteus软件认知及使用ProteusISIS原理图设计的举例

Proteus软件认知及使用1)新建设计文件2)保存设计文件3)添加元器件

4)放置元器件5)总线的绘制ProteusISIS原理图设计步骤6)元器件的连接7)元器件与总线的连接

8)给与总线连接的导线贴标签2413打开仿真电路原理图;“ProgramFile”栏中单击图示,选择“花样流水灯.HEX”文件;

在ProteusISIS编辑窗口中单击或在“Debug”菜单中选择“”,开始仿真运行。Proteus软件认知及使用ProteusISIS仿真单击选中单片机,弹出“EditComponet”对话框,设置“ClockFrequency”为12MHZ;任务1:数码管显示显示器及其接口单片机系统中常用的显示器有:发光二极管LED(LightEmittingDiode)显示器、液晶LCD(LiquidCrystalDisplay)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。LED数码管结构和原理字符编码限流电阻计算编程实现静、动态显示LED数码管结构及原理

共阴极共阳极LED数码管字符编码共阴数码管码表

0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0 1 2 345

0x7d,0x07,0x7f,0x6f,0x77,0x7c,

6 7 8 9AB

0x39,0x5e,0x79,0x71

CDEF LED数码管字符编码共阳数码管码表

0xC0,0xF9,0xA4,0xB0,0x99,0x92,

0 1 2 345

0x82,0xF8,0x80,0x90,0x88,0x83,

6 7 8 9AB

0xC6,0xA1,0x86,0x8E

CDEF 限流电阻的计算

单片机外接数码管,数码管的内部结构是LED发光二极管,电路必须使用电阻进行限流。串联电阻,避免损坏单片机的输出引脚,同时防止LED发光二极管过热损害,也能限制LED发光二极管的功耗。一般单片机驱动引脚能够承受的电流输入在10~15mA左右,串联的限流电阻计算如下:R=(5V–Vd)/IdId为限制电流,取值10mA,Vd为LED发光二极管的正向电压,取值2V,从而得到限流电阻值如下:R=(5V-2V)/10mA=300(欧)在实际设计中,为了有效保护单片机引脚,一般对LED发光二极管驱动采用的限流电阻比300欧大,常用的典型值为470欧。LED静态显示

静态显示是指数码管显示某一字符时,相应的发光二极管恒定导通或恒定截止。举例1:单片机控制1位数码管上显示2。硬件电路设计软件程序设计

分析思考:硬件连好了,如何让数码管上显示2呢?数字2的共阳极的字型编码是0xa4,当P0口输出数据0xa4时,单片机的P0口的P0.7……P0.1、P0.0引脚输出10100100,数码管的COM端接高电平,则LED数码管上有5段点亮,见上图的a、b、d、e、g,所以数码管上显示数字2。单片机控制在LED数码管显示数字2,参考程序如下:#include<reg51.h>voidmain() //单片机控制LED数码管显示2{unsignedcharcodeled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管的字符编码0,1,2,3,4,5,6,7,8,9unsignedchari;while(1){i=2;P0=led[i];}}LED动态显示动态显示是按位轮流点亮各位数码管的显示方式。即在任一时段,只有其中一位数码管“位选端”有效,并送出相应的字形显示编码,其它的数码管此时都因为“位选端”无效而处于熄灭状态。下一个时段按顺序选通另外一位数码管,并送出相应的字形显示编码,依此规律循环下去,即可使各位数码管分别间断显示出相应的字符。只要每位显示间隔时间足够短,就会看到各数码管好像是“同时”显示。举例:设计程序实现四个LED从左到右循环依次显示0,1,2,3,4,并用PROTUES进行仿真。硬件电路设计软件程序设计上图中标为1234引脚的称为位选,控制选择某一个数码管,确定显示的位置;标为ABCDEGDP的称为段选,控制选择数码管中哪几段点亮,确定显示的字型。图中单片机从P2口向数码管输出数字“4”的段码,此时所有的数码管都接收到“4”的段码,哪个数码管显示“4”由数码管的公共端决定,即位选码决定。此时第4个数码管的公共端为低电平,其他数码管的公共端为高电平,因此只有第4个数码管显示“4”,其他数码管不显示任何数字。图中数码管上显示数字“1234”,实际是先输出位选信号选中第1个数码管,输出1的段码,延时一段时间后选中第二个数码管,输出2的段码,延时一段时间后。又输出位选码选中第3个数码管,输出3的段码,延时一段时间后,又输出位选码选中第4个数码管,输出4的段码……,反复这个过程,就可以显示出“1234”,由于交替的速度非常快,利用视觉暂留,人眼看到的就是连续的“1234”。软件程序流程图参考程序#include<reg51.h>voiddelay(unsignedchari);unsignedcharch[4]={0x06,0x5b,0x4f,0x66};//共阴数码管1、2、3、4的字型码voidmain(){while(1){ P3=0x0fe;//位选,选通第1个数码管

P2=ch[0]; //段选,数码管的字型码

delay(20);//延时

P3=0xfd;//位选,选通第2个数码管

P2=ch[1]; delay(20); P3=0xfb;

P2=ch[2]; delay(20); P3=0xf7; P2=ch[3]; delay(20);}}voiddelay(unsignedchari){unsignedcharj,k;

for(k=0;k<i;k++)

for(j=0;j<255;j++);}任务扩展:实现四位数码管循环显示0~9999。提示:注意区分4位数码管是共阴管还是共阳管。任务2:蜂鸣器发音理论学习:蜂鸣器1、蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。按其驱动方式的不同,可分为:有源蜂鸣器(内含驱动线路)和无源蜂鸣器(外部驱动)

2、有源蜂鸣器和无源蜂鸣器的区别1)外观

2、有源蜂鸣器和无源蜂鸣器的区别2)驱动方式注意:“源”指的是震荡源,而不是电源。有源蜂鸣器内部带有震荡源,只要一通电就会叫。无源蜂鸣器内部不带震荡源,必须用2K~5K的方波信号去驱动才能发声。

2、有源蜂鸣器和无源蜂鸣器的区别3)引脚长短有源蜂鸣器引脚一脚长一脚短,有正负之分无源蜂鸣器引脚一样长,无正负之分

3、有源蜂鸣器和无源蜂鸣器的区分1)看外观2)用外用表用万用表电阻档Rxl

档测试:用黑表笔接蜂鸣器“+”引脚,红表笔在另一引脚上来回触碰,如果觉发出咔、咔声且电阻为8Ω(或16Ω)的是无源蜂鸣器;如果能发出持续声音,且电阻在几百欧以上的,是有源蜂鸣器。

有源蜂鸣器发音及举例任务:编程实现声音报警,报警时发出“嘟嘟”的响声。1)硬件设计:蜂鸣器一端接高电平,另一端接三极管的集电极,三极管发射极接地,三极管的基极接单片机端口P2.7。当三极管的基极为高电平饱和导通蜂时,蜂鸣器就会发声了。电路下图所示:小知识:为什么单片机不直接接控制蜂鸣器呢?因为长声蜂鸣器5V(SOT塑封封装)的参数为:直流有源蜂鸣器:电压:3.5—5.5V;电流:<25mA;频率:2300±500Hz;而51单片机高电平输出能力很弱,输出电流弱,驱动电流一般不超过20ma所以用三极管扩流驱动。软件设计:自行练习项目2带闹钟的数字钟的设计与制作系统功能仿真演示项目要求在基于单片机设计制作一个带闹钟的数字钟,用数码管显示时间,有启动、停止和时间调整、闹钟等功能,具体功能描述如下:1)系统以秒为计时单位,通过四位数码管实现时间的倒计时显示,即显示的时间范围为0~9999秒。2)系统具有启动/暂停计时功能,通过按键来实现。3)系统可通过按键实现时间调整,即分/秒的加减。4)当系统到达设定时间,蜂鸣器发出“嘟嘟”的响声,响3秒。

系统方案设计(1)总体结构设计:根据带闹钟的数字钟的功能要求,进行了系统的总体设计。该系统由51单片机模块、按键控制模块、蜂鸣器模块、数码管显示模块、电源模块5个模块组成。其系统结构总体框图如图1所示。

晶振电路复位电路单片机按键控制模块蜂鸣器数码管显示模块项目任务1、数码显示2、蜂鸣器3、键盘4、定时/计数器任务要求理解本任务的软、硬件原理,然后以个人为单位,完成如下任务:硬件电路板的制作、调试;程序的编写和仿真;软硬件的联调。任务3:键盘的应用1、键盘的分类键盘分编码键盘和非编码键盘。在单片机组成的测控系统及智能化仪器中,用的最多的是非编码键盘。非编码键盘有分为:独立式非编码键盘和行列式非编码键盘。2、键盘的结构常用的机械式按键,按键是4脚封装,内部2脚相连,图(b)是按键的背面图,用万用表测试4只引脚的通断。1号和2号引脚是连通的,3号和4号引脚是连通的。硬件连接时注意引出按键4个引脚中不相通的2个引脚,如按键的对角上的两个引脚。

按键与单片机引脚相连后,按键按下或闭合会影响单片机引脚状态,读取引脚状态,推断按键是否按下,从而达到输入信息的目的。3、独立式按键

独立式按键是指各按键相互独立地接通一条输入数据线。当任何一个键按下时,与之相连的输入数据线即可读入数据0,而没有按下时读入1。独立式键盘的电路简单,易于编程,但占用的IO口线较多,当需要较多按键时可能产生IO资源紧张问题。独立按键的三种接法的分析1)当按键闭合时,单片机引脚接地,当按键断开时,单片机引脚不能稳定工作,因为处于高阻态,易受干扰。独立按键的三种接法的分析2)当按键闭合时,单片机引脚接地,当按键断开时,单片机引脚被上拉电阻拉为高电平,按键闭合或按下,单片机引脚的电平稳定,是一种标准的接法。独立按键的三种接法的分析3)当按键断开时,单片机引脚接地,当按键闭合时,单片机引脚直接和电源相连,这种接法短路电流大,易烧毁单片机I/O口电路,是危险的连接方法。4、独立按键读取引脚状态的方法

软件方面如何读取引脚状态呢?有查询法和中断法。普遍采用查询法。查询法是CPU读取连接按键的单片机端口的电平状态,如果读取的是低电平,就确认该端口对应的按键已按下,如果读取的是高电平,就确认该端口对应的按键没按下。

提示:因为51系列单片机的端口是准双向口,在读引脚前,需要先对输入端口置1。

举例:读P1.0bits1;//定义位变量s1,保存按键通断状态P1_0=1;S1=P1_0;读P1:Unsignedcharsw;//定义字节变量

P1=0xff;Sw=P1;

5、按键的去抖由于机械触点的弹性作用,按键在闭合时不会马上稳定地接地,在断开时也不会立刻断开。通常在闭合和断开的瞬间都伴随有一定时间的触点机械抖动,如下图。抖动时间一般为5

10ms,在触点抖动期间检测按键的通与断状态,可能导致判断出错。因此,为保证CPU对按键的断开和闭合做出正确的判断,就必须消除抖动。按键的去抖—硬件方法在键数较少时可用硬件方法消除键抖动。如图所示的RS触发器为常用的硬件去抖。图中两个“与非”门构成一个RS触发器。当按键未按下时,输出为1;当键按下时,输出为0。此时即使用按键的机械性能,使按键因弹性抖动而产生瞬时断开(抖动跳开B),中要按键不返回原始状态A,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形。也就是说,即使B点的电压波形是抖动的,但经双稳态电路之后,其输出为正规的矩形波。这一点通过分析RS触发器的工作过程很容易得到验证。按键的去抖—硬件方法利用电容的放电延时,采用按键并联电容法,也可以实现消抖。按键的去抖—软件延时法

(a)检测按键(b)释放按键按键去抖流程图软件去抖的原理一:前沿消抖法。读按键状态,判断有键按下,延时10ms,再次读按键状态,有键按下,才确认是哪一个按键,从而消除前沿的抖动。流程如下图(a)。按键的去抖—软件延时法

软件去抖的原理二:在去抖时间内连续多次去读按键所在端口的状态,并与上一次进行对比,若状态改变,则重新初始化去抖时间。直到在去抖时间内,每次读到的口状态都一致时,我们才认为扫描到稳定的按键。流程如下图(C)。举例编写程序,识别图中的8个按键是哪一个键被按下,返回键的编号。

硬件电路按键编号K0K1K2K3K4K5K6K7P1二进制1111111011111101111110111111011111101111110111111011111101111111十六进制0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f/****************获取按键状态的参考程序片段*************///**********按键扫描程序

unsignedcharkeyscan(){unsignedcharsw;//定义变量sw,暂存P1状态的变量

unsignedcharkey//定义变量key,暂存按下键的编号

P1=0xff;//预先对输入端口置1

sw=P1;

switch(sw){ case0xfe:key=0;break; case0xfd:key=1;break; case0xfb:key=2;break; case0xf7:key=3;break; case0xef:key=4;break; case0xdf:key=5;break; case0xbf:key=6;break; case0x7f:key=7;break;} returnkey;//获得按键编号}6、矩阵式按键特点:占用IO口线较少,但软件将较为复杂。判断键盘的位置—常用方法键盘扫描法和反线法。行列式键盘键盘扫描法步骤:第一步:判别有无按键按下。其方法:向所有行给低电平0,所有的列给高电平1。读取此时列线I/O状态,如果不是全高,则有按键按下。第二步:有按键按下,则下一步就是查找按键所在位置,具体步骤:向第0行给低电平0,其它给高电平1,读取所有列的电平状态。如果所有列电平均为高电平,则说明按下的按键不在第0列。反之则找到了该按键。依次对第1列、第2列、第3列如此操作,直到找到按下的按键为止。第三步:对按键进行编码。反线法步骤:①判断哪一列有键压下写端口(0xf0):行线电平=0;列线电平=1。读端口进行判断:若P3=0xf0→没有按键压下。若P3≠0xf0→某列有键压下→则将读取的值赋值给K1。②判断哪一行有键压下写端口(0x0f):行线电平=1;列线电平=0。读端口进行判断:若P3=0x0f→没有按键压下;若P3≠0x0f→某行有键压下→K2。③将K1与K2相“或”并存于K2(形成键值)——闭合键所在行、列的状态均为0,其余皆为1。

第一列第二列第三列第四列第一行

ee de be 7e第二行

ed dd

bd 7d第三行

eb db bb 7b第四行

e7 d7 b7 774*4行列式键盘的各按键的键值举例:按下任意按键后,LED显示器上显示该键的键模(0~F)。练习:在任务1的4位数码管动态显示的基础上,硬件上设计4个独立按键,编程调试仿真实现按下其中一个按键启动显示,按下第2个键停止显示。按下第三个键显示数字加1,按下第4个键,显示数字减1。项目3:

LED点阵广告牌的设计与制作项目的目标及任务1.项目目标掌握单片机的串口的原理。掌握利用74HC595和单片机的串口实现数据的串转并。掌握利用单片机控制LED点阵显示屏符号的显示。2.项目任务基于单片机的LED点阵广告牌功能要求:利用单片机的串口,实现16X16LED点阵上滚动显示汉字。任务1:8×8的LED点阵显示

一、LED点阵屏的结构和显示原理LED点阵显示器是把很多LED发光二极管按矩阵方式排列在一起,通过对每个LED进行发光控制,完成各种字符或图形的显示。最常见的LED点阵显示模块有5×7(5列7行),7×9(7列9行),8×8(8列8行)结构。LED点阵由一个一个的点(LED发光二极管)组成,总点数为行数与列数之积,引脚数为行数与列数之和。1、8*8点阵的外部结构及引脚排布2、8*8点阵的内部结构

共阴极LDM1088AX共阳极LDM1088BX3、LED点阵引脚的测试方法

①用机械式万用表测试管脚的方法。把万用表拨到电阻档×10,先用黑表笔(极性为+)随意选择一个引脚,红表笔碰余下的引脚,看点阵有没发光,没发光就用黑色探针再选择一个引脚,红色探针碰余下的引脚,当点阵发光,则这时黑色探针接触的那个引脚为正极,红色探针碰到就发光的7个引脚为负极,剩下的6个引脚为正极。②用数字万用表的测试方法:把万用表功能开关拨到发光二极管档,将红表笔插入

"HzVm

插孔,黑表笔插入

"COM"插孔,红表笔极性为"+",黑表笔极性为"-",若万用表有读数,同时发光二极管会发光,则此时红表笔所测端为二极管的正极,如果被测二极管开路或极性接反,显示屏将示

"OL"。提示:当测量在线二极管时,测量前必须断开电源,并将相关的电容放电。4、判定LED点阵模块引脚编号

先把器件的引脚正负分布情况记下来,正极(行)用数字表示,负极(列)用字母表示,先定负极引脚编号,黑色探针选定一个正极引脚,红色点负极引脚,看是第几列的二极管发光,第一列就在引脚写A,第二列就在引脚写B,第三列......以此类推。这样就点阵的一半引脚都编号了。剩下的正极引脚用同样的方法,第一行的亮就在引脚标1,第二行就在引脚标2,第三行......5、动态扫描的原理分析

LED点阵的显示过程以用动态扫描法,有逐线阴极扫描和逐线阳极扫描两种。1)行扫描:一行一行的轮流显示,具体如下:先给ROW1行的行控制线送有效电平,其他行送无效电平,控制只可能ROW1行上的发光管亮,把列控制数据送给L0~L7,控制ROW1行上的哪些发光管亮;延时1~3ms后,再给ROW2行的行控制线送有效电平,其他行送无效电平,控制只可能ROW2行上的发光管亮,把列控制数据送COL1~COL8,控制ROW2行上的哪些发光管亮;延时1~3ms后……最后给ROW8行的行控制线送有效电平,其他行送无效电平,控制只可能ROW8行上的发光管亮,把列控制数据送给COL1~COL8,控制ROW8行上的哪些发光管亮;延时1~3ms,如此反复。2)列扫描:同上原理一样,唯一不同的就是它是按列轮流显示。行与行之间的延时为行周期,所有行扫描完为场周期,行周期和场周期的时间是多少呢?场周期的时间不超过人的视觉暂留时间,取20ms为场周期,行周期为20ms/8,取1~3ms。时间短了,会重影或全亮,时间长了会闪烁。任务实施举例:心形图形1234567812345678方案一:单片机I/O直接控制参考程序:#include<reg51.h>unsignedchartable1[16][2]={0xfe,0x1c,0xfd,0x3e,0xfb,0x7e,0xf7,0xfc,0xef,0xfc,0xdf,0x7e,0xbf,0x3e,0x7f,0x1c};unsignedchartable2[8][2]={0xfe,0x00,0xfd,0x18,0xfb,0x3c,0xf7,0x78,0xef,0x78,0xdf,0x3c,0xbf,0x18,0x7f,0x00};unsignedint

i,j;voidmain(){ TMOD=0x01; TH0=0xfc; TL0=0x18; TR0=1; EA=1; ET0=1; P0=0xff; P1=0x00; while(1); }voidt0_inter()interrupt1{ TH0=0xfc; TL0=0x18; P0=table1[i][0]; P1=table1[i][1]; i=i+1;

if(i==8)i=0;

}方案二:单片机串口控制补充知识:1、串行通信的相关知识;2、51单片机的串行口;3、数据的串行并行转换;1、串行通信的相关知识计算机通信是计算机技术和通信技术的相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。可以分为两大类:并行通信与串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送。并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。

串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。

串行通信的传输方向单工:通讯的A方只能送,而B方只能接收——广播式。例如:除了用于远程通信外,系统内部单片机以串行方式接收外围芯片(ADC)的数据;或者控制外围芯片(DAC、LCD等)工作。发送方A接收方BTXDRXD串行通信的传输方向半双工 在某一时刻A方只能发送,B方只能接收;而在另一时刻B方只能发送,A方只能接收——对讲机模式。例如:除了用于远程通信外,系统内部单片机与串行接口的RAM、E2PROM之间的数据交换。发送方A接收方BTXDRXDTXDRXD串行通信的传输方向全双工:A、B双方可以同时发送和接收数据——手机模式。例如:两台单片机系统之间的数据串行交换。发送方A接收方BTXDRXDTXDRXD2、51单片机的串行口具有一个“全双工”的通讯能力串行接口。 其中:P3.0端口作RXD——数据接收端;

P3.1端口作TXD——数据发送端。与串行口相关的SFR有:1、SBUF---数据缓冲寄存器(存放发送和接收的数据)2、

SCON---串口控制寄存器(设定串行接口工作模式、表征串口的工作状态)3.PCON---电源及波特率选择寄存器(使波特率加倍)数据缓冲寄存器SBUF在MCS-51的串行口电路中,SBUF是用来存放发送和接收数据的两个物理上独立的数据缓冲寄存器,但地址都是99H。那单片机

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论