单片机C语言-第8章 外部串行总线扩展的C51编程1

合集下载

c51单片机c语言教程

c51单片机c语言教程

51单片机C语言学习杂记学习单片机实在不是件易事,一来要购买高价格的编程器,仿真器,二来要学习编程语言,还有众多种类的单片机选择真是件让人头痛的事。

在众多单片机中51 架构的芯片风行很久,学习资料也相对很多,是初学的较好的选择之一。

51 的编程语言常用的有二种,一种是汇编语言,一种是 C 语言。

汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而 C 语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且 C 语言还可以嵌入汇编来解决高时效性的代码编写问题。

对于开发周期来说,中大型的软件编写用 C 语言的开发周期通常要小于汇编语言很多。

综合以上 C 语言的优点,我在学习时选择了 C 语言。

以后的教程也只是我在学习过程中的一些学习笔记和随笔,在这里加以整理和修改,希望和大家一起分享,一起交流,一起学习,一起进步。

*注:可以肯定的说这个教程只是为初学或入门者准备的,笔者本人也只是菜鸟一只,有望各位大侠高手指点错误提出建议。

明浩2003-3-30mailto:pnzwzw@ wzw@第一课建立您的第一个C项目使用C 语言肯定要使用到C 编译器,以便把写好的C 程序编译为机器码,这样单片机才能执行编写好的程序。

KEIL uVISION2 是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C 语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

因此很多开发51 应用的工程师或普通的单片机爱好者,都对它十分喜欢。

以上简单介绍了KEIL51 软件,要使用KEIL51 软件,必需先要安装它。

KEIL51 是一个商业的软件,对于我们这些普通爱好者可以到KEIL 中国代理周立功公司的网站上下载一份能编译2K 的DEMO 版软件,基本可以满足一般的个人学习和小型应用的开发。

I2C总线(主)C51源程序

I2C总线(主)C51源程序

I2C总线(主)C51源程序#define ROMADDRESS 0xA0sfr IIC_CON = 0xA0;sbit WP = IIC_CON^5;sfr IIC_INTER = 0x90;sbit SCL = IIC_INTER^6;sbit SDA = IIC_INTER^7;bit ack; /*应答标志位*/void DelayMs(unsigned char i){unsigned int count;for(i;i!=0;i--)for(count=6;count!=0;count--);}/************************************************************** *********//*名称: IIC_Start()/*说明: 启动I2C总线,即发送I2C起始条件./*输入: 无/*输出: 无/************************************************************** *********/void IIC_Start(void){SCL=1; DelayMs(1);SDA=1; DelayMs(1);SDA=0; DelayMs(1); /*发送起始信号*/SCL=0; DelayMs(1); /*钳住I2C总线,准备发送或接收数据 */ }/***********************************************************************//*名称: IIC_Stop()/*说明: 结束I2C总线,即发送I2C结束条件./*输入: 无/*输出: 无/************************************************************** *********/void IIC_Stop(void){SCL=1; DelayMs(1); /*发送结束条件的时钟信号*/SDA=0; DelayMs(1);SDA=1; DelayMs(1); /*发送I2C总线结束信号*/SCL=0; DelayMs(1);}/************************************************************** *********//*名称: IIC_DataSend()/*说明: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack=0)ack=1表示发送数据正常; ack=0表示被控器无应答或损坏。

单片机原理及接口技术C51编程第1章 单片机概述-PPT课件

单片机原理及接口技术C51编程第1章 单片机概述-PPT课件
8
第四阶段〔1983年~现在〕:8位单片机稳固开展及16位单片机、32位 单片机推出阶段。
16位典型产品Intel公司的MCS-96系列单片机。而32位单片机除具有更 高集成度外,其数据处理速度比16位单片机提高许多,性能比8位、 16位单片机更加优越。
20世纪90年代单片机大开展时期,Mortorola、Intel、ATMEL、德州仪 器〔TI〕、三菱、日立、飞利浦、LG等公司开发一大批性能优越的单 片机,极大推动单片机应用。近年,不少新型高集成度的单片机涌现。 目前,除8位单片机得到广泛应用外,16位单片机、32位单片机也得 到广阔用户青睐。
1.4 单片机的应用 软硬件结合、体积小,容易嵌入到各种应用系统中。得到广泛应用。
12
1.工业检测与控制 主要应用:工业过程控制、智能控制、设备控制、数据采集和传输、测
试、测量、监控等。在工业自动化领域中,机电一体化技术将发挥愈 来愈重要的作用,在这种集机械、微电子和计算机技术为一体的综合 技术〔如机器人技术〕中,单片机发挥着非常重要作用。 2.仪器仪表 目前对仪器仪表的自动化和智能化要求越来越高。单片机的使用有助于 提高仪器仪表的精度和准确度,简化结构,减小体积而易于携带和使 用,加速仪器仪表向数字化、智能化、多功能化方向开展。
2
按用途可分为通用型和专用型两大类。 〔1〕通用型 内部可开发资源〔如存储器、I/O等各种外围功能部件等〕
可全部提供给用户。 根据需要,设计一个以通用单片机芯片为核心,再配以外围接口电路及
外围设备,并编写相应软件来满足各种不同需要的测控系统。通常所 说和本书介绍的是指通用型单片机。 〔2〕专用型 专门针对某些产品的特定用途而制作的。
9
1.3 单片机的特点 单片机是集成电路技术与微型计算机技术高速开展的产物。体积小、价

第8章51单片机外部串行总线扩展的C51编程

第8章51单片机外部串行总线扩展的C51编程

8.1 I2C总线接口技术
• 8.1.1 认识I2C总线 • I2C总线是Philips公司推出的芯片间的 串行传输总线,它采用同步方式接收或 发送信息。 I2C总线以两根连接线实现 全双工同步数据传送,可以极方便地构 成外围器件扩展系统。 • I2C总线的两根线分别为: • ① 串行数据SDA(Serial Data) • ② 串行时钟SCL(Serial Clock)
VCC RP
DS18B20
I/O
单 片 机
GND DQ VCCDQDQ源自…DQ DS18B20
DS18B20 DS18B20
常用的单总线器件:
8.3.2
单总线典型器件DS18B20
8.4
12位串行A/D转换器TLC2543
• TLC2543是TI公司生产的12位串行A/D转 换器,使用开关电容逐次逼近技术完成 A/D转换过程。
【例8-4】模拟输入信号从通道0输入,将 输入的模拟量转换成二进制数在显示器上 显示出来。
【例8-1】AT24C02举例: 将数据“0x55”写入AT24C02,然后将其 读出并发出送到P1口显示。
8.2

SPI总线接口技术
• • • •
SPI是Motorola公司推出的一种同步串行 外设接口,允许MCU与各厂家生产的标准外围 设备直接接口,以串行方式交换数据。SPI用 以下3个引脚完成通信: ① 串行数据输出SDO(Serial Data Out),简称SO。 ② 串行数据输入SDI(Serial Data In),简称SI。 ③ 串行数据时钟SCK(Serial Clock)。 另外挂接在SPI总线上的每个从机还需要 一根片选线。
spi是motorola公司推出的一种同步串行外设接口允许mcu与各厂家生产的标准外围设备直接接口以串行方式交换数据

单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言单片机C51汇编语言单片机(C51)是指一种集成电路上只包含一个集中式控制器的微处理器,具有完整的CPU指令集、RAM、ROM、I/O接口等功能。

汇编语言是一种低级语言,是用于编写单片机指令的一种语言。

汇编语言能够直接操作单片机的寄存器和输入/输出端口,因此在嵌入式系统的开发中非常重要。

本文将介绍单片机C51的汇编语言编程。

一、了解单片机C51单片机C51是目前应用最广泛的一种单片机系列,广泛用于各种电子设备和嵌入式系统的开发。

C51指的是Intel公司推出的一种基于MCS-51架构的单片机。

该系列单片机具有较高的性能和低功耗的特点,可用于各种控制和通信应用。

二、汇编语言的基本概念汇编语言是一种低级语言,与机器语言紧密相关。

它使用助记符来代替机器指令的二进制表示,使程序的编写更加易读。

在单片机C51汇编语言中,每一条汇编指令都对应着特定的机器指令,可以直接在单片机上执行。

三、汇编语言的基本指令在单片机C51汇编语言中,有一些基本的指令用于控制程序的执行和操作寄存器。

以下是一些常用的指令:1. MOV指令:用于将数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。

2. ADD指令:用于将两个操作数相加,并将结果存储到目的寄存器中。

3. SUB指令:用于将第一个操作数减去第二个操作数,并将结果存储到目的寄存器中。

4. JMP指令:用于无条件跳转到指定的地址。

5. JZ指令:用于在条件为零时跳转到指定的地址。

6. DJNZ指令:用于将指定寄存器的值减一,并根据结果进行跳转。

四、编写单片机C51汇编程序的步骤编写单片机C51汇编程序需要按照以下步骤进行:1. 确定程序的功能和目标。

2. 分析程序的控制流程和数据流程。

3. 设计算法和数据结构。

4. 编写汇编指令,实现程序的功能。

5. 调试程序,并进行测试。

六、实例演示以下是一个简单的单片机C51汇编程序的示例,用于实现两个数的相加,并将结果输出到LED灯上:org 0H ; 程序的起始地址为0mov a, 05H ; 将05H赋值给累加器mov b, 07H ; 将07H赋值给B寄存器add a, b ; 将A寄存器和B寄存器的值相加mov P1, a ; 将相加结果输出到P1口end ; 程序结束在这个例子中,首先将05H赋值给累加器A,然后将07H赋值给B寄存器,接着使用ADD指令将A和B的值相加,将结果存储到累加器A中,最后将累加器A的值输出到P1口。

教学课件PPT 89C51单片机的C51程序设计

教学课件PPT 89C51单片机的C51程序设计

程序存储器(64K字节)
对应MOVC @DPTR访问
可位寻址片内数据存储器(16字节,128位) 允许位和字节混合访问
间接寻址片内数据存储器(256字节)
可访问片内全部RAM空间
分页寻址片外数据存储器(256字节)
对应MOVX @R0访问
4.2 C51程序设计基础
C51存储类型定义举例:
unsigned char data x,y,z; /*在内部RAM区定义了3个无符号字节型变量x,y,z*/
40M/80M/100M,而且还有很多是单周期的。
4.2 C51程序设计基础
4.2.1 C51变量/常量存储类型
C51存储类型 对应89C51单片机存储器空间
data
直接寻址片内数据存储器(128字节)
xdata
片外数据存储器(64K字节)
说明 访问速度快 对应MOVX @DPTR访问
code bdata idata pdata
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4
switch/case
5
while
6
do-while
7
for
8
函数
含义 赋值语句 条件语句 条件运算符 多分支语句 循环语句 循环语句 循环语句 模块化程序设计
4.2 C51程序设计基础
表4-6 常用语句
序号 语句
1
=
2
if
3
表达式1 ? 表达式2 : 表达式3
4.3 C51程序举例
例4:把外部数据RAM中从地址2000H单元开始的100个有符号 数逐一取出,若为正数则放回原单元,若为负数则求补后放回。

C51单片机扩展存储器的设计

C51单片机扩展存储器的设计

可整理ppt
33
注意:
(1)MCS—51 对外部数据存贮器的操作指令
MOVX MOVX MOVX MOVX
A,@Ri @Ri, A
只能寻址较小的外部数据存贮器空间
A,@DPTR @DPTR, A
能对64KB的外部数据存贮器空间寻址
(2)由于89C51采用不同的控制信号和指令 ,尽管 ROM与RAM的地址是重叠的,也不会发生混乱。
38
本章小结:
➢AT89C51可扩展的外部存储器分为2个64K空间:程序存储器空 间和数据存储器空间 ➢总线构成:地址总线:P0和P2口;
数据总线:P0口; 控制总线:ALE、PSEN、EA、WR、RD ➢片选方法:线选法和地址译码法
可整理ppt
39
可整理ppt
19
例 要扩8片8KB的ROM 2764
可整理ppt
20
3、外部地址锁存器
地址锁存器芯片: 74LS373、74LS573等。 锁存器74LS373
数据输出 允许信号
OE G D Q 011 1 010 0 0 0 × 不变 1 ×× 高阻态
数据输入锁存 选通信号
可整理ppt
21
4、单片机与EPROM的接口电路
可整理ppt
25
6、使用一片E2PROM
可整理ppt
26
三、数据存储器RAM的扩展
片内资源 ➢8051片内RAM的容量:128B ➢片外最大可扩展64K RAM。
1、RAM芯片
❖可用来扩展的存储器芯片:SRAM 6116,6264,62256 等
也要用到锁存器芯片:例74LS373。
可整理ppt
两片程序存储器的地址范围:
2732(1)的地址范围:7000H~7FFFH; 2732(2)的地址范围: B000H~BFFFH; 6116(1)的地址范围:E800H~EFFFH; 6116(2)的地址范围:D800H~ DFFFH。

微机原理与单片机接口技术(第2版)李精华 第8章 微处理器控制系统的接口扩展

微机原理与单片机接口技术(第2版)李精华 第8章  微处理器控制系统的接口扩展

8.1.2 编址技术
所谓编址,就是通过51单片机地址总线,使片外扩展的存 储器和I/O口中的每个存储单元或元器件,在51单片机的寻址 范围内均有独立的地址,以便51单片机使用该地址能唯一地选 中该单元。51单片机对外部扩展的存储器和I/O设备进行编址 的方法有两种:线选法和译码法。 1、线选法
所谓线选法,就是直接选定单片机的某根空闲地址线作为 存储芯片的片选信号。 2、译码法
由P0口作为地址线低8位,P2口作为地址线高8位,构 成16位地址,寻址范围为64KB。由于P0口分时复用为 地址总线和数据总线,除提供低8位地址之外,又要 作为数据口,地址和数据分时控制输出。为避免地址 和数据的冲突,低8位地址必须用锁存器锁存。也就 是在P0口外加一个锁存器,当ALE为下降沿时,将低8 位地址锁存。
位(LSB)所对应的输入模拟电压的变化量。分辨率定义 为转换器的满刻度电压(基准电压)VFSR与2n的比值,即
分辨率= VFSR 式中,n为A/D转2换n器输出的二进制位数,n越大,分
辨率越高。分辨率取决于A/D转换器的位数,所以习惯上 用输出的二进制位数或BCD码位数表示。
8.2 A/D转换器与D/A转换器简介
2.A/D转换器的主要技术指标 • (2)量化误差:模拟量是连续的,而数字量是断续
的,当A/D转换器的位数固定后,数字量不能把模拟 量所有的值都精确地表示出来,这种由A/D转换器有 限分辨率所造成的真实值与转换值之间的误差称为量 化误差。一般量化误差为数字量的最低有效位所表示 的模拟量,理想的量化误差容限是±1/2LSB。
三、教学难点
I2C总线接口的程序设计。
四、教学方式
8.1 单片机的外部并行总线
8.1.1 并行总线结构 51单片机具有外部并行总线,分为地址总线(AB)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3、写操作方式
(1)字节写 在字节写模式下,主机发送起始命令和器件地址信
息(R/W位置0),主机在收到AT24CXX产生的应答信号后, 发送1~8位字节地址,写入AT24CXX的地址指针。对于高 于8位的地址,主机连续发送两个8位字节地址,写入 AT24CXX的地址指针。主机收到AT24CXX回答后,再发 送数据到被寻址的存储单元。 AT24CXX再次回答,在主 机发出停止信号后开始内部数据的擦写。
2、AT24CXX系列串行E2PROM的寻址
(1)寻址方式字节
AT24CXX系列串行E2PROM寻址方式字节 中的高4位(D7~D4)为器件地址, AT24CXX系 列固定为1010;寻址字节中D3、D2、D1为引脚 地址。
(2)应答信号
I2C总线数据传送时,每成功传送1字节数 据后,接收器件都必须产生一个应答信号。接 收器件在第9个时钟周期时将SDA线拉低,表示 已收到一个8位数据。
第8章 外部串行扩展的C51编程
8.1 I2C总线接口技术 8.2 SPI总线接口技术 8.3 单总线(1-wire)接口技术 8.4 串行A/D接口芯片TLC2543的C51编程
外部串行扩展的特点及应用领域:
• (1)串行扩展连接线灵活,占用单片机资源少, 系统结构简化,极易形成用户的模块化结构。
(3)应答信号(ACK):I2C总线传送数据时, 每传送一个字 节数据后都必须有应答信号, 与应答信号相对应的时钟 由主器件产生。 这时发送方必须在这一时钟上释放总线, 使其处于高电平状态,以便接收方在这一位上送出应答信 号。 应答信号在第9个时钟位上出现, 接收方输出低电平 为应答信号。
I2C总线上的应答信号和非应答信号
(4)非应答信号(ACK): 每传送完一字节数据后,在第9个 时钟位上接收方输出高电平为非应答信号。 由于某种原因 而使接收方不产生应答时(如接收方正在进行其他处理而无 法接收总线上的数据),则必须释放总线, 将数据线置高电 平,然后主控器可通过产生一个停止信号来终止总线数据 传输。 当主器件接收来自从器件的数据时, 接收到最后一 个字节数据后,必须给从器件发送一个非应答信号(ACK), 使从器件释放数据总线, 以便主器件发送停止信号,从而 终止数据传送。
• 1、AT24C系列的引脚

AT24C02是串行E2PROM是具有I2C总线
接口功能的电可擦除串行E2PROM器件。
AT24C02具有两种写入方式:一种是字节写
入方式,另一种是页写入方式。
• ① SCL:串行时钟输入线。
• ② SDA:串行数据/地址线。
• ③ A0、A1、A2:器件地址输入端。
• ④ WP:写保护端。
号(P)结束。 4. I2C总线上传输的数据和地址字节均为8位,且高位在
前,低位在后。
7
I2C串行总线数据传送时序图
长江大学电子信息学院
8
I2C总线数据传送基本时序说明如下:
(1)起始信号(S): 在时钟SCL为高电平时, 数据线SDA出 现由高到低的下降沿, 被认为是起始信号。 只有出现起 始信号以后,其他命令才有效。 (2)终止信号(P):在时钟SCL为高电平时, 数据线SDA出 现由低到高的上升沿, 被认为是终止信号。 随着终止信号 的出现,所有外部操作都结束。
数据方向位(R/W)规定了总线上的单片机(主器件)与 外围器件(从器件)的数据传送方向。 R/W=1, 表示接收 (读); R/W=0, 表示发送(写)。
3、数据传送时序
I2C总线的通信规则如下: 1. I2C运用主/从双向通信。 2. I2C总线的时钟线SCL和数据线SDA都是双向传输线。 3. SDA线上传送的数据均以起始信号(S)开始,停止信
件)的接口电路都应具有I2C总线接口, 所有器件都通过总
线寻址,而且所有SDA/SCL同名端相连。
存储器 SAD SCL
键盘/显示接口 SAD SCL
单 SAD 片 机 SCL
SAD
SCL
存储器
SAD SCL 键盘/显示接口
2. 总线器件的寻址方式
在一般的并行接口扩展系统中,器件地址都是由地址 线的连接形式决定的,而在I2C总线系统中, 地址是由器件 类型及其地址引脚电平决定的, 对器件的寻址采用软件方 法。 I2C总线上的所有外围器件都有规范的器件地址。 器 件地址由7位组成, 它与一位方向位共同构成了I2C总线器 件的寻址字节。 寻址字节(SLA)的格式如下:
被广泛应用于消费类电子产品、 通信产品、 仪器通
信及工业系统总线中。

I2C总线以两根连接线实现全双工同步数据传送,
可以极方便地构成外围器件扩展系统。I2C总线传输
速率为100 kb/s,新规范中传输速率可达400 kb/s。


I2C总线的两根线分别为:

① 串行数据SDA(Serial Data)
器件地址(DA3、 DA2、 DA1、 DA0)是I2C总线外围 器件的固有地址编码, 器件出厂时就已经给定。 例如I2C 总线E2PROM AT24C02的器件地址为1010,4位LED驱动 器SAA1064的器件地址为0111。
引脚地址(A2、 A、A0)是由I2C总线外围器件引脚所 指定的地址端口, A2、 A1和A0在电路中可接电源、 接 地或悬空, 根据其连接状态形成地址代码。
(5)数据传送位
在I2C总线启动后或应答信号后的第1~8个时钟脉冲 对应一个字节的8位数据传送。 在数据传送期间, 只要 时钟线为高电平,数据线上必须保持稳定的逻辑电平状 态,数据串行传送;低电平期间准备发送数据,允许总 路线上的数据电平变换。
4、常用的I2C总线器件
8.1.2 I2C总线典型器件AT24C02应用举例

② 串行时钟SCL(Serial Clock)
1、I2C总线工作原理
I2C总线采用两线制, 由数据线SDA和时钟线SCL构成。
I2C总线为同步传输总线,数据线上信号完全与时钟同步。
数据传送采用主从方式, 主器件(主控器)寻址从器件(被控
器),启动总线, 产生时钟, 传送数据及结束数据的传送。
SDA/SCL总线上挂接的单片机(主器件)或外围器件(从器
• (2)串行扩展方式还具有工作电压宽、抗干扰能 力强、功耗低、数据不易丢失等特点。
• (3)串行扩展技术在IC卡、智能化仪器仪表及分 布式控制系统等领域得到广泛的应用。
8.1 I2C总线接口技术
• 8.1.1 认识I2C总线

I2C总线(Inter IC Bus)全称为芯片间总线,是由
Philips公司推出的一种基于两线制的同步串行总线,
相关文档
最新文档