欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于51单片机用PCF8591进行AD,DA转换用1602LCD显示的电流采样.doc

    • 资源ID:841435       资源大小:362.53KB        全文页数:15页
    • 资源格式: DOC        下载积分:20积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要20积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于51单片机用PCF8591进行AD,DA转换用1602LCD显示的电流采样.doc

    1、目 录1、PCF8591概述32、芯片介绍33、PCF8591的A/D 转换44、A/D转换程序设计流程55、1602LCD主要技术参数76、Proteus仿真原理图107、程序代码108、结语179、参考文献171、PCF8591 概述PCF8591 是一种具有 I2C 总线接口的 8 位 A/D D/A 转换芯片,在与 CPU的信息传输过程中仅靠时钟线 SCL 和数据线 SDA 就可以实现。 I2C 总线是Philips (飞利浦)公司推出的串行总线,它与传统的通信方式相比具有读写方便,结构简单 ,可维护性好, 易实现系统扩展, 易实现模块化标准化设计, 可靠性高等优点。2、芯片介绍2.1

    2、内部结构及引脚功能描述PCF8591 为单一电源供电(2.5 6 V)典型值为 5 V,CMOS 工艺 PCF8591 有 4 路 8 位 A/D 输入,属逐次比较型,内含采样保持电路; 1 路 8 位 D/A 输出,内含有 DAC的数据寄存器 A/D D/A 的最大转换速率约为 11 kHz,但是转换的基准电源需由外部提供 PCF8591 的引脚功能如图1所示图1 PCF8591引脚功能2.2片内可编程功能设置在 PCF8591 内部的可编程功能控制字有两个,一个为地址选择字,另一个为转换控制字 PCF8591 采用典型的I2C总线接口的器件寻址方法,即总线地址由器件地址引脚地址和方向位组成

    3、 Philips (飞利浦)公司规定 A/D器件高四位地址为 1001,低三位地址为引脚地址A0A1A2,由硬件电路决定,地址选择字格式具体描述如表2 所示 因此 I2C 系统中最多可接 23=8 个具有总线接口的 A/D 器件 地址的最后一位为方向位 R/W,当主控器对 A/D 器件进行读操作时为 1,进行写操作时为 0 总线。操作时,由器件地址 引脚地址和方向位组成的从地址为主控器发送的第一字节。图2 地址选择字格式描述D0:读写控制位,对转换器件进行读操作时为1 ,进行写操作时为0。D1,D2,D3:引脚硬件地址设置位,由硬件电路设定该PCF8591的物理地址。D7,D6,D5,D4:器

    4、件地址位固定为1001.PCF8591的转换控制字存放在控制寄存器中,用于实现器件的各种功能 总线操作时为主控器发送的第二字节 转换控制字的格式功能具体描述如图3所示图3 转换控制字格式描述D0,D1:通道选择位。00 :通道 0; 01:通道1 ; 10:通道2; 11:通道3。D2:自动增量允许位,为 1时,每对一个通道转换后自动切换到下一通道进行转换,为0 时不自动进行通道转换,可通过软件修改进行通道转换D3:特征位,固定位0。D4,D5:模拟量输入方式选择位 。00:输入方式0 ,四路单端输入;01 :输入方式 1,三路差分输入;10 :输入方式2,二路单端输入,一路差分输入; 11:

    5、输入方式3 ,两路差分输入。D6:模拟输出允许位,A/D 转换时设置为 (地址选择字D0 位此时设置为1 ),D/A 转换时设置为 1(地址选择字 位此时设置为 )。D7:特征位,固定为0。3、PCF8591的A/D 转换PCF8591的A/D 转换为逐次比较型,在 A/D转换周期中借用 DAC及高增益比较器 对 PCF8591进行写读操作后便立即启动 A/D转换,并读出A/D 转换结果 在每个应答信号的后沿触发 转换周期,采样模拟电压并读出前一次转换后的结果。A/D转换中,一旦 A/D采样周期被触发,所选择通道的采样电压便保存在采样,保持电路中,并转换成8 位二进制码(单端输入)或二进制补码

    6、(差分输入)存放在ADC数据寄存器中等待器件读出。如果控制字节中自动增量选择位置 1,则一次A/D 转换完毕后自动选择下一通道 。读周期中读出的第一个字节为前一个周期的转换结果 。上电复位后读出的第一字节为80H。PCF8591的A/D 转换亦使用的是I2C 总线的读方式操作完成的 。其数据操作格式如图 4所示。图4 A/D转换数据操作格式其中data0datan 为 A/D的转换结果,分别对应于前一个数据读取期间所采样的模拟电压。A/D 转换结束后,先发送一个非应答信号位A 再发送结束信号位P。 灰底位由主机发出,白底位是由PCF8591 产生。 上电复位后控制字节状态为00H ,在 A/D

    7、转换时须设置控制字,即须在读操作之前进行控制字节的写入操作。逻辑操作波形时序图如图5所示。图5 A/D转换逻辑操作波形时序图4、A/D转换程序设计流程如下图6所示图65、1602LCD主要技术参数:显示容量:162个字符,芯片工作电压:4.55.5V,工作电流:2.0mA(5.0V),模块最佳工作电压:5.0V,字符尺寸:2.954.35(WH)mm。5.1引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如图7编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数

    8、据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极图7引脚接口说明表第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低

    9、电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。5.2 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如图8序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器

    10、地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容图81602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示

    11、有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。读操作时序写操作时序5.3 1602LCD的一般初始化(复位)过

    12、程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置6、仿真原理图如下所示7、C语言程序#include#include#define uchar unsigned char#define uint unsigned int#define Delay4us()_nop_();_nop_();_nop_();_nop_();sbit LCD_RS=P26;s

    13、bit LCD_RW=P25;sbit LCD_EN=P27;sbit SCL=P20; /I2C时钟引脚sbit SDA=P21; /I2C数据输入输出引脚uchar Recv_Buffer4; /数据接收缓冲uint Voltage=0,0,0,0; /数据分解为电压x.xxbit bdata IIC_ERROR; /I2C错误标志位uchar LCD_Line_1= . V ;/延时void delay(int ms)uchar i;while(ms-) for(i=0;i250;i+) Delay4us();/LCD忙检测bit LCD_Busy_Check()bit Result;L

    14、CD_RS=0;LCD_RW=1;LCD_EN=1;Delay4us();Result=(bit)(P0&0x80);LCD_EN=0;return Result;/写指令void LCD_Write_Command(uchar cmd)while(LCD_Busy_Check();LCD_RS=0;LCD_RW=0;LCD_EN=0;_nop_();_nop_();P0=cmd;Delay4us();LCD_EN=1;Delay4us();LCD_EN=0;/ 写数据void LCD_Write_Data(uchar dat)while(LCD_Busy_Check();LCD_RS=1;L

    15、CD_RW=0;LCD_EN=0;P0=dat;Delay4us();LCD_EN=1;Delay4us();LCD_EN=0;/初始化void LCD_Initialise()LCD_Write_Command(0x38);delay(5);LCD_Write_Command(0x0c);delay(5);LCD_Write_Command(0x06);delay(5);LCD_Write_Command(0x01);delay(5);/设置显示位置void LCD_Set_Position(uchar pos)LCD_Write_Command(pos|0x80);/显示一行void LC

    16、D_Display_A_Line(uchar Line_Addr,uchar s)uchar i;LCD_Set_Position(Line_Addr);for(i=0;i16;i+)LCD_Write_Data(si);/ 将模数转换后得到的值分解存入缓存void Convert_To_Voltage(uchar val)uchar Tmp; /最大值为255,对应5V,255/5=51Voltage2=val/51+0; /整数部分Tmp=val%51*10; / 第一位小数Voltage1=Tmp/51+0;Tmp=Tmp%51*10;Voltage0=Tmp/51+0;/启动I2C总线

    17、void IIC_Start()SDA=1;SCL=1;Delay4us();SDA=0;Delay4us();SCL=0;/停止I2C总线void IIC_Stop()SDA=0;SCL=1;Delay4us();SDA=1; Delay4us();SCL=0;/ 从机发送应答位void Slave_ACK()SDA=0;SCL=1;Delay4us();SCL=0;SDA=1;/ 从机发送非应答位void Slave_NOACK()SDA=1;SCL=1;Delay4us();SCL=0;SDA=0;/发送一字节void IIC_SendByte(uchar wd)uchar i;for(

    18、i=0;i8;i+) /循环移入8位SDA=(bit)(wd&0x80);_nop_();_nop_();SCL=1;Delay4us();SCL=0;wd=1;Delay4us();SDA=1; /释放总线并准备读取应答SCL=1;Delay4us();IIC_ERROR=SDA; /IIC_ERROR=1表示无应答SCL=0;Delay4us();/接收一字节uchar IIC_ReceiveByte()uchar i,rd=0x00;for(i=0;i8;i+)SCL=1;rd=1;rd|=SDA;Delay4us();SCL=0;Delay4us();SCL=0;Delay4us();

    19、return rd;/连续读入4路通道的A/D转换结果并保存到Recv_Buffervoid ADC_PCF8591(uchar CtrlByte)uchar i;IIC_Start();IIC_SendByte(0x90); / 发送写地址if(IIC_ERROR=1)return;/ IIC_SendByte(CtrlByte); /发送控制字节/if(IIC_ERROR=1)return;IIC_Start(); /重新发送开始命令IIC_SendByte(0x91); / 发送读地址if(IIC_ERROR=1)return;IIC_ReceiveByte(); /空读一次,调整读顺序

    20、Slave_ACK(); /收到一字节后发送一个应答位for(i=0;i4;i+)Recv_Bufferi+=IIC_ReceiveByte();Slave_ACK(); /收到一个字节后发送一个应答位Slave_NOACK();IIC_Stop(); /收到一个字节后发送一个非应答位/ 向 PCF8591发送1字节进行AD转换/主程序void main()LCD_Initialise();while(1)ADC_PCF8591(0x04);Convert_To_Voltage(Recv_Buffer0);LCD_Line_12=Voltage2;LCD_Line_14=Voltage1;LC

    21、D_Line_15=Voltage0;LCD_Display_A_Line(0x00, LCD_Line_1);8、结语 在这次单片机课设中,通过自己动手查阅资料,不仅知道了芯片PCF8591和LCD1602工作原理、各引脚的功能等,还巩固了C语言程序的编写,对51单片机也有了更深的理解,丰富了很多课外知识,能熟练的运用Keil等软件。H6800实验箱的调试,让我们在硬件上更好的了解单片机,增强了我们的动手实践能力。9、参考文献单片机原理及应用(c语言版) 周国运#includemain()int a,b,i,j,max;int c33=1,2,3,6,9,10,20,22,0; max=c0

    22、0;a=b=0;for(i=0;i3;i+)for(j=0;jmax)max=cij;a=i;b=j;printf(最大值max=%d, 行a=%d, 列b=%d,max,a,b);printf(n);Viod Convert_To_Voltage2(uchar valmax) Uchar val,temp;Int i=0;If (valivali+1) Valmax=vali+1;Else Valmax=vali;Voltage2=valmax/51+0; /整数部分Tmp=valmax%51*10; / 第一位小数Voltage1=Tmp/51+0;Tmp=Tmp%51*10;Voltage0=Tmp/51+0;15


    注意事项

    本文(基于51单片机用PCF8591进行AD,DA转换用1602LCD显示的电流采样.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922