从零开始入门学习单片机教程2_第1页
从零开始入门学习单片机教程2_第2页
从零开始入门学习单片机教程2_第3页
从零开始入门学习单片机教程2_第4页
从零开始入门学习单片机教程2_第5页
已阅读5页,还剩251页未读 继续免费阅读

下载本文档

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

文档简介

从零开始入门学习单片机教程演示文稿目前一页\总数二百五十六页\编于十八点(优选)从零开始入门学习单片机教程.目前二页\总数二百五十六页\编于十八点单片机有什么用应该学什么样的单片机学习单片机需什么基础如何学好单片机学前准备,单片机学习开发环境的建立第一课初识单片机目前三页\总数二百五十六页\编于十八点单片机有什么用?工业控制系统数据采集系统智能化仪器仪表通讯设备......目前四页\总数二百五十六页\编于十八点应该学什么样的单片机?在我们这个课程中,我们将选用51系列单片机作为讲解。51单片机同时也是学习,ARM、DSP、FPGA等,高端应用的基础知识。目前五页\总数二百五十六页\编于十八点学习单片机要什么基础?1.有信心,有恒心;2.只要撑握最基本的数电模电知识;3.对各种器件的认识大家都是从0开始;4.单片机编程,只要会简单的C语言基础知识。目前六页\总数二百五十六页\编于十八点如何学好单片机1.要领:理论与实践并重,实践先行;2.学习总是从模仿开始;3.举一反三;目前七页\总数二百五十六页\编于十八点学前准备1.电脑一台2.单片机C语言书一本3.开发板一块目前八页\总数二百五十六页\编于十八点51单片机C语言程序设计教程本视频配套书籍:——王云编著目前九页\总数二百五十六页\编于十八点课程内容安排基础篇基于单片机最小系统,介绍单片机的基础知识;及单片机C语言基础知识。实战篇以YL-51开发板为平台,逐个讲解开发板上各个模块的使用,把各器件模块讲解清楚。通过实践深化理解数字电路的概念、C语言的基本应用以及C语言如何同实际电路发生联系。提高篇讲解单片机应用的扩展知识,及编程技巧。讲授单片机项目开发的流程及方法。目前十页\总数二百五十六页\编于十八点课后作业安装以下两个软件:1、STC-ISP下载软件2、KEIL编程软件目前十一页\总数二百五十六页\编于十八点第二课点亮一个发光二极管目前十二页\总数二百五十六页\编于十八点什么是单片机?如何选择单片机?单片机能做什么?目前十三页\总数二百五十六页\编于十八点单片机指以8051为核心的单片机,统称为MCS51单片机。是在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,简称单片机。MCS51单片机如8031,8751,8032,8052,8752等该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的。1.1什么是单片机?8051是美国INTEL公司,生产的一系列单片机中最早最典型的产品。目前十四页\总数二百五十六页\编于十八点1.2近年来推出MCS51的主要产品有:

﹡ATMEL公司的89C51、89C52系列;

﹡Philips公司的80C51、80C52系列;

﹡华邦公司的W78C51、W77C51高速低价系列;

﹡LG公司的GMS90/97低压高速系列;

﹡宏晶公司的STC89C51、STC89C52系列。

目前十五页\总数二百五十六页\编于十八点1.380C51的引脚封装总线型非总线型目前十六页\总数二百五十六页\编于十八点2.单片机内部资源三大指标1、FLASH(程序存储空间ROM)2、RAM(数据存储器)3、SFR(特殊功能寄存器)单片机内集成了一些常用的I/O接口电路,如并行的I/O端口、串行口、定时器/计数器、中断控制器等,这些I/O接口单元电路,统称为特殊功能寄存器(SFR)。目前十七页\总数二百五十六页\编于十八点单片机的选择STC89C52:8KFLASH,512字节RAM,32个I/O口,

3个定时器,1个UART,8个中断源。SST89E516:64KFLASH,1024字节RAM,32个I/O口,3个定时器,1个UART,10个中断源。支持与KEIL连线进行在线仿真。目前十八页\总数二百五十六页\编于十八点单片机最小系统特点:用最少的元件组成的单片机工作系统。由四大硬件组成:单片机、电源电路、晶振电路、复位电路。目前十九页\总数二百五十六页\编于十八点31脚是内部程序存储器和外部程序存储器选择端。为高电平时,访问内部程序存储器;为低电平时,则访问外部程序存储器。目前二十页\总数二百五十六页\编于十八点

点亮一个LED发光二极管发光二极管:通常红色贴片LED:正向压降1.6-2.4V,电流2-20mA。2-5mA亮度有明显变化,5mA以上亮度基本没变化。R≈V/I一般应用取I=3~5mA,则R=?。LED与单片机,成为一个最小的控制单元,实现控制发光二极管的亮灭。目前二十一页\总数二百五十六页\编于十八点目前二十二页\总数二百五十六页\编于十八点特殊功能寄存器声明

语法:sfrsfr_name=int_constant

例:sfrP0=0x80;

sfrSCON=0X98;特殊功能位声明

例:sbitCY=PSW^7;

sbitLED=P1^0;目前二十三页\总数二百五十六页\编于十八点Main函数

格式:voidmain()

特点:无返回值,无参。

任何一个C程序有且仅有一个main函数,它是整个程序开始执行的入口。

例:voidmain()

{

总程序从这里开始执行;

其他语句;

}目前二十四页\总数二百五十六页\编于十八点三、建立独立的KEIL工程:

1.点亮第一个发光管

2.点亮最后一个发光管3.点亮一、三、五、七二、理解单片机单片机最小系统的组成。一、了解发光二极管参数及限流电阻计算方法。作业

4.点亮二、四、五、六目前二十五页\总数二百五十六页\编于十八点第三课C51基础知识及流水灯设计目前二十六页\总数二百五十六页\编于十八点电平特性单片机的数制C51的特点C51基础知识C51简介目前二十七页\总数二百五十六页\编于十八点关于电平特性1、数字电路中只有两种电平(本课程中)定义单片机为TTL电平高电平:+5V低电平:0V2、RS232电平:计算机串口

高电平:-12V低电平:+12V

所以计算机串口与单片机进行通信时,需加电平转

换芯片MAX232。目前二十八页\总数二百五十六页\编于十八点单片机的数制1、单片机内部的数制:二进制2、单片机编程常用的数制:十六进制目前二十九页\总数二百五十六页\编于十八点二进制数字电路中的两种电平特性决定了它

0 0 6 1101 1 7 1112 10 8 10003 11 9 10014 100 10 10105 101 11 1011目前三十页\总数二百五十六页\编于十八点十六进制数

是二进制的简短表示形式。

十进制中的0-15在十六进制数中分别表示为0、

1、2、3、4、5、6、7、8、9、A、B、C、

D、E、F熟练掌握二进制与十六进制之间的转换。

规律:一般把四个二进制数放在一起转换成一个十六进制数,转换时先把二进制数转换成十进制数,再把十进制数转换成十六进制数。目前三十一页\总数二百五十六页\编于十八点如:0001B→1→1HB表示为二进制,H为十六进制1001B→9→9H1010B→10→AH10011010→154→9AH目前三十二页\总数二百五十六页\编于十八点

各种进制的对应关系目前三十三页\总数二百五十六页\编于十八点二进制数的逻辑运算1."与"运算

"与"运算是实现“必须有,否则就没有”这种逻辑关系的一种运算。运算符为“

·

其运算规则如下:

0·0=0;0·1=1·0=0;1·1=1目前三十四页\总数二百五十六页\编于十八点2."或"运算

"或"运算是实现“只要其中之一有,就有”这种逻辑关系的一种运算,其运算符为“

+”

“或”运算规则如下:

0+0=0;0+1=1+0=1;1+1=1目前三十五页\总数二百五十六页\编于十八点3.是“非”运算

“非”运算是实现“求反”这种逻辑的一种运算,如变量A的“非”运算记作“

A”其运算规则如下: 1=0;0=1目前三十六页\总数二百五十六页\编于十八点4.“异或”运算“异或”运算是实现“必须不同,否则就没有”这种逻辑的一种运算。运算符为“⊕”。其运算规则是:0⊕0=0;0⊕1=1⊕0=1;1⊕1=0目前三十七页\总数二百五十六页\编于十八点C51的特点C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。因此,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。目前三十八页\总数二百五十六页\编于十八点C-51的优点:1、对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解。2、寄存器分配,不同存贮器的寻址及数据类型等细节可由编译器管理。3、程序有规范的结构,可分成不同的函数,这种方式可使程序结构化。4、提供的库包含许多标准子程序,具有较强的数据处理能力。5、由于具有方便的模块化编程技术,使已编好程序可容

易地移植。目前三十九页\总数二百五十六页\编于十八点C-51的基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(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目前四十页\总数二百五十六页\编于十八点+ -*/(加减乘除)> >=<<=(大于大于等于小于小于等于)==!=(测试等于测试不等于)

&&|| !(逻辑与逻辑或逻辑非)>><< (位右移位左移)& | (按位与按位或)^ ~ (按位异或按位取反)

C-51的运算符:(与C语言基本相同)目前四十一页\总数二百五十六页\编于十八点C-51的基本语句与标准C语言基本相同:

if选择语言

switch/case多分支选择语言

while循环语言

do-while循环语言

for循环语言目前四十二页\总数二百五十六页\编于十八点常用的延时方法一.非精确延时方法1.for(i=0;i<100;i++);2.i=100;while(i--);二.精确延时方法1.利用库函数_nop_();(需要include<intrins.h>)2.利用定时器进行定时(后边的课程进行介绍)目前四十三页\总数二百五十六页\编于十八点流水灯实验8个发光二极管,分别对应单片机I/O口的P1.0到P1.7,8个单片机IO口组成一个字节,在程序编写过程中,可以直接用P1来进行操作。C语言的8位二进制数代表了8个I/O口P1=0XFE;它是二进制11111110的简短表示形式, 它分别表示

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0

11111110

目前四十四页\总数二百五十六页\编于十八点1.了解单片机C语言都有哪方面的内容。2.掌握延时语句的用法及运行时间计算。3.用3个LED小灯做一个交通灯的程序。4.根据原理图,独立完成流水灯反方向流动,和全部点亮到一个个熄灭。

作业目前四十五页\总数二百五十六页\编于十八点第四课数码管结构及静态显示原理数码管的结构和显示原理数码管静态显示数组的定义及调用子程序调用、带参数子程序设计目前四十六页\总数二百五十六页\编于十八点

数码管,根据内部结构,可分为共阴极数码管和共阳极数码管。七段发光管加上一个小数点,共计8段。因此我们对它编码时,刚好是用一个字节。共阴极共阳极共阴极共阳极目前四十七页\总数二百五十六页\编于十八点显示段符号十六进制代码dpgfedcba共阴极0123456789AbCdEF无00000000000000000001111101111011101000111011111011010100010101111110101101101101111001101111111110100011111001111001000101101111110101100x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x710x00共阴数码管真值表目前四十八页\总数二百五十六页\编于十八点数码管的显示方法(2)动态显示。(1)静态显示。目前四十九页\总数二百五十六页\编于十八点——>静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是占用I/O口多,增加了电路的复杂性。(1)静态显示。目前五十页\总数二百五十六页\编于十八点(2)动态显示。——>动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。目前五十一页\总数二百五十六页\编于十八点数组二.数组定义:类型说明符数组名[表达式];三.数组赋值:inta[5]={A,B,C,D,E}inta[]={A,B,C,D,E}a[0]=A;a[1]=B;a[2]=C;a[3]=D;a[4]=E;一.数组需满足三个条件:1.元素具有相同的数据类型2.用不同的下标来区分数组中的元素3.在存储器中是被连续存放的目前五十二页\总数二百五十六页\编于十八点函数定义的一般形式1.无参函数的定义形式类型标识符函数名(){声明部分语句}2.有参函数的定义形式类型标识符函数名(形式参数列表){声明部分语句}目前五十三页\总数二百五十六页\编于十八点中断概念单片机中断的应用单片机的定时器应用第五课中断与定时器目前五十四页\总数二百五十六页\编于十八点单片机的中断系统

一、中断的概念CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断产生);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A中断的地方继续处理事件A(中断返回),这一过程称为中断。目前五十五页\总数二百五十六页\编于十八点MCS-51单片机的中断系统结构执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回目前五十六页\总数二百五十六页\编于十八点引起CPU中断的根源叫做中断源。中断源向CPU的请求,叫做中断请求。CUP暂时中断原来的事件A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。目前五十七页\总数二百五十六页\编于十八点随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率;实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强;可靠性高。CPU具有处理设备故障及掉电等突发性事件能力。从而使系统的可靠性提高。目前五十八页\总数二百五十六页\编于十八点8051中断系统的结构8051的中断系统有5个中断源,2个优先级,可实现二级中断嵌套。目前五十九页\总数二百五十六页\编于十八点8051中断系统的结构图目前六十页\总数二百五十六页\编于十八点当中断源满足条件产生中断请求时,中断请求标记志位会置1。向CPU申请中断。CPU响应中断时,TCON的中断请求标记位由硬件自动清除;

SCON则须为软件清零。中断源与标记位关系目前六十一页\总数二百五十六页\编于十八点8051中断系统的结构图IT0外部中断0(INT0)触发方式选择位,由软件设置。1、低电平触发方式,INT0(P3.2)引脚上低电平可引起中断。2、下降沿触发方式,INT0(P3.2)引脚上电平由高变低负跳变可引起中断。目前六十二页\总数二百五十六页\编于十八点中断允许控制位在IE特殊功能寄存器上的分布中断优先级控制位在IP特殊功能寄存器上的分布目前六十三页\总数二百五十六页\编于十八点在8051单片机中有两个定时器/计数器,分别称为定时器/计数器0和定时器/计数器1。

(在本课程中)将采用:

T/C0:表示定时器/计数器0

T/C1:表示定时器/计数器1

T0:表示定时器0

T1:表示定时器1

C0:表示计数器0

C1:表示计数器1如果是对内部振荡源12分频的脉冲信号进行计数(即对每个机器周期计数),它是定时器(T0,T1)。如果是对单片机引脚T0(P3.4)或T1(P3.5)输入的外部脉冲信号进行计数,则它是计数器(C0,C1)。定时器/计数器的概念目前六十四页\总数二百五十六页\编于十八点定时/计数器(T/C)的结构图

一、定时/计数器的结构:1、由两个加1计数寄存器(由高8位和低8位两个寄存器组成,共16位),分别对应T/C0和T/C1.2、TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能。3、TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。目前六十五页\总数二百五十六页\编于十八点加1计数寄存器输入的计数脉冲有两个来源:1、一个是由系统的时钟振荡器输出脉冲经12分频后送来;2、一个是从单片机引脚T0(P3.4)或T1(P3.5)输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零;且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。

目前六十六页\总数二百五十六页\编于十八点

二、控制寄存器TCON

TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控制定时/计数器的启动和中断申请。其格式如下:TF1(TCON.7):T/C1溢出中断请求标志位。T/C1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T/C1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。TR1(TCON.6):T/C1运行控制位。TR1置1时,T/C1开始工作;TR1置0时,T/C1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。TF0(TCON.5):T/C0溢出中断请求标志位,其功能与TF1类同。TR0(TCON.4):T/C0运行控制位,其功能与TR1类同。目前六十七页\总数二百五十六页\编于十八点三、工作方式寄存器TMOD工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T/C0,高四位用于T/C1。其格式如下:GATE:门控位。GATE=0时,只要使TCON中的TR0或TR1为1,就可以启动定时/计数器(T/C)工作。(其中:TR0对应T/C0;TR1对应T/C1)GATA=1时,要满足两个条件,才能启动定时/计数器(T/C)工作:使TR0或TR1为1。同时外部中断引脚INT0/1也为高电平时。(INT0对应T/C0;INT1对应T/C1)

:定时/计数模式选择位。=0为定时模式;=1为计数模式。目前六十八页\总数二百五十六页\编于十八点M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。方式1:常用的16位定时器/定数器。(本节课主要讲:方式1定时器模式)方式2:主要用在串口波特率发生器。(在串口通信里再作详细讲解)方式0和方式3:几乎不用。目前六十九页\总数二百五十六页\编于十八点

四、方式1(定时器0模式)方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。16位定时器0装初值的计算公式:假设要计的个数是n,TH0=(65536-n)/256

TL0=(65536-n)%256目前七十页\总数二百五十六页\编于十八点8051的基本时序周期振荡周期:为单片机提供振荡源的周期(是指振荡源的两个相邻同方向峰值之间的时间)机器周期:1个机器周期等于12个振荡周期若:fosc=12M,则8051的各周期参数如下:振荡周期=1/12us;机器周期=1us;目前七十一页\总数二百五十六页\编于十八点初始化程序应完成如下工作:1、对TMOD赋值,以确定T0和T1的工作方式。2、计算初值,并将其写入TH0、TL0或TH1、TL1。3、使TR0或TR1置位,启动定时/计数器定时或计数。4、中断方式时,则对IE赋值,开放中断。定时/计数器应用举例

目前七十二页\总数二百五十六页\编于十八点作业1、利用定时/计数器T1从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。试设计程序。2、利用定时/计数器T0产生定时时钟,由P1口控制8个发光二极管。编一个程序,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期)。3、用定时器以间隔500MS在6位数码管上依次显示0、1、

2、3….C、D、E、F,重复。目前七十三页\总数二百五十六页\编于十八点

第六课数码管动态显示及定时器应用目前七十四页\总数二百五十六页\编于十八点中断请求主程序执行主程序执行中断处理程序继续执行主程序断点中断响应中断返回MCS-51单片机的中断系统结构目前七十五页\总数二百五十六页\编于十八点三、工作方式寄存器TMOD工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T/C0,高四位用于T/C1。其格式如下:GATE:门控位。GATE=0时,只要使TCON中的TR0或TR1为1,就可以启动定时/计数器(T/C)工作。(其中:TR0对应T/C0;TR1对应T/C1)GATA=1时,要满足两个条件,才能启动定时/计数器(T/C)工作:使TR0或TR1为1。同时外部中断引脚INT0/1也为高电平时。(INT0对应T/C0;INT1对应T/C1)

:定时/计数模式选择位。=0为定时模式;=1为计数模式。目前七十六页\总数二百五十六页\编于十八点M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。方式1:常用的16位定时器/定数器。(本节课主要讲:方式1定时器模式)方式2:主要用在串口波特率发生器。(在串口通信里再作详细讲解)方式0和方式3:几乎不用。目前七十七页\总数二百五十六页\编于十八点动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描,即是通过分时轮流送出字形码和相应的位选,使各个数码管轮流受控显示。在轮流显示过程中,每1位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O口,而且功耗更低。

动态显示目前七十八页\总数二百五十六页\编于十八点1、利用动态扫描方法在六位数码管上显示出稳定654321。2、用动态扫描方法和定时器0在数码管的前三位显示出秒表,精确到1%秒,即后两位显示1%秒,一直循环下去。3、

利用动态扫描和定时器0在数码管上显示出从543210开始以1%秒的速度往下递减直至543111并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,同时蜂鸣器发声,当数码管上数减到停止时,实验板上流水灯全部闪烁4次,数码管全熄灭。单片机进入休眠状态。课后练习目前七十九页\总数二百五十六页\编于十八点

第七课键盘的应用目前八十页\总数二百五十六页\编于十八点以下为键盘输入信息的主要过程如下:1、CPU判断是否有按键按下。2、确定按下的是哪一个按键。3、把此按键代表的信息翻译成CPU所能识别的代码,如ASCII或其他特征码。以上第2,3步由专用硬件编码器完成的,称为编码键盘。如果由软件完成的,称为非编码键盘。在单片机组成的各种系统中,用的最多的是非编码键盘;当然也可以使用编码键盘。键盘的分类目前八十一页\总数二百五十六页\编于十八点非编码键盘又分为:独立键盘和行列式键盘(矩阵键盘)目前八十二页\总数二百五十六页\编于十八点欢迎进入云龙电子科技大讲堂S2S3S4S5目前八十三页\总数二百五十六页\编于十八点独立键盘的检测过程:先给按键对应的I/O口置1;再来读这个I/0是否等于1;若是1,说明按键没有按下,若是0,说明按键已按下。独立键盘的检测

目前八十四页\总数二百五十六页\编于十八点按键在闭合和断开时,触点会存在抖动现象:

前沿抖动后沿抖动按键抖动时间由按键的机械特性决定:一般为5ms~10ms。

目前八十五页\总数二百五十六页\编于十八点欢迎进入云龙电子科技大讲堂目前八十六页\总数二百五十六页\编于十八点矩阵键盘检测原理:查询是否有键按下。键的抖动处理。查询按下键所在行和列位置,并对行号和列号译码,得到键值。目前八十七页\总数二百五十六页\编于十八点1、数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。2、在上题的基础上,用另外三个独立键盘实现按下第一个时计时停止,按下第二个时计时开始,按下第三个是计数值清零从头开始。3、按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1,第二个显示4...作业目前八十八页\总数二百五十六页\编于十八点第八课D/A转换器与单片机接口目前八十九页\总数二百五十六页\编于十八点D/A转换器及其与单片机接口常用电阻分压/分流来实现D/A转换,让模拟量的输出变化与数字量的输入变化成线性关系。一.D/A转换器的基本原理及分类2.分为权电阻解码网络与T型解码网络两种构建方法,其中又以T型解码网络最为常用。目前九十页\总数二百五十六页\编于十八点D/A转换器及其与单片机接口二.T型电阻网络D/A转换器:第个2R支路的电流均为上一个支路的1/2:I7=(Vref/2R)I6=(Vref/2R)/2I5=(Vref/2R)/4I4=(Vref/2R)/8I3=(Vref/2R)/16I2=(Vref/2R)/32I1=(Vref/2R)/64I0=(Vref/2R)/128

目前九十一页\总数二百五十六页\编于十八点三、D/A转换器的主要性能指标1、分辨率分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。分辨率与输入数字量的位数有确定的关系,可以表示成FS/。FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。2、线性度线性度(也称非线性误差)是实际转换特性曲线与理想直线特性之间的最大偏差。常以相对于满量程的百分数表示。如±1%是指实际输出值与理论值之差在满刻度的±1%以内。目前九十二页\总数二百五十六页\编于十八点3、绝对精度和相对精度绝对精度(简称精度)是指在整个刻度范围内,任一输入数码所对应的模拟量实际输出值与理论值之间的最大误差。绝对精度是由DAC的增益误差(当输入数码为全1时,实际输出值与理想输出值之差)、零点误差(数码输入为全0时,DAC的非零输出值)、非线性误差和噪声等引起的。绝对精度(即最大误差)应小于1个LSB。相对精度与绝对精度表示同一含义,用最大误差相对于满刻度的百分比表示。目前九十三页\总数二百五十六页\编于十八点4、建立时间建立时间是将一个数字量转换为稳定模拟信号所需的时间。是描述D/A转换速率的一个动态指标。电流输出型DAC的建立时间短。电压输出型DAC的建立时间主要决定于运算放大器的响应时间。根据建立时间的长短,可以将DAC分成超高速(<1μS)、高速(10~1μS)、中速(100~10μS)、低速(≥100μS)几档。应注意,精度和分辨率具有一定的联系,但概念不同。DAC的位数多时,分辨率会提高,对应于影响精度的量化误差会减小。但其它误差(如温度漂移、线性不良等)的影响仍会使DAC的精度变差。目前九十四页\总数二百五十六页\编于十八点DAC0832芯片及其与单片机接口

DAC0832是使用非常普遍的8位D/A转换器,由于其片内有输入数据寄存器,故可以直接与单片机接口相连。DAC0832以电流形式输出,当需要转换为电压输出时,可外接运算放大器。属于该系列的芯片还有DAC0830、DAC0831,它们可以相互代换。DAC0832主要特性:分辨率8位;电流建立时间1μS;数据输入可采用双缓冲、单缓冲或直通方式;输出电流线性度可在满量程下调节;逻辑电平输入与TTL电平兼容;单一电源供电(+5V~+15V);低功耗,20mW。

目前九十五页\总数二百五十六页\编于十八点DAC0832内部结构及引脚锁CS目前九十六页\总数二百五十六页\编于十八点目前九十七页\总数二百五十六页\编于十八点DAC0832利用WR1

、WR2

、ILE、XFER控制信号可以构成三种不同的工作方式。DAC0832工作方式目前九十八页\总数二百五十六页\编于十八点1、单缓冲工作方式两个寄存器之一始终处于直通,即WR1=0或WR2=0,另一个寄存器处于受控状态。目前九十九页\总数二百五十六页\编于十八点2、双缓冲工作方式

两个寄存器均处于受控状态。这种工作方式适合于多模拟信号同时输出的应用场合。目前一百页\总数二百五十六页\编于十八点3、直通工作方式当DAC0832芯片的片选信号、写信号、及传送控制信号的引脚全部接地,允许输入锁存信号ILE引脚接+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。目前一百零一页\总数二百五十六页\编于十八点第九课A/D转换器与单片机接口目前一百零二页\总数二百五十六页\编于十八点

A/D将连续变化的模拟信号转换为数字信号。目前一百零三页\总数二百五十六页\编于十八点双积分型A/D转换器。逐次逼近比较型AD/转换器。并行A/D转换器。根据A/D电路的工作原理可分为以下几大型:目前一百零四页\总数二百五十六页\编于十八点逐次逼近式ADC的转换原理目前一百零五页\总数二百五十六页\编于十八点A/D转换器的主要技术指标1、分辨率ADC的分辨率是指使输出数字量变化一个最小量时模拟信号的变化量。常用二进制的位数表示。例如8位ADC的分辨率就是8位,或者说分辨率为满刻度FS的1/28

。一个5V满刻度的8位ADC能分辨输入电压变化最小值是5V×1/28=19.53mV。目前一百零六页\总数二百五十六页\编于十八点2、量化误差ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。实际上,要准确表示模拟量,ADC的位数需很大甚至无穷大。一个分辨率有限的ADC的阶梯状转换特性曲线与具有无限分辨率的ADC转换特性曲线(直线)之间的最大偏差即是量化误差。

目前一百零七页\总数二百五十六页\编于十八点3、偏移误差偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。4、满刻度误差满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。目前一百零八页\总数二百五十六页\编于十八点5、线性度线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。6、绝对精度在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。7、转换速率ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。目前一百零九页\总数二百五十六页\编于十八点第十课1602液晶的显示原理及应用

1、1602液晶硬件原理。

2、1602液晶操作时序。

3、如何在1602液晶上显示一个字符A。

4、如何在1602液晶上显示一串字符。

目前一百一十页\总数二百五十六页\编于十八点目前一百一十一页\总数二百五十六页\编于十八点第十一课串口通信1、80C51的串行口结构和工作原理2、单片机串行口编程应用举例目前一百一十二页\总数二百五十六页\编于十八点通信基础知识计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。目前一百一十三页\总数二百五十六页\编于十八点并行通信通常是将数据字节的各位用多条数据线同时进行传送。并行通信特点:控制简单、传输速度快;但传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。目前一百一十四页\总数二百五十六页\编于十八点串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。目前一百一十五页\总数二百五十六页\编于十八点一、串行通信的传输方向1、单工单工是指数据传输仅能沿一个方向,不能实现反向传输。2、半双工半双工是指数据传输可以沿两个方向,但需要分时进行。3、全双工全双工是指数据可以同时进行双向传输。

单工半双工全双工目前一百一十六页\总数二百五十六页\编于十八点串行通信的分类

分为两大类:异步通信与同步通信1、异步通信

异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。目前一百一十七页\总数二百五十六页\编于十八点

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。目前一百一十八页\总数二百五十六页\编于十八点异步通信的数据格式:异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。目前一百一十九页\总数二百五十六页\编于十八点2、同步通信同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。

外同步自同步目前一百二十页\总数二百五十六页\编于十八点串行通信接口标准

一、RS-232C接口

RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。1、机械特性RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头)目前一百二十一页\总数二百五十六页\编于十八点公头母头串口线(公对母)串口线(母对母)串口线(公对公)目前一百二十二页\总数二百五十六页\编于十八点2、功能特性目前一百二十三页\总数二百五十六页\编于十八点80C51串行口

SBUF为两个物理上独立的接收、发送缓冲器,它们有相同的名字和地址空间,共用地址99H,但不会产生冲突;因为接收器只能被CPU读出数据;发送缓冲器只能被CPU写入数据,不会产生重叠错误。

80C51串行口的结构目前一百二十四页\总数二百五十六页\编于十八点

SCON是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

80C51串行口的控制寄存器

SM0和SM1为工作方式选择位,可选择四种工作方式:目前一百二十五页\总数二百五十六页\编于十八点●SM2,多机通信控制位,主要用于方式2和方式3。1.当SM2=1时,只有接收到第9位数据(RB8)为1,RI才会置1,(此时RB8具有控制RI激活的功能;进而在中断服务中将数据从SBUF读走)。2.当SM2=0时,收到字符R1就置1,使收到的数据进入SBUF,(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。●REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。目前一百二十六页\总数二百五十六页\编于十八点●TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式0和方式1中,该位未用,默认为0。●RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。目前一百二十七页\总数二百五十六页\编于十八点●TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。●RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。目前一百二十八页\总数二百五十六页\编于十八点PCON中只有一位SMOD与串行口工作有关

SMOD(PCON.7)波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。目前一百二十九页\总数二百五十六页\编于十八点

80C51串行口的工作方式一、方式0

方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。

1、方式0输出目前一百三十页\总数二百五十六页\编于十八点

2、方式0输入方式0接收和发送电路目前一百三十一页\总数二百五十六页\编于十八点

二、方式1

方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。

1、方式1输出目前一百三十二页\总数二百五十六页\编于十八点

2、方式1输入用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。目前一百三十三页\总数二百五十六页\编于十八点

三、方式2和方式3

方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚。方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。目前一百三十四页\总数二百五十六页\编于十八点

1、方式2和方式3输出发送开始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。第一次移位时,停止位“1”移入输出移位寄存器的第9位上,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求中断。目前一百三十五页\总数二百五十六页\编于十八点

2、方式2和方式3输入接收时,数据从右边移入输入移位寄存器,在起始位0移到最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器SBUF和RB8(接收数据的第9位),置RI=1,向CPU请求中断。如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。目前一百三十六页\总数二百五十六页\编于十八点四、波特率的计算

串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率=fosc/12方式2的波特率=(/64)·fosc方式1的波特率=(/32)·(T1溢出率)方式3的波特率=(/32)·(T1溢出率)目前一百三十七页\总数二百五十六页\编于十八点当定时器1作波特率发生器使用时,通常选用可自动装入初值模式(方式2),在方式2中,TL1作为计数用,而自动装入的初值放在TH1中,假设计数初值为x,则每过“256-x”个机器周期,定时器T1就会产生一次溢出。这时溢出率取决于TH1中的计数值。T1溢出率=溢出周期的倒数;溢出周期=(256-TH1)×12/Fosc;(其中:12/Fosc表示一个机器周期)因此方式1和方式3:波特率:Baud=(2×Fsoc)/{32×12×(256-TH1)}我们一般不太关注波特率的计算,而是关心选用的波特率(传输速度)去反算定时器1(自动重装模式)的初值(TH1),所以将上面的公式导一下,得到TH1的公式:TH1=256-(Fsoc×2)/(12×32×Baud)目前一百三十八页\总数二百五十六页\编于十八点在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。目前一百三十九页\总数二百五十六页\编于十八点

串行口工作之前,应对其编程进行初始化设置,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:确定T1的工作方式(编程TMOD寄存器);计算T1的初值,装载TH1、TL1;启动T1(编程TCON中的TR1位);确定串行口控制(编程SCON寄存器);串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。目前一百四十页\总数二百五十六页\编于十八点1.以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上动态显示出来,波特率自定。2.按下矩阵键盘第一行时以1200bps发送,1,2,3,4,第二行时以2400bps发送5,6,7,8,第三行以4800bps发送,9,10,11,12,第四行以9600pbs发送,13,14,15,16.3.以2400bps从计算机发送任一字节数据,当单片机收到该数据后,在此数据基础上加1,然后把加1后的数据发回给计算机。4.用AD以1HZ的频率采集模拟信号,然后转换成数字量,再将其以1200bps发送到计算机,在计算机上显示。作业目前一百四十一页\总数二百五十六页\编于十八点第十二课I2C串行总线原理及模块化编程方法目前一百四十二页\总数二百五十六页\编于十八点单片机系统-常见的存储器件介绍常见存储器件:铁电,EEPROM,FLASH共同特点:掉电后数据不丢失各自特点:铁电:理论上可以无限次擦写,操作简单,但容量小。EEPROM:理论上擦写次数在30W到100W不等,操作简单,容量中等。FLASH:理论上擦写次数在10W到100W不等,容量大,但操作复杂,若要改变一个字节就要改变整个扇区。目前一百四十三页\总数二百五十六页\编于十八点我们单片机系统用得最多的是I2C接口的EEPROM。比如24C系列的,有24C01、24C02、24C04、

24C08等。

常用的串行扩展总线有:I2C(InterICBUS)总线、单总线(1-WIREBUS)、SPI(SerialPeripheralInterface)总线及Microwire/PLUS等。常见的EEPROM芯片按其接口方式来分,有I2C、Microwire、SPI三种。本节课我们主要讨论I2C总线工作原理和应用方法。目前一百四十四页\总数二百五十六页\编于十八点I2C串行总线概述

I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。

I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。目前一百四十五页\总数二百五十六页\编于十八点

I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。目前一百四十六页\总数二百五十六页\编于十八点每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。

在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。

在80C51单片机应用系统的串行总线扩展中,我们经常遇到的是以80C51单片机为主机,其它接口器件为从机的单主机情况。

目前一百四十七页\总数二百五十六页\编于十八点I2C总线在传送数据过程中共有三种特殊类型信号,它们分别是:I2C总线的数据传送终止信号起始信号应答信号目前一百四十八页\总数二百五十六页\编于十八点一、起始和终止信号

SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。

目前一百四十九页\总数二百五十六页\编于十八点

起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。主机可以采用不带I2C总线接口的单片机,如80C51、AT89C2051等单片机,利用软件实现I2C总线的数据传送,即软件与硬件结合的信号模拟。I2C总线的起始信号、终止信号、可以让单片机I/O口不断的发送“0”和发送“1”进行模拟时序:目前一百五十页\总数二百五十六页\编于十八点模块化编程的优点随着代码量的增加,将所有代码都放在同一个.C文件中的做法,会使得程序结构混乱、可读性与可移植性变差;而模块化编程是解决这个问题的常用而有效的方法。目前一百五十一页\总数二百五十六页\编于十八点模块化设计原则:“高内聚,低耦合”高内聚:一个C文件里面的函数,只有相互之间的调用,而没有调用其它文件里面的函数,这样可以视为高内聚。尽量减小不同文件里函数的交叉引用。低耦合:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每一个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。目前一百五十二页\总数二百五十六页\编于十八点模块化编程-创建步骤第一步:创建头文件例如:I2C函数相关的源文件与头文件命名为i2c.c与i2c.h。建立一个.C文件(源文件)和一个.h文件(头文件)。原则上文件可以任意命名;但强烈推荐如下原则:.c文件与.h文件同名;文件名要有意义,最好能够体现该文件代码的功能定义。目前一百五十三页\总数二百五十六页\编于十八点第二步:头文件中需要防重复包含处理防止头文件在被多个文件引用的时候,让编译器在编译时不会多次编译。在.h文件中加入如下代码1#ifndefXXX2#defineXXX3//此处添加代码(比如声明或定义语句)4#endif其中的XXX原则上可以是任意字符,在同一个工程中各个.h文件的XXX不能相同,因此强烈推荐如下的规则:将.h文件的文件名全部都大写,“.”替换成下划线”_”,首尾各添加2个下划线”__”作为XXX。目前一百五十四页\总数二百五十六页\编于十八点第三步:代码封装将需要模块化的代码封装成函数与宏定义。.C文件中放置内容通常是:函数体。或者只被本.c文件调用的宏定义。.h文件中放置内容通常是:对需要被外部调用的函数要在.h文件中声明一下。需要被外部调用的宏定义要放在.h文件中。目前一百五十五页\总数二百五十六页\编于十八点第四步:添加源文件将.c文件添加到工程之中;.h的不用添加到工程里面。同时在.c文件里把对应的.h文件包含进去。目前一百五十六页\总数二百五十六页\编于十八点目前一百五十七页\总数二百五十六页\编于十八点目前一百五十八页\总数二百五十六页\编于十八点二、I2C总线数据操作

在I2C总线上,数据是伴随着时钟脉冲,一位一位的传送的,数据位由高到低传送,每位数据占一个时钟脉冲。在时钟线SCL为高电平期间,数据线SDA的状态就表示要传送的数据;高电平为数据1,低电平为数据0。在数据传送时,SDA上数据的改变要在时钟线为低电平时完成,而SCL为高电平时,SDA必须保持稳定;否则SDA上的变化会被当作起始或终止信号而致使数据传输停止。目前一百五十九页\总数二百五十六页\编于十八点三、I2C的数据读写和应答每一个字节必须保证是8位长度。数据传送时,先传送最高(MSB)。主机写数据时,每发送一个字节,接收机需要回复一个应答位“0”,通过应答位来判断从机是否接收成功。主机读数据时,接收一个字节结束后,主机也需要发送一个应答位“0”,但是接收最后一个字节结束后,则需发

送非应答位“1”,发完了1后,再发一个停止信号,最终

结束通信。目前一百六十页\总数二百五十六页\编于十八点2.非应答:是一个高电平信号应答:是一个低电平信号。应答位分为:目前一百六十一页\总数二百五十六页\编于十八点1.应答信号ACK:I2C总线的数据都是以字节(8位)的方式传送的,发送器每发送一个字节之后,在时钟的第9个脉冲期间释放SDA数据线,由接收器发送一个ACK(把数据线电平拉低)来表示数据成功接收。目前一百六十二页\总数二百五十六页\编于十八点2.无应答信号NACK在时钟的第9个脉冲期间发送器释放数据线,接收器不拉低数据线表示一个NACK。NACK有两个用途:1.一般表示接收器未成功接收数据字节。2.当接收器是主机时,它收到最后一个字节后,应发送一个NACK,以通知被控从机结束数据发送,并释放总线,以便主机发送一个停止信号。目前一百六十三页\总数二百五十六页\编于十八点目前一百六十四页\总数二百五十六页\编于十八点如何发送I2C总线数据I2C总线发送到SDA线上的每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。依据I2C总线规定,SCL线呈高电平期间,SDA线上的电平必须保持稳定。只有SCL线为低电平期间SDA线上的电平才允许变化。因此发送数据函数可在SCL线为低电平期间将数据赋值给SDA线,由于每一个字节必须为8位,因此循环8次即可将数据传送给从器件。目前一百六十五页\总数二百五十六页\编于十八点如何接收I2C总线数据依据I2C总线规定,SCL线呈高电平期间,SDA线上的电平必须保持稳定,因此应在SCL线为高电平的时候读取SDA数据状态。I2C总线每次传输的是一个字节数据,对于I2C数据的接收同样也应接收8位为一字节数据,因此循环8次即可接收一个字节数据。目前一百六十六页\总数二百五十六页\编于十八点I2C器件写操作基本步骤目前一百六十七页\总数二百五十六页\编于十八点移位操作左移时最低位补0,最高位移入PSW的CY位右移时最高位保持原数,最低位移除。目前一百六十八页\总数二百五十六页\编于十八点作业理解I2C总线的工作原理,对着时序图把各个子函数搞明白;将今天课堂内容自己完全独立做出即可。目前一百六十九页\总数二百五十六页\编于十八点第十三课红外通信原理及应用目前一百七十页\总数二百五十六页\编于十八点红外线:在光谱中,波长在0.76至400微米的一段,我们称为红外线。什么是红外线所有高于绝对零度(-273.15℃)的物质都可以产生红外线。红外线是不可见光线。目前一百七十一页\总数二百五十六页\编于十八点红外通信原理红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。他一般由红外发射和接收系统两部分组成。今天我们就以红外遥控为代表,具体讲一讲红外通信的具体过程。目前一百七十二页\总数二百五十六页\编于十八点红外遥控的优点及应用场合红外线遥控是目前使用最广泛的一种通信和遥控手段。红外线遥控装置的优点:体积小、功耗低、功能强、成本低。应用场合:在家用电器中,彩电、录像机,录音机、音响设备、空凋机以及玩具等产品中应用非常广泛。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。目前一百七十三页\总数二百五十六页\编于十八点红外对管红外发光管:

红外发光二极管通常使用砷化镓(GaAs)、砷铝化镓(GaAlAs)等材料,采用全透明或浅蓝色、黑色的树脂封装。

通电后会产生的光波波长为940nm左右的红外线

温馨提示

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

评论

0/150

提交评论