串行总线扩展实验程序代码
实验15 I2C 总线串行扩展——AT24C02存储器读写[共2页]
![实验15 I2C 总线串行扩展——AT24C02存储器读写[共2页]](https://img.taocdn.com/s3/m/1dd33d68c77da26925c5b0e9.png)
312 式。
液晶显示屏模块1602内置控制器44780,可显示2行,每行16个字符,要求单片机控制1602液晶显示模块分两行显示“Hello Welcome To Heilongjiang”,第一行显示“Hello Welcome”,第二行显示“To HeiLongJiang”。
2.实验目的(1)了解单片机控制字符型的工作原理和方法。
(2)掌握单片机如何来控制液晶显示屏模块1602。
(3)接口电路设计完毕后,编写程序控制字符型液晶显示屏模块1602的字符显示。
实验13 DAC0832的D/A转换实验 1.实验要求单片机输出的数字量D0~D7加到DAC0832的输入端,用虚拟直流电压表测量DAC0832的输出电流经运放LM358N的I/V转换后的电压值,并使用虚拟直流电压表查看输出电压的变化。
仿真运行,可看到虚拟直流电压表测量的电压在-2.5~0V范围内变化。
如果由于电压表图标太小,显示的电压值不清楚,可用鼠标滚轮放大整个电路原理图。
2.实验目的掌握单片机与DAC0832的接口设计和软件编程。
实验14 ADC0809的A/D转换实验 1.实验要求利用A/D转换器ADC0809 (Proteus元件库中没有ADC0809,可用库中与其兼容的ADC0808替代),由输入模拟电压通过调整电位器阻值的大小提供给ADC0809模拟量输入,编写程序控制ADC0809将模拟量转换成二进制数字量,并送P1口输出来控制发光二极管亮或灭来表示转换结果的二进制代码显示转换完毕的数字量。
2.实验目的(1)掌握ADC0809的工作原理及基本性能。
(2)掌握单片机与ADC0809的接口设计。
(3)掌握软件编程控制单片机进行数据采集。
实验15 I2C总线串行扩展——AT24C02存储器读写1. 实验要求利用AT24C02、Proteus的I2C调试器,实现单片机读写存储器AT24C02的实验。
KEY1充当外部中断0中断源,当按下KEY1时,单片机通过I2C总线发送数据AAH给AT24C02,等发送数据完毕后,将数据AAH送P2口通过LED显示出来。
第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与各厂家生产的标准外围设备直接接口以串行方式交换数据
串行接口扩展

扩展并行输出口时,可用串入并出移位寄存器芯片,如 CMOS芯片4094和74LS164芯片。4094芯片的引脚信号如图930(a)所示。Q1~Q8是8个并行输出端;DATA是串行数据输 入端;CLK是时钟脉冲端,时钟脉冲既用于串行移位,也用 于数据的并行输出;QS、、Q8是移位寄存器最高位输出端; OE是并行输出允许端;STB是选通脉冲端,STB高电平时, 4094选通移位,低电平时,4094可并行输出。74LS164的引 脚信号如图9-30(b)所示。74LS164与4094的使用类似。
//传完清除标志位,准备下一次数据传输 //置4094于并行输出工作方式 //串行口数据发送完毕,P3.1上已停止同步移位
//为使4094并行输出数据,软件产生一个脉冲上
//原地循环,相当于SJMP$
单片机原理与应用
单片机原理与应用
串行接口扩展
MCS-51单片机串行口工作于方式0时,串行口作为同步移 位寄存器使用,这时以RXD(P3.0)端作为数据移位的输入端或 输出端,而由TXD(P3.1)端输出移位脉冲。如果把能实现“并 入串出”或“串入并出”功能的移位寄存器与串行口配合使 用,就可使串行口转变为并行输入或输出口使用。
SL=0;
//置4014于串行移位工作方式
SCON=0x10;
while(RI!=1); RI=0; data_L=SBUF; SCON=0x10;
while(RI!=1); RI=0; data_H=SBUF; while(1); }
//置串行口为工作方式0,同时 //置位REN启动串行口接数据
sbit SL=P1^7;
//位定义
sbit CLK=P3^1;
void main()
//主程序
常用串行总线数据操作的C51编程

总 线 。传 统 的 平 行 总 线 因 为 采 用 平 行 的 结 构 , 所 以 !" 之 间接线较多, 且需要译码电路, 显 得 非 常 复 杂 。而 具 备 ! #" 总线功 能 的 组 件 , 其地 址 已 经 内 置 在 组 件 中 , 只 需 要 且可靠性和安全性会 更 好 , $67 、 $"8 # 条线就能传送数据, 每 个 具 有 ! #" 总线的 !" 均 可 以 视 为 独 立 的 模 块 。
6789 :A8<MQR<M=>?@;A 9;<C >?@;A AM;9QR<M=6789C
3 3 写字节 3 3 读字节
!
小
结
’&2 程 序 如 下 :
3 ! 012-+.) 晶 振 4#%5 ! 3 6789 :;8<=>?@;A ?7>B<C D >?@;< E ; F7A=EG) ; EH?7>B< ; EIIC ; J 6789 8B8<=6789C D 0KG2 ; 0KG) ; L;8<=&)C ; 0KG2 ; L;8<=.C ; L;8<=,)C ; J 6789 :A8<M)=6789C D 0KG2 ; 0KG) ; L;8<=4C ; 0KG2 ; L;8<=2C ; J $ 2 . 3 3 写 ) 信号 3 3 初始化 3 3 延时子程序
!"& ’()*+, 总 线 接 口 芯 片 编 程
简单io口扩展实验报告

简单IO口扩展实验报告1. 背景在实际应用中,我们经常需要扩展计算机的输入输出(IO)接口,以满足不同的需求。
而简单IO口扩展就是一种常见且重要的扩展方式。
通过简单IO口扩展,我们可以将计算机连接到更多的外部设备,如传感器、执行器等,从而实现更多功能和应用。
2. 分析2.1 简单IO口介绍简单IO口是指通用输入输出接口,它可以通过数字信号来进行数据的输入和输出。
每个简单IO口通常包括一个输入引脚和一个输出引脚。
通过控制这些引脚的电平状态,我们可以实现数据的输入和输出。
2.2 简单IO口扩展方法简单IO口可以通过不同的方法进行扩展,常见的方法包括:•并行接口:使用并行接口可以同时传输多个位的数据。
它通常使用多条数据线和一些控制线来实现高速数据传输。
•串行接口:使用串行接口可以逐位地传输数据。
它通常使用一条数据线和一些控制线来实现较低速率但更简洁的数据传输。
•USB接口:USB(Universal Serial Bus)是一种常见的数字串行总线接口,它可以连接多种设备,并提供高速数据传输和供电功能。
•SPI接口:SPI(Serial Peripheral Interface)是一种常用的串行外设接口,它可以连接多个外设,并以主从模式进行数据传输。
•I2C接口:I2C(Inter-Integrated Circuit)是一种常见的串行通信接口,它可以连接多个外设,并使用两条线路进行数据传输。
2.3 简单IO口扩展实验本次实验旨在通过简单IO口扩展方法,将计算机与外部设备进行连接,并实现数据的输入和输出。
具体步骤如下:1.确定要使用的简单IO口扩展方法,如并行接口、串行接口等。
2.根据选择的扩展方法,准备相应的硬件模块和连接线缆。
3.将硬件模块与计算机进行连接,确保电气连通性。
4.编写相应的驱动程序或使用现有的驱动程序,以实现与硬件模块的通信。
5.运行程序并测试扩展功能。
3. 结果经过实验测试,我们成功地实现了简单IO口扩展,并达到了预期的结果。
利用串行口扩展并口

附页:实验线路图:编译程序:源程序代码:1 汇编语言程序清单ORG 0000HLJMP MAINORG 000BHLJMP INTT0MAIN:MOV SP,#60HMOV TMOD,#01HSETB ET0SETB EAMOV TH0,#3CHMOV TL0,#0B0HSETB TR0MOV 30H, #0 ; 每中断一次加1MOV 31H, #0 ; 每秒加1, 当其值为100时清0 MOV 32H, #0 ; 个位MOV 33H, #0 ; 十位LP:MOV R0,#32HMOV R7,#2ACALL BINBCDMOV DPTR,#TABDSPLY:MOV A,@R0MOVC A,@A+DPTRCPL AMOV SBUF,ADSP1:JNB TI,DSP1CLR TIINC R0DJNZ R7,DSPLYLP1:MOV A,30HCJNE A, #10, LP1MOV 30H,#00HINC 31HMOV A,31HCJNE A,#100,LPMOV 31H,#0SJMP LPINTT0:MOV TL0,#0B0HMOV TH0,#3CHINC 30HRETITAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB 0FFH,00H,73H; 入口参数二进制数存放在31H中; 出口参数 BCD数十位(33H), 个位(32H)BINBCD:MOV A,31HMOV B,#10DIV ABMOV 33H,AMOV A,BMOV 32H,ARETEND ; 程序结束2 C 语言程序清单#include <AT89X51.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned int//共阴数码管段码:0~9,全亮,全灭,Puchartab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0xFF,0x00,0x 73};uchar timer; //定时器每中断1次加1void main(void){uchar ten,one,count;SP=0x60;TMOD=0x01; //定时器T0方式1定时ET0=1; //开定时器T0中断EA=1; //开总中断TH0=0x3C; //每100ms中断一次TL0=0xB0;TR0=1; //启动定时器T0timer=0;count=0;do{do{ten=count/10; //求得十位one=count%10; //求得个位SBUF=~tab[one]; //发送个位while(~TI);TI=0;SBUF=~tab[ten]; //发送十位while(~TI);TI=0;while(timer<10); //延时1s,即10*100ms timer=0;count++; //每隔一秒,count值加1 }while(count<100); //从0计到99count=0;} while(1);}void intt0() interrupt 1{TH0=0x3C;TL0=0xB0;timer++;}。
单片机C语言-第8章 外部串行总线扩展的C51编程 3

BIT0 2-4 24
DS18B20可以将温度转换成两个字节的数据,该数据 可以设定为9位~12位精度。上表是12位精度的温度数据存 储结构,其中S位是符号位。当温度高于0℃,S位是0,11 位数据直接乘以温度分辨率0.0625 ℃ ;当温度低于0℃, S位是1 ,11位数据是实际温度数据的补码,需要取反加1 后得到原码,再乘以温度分辨率得到实际温度值。
VCC
DS18B20 GND DQ VCC
I/O 单 片 机
RP
DQ
DQ
…
DQ
DS18B20 DS18B20
DS18B20
常用的单总线器件如下:
8.3.2 单总线典型器件DS18B20
• DS18B20数字式温度传感器的特点如下: • (1)温度测量范围为-55~+125℃,固有测温分辨
率0.5V; • (2)测量结果以9位数字量方式进行串行传输; • (3)用户可设置报警温度的上下限; • (4)在使用中不需要任何外围器件。
TM位用于切换测试模式和日常工作模式。芯片出厂 时,该位被置0,设置为日常工作模式。R1和R0用来设置 DS18B20采样精度。
R1
R0
分辨率
采样时间 温度分辨率
0
0
9位
93.75ms
0.5℃
0
1
10位
187.5ms
0.25℃
1
0
11位
375ms
0.125℃
1
1
12位
750ms
0.0625℃
DS18B20的功能命令列表
DS18B20温度分辨率与采样精度位数有关,9位采样 精度的分辨率是0.5℃ ,10位是0.25℃ , 11位是0.125℃ ,12位是0.0625℃ 。
单片机C语言-第8章 外部串行总线扩展的C51编程1

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), 使从器件释放数据总线, 以便主器件发送停止信号,从而 终止数据传送。