基于51单片机-PCF8591数字电压表课程设计
基于51单片机的PCF8591电压测量

基于51单片机的PCF8591电压测量基于51单片机的PCF8591电压测量这个笔记记录好久了。
因为想突破ADS1115在STC89下的使用,但一直没有太清晰的眉目和充裕的时间。
不知道为什么各种资料里,ADS1115很少有介绍差分的,而都是单端的。
这几天忙时也无暇琢磨,于是轮到了PCF8591。
STC89系列芯片不能直接测电压,也就是这个系列的芯片没有AD/DA转换的本领。
想测量电压,就必须得借助PCF8591来帮忙。
这一点上STC89跟ATTiny没法比,实际ATTiny13/85都可以直接AD 转换。
不过STC后期的STC8/12/15系列都自带ADC引脚,可以直接使用的,价格可能也要贵一些。
在STC89系列下使用PCF8591本质就是IIC读写,然后转换。
但是说起来,实现起来也不容易。
接线图:代码很混乱,不拆分,也不依赖外部其他文件,但是对PCF8591的使用流程则一目了然:#include<reg52.h>#include<intrins.h>#include <stdio.h>#include <stdlib.h>#define uchar unsigned char#define uint unsigned intuchar dat[8];uchar code char_temp[8] = {'\r', '\n'};sbit SCL = P2 ^ 0;sbit SDA = P2 ^ 1;void IIC_Start(void){SDA = 1;SCL = 1;_nop_();SDA = 0;_nop_();_nop_();SCL = 0;}void IIC_Stop(void){SDA = 0;SCL = 1;_nop_();_nop_();SDA = 1;}void IIC_Ack(unsigned char ackbit) {if(ackbit){SDA = 0;}else{SDA = 1;}_nop_();_nop_();SCL = 1;_nop_();SCL = 0;SDA = 1;_nop_();_nop_();}bit IIC_WaitAck(void){SDA = 1;_nop_();_nop_();SCL = 1;_nop_();_nop_();if(SDA){SCL = 0;IIC_Stop();return 0;}else{SCL = 0;return 1;}}void IIC_SendByte(unsigned char byt){unsigned char i;for(i = 0; i < 8; i++){if(byt & 0x80){SDA = 1;}else{SDA = 0;}_nop_();_nop_();SCL = 1;byt <<= 1;_nop_();_nop_();SCL = 0;}}unsigned char IIC_RecByte(void) {unsigned char da;unsigned char i;for(i = 0; i < 8; i++){SCL = 1;_nop_();_nop_();da <<= 1;if(SDA)da |= 0x01;SCL = 0;_nop_();_nop_();}return da;}void init_pcf8591(void){IIC_Start();IIC_SendByte(0x90); //PCF8591里的地址IIC_WaitAck();IIC_SendByte(0x00); //选择ADC通道,0x00电位器,0x01光敏,0x02热敏IIC_WaitAck();IIC_Stop();}//接收PCF8591转换过的采样电压值unsigned char adc_pcf8591(void){unsigned char temp;IIC_Start();IIC_SendByte(0x91);IIC_WaitAck();temp = IIC_RecByte();IIC_Ack(0);IIC_Stop();return temp;}/*** 串口初始化函数* 波特率为9600*/void UartConfigurationInit(){TMOD = 0x20; //设置定时器1工作方式为方式2 TH1 = 0xfd; //波特率9600TL1 = 0xfd;TR1 = 1; //启动定时器1SM0 = 0;SM1 = 1; //串口方式1REN = 1; //允许接收PCON = 0x00; //关倍频ES = 1; //开串口中断EA = 1; //开总中断}/*** 延时函数* 延时count毫秒*/void delay(uint count){uint cycle;while(count){cycle = 120;while(cycle > 0) cycle--;count--;}}/*** 字符发送函数*/void PostChar(uchar character) {SBUF = character; //发送单个字符while(!TI);TI = 0; //发送完成标志}/*** 字符串发送函数* 通过调用字符发送函数来实现*/void PostString(uchar *p){while(*p) //若指针指向的地址为空,则跳出循环{PostChar(*p); //指针第一次默认指向首地址delay(20); //延时,作用为提高发送准确度p++;}}void main(){uint adNum;float value;UartConfigurationInit(); //初始化串口while(1){init_pcf8591();PostString(char_temp); //发送字符串adNum = adc_pcf8591();value = adNum * 0.01953; //转为电压值adNum = value * 100; //保留两位小数dat[0] = adNum / 1000 + '0'; //加上'0'是表示数字转换成字符dat[1] = adNum % 1000 / 100 + '0';dat[2] = '.';dat[3] = adNum % 100 / 10 + '0';dat[4] = adNum % 10 + '0';dat[5] = 'V';PostString(dat); //发送字符串delay(1000);}}。
基于51单片机的数字电压表设计

目录摘要 (I)1 绪论 (1)1.1数字电压表介绍 (1)1.2仿真软件介绍 (1)1.3 本次设计要求 (2)2 单片机和AD相关知识 (3)2.1 51单片机相关知识 (3)2.2 AD转换器相关知识 (4)3 数字电压表系统设计 (5)3.1系统设计框图 (5)3.2 单片机电路 (5)3.3 ADC采样电路 (6)3.4显示电路 (6)3.5供电电路和参考电压 (7)3.6 数字电压表系统电路原理图 (7)4 软件设计 (8)4.1 系统总流程图 (8)4.2 程序代码 (8)5 数字电压表电路仿真 (15)5.1 仿真总图 (15)5.2 仿真结果显示 (15)6 系统优缺点分析 (16)7 心得体会 (17)参考文献 (18)1 绪论1.1数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。
而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。
因此AD转换是此次设计的核心元件。
输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。
本次自己的设计作品从各个角度分析了AD转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并且分析了数模转换进而使系统运行起来的原理及方法。
通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。
其实也为建立节约成本的意识有些帮助。
本次设计同时也牵涉到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。
1.2仿真软件介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)现了单片机仿真和SPICE电路仿真相结合。
基于单片机的数字电压表pcf8591

XXXXXXX学生实习(实训)总结报告学院: XXXXXXXXXXXX专业班级: 测控学生姓名: xxxxxxx 学号: 2014000000 设计地点(单位) I001设计题目:单片机综合实训--基于单片机的电压表设计完成日期:年月日指导教师评语:成绩(五级记分制):指导教师(签字):前言本次单片机综合训练,我们做了一个基于单片机的数字电压表。
在设计这个电压表之前,指导老师给我们讲解了设计要求和步骤。
按照要求我们设计的数字电压表,通过A/D转换芯片实时采集输入端电压的变化,显示于数码管上。
可通过按键选择输入通道。
在芯片的选择上,单片机选用的是AT89C52芯片,A/D采样芯片片为PCF8591A/D转换芯片。
这个数字电压表除了测量电压的功能,还可以设置报警,超过上下限自动报警。
本次单片机综合训练,用到了单片机开发板、proteus软件等工具,运用了IIC总线、数码管显示等技术。
经历了一个从设计到产品的过程,学到了很多,也收获了很多。
目录前言 (I)一、实训的目的和任务 (1)1.1实训目的 (1)1.2实训任务 (1)二、设计总方案 (2)三、系统硬件设计 (3)3.1单片机最小系统 (3)3.2 A/D转换部分 (5)3.3数码管 (7)3.4四位独立按键及声光报警 (8)四、系统软件设计 (9)4.1软件实现流程图 (9)4.2 IIC总线在实训中的应用 (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软件如何仿真,如何使用,完成一个单片机应用系统的设计,写出设计报告。
基于51单片机的PCF8591芯片电压表

PCF8591芯片电压表一、功能1、用PCF8591芯片采集电压。
2、使用IIC通信协议进行通信。
3、四位数码管显示采集电压。
4、电压表有五个档位200MV、2V、20V、200V、500V。
5、四个按键进行档位切换。
6、五个LED指示灯1~5指示相应档位。
7、电压过大,继电器自动断开,保护电路。
8、滑动变阻器可以对电压表精确度进行调节,使测量更精确。
9、采用STC89RC52单片机。
10、电源供电采用USB电源头(发货中会赠送一根)供电,插到手机直充头上就可以正常使用。
二、硬件按键功能及说明档位1/2:200MV档位和2V档位切换,LED1/2亮。
档位3:切换到20V档位,LED3亮。
档位4:切换到200V档位,LED4亮。
档位5:切换到500V档位,LED5亮。
复位:对整个电路进行复位,回到初始化状态2V档位。
三、注意事项1、程序下载程序利用串口下载,首先将下载器正确连接(说明一下,板子上下载口从左到右依次接下载器的+5V、地、TX、RX,下载器上标的有),打开STC下载器如图。
选择STC89C52RC,点击“打开程序文件”选择程序文件夹中(Output-> 电压表.HEX)的温度控制.hex文件。
点击下载,当提示上电时拔下电源再插上就可以了。
2、按键使用如上图所示,档位1/2、档位3、档位4、档位5,以及复位五个按键。
具体按键功能在上边已经介绍。
3、使用说明刚开始使用是,不要测量高电压,应该先用低电压试试电压表好坏。
测量较高的电压时,要用最高档测量一下大致电压是多少,再换用合适档位进行精确测量。
因为不同型号的电源,导致单片机的工作电压和PCF8591芯片的基准电压,都不是标准的5V,所以在测量时会有误差,这时候就需要通过对电位器进行微调来调节误差,使测量更精确。
4、注意事项需要特别注意的是测量电压千万不要高于测量档位的电压,不然会因为瞬间电流过大,直接烧坏芯片,使电压表产生损坏。
因为操作不当造成的后果,我们一概不负责,一定要特别注意。
基于51单片机的数字电压表课程设计.

信息与电气工程学院电子应用系统CDIO一级项目设计说明书(2011/2012学年第二学期)题目:___ _数字电压表__________专业班级:电子信息0902班学生姓名:张文盛学号:090070213指导教师:贾少锐、李晓东、马永强李丽宏、贾东立、刘会军设计周数:设计成绩:2012年6月28日1、CDIO设计目的本次CDIO设计题目是:利用所学的51单片机,C语言,数字电路等知识,设计一个符合要求的数字电压表。
主控芯片可以是AT89C51,而采集电压的模拟量转换成数字量的芯片可以是ADC0804,也可以是PCF8591。
而显示模块可以是数码管,也可以是液晶LCD1602,从而展示给我们所得的电压值。
2、CDIO设计正文2.1 数字电压表系统设计框图本次数字电压表系统设计框图如图1所示:图1 数字电压表设计框图数字电压表主要由模/数转换电路、单片机控制电路、显示电路等三部分组成。
其中PCF8591等器件组成的转换电路,将输入的模拟量信号进行取样、转换、然后将转换的数字信号送进单片机。
单片机控制电路主要实现对数据进行程序处理;显示电路主要用于将单片机的信号数据转换后显示测量结果。
模拟信号产生模块:输入电源电路(变压器、整流电路、滤波电路、稳压电路组成)和分压电路(9万欧姆和1万欧姆的电阻分压)。
模数转换模块组成部分:PCF8591芯片程序处理的单片机控制模块:AT89C51芯片电压结果显示部分:LCD1602液晶2.2 各模块介绍2.2.1 AT89C51芯片介绍AT89S52 具有以下标准功能:8k 字节Flash,256 字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52 可降至0Hz 静态逻辑操作,支持2 种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
基于PCF8591数字电压表设计

学生姓名:学生学号:系别:专业:指导教师:电气信息工程学院制2013年6月第1章课程设计的总体方案1.1 课程设计的目的1.了解A/D芯片PCF8591转换性能及其编程方法。
2.掌握A/D转换器与单片机的接口方法3.学会使用A/D转换器进行电压信号采集1.2课程设计的要求1.利用A/D芯片PCF8591及1602液晶显示屏组成。
2.采用4路模拟量输入。
3.尽量使用较少的元器件。
1.3课程设计的思路1.根据设计要求,选择AT89C51单片机为核心控制器件。
2.A/D转换采用PCF8591实现,利用PCF8591将模拟电压转换为数字量。
3.经单片机将数字量转换成对应电压值,电压显示采用4位一体的LED数码管。
1.4 课程设计的方案硬件电路设计由6个部分组成。
A/D转换电路,A T89C51单片机系统,LCD显示系统、时钟电路、复位电路以及测量电压输入电路。
硬件电路设计框图如图1所示。
图1 数字电压表系统硬件设计框图第2章系统方案硬件设计2.1 系统方案的提出根据4路模拟量输入设计的需要,为单片机和A/D转换器提供以下设计方案。
2.1.1 单片机方案AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k字节Flash可擦写存储器(PEROM)。
AT89C51器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,AT89C51的片内Flash允许程序存储器通过传统编程器反复编程。
由于芯片内集成了通用8位中央处理器和Flash存储单元,功能强大的微处理器ATMEL AT89C51可为许多嵌入式控制应用系统提供高度灵活、高性价比的解决方案。
A T89C51具有如下特点:4k Bytes Flash存储器、128 bytes的RAM以及32个I/O口、2个16位定时/计数器,5个中断优先级2层中断嵌套中断、1个全双工串行通信口、片内时钟振荡器。
AT89C51芯片,如图所示,各引脚功能如下:VCC:供电电压。
基于51单片机的数字电压表设计

内容摘要:进入二十一世纪以来,在现代化检测技术运用过程中,往往需要通过具有高精细度以及科学化的数字电压表完成相应的现场检测工作。
通过将世纪检测得到的数据通过传输功能送入计算机计算中心,从而完成相应的存储、计算以及控制、实时显示等各项功能。
而在本文中,笔者所的数值电压表为51式单片机(AT89c51),而A/D转换装置采用的是TLC2543型号硬件,从而实现整个数值电压表软件以及硬件电路的设计。
在本系统中,具有电路简单,元件使用数量少、设计成本低等优点,并且整个调节过程完全自动化。
除此以外,本数字电压表可以进行八路的转化量(A/D)测量以及测量结果远程传送等多项功能。
本设计数值电压表能够对0V~5V电压的8路电压值进行准确的测量,同时在外部数码管上进行单路或者轮流模式的显示。
关键词:模拟信号数字电压表单片机 A/D转换The design of digital voltage meter based on 51 single chipmicrocomputerAbstract:the twenty-first century, in the process of applying modern detection techniques , often need to complete the appropriate field testing work by having a high finesse and scientific digital voltmeter . Century detected by the data transfer function obtained by computing center into the computer , thus completing the appropriate storage , computing and control , real-time display and other functions . In this article, the author numerical voltmeter 51 type microcontroller (AT89c51), while the A / D converter TLC2543 model is used in hardware , enabling the entire value voltmeter software and hardware design . In this system , with a simple circuit using a small number of components , design and low cost , and the whole adjustment process is fully automated. In addition, the eight digital voltmeter can be converted amount (A / D) measurement and remote transmission of measurement results and many other features . The design values voltmeter capable of 0V ~ 5V voltage 8 accurately measure voltage , single or simultaneous display mode turns on an external digital control .Keywords: Analog signal Digital voltmeter SCM A/D converter;目录前言 (1)1 概述 (1)1.1 选题背景 (1)1.2 研究意义 (1)2 设计方案分析 (2)2.1 A/D转化装置 (2)2.2 电源 (2)3 硬件部分设计分析 (3)3.1 单片机 (3)3.1.1 对单片机芯片进行选择 (3)3.2 外围电路与AT89C51接口设计分析 (6)3.2.1 TLC2543 (7)3.2.2 TLC2543的特点 (7)3.2.3 TLC2453接口时序 (7)3.2.4 TLC2543 A/D芯片与89C51单片机的接口 (7)4 软件部分设计分析 (10)4.1 程序初始化 (11)4.2 A/D转换装置子程序 (12)4.3 显示子程序 (12)5 结论 (13)参考文献: (14)附录: (15)基于51单片机的数字电压表设计前言随着时代的进步,科技不断发展,电压表也在更新换代,由以前的表面指针电压表更替为以数码管或者液晶显示面板显示的电压表。
基于51单片机的数字电压表设计

内容摘要:进入二十一世纪以来,在现代化检测技术运用过程中,往往需要通过具有高精细度以及科学化的数字电压表完成相应的现场检测工作。
通过将世纪检测得到的数据通过传输功能送入计算机计算中心,从而完成相应的存储、计算以及控制、实时显示等各项功能。
而在本文中,笔者所的数值电压表为51式单片机(AT89c51),而A/D转换装置采用的是TLC2543型号硬件,从而实现整个数值电压表软件以及硬件电路的设计。
在本系统中,具有电路简单,元件使用数量少、设计成本低等优点,并且整个调节过程完全自动化。
除此以外,本数字电压表可以进行八路的转化量(A/D)测量以及测量结果远程传送等多项功能。
本设计数值电压表能够对0V~5V电压的8路电压值进行准确的测量,同时在外部数码管上进行单路或者轮流模式的显示。
关键词:模拟信号数字电压表单片机 A/D转换The design of digital voltage meter based on 51 single chipmicrocomputerAbstract:the twenty-first century, in the process of applying modern detection techniques , often need to complete the appropriate field testing work by having a high finesse and scientific digital voltmeter . Century detected by the data transfer function obtained by computing center into the computer , thus completing the appropriate storage , computing and control , real-time display and other functions . In this article, the author numerical voltmeter 51 type microcontroller (AT89c51), while the A / D converter TLC2543 model is used in hardware , enabling the entire value voltmeter software and hardware design . In this system , with a simple circuit using a small number of components , design and low cost , and the whole adjustment process is fully automated. In addition, the eight digital voltmeter can be converted amount (A / D) measurement and remote transmission of measurement results and many other features . The design values voltmeter capable of 0V ~ 5V voltage 8 accurately measure voltage , single or simultaneous display mode turns on an external digital control .Keywords: Analog signal Digital voltmeter SCM A/D converter;目录前言 (1)1 概述 (1)1.1 选题背景 (1)1.2 研究意义 (1)2 设计方案分析 (2)2.1 A/D转化装置 (2)2.2 电源 (2)3 硬件部分设计分析 (3)3.1 单片机 (3)3.1.1 对单片机芯片进行选择 (3)3.2 外围电路与AT89C51接口设计分析 (6)3.2.1 TLC2543 (7)3.2.2 TLC2543的特点 (7)3.2.3 TLC2453接口时序 (7)3.2.4 TLC2543 A/D芯片与89C51单片机的接口 (7)4 软件部分设计分析 (10)4.1 程序初始化 (11)4.2 A/D转换装置子程序 (12)4.3 显示子程序 (12)5 结论 (13)参考文献: (14)附录: (15)基于51单片机的数字电压表设计前言随着时代的进步,科技不断发展,电压表也在更新换代,由以前的表面指针电压表更替为以数码管或者液晶显示面板显示的电压表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称:微机原理课程设计题目:数字电压表ﻬ摘要单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
它最早是被用在工业控制领域。
其中我们用于学习用的最多的是STC89C52单片机,STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但也做了很多改进使得芯片具有传统51单片机不具备的功能。
STC89C52具有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EE PROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。
本设计就是以单片机STC89C52为核心,附以外围电路,实现数字电压表的功能,并运用软件Proteus进行仿真来得到实验结果。
关键词:STC89C52单片机、仿真、中断、数字电压表、数码管显示ﻬ目录一、任务要求ﻩ错误!未定义书签。
1.1 设计任务ﻩ错误!未定义书签。
1.2设计要求ﻩ错误!未定义书签。
1.3发挥部分 ...................................................................................... 错误!未定义书签。
1.4 创新部分 ........................................................................................... 错误!未定义书签。
二、方案总体设计与论证ﻩ4三、硬件设计ﻩ53.1 单片机晶振部分................................................................................ 错误!未定义书签。
3.2 单片机复位部分................................................................................ 错误!未定义书签。
3.3电源模块部分ﻩ错误!未定义书签。
3.4 A/D转换部分ﻩ错误!未定义书签。
3.5数码管显示部分ﻩ错误!未定义书签。
3.6 单片机STC89C52 (9)四、软件设计 (11)4.1 程序设计总方案 (11)4.2 系统子程序设计ﻩ错误!未定义书签。
4.3 A/D转换子程序ﻩ错误!未定义书签。
4.4 中断 ................................................................................................. 错误!未定义书签。
五、系统仿真与调试 .................................................................... 错误!未定义书签。
六、设计总结与心得体会 ............................................................ 错误!未定义书签。
6.1设计总结 ......................................................................................... 错误!未定义书签。
6.2心得体会 ......................................................................................... 错误!未定义书签。
七、参考文献ﻩ错误!未定义书签。
ﻬ一、任务要求1.1设计任务使用所学的单片机以及编程的知识,利用PCF8591A/D转换芯片把电阻转换为电压并使用四位数码管显示出来。
1.2设计要求利用所学的软硬件知识,使用KEIL uVision4软件编写能够实现数字电压表功能的程序。
使用软件将数字电压表的硬件电路的模拟电路在70mm*90mmPCB板模板上绘制出来,然后根据lochmaster30软件所绘制的模拟电路在70mm*90mmPCB板上焊接出来。
检查电路焊接完好后把编写好的程序下载到单片机内验证编写的程序,观察数字电压表的显示情况是否与实验要求相符。
1.3发挥部分使用PCF8591A/D转换芯片通过电阻的调节改变电压并在数码管上显示出来,并且使用一个LED实时的把电压的大小体现出来,电压变高LED就变亮,电压变低LED就变暗。
1.4 创新部分本实验需求测量0-5V电压,发挥创新,将测量电压的大小增大,设置成可调挡的形式。
可测量5V、10V、20V电压等。
由于时间关系,程序只写了测量5V电压的,稍后会更新程序。
本实验采用的是四路检测问做法,尽可能发挥了它的功能。
二、方案总体设计与论证本次步进电机控制实验以单片机为主体,P0口接上拉电阻驱动数码管的段码,P2口连接数码管的位码,P2口的高四位从低到高分别控制第一、二、三、四个数码管亮或者灭。
P1.0口和P1.1口分别接PCF8591芯片的SCL和SDA引脚。
SCL和SDA引脚分别为I2C 总线的时钟线、数据线。
AIN0口接蓝白卧式可调电阻,当可调电阻滑动时,电阻的变化引起电压的变化,经过PCF8591芯片的实时转换,通过单片机处理实时的在数码管上显示出来。
同时也能够通过外接在芯片的AOUT口的LED体现电压的大小。
AOUT口为芯片的D/A转换输出端。
外加复位和晶振电路等组成的最小系统。
EA引脚接高电平。
进行本实验之初具有两套方案:方案一:使用附加发光二极管的亮与暗来体现电压的大小。
此方法拥有体现电压大小的效果更明确的优势。
但是硬件电路会复杂一点。
方案二:不使用附加发光二极管的亮与暗来体现电压的大小。
此方法具有硬件电路简单的优势,节约了成本。
但是体现效果不明显。
经过衡量,觉得附加LED体现会使电压大小的体现效果更加明了。
所以选择方案一。
使用数码管显示附加LED来体现不电压的大小。
设计变化框图如图1所示:图1 变化框图设计系统功能图如图2所示:图2系统功能图总体方案工作原理:STC89C52是集成40个I/O口的单片机,拥有12MHZ的晶振周期,电路拥有可控复位电路。
PCF8591芯片可实现模拟量与数字量的变化。
移动滑动变阻器,电压的变化模拟量通过PCF8591芯片转换为数字量输送到单片机中,通过单片机处理,并在数码管上显示出来。
三、硬件设计3.1单片机晶振部分如图3所示,为单片机的晶振电路部分。
其中C1、C2为22pF的电容,它是振荡回路交联电容,如果没这两个电容的话,振荡部分会因为没有回路而停振。
电路就不能正常工作。
Y1就是12MHZ的晶振。
一般来说单片机内部有一个带反馈的线性反相放大器,外界晶振(或接陶瓷振荡器)和电容就可组成振荡器,晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的。
可以说晶振就是单片机的心脏,为单片机工作提供动力。
图3单片机晶振电路部分3.2单片机复位部分如图4所示,为单片机的复位电路部分。
复位电路,就是利用它把电路恢复到起始状态。
当电源低于单片机正常工作电压,影响单片机工作;程序跑飞,时钟失步等情况下需要使单片机复位。
该复位电路为按键复位,按键复位需要人为在复位输入端RST上加入高电平。
一般采用的办法是在RST端和正电源VCC之间接一个按钮。
当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。
按键复位的电路如所示。
由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
图4单片机复位电路部分3.3电源模块部分如图5所示,为单片机的电源模块部分。
电源模块包括一个四脚直排针(P0),一个蓝白自锁开关(S5),一个1K限流电阻(R2)和一个发光二极管(L0)。
电源模块能够为电路提供电源。
图5 电源模块部分3.4 A/D转换部分如图6所示,为A/D转换部分。
其中R3为蓝白卧式电位器,调节电阻可使VO输入芯片的电压发生变化R4为LED的限流电阻,L1为电压大小体现的发光二极管。
图6A/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总线的最大速率决定。
如图7为PCF8591内部结构图:如图7为PCF8591内部结构图如图8为PCF8591引脚图:如图8为PCF8591引脚图AIN0~AIN3:模拟信号输入端。
A0~A3:引脚地址端。
VDD、VSS:电源端。
SDA、SCL:I2C总线的数据线、时钟线。
OSC:外部时钟输入端,内部时钟输出端。
EXT:内部、外部时钟选择线,使用内部时钟时EXT接地。
AGND:模拟信号地。
AOUT:D/A转换输出端。
VREF:基准电源端。
3.5 数码管显示部分数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管;按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
本实验用的是四位八段共阴数码管。
图9为共阴极数码管电路结构。
图9共阴数码管电路结构如图10所示,为本实验的数码管显示部分。
图10数码管显示部分如图11所示,为四位共阴数码管的引脚图。