ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:165.17KB ,
资源ID:23719856      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23719856.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于PCF8951单片机设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于PCF8951单片机设计.docx

1、基于PCF8951单片机设计1引言现在工业生产中,电机是主要的驱动设备,目前在直流电机拖动系统中已大 量采用晶闸管装置控制电机的 KZD拖动系统,取代了笨重的发电机-电动机的FD系统,又伴随着电子技术的高度发展,促进使直流电机调速逐步从模拟化向数字化转变,特别是单片机技术的应用,使直流电机调速又进入了一个新的阶 段,智能化,高可靠性已成为它的发展趋势。 直电机调速基本原理是比较简单的(相对于交流电机),只要改变电机的电压就可以改变转速了。1.1设计任务与要求设计一个基于PCF8591的直流电动机转速控制电路,在相应的软件控制下可 以完成要求的功能,即使用具有IIC接口的PCF8591模数与数模

2、转换芯片,使用1602LCD液晶显示屏显示PCF8591模数与数模转换芯片上的4个通道的模数转换结果,同时,0通道的转换结果再通过P CF8591转换为模拟信号,经过放大后调控直流电动机的转速。2设计过程2. 1设计过程与步骤 2.1.1芯片介绍 1) PCF8591PCF8591是一种具有I2C 总线接口的8 位A/D D/A 转换芯片,在与 CPU的信息传输过程中仅靠时钟线 SCL和数据线SDA就可以实现。I2C总线是Philips (飞利浦)公司推出的串行总线,它与传统的通信方式相比具有读写方 便,结构简单,可维护性好,易实现系统扩展,易实现模块化标准化设计, 可 靠性咼等优点。PCF8

3、591为单一电源供电(2.5 6 V)典型值为5 V, CMOS工艺PCF8591有4路8位A/D输入,属逐次比较型,内含采样保持电路; 1路8位D/A输出,内含有DAC的数据寄存器A/D D/A的最大转换速率约为11 kHz,但是转换的基准电源需由外部提供 P CF8591的引脚功能如图2.1所引脚序号引脚称功能描述17AI.tAL3模拟信号输入端()5 V57器件硬件地址输入端*由硬件屯路决定16.K电源、地9J0SDAsSCL1兀总线的数据线、时钟线11OSC外部时钟输入端内部时钟输出端12Kr时钟选择使用内部时钟:KT=,使用外部时钟13模拟信号地15AOLlD小转换输出端J Z比d2

4、56 曲基准电源端 )収值大小影响1)/A转换输出屯压。14 HFr当取值等于为 J)J)时输岀屯压为0-5叽图2.1 P CF8591引脚功能在P CF8591内部的可编程功能控制字有两个,一个为地址选择字,另一个为转换控制字PCF8591采用典型的I2C总线接口的器件寻址方法,即总线地址(飞利浦)公司规定A/D器件高四由器件地址引脚地址和方向位组成 P hili ps位地址为1001,低三位地址为引脚地址 A0A1A2由硬件电路决定,地址选择字格式具体描述如表 2所示因此I2C系统中最多可接23=8个具有总线接口的A/D器件地址的最后一位为方向位 R/W,当主控器对A/D器件进行读操作时为

5、 1,进行写操作时为0总线。操作时,由器件地址 引脚地址和方向位组成的从 地址为主控器发送的第一字节。1)71)51)4 lb1)21 001 A 2AlAO图2.2地址选择字格式描述D0:读写控制位,对转换器件进行读操作时为1 ,进行写操作时为0。D1,D2,D3:引脚硬件地址设置位,由硬件电路设定该 P CF8591的物理地址。D7,D6,D5,D4:器件地址位固定为1001. PCF8591的转换控制字存放在控制寄存器中,用于实现器件的各种功能总线操作时为主控器发送的第二字节 转换控制字的格式功能 具体描述如图2.3所示1)71)61)51)4Ih1)21):1)0图2.3转换控制字格式

6、描述D0,D1:通道选择位。00 :通道0 ; 01 :通道1 ; 10 :通道2; 11 :通道3。D2:自动增量允许位,为1时,每对一个通道转换后自动切换到下一通道进行转换,为0时不自动进行通道转换,可通过软件修改进行通道转换 D3:特征位,固定位0。D4,D5:模拟量输入方式选择位 。00:输入方式0,四路单端输入;01 :输入方式1,三路差分输入;10 :输入方式2, 二路单端输入,一路差分 输入;11 :输入方式3,两路差分输入。D6:模拟输出允许位,A/D转换时设 置为(地址选择字D0位此时设置为1 ),D/A转换时设置为1 (地址选择字位 此时设置为)。D7:特征位,固定为0。P

7、CF8591的A/D转换为逐次比较型,在A/D转换周期中借用DAC及高增益比较器对PCF8591进行写读操作后便立即启动A/D转换,并读出A/D转换结果在每个应答信号的后沿触发 转换周期,采 样模拟电压并读出前一次转换后的结果。A/D转换中,一旦A/D采样周期被触发, 所选择通道的采样电压便保存在采样, 保持电路中,并转换成8位二进制码(单 端输入)或二进制补码(差分输入)存放在 ADC数据寄存器中等待器件读出。如果控制字节中自动增量选择位置 1,则一次A/D转换完毕后自动选择下一通道。读周期中读出的第一个字节为前一个周期的转换结果 。上电复位后读出的 第一字节为80耳PCF8591的A/D转

8、换亦使用的是I2C总线的读方式操作完成的。其数据操作格式如图2.4所示。S SLAW A dulaOA (bla I Ariata 2A dala 11AP图2.4 A/D转换数据操作格式其中data0datan为A/D的转换结果,分别对应于前一个数据读取期间所采样 的模拟电压。A/D转换结束后,先发送一个非应答信号位 A再发送结束信号位P。灰底位由主机发出,白底位是由 P CF8591产生。上电复位后控制字节状态为 00H,在A/D转换时须设置控制字,即须在读操作之前进行控制字节的写入操作。逻辑操作波形时序图如图2.5所示。岂 1 1 勺 1 *MT肋A 1 DaTUi 1 CATE图2.5

9、 A/D转换逻辑操作波形时序图2)LCD1602LCD1602液晶显示容量:16 X2个字符,芯片工作电压:4.5 5.5V,工作电流:2.0mA(5.0V),模块最佳工作电压:5.0V,字符尺寸:2.95 X 4.35(WX H)mm1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说 明:1为咼电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H 位置。指令2:光标复位,光标返回到地址00Ho指令3:光标和显示模式设置I/D : 光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令 4:显示开关控

10、制。D :控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C :控制光标的开与关,高电平 表示有光标,低电平表示无光标 B :控制光标是否闪烁,咼电平闪烁,低电平不 闪烁。指令5:光标或显示移位S/C :高电平时移动显示的文字,低电平时移动 光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N : 低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高 电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8: DDRAM地址设置。指令9:读忙信号和光标地址BF :为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平

11、表示不忙。指令 10:写数据。指令11:读数据。2.1.2 设计思路本次设计要求设计利用带有IIC接口的PCF8592莫数与数模转换芯片,实现 对直流电机转速的控制。利用 PCF8591芯片通道0采集到的模拟量,再次由AD转换成模拟量输出去控制直流电机的转速, 由于D/A输出的的电流普遍偏小,而此不能直接驱动电机,要加上放大电路,而选用的直流电机是 12V的DA的最大输出电压是5V,因此要先进行电压放大,采用 LM358运放,将电压放大两倍,这样最高输出电压是10V,由于运放的驱动能力还是很弱,因此要进行电流放大,这边采用三极管进行电压放大,以射极跟随器的方式进行放大。2.1.3 电路设计由设

12、计思路在Ptotues上面画出总的电路图如下:C3TilELZH3T宀Cl呼口 hFpt.IJC- 5 Ze LU oaooooaoJJ3A咖wm PD.1fAC1 PO.lffltJ PDJ 网 3 呻4皿4 PDjsrrtoa PDBfACE PC.皿?P2jQfABP2.irAg P3 2M.-H1 旳咖1 PHA1? PJglS P3 盼14 P?i5P3 0RW?PS.IJTffi PjjirjBQ P33ywi1PJ4/T0P35niP3je 陛 即丽Jg35jq3332K7j21d .2iRR3IECh巧VR5ia - |:T&:T-RESPJCM-. .iL b.A.-RP1L

13、ii吊 LfJACcriy=ejD95iecoA V=4.92X!S:U2i69SCL &ND 3&A AJMlAJN2AD &N3D?-+5V图3.2 在AO电压为3V时电机的转速如图3.3在A0通道电压为1.3V时,电机的转速为80.2+1BV -fllfl2 1.2y fl3IE SEKm.-TE -fh nF 口 -h nr Tf-Xi lnLCArtT/PCF8591相关定义sbit SCL=PO;/时钟脉冲sbit SDA=P2A1;/双向输入输出数据端#defi ne SCL_SET SCL=1#defi ne SCL_CLR SCL=0#defi ne SDA_SET SDA=

14、1#defi ne SDA_CLR SDA=0#defi ne AddWr 0x90/写数据地址#defi ne AddRd 0x91/读数据地址#defi ne adCon 0x40/AD控制字节/LCD1602相关定义sbit RS=P2A6;sbit RW= P2A5;sbit E=P 2八7;#defi ne setRS RS=1#defi ne clrRS RS=0#defi ne setRW RW=1#defi ne clrRW RW=0#defi ne setE E=1#defi ne clrE E=0unsigned int time=0;un sig ned char ADF

15、lag=0;un sig ned char str8=Ai n.mv ;/延时1USvoid delay(unsigned int ent)while(-c nt);/延时IMSvoid delayms(unsigned int time)un sig ned int i;for(i=0; itime; i+)delay(120);II写数据,POvoid writeData(u nsig ned char Data)setRS;clrRW;delay(1);setE;delay(1);P 0=Data;delay(5);clrE;II写命令,POvoid writeCom(u nsig ne

16、d char Com)clrRS;clrRW;delay(1);setE;delay(1);P0=Com;delay(5);clrE;/清屏函数void clear_scr(void)writeCom(OxOI);delayms(5);II写一个字符串在(X,Y )位置/第一行void disStr( un sig ned char x, un sig ned char y, un sig ned char *str)if(y=0) writeCom(0x80+x);else writeCom(0xc0+x);/第二行while(*str)writeData(*str);sM+;/LCD160

17、2初始化/显示模式设置/显示关闭void lcd In itial()writeCom(0x38);delayms(5);writeCom(0x08);clear_scr();/清屏writeCom(0x06);/显示光标移动设置delayms(5);writeCom(OxOC);/显示开及光标设置void start()SDA_SET;delay(1);SCL_SET;delay(5);SDA_CLR;void stop()SDA_CLR;delay(1);SCL_SET;delay(5);SDA_SET;void ack()SDA_CLR;SCL_SET;delay(1);SCL_CLR;

18、void no Ack()SDA_SET;SCL_SET;delay(1);SCL_CLR;void send(un sig ned char Data)un sig ned char i=0;un sig ned char temp=0;temp=Data;for(i=0; i8; i+)SCL_CLR;delay(1);if(te mp&0 x80) SDA_SET;else SDA_CLR;delay(1);SCL_SET;delay(1);tempv =1;SCL_CLR;un sig ned char recive()un sig ned char i=0;/必须设置un sig n

19、ed char temp=O;SDA_SET;for(i=0; i8; i+)SCL_CLR;/拉低允许数据改变delay(1);SCL_SET;/拉高保持数据,等待读走delay(2);if(SDA) tem p|=0x01;else temp&=0xfe;if(i7) tempv =1;/最低位发送完成不能移位,否则出错SCL_CLR;return temp;un sig ned char read( un sig ned char ch )un sig ned char temp=0;start();/确认芯片sen d(AddWr);ack();/确认通道sen d(adC on| c

20、h);ack();读出数据,放进tempstart();sen d(AddRd);ack();temp=reciveO;noAck();sto p();return temp;void DAC( un sig ned char light)start();sen d(AddWr);ack();sen d(0x40);II写入控制位,使能DAC输出ack();sen d(light);ack();sto p();void dis( un sig ned char *date)float j;un sig ned int k;un sig ned char i=0;un sig ned char ch1, ch2, ch3;for(i=0; i1) disStr(i*8-16, 1, str);else disStr(i*8, 0,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1