基于单片机的数字电压表pcf8591Word文档格式.doc
- 文档编号:721702
- 上传时间:2023-04-29
- 格式:DOC
- 页数:29
- 大小:838.81KB
基于单片机的数字电压表pcf8591Word文档格式.doc
《基于单片机的数字电压表pcf8591Word文档格式.doc》由会员分享,可在线阅读,更多相关《基于单片机的数字电压表pcf8591Word文档格式.doc(29页珍藏版)》请在冰点文库上搜索。
3.1单片机最小系统 3
3.2A/D转换部分 5
3.3数码管 7
3.4四位独立按键及声光报警 8
四、系统软件设计 9
4.1软件实现流程图 9
4.2IIC总线在实训中的应用 10
4.3完整程序见附录3 12
五、调试及性能分析 13
5.1调试效果图 13
5.2性能分析 13
心得体会 14
致谢 15
参考文献 16
附录1任务书 17
附录2自画原理图 18
附录3源程序:
19
一、实训的目的和任务
1.1实训目的
培养学生的单片机系统的实际应用能力,掌握单片机系统设计、调试技能。
通过实训,要求学生掌握单片机最小系统、定时器及中断的应用,掌握按键、LED显示等接口技术,了解proteus软件如何仿真,如何使用,完成一个单片机应用系统的设计,写出设计报告。
1.2实训任务
要求电压表完成以下功能:
1.基本功能
对输入的4路直流电压进行测量并显示出来;
可以选择显示方式,轮流显示和指定通道显示;
有报警功能,按键设定上下限报警。
2.扩展功能
实现历史数据的保存,可保存10组电压值
3.参数设计
1)测量精度5%
2)测量范围0-5V
4.其他要求及可参考资料,见附件1
25
二、设计总方案
系统整体结构如图所示:
PCF8591
AT89C52RC
4个独立按键
8个LED灯
8位数码管
蜂鸣器
电压输入(电位器调电压)
图2-1系统结构图
根据系统功能要求,可将系统组成结构分成六大部分:
单片机系统、PCF8591A/D转换芯片、LED数码管显示系统、LED和蜂鸣器报警系统、软件。
单片机采用STC89C52,系统的工作原理为:
STC89C52单片机开关复位后,通过IIC总线给PCF8591发送相关指令,PCF8591收到指令开始工作,采集到数据后通过IIC总线发送给单片机,经过单片机处理后在数码管上显示相应电压值。
可以通过按键K1选择要采集的通道号,通过K4进入电压阈值的设置,K2设置上限K3设置下限K1确认。
当采集到电压超出上下限是,8个LED闪烁,蜂鸣器发出滴滴响声。
个模块的大致关系如图2-1。
三、系统硬件设计
说明:
本次综合实训虽然有电路的设计,但用的是现成实验板,故在介绍相关硬件系统时将按照成品的各个模块介绍及配套相应电路图,在附件2中将附上自己画的电路图。
3.1单片机最小系统
3.3.1单片机最小系统图:
图3-1单片机最小系统
3.3.2单片机简介:
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但也做了很多改进使得芯片具有传统51单片机不具备的功能。
STC89C52具有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。
图3-1加上电源及为单片机最小系统。
以下为STC89C52的管脚说明:
1)P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写“1”时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
2)P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
3)P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
4)P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为STC89C52的一些特殊功能口:
P3.0RXD(串行输入口);
P3.1TXD(串行输出口);
P3.2/INT0(外部中断0);
P3.3/INT1(外部中断1);
P3.4T0(记时器0外部输入);
P3.5T1(记时器1外部输入);
P3.6/WR(外部数据存储器写选通);
P3.7/RD(外部数据存储器读选通);
P3口同时为闪烁编程和编程校验接收一些控制信号。
5)RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
6)ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
7)/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
8)/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
9)XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
10)XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
本次实验应用晶振为11.0592MHz。
3.2A/D转换部分
如图3-2所示,为A/D转换部分。
其中SW3和SW4为蓝白卧式电位器,调节电阻可使VO输入芯片的电压发生变化R11为LED的限流电阻,L3(红色)为电压大小体现的发光二极管。
图3-2A/D转换部分
PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。
PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。
PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。
在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。
PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。
PCF8591的最大转化速率由I2C总线的最大速率决定。
如图3-3为PCF8591内部结构图:
图3-3为PCF8591内部结构图
如图3-4为PCF8591引脚图:
图3-4为PCF8591引脚图
AIN0~AIN3:
模拟信号输入端。
A0~A3:
引脚地址端。
VDD、VSS:
电源端。
SDA、SCL:
I2C总线的数据线、时钟线。
OSC:
外部时钟输入端,内部时钟输出端。
EXT:
内部、外部时钟选择线,使用内部时钟时EXT接地。
AGND:
模拟信号地。
AOUT:
D/A转换输出端。
VREF:
基准电源端。
3.3数码管
3.3.1数码管简介:
数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);
按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管;
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
本实验用的是两个四位八段共阴数码管。
3.3.2数码管连接电路图3-5
图3-5数码管显示
3.4四位独立按键及声光报警
3.4.1四位独立按键
四位独立按键如电路图3-6,按键无动
作,对应端口为高电平。
当按键按下,单片
机检测到低电平,按程序实现相应动作。
图3-6独立按键
3.4.2led灯和蜂鸣器
图3-78个共阳极led灯图3-8蜂鸣器
当给测量电压超过上下限时8个led开始闪烁,同时,蜂鸣器发出滴滴的声音。
当看到这一现象是说明测量电压超限,应注意调节电压。
四、系统软件设计
4.1软件实现流程图
LedD1亮,其余熄灭,蜂鸣器无动作
单片机判断K4是否按下?
按键
数码管显示,对应通道。
显示上下限(默认零,但上下限都为0时不报警)显示对应通道电压
单片机通过IIC总线给PCF8591发送命令,让PCF8591开始工作。
单片机通过中断程序定时采样(默认采样通道为通道0)
开始
D1熄灭,如果按下K2,设置报警电压下限,调节范围0-4V,按下K3设置电压上限调节范围1-5V。
设置时数码管,显示上下变化
否
是
单片机判断K1是否按下?
K1是否按下?
是
单片机采集8591的0通道值,显示
退出上下限设置,完成上下限设置
否
单片机判断电压是否在设定范围?
是
是
单片机给PCF8591,发送指令,使采集通道在0-34个通道中切换并采集电压。
数码管显示对应通道,显示对应电压
8个数码管闪烁,蜂鸣器,发出滴滴声。
数码管,显示通道,上下限,对应通道电压
是否设置上下限不影响,通道选择,及对应通道电压值,上下限,可在任意时刻设置。
定时器T1,控制单片机采样频率,定时器T0控制数码管扫描。
下载好程序,上电开始工作执行相应功能,断电及结束。
不报警,正常定时采集,数码管显示,电压,通道,上下限。
4.2IIC总线在实训中的应用
4.2.1单片机与PCF8591芯片之间IIC总线应用程序
voidinit()//初始化总线SCL和SDA 都拉成高电平
{
SCL=1;
//时钟线
_nop();
SDA=1;
//数据线
_nop();
}
voidstart()//开始信号
SDA=0;
SCL=0;
voidstop()//终止信号
SDA=0;
voidack()//发送应答
uchari;
while((SDA==1)&
&
(i<
255))i++;
voidnoack()//发送非应答
_nop();
voidsendbaty(ucharda)//发送字节
uchari,temp;
temp=da;
for(i=0;
i<
8;
i++)
{
temp=temp<
<
1;
SCL=0;
_nop();
SDA=CY;
SCL=1;
_nop();
}
unsignedcharreadbaty()//读字节
SCL=1;
_nop();
temp=(temp<
1)|SDA;
returntemp;
voidDAC(ucharData)
start();
sendbaty(0x90);
//写入芯片地址
ack();
sendbaty(0x40);
//写入控制位
ack();
sendbaty(Data);
//写数据
stop();
unsignedcharReadADC(ucharChl)
{
ucharData;
//写入芯片地址
sendbaty(0x40|Chl);
//写入选择的通道ch1(1.2.3.4通道)
sendbaty(0x91);
//读入地址
Data=readbaty();
//读数据
SCL=0;
noack();
returnData;
//返回值
}
4.3完整程序见附录3
五、调试及性能分析
5.1调试效果图
从左到右依次是,通道 号、上限、下限、电压值。
超过上限报警
5.2性能分析
通过测试结果,电压的测量范围为0-5V,电压测量误差+—0.02V。
误差相对较小,在切换通道时,很迅速,没有无法切换的现象。
上限极限值为5V,最小为1V;
下限设置极限为4V,最小为0V,超出范围报警正常。
通过测试,证明我们实现了我们要实现的所有功能,在运行过程中没有出现bug,设计比较成功。
心得体会
为期一周的单片综合训练已经结束,这一周我学到了很多知识和经验。
这次实训我们做的题目是《基于单片机的数字电压表》要完成这个题目,我们需要用到定时器及定时器初值的计算、数码管动态显示、蜂鸣器报警、A/D转换芯片的运用、IIC总线通信的应用等一些列东西。
设计知识面比较广泛,把单片机常用的一些运用都用到了,通过这个实训让我对单片机编程有了更深刻的理解,进一步对了单片机编程有了更浓厚的兴趣。
在设计过程中,我也遇到了一些不懂得地方,在调试的过程中也出现了很多错误。
同过请教老师和同学,这些问题一一得到了解答。
经过3天的不懈努力,成功的实现了电压的测量在数码管上显示,超过限制报警等一系列功能。
本次实训培养了我对单片机系统的实际应用能力,掌握单片机系统设计、调试的基本技能。
通过实训,我也掌握单片机最小系统、定时器及中断的应用,掌握按键、LED显示等接口技术,了解proteus软件如何仿真,如何使用,完成一个单片机应用系统的设计。
经过这次培训,不论是单片机的相关知识点还是,系统的开发能力都得到了提高,学到的东西也将为我所用。
希望这样的实训,在今后会做的更好,影响更多的同学。
致谢
感谢学院给我们安排了这样一个非常有意义实训,让我学到了很多知识,让我对单片机应用有了新的认识,提高了我对单片机的应用能力。
感谢我们的指导老师,xxx老师和xx老师。
正是有你们的细心指导,及时给我们解决我们遇到的问题,我才能正确的,快速的完成实训。
在你们的指导下,让我们学到了很多关于单片机系统开发的经验和技巧。
在这里还要感谢,和我一起做课题的同学,感谢你们和我一起学习,共度难关。
感谢《单片机原理及接口技术》课本编者以及我查阅过的相关资料的作者,因为你们让我走了很多捷径。
实训已经圆满结束,再次感谢你们,谢谢!
参考文献
[1]张毅刚.单片机原理及皆空技术[M].北京.人民邮电出版社,2008.
[2]PCF8591说明书.
[3]自编.单片机应用设计指导书.
附录1任务书:
重庆科技学院
任务书
设计题目:
基于单片机的电压表设计
学生姓名
课程名称
单片机系统综合训练
专业班级
测控
地点
实验楼I001
起止时间
18
设计内容及要求
对输入的4路直流电压进行测量并显示出来;
可以选择显示方式,轮流显示和指定通道显示;
有报警功能,按键设定上下限报警。
2.扩展功能
实现历史数据的保存,可保存10组电压值。
设计
参数
1.测量精度5%
2.测量范围0-5V
进度
要求
见附表
参考资料
1.张毅刚.单片机原理及应用.人民邮电出版社
2.自编.单片机应用设计指导书
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
系主任:
指导教师:
年月日
附录2自画原理图
#include<
reg52.h>
intrins
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 电压表 pcf8591