基于51单片机PCF8591数字电压表课程设计.docx
- 文档编号:23012010
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:46
- 大小:486.68KB
基于51单片机PCF8591数字电压表课程设计.docx
《基于51单片机PCF8591数字电压表课程设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机PCF8591数字电压表课程设计.docx(46页珍藏版)》请在冰豆网上搜索。
基于51单片机PCF8591数字电压表课程设计
课程名称:
微机原理课程设计
题目:
数字电压表
摘要
单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
它最早是被用在工业控制领域。
其中我们用于学习用的最多的是STC89C52单片机,STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但也做了很多改进使得芯片具有传统51单片机不具备的功能。
STC89C52具有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。
本设计就是以单片机STC89C52为核心,附以外围电路,实现数字电压表的功能,并运用软件Proteus进行仿真来得到实验结果。
关键词:
STC89C52单片机、仿真、中断、数字电压表、数码管显示
一、任务要求4
1.1设计任务4
1.2设计要求4
1.3发挥部分4
1.4创新部分4
二、方案总体设计与论证5
三、硬件设计6
3.1单片机晶振部分6
3.2单片机复位部分6
3.3电源模块部分7
3.4A/D转换部分7
3.5数码管显示部分8
3.6单片机STC89C5210
四、软件设计13
4.1程序设计总方案13
4.2系统子程序设计13
4.3A/D转换子程序13
4.4中断14
五、系统仿真与调试15
六、设计总结与心得体会18
6.1设计总结18
6.2心得体会18
七、参考文献19
一、任务要求
1.1设计任务
使用所学的单片机以及编程的知识,利用PCF8591A/D转换芯片把电阻转换为电压并使用四位数码管显示出来。
1.2设计要求
利用所学的软硬件知识,使用KEILuVision4软件编写能够实现数字电压表功能的程序。
使用软件将数字电压表的硬件电路的模拟电路在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.4A/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所示,为四位共阴数码管的引脚图。
图11四位共阴数码管引脚图
如图11所示,其中A1,A2,A3,A4分别是数码管从左到右的位选,dp为共地端,在使用时,共阴极数码管应该将它接地。
其中,a,b,c,d,e,f,g,dp对应的段选分别为如图12对应段选。
图12数码管的段选
数码管要显示数字就需要通过PO口输入高低电平控制每个LED灯的亮灭,公共端接地线P0口接1K的上拉电阻。
由于并未用到小数点显示,所以DP引脚悬空。
如表1所示为数码管显示数字的实现:
显示字型
dp,g,f,e,d,c,b,a
字符码
0
00111111
0x3f
1
00000110
0x06
2
01011011
0x5b
3
01001111
0x4f
4
01100110
0x66
5
01101101
0x6d
6
01111101
0x7d
7
00000111
0x07
8
01111111
0x7f
9
01101111
0x6f
表1数码管的显示
3.6单片机STC89C52
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但也做了很多改进使得芯片具有传统51单片机不具备的功能。
STC89C52具有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。
如图13所示为STC89C52的引脚图。
图13单片机STC89C52
以下为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应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
四、软件设计
数字电压表程序编写是通过时下最流行的KEILuVision4一体化集成编程软件完成,在KEIL环境下编写程序并生成二进制文件。
软件流程图如图4所示。
根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序。
4.1程序设计总方案
程序流程图是人们对解决程序问题的方法,思路或者算法的一种描述。
流程图的优点是:
采用简单规范的符号,画法简单。
结构清晰,逻辑性强。
便与描述,容易理解。
程序流程图画法不可随意,一旦随意就会使程序结构杂乱无章,这样的程序令人难以理解和接受,并且容易出错。
因此程序必须遵守三个结构:
顺序结构,选择结构,循环结构。
在流程图中,不同的图形代表着不同的含义。
图14为本程序设计总方案:
图14程序设计总方案
4.2系统子程序设计
初始化程序,所谓初始化,是对将要用到的STC89C52单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等
4.3A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图15所示。
图15转换流程图
4.4中断
中断是CPU对系统发生的某个事件作出的一种反应。
引起中断的事件称为中断源。
中断源向CPU提出处理的请求称为中断请求。
发生中断时被打断程序的暂停点成为断点。
CPU暂停现行程序而转为响应中断请求的过程称为中断响应。
处理中断源的程序称为中断处理程序。
CPU执行有关的中断处理程序称为中断处理。
而返回断点的过程称为中断返回。
中断的实现实行软件和硬件综合完成,硬件部分叫做硬件装置,软件部分成为软件处理程序。
大体上可以把中断全过程分为5个阶段:
中断请求、中断判优、中断响应、中断处理和中断返回。
单片机有五个中断源:
外部中断0(INT0);定时器T0中断;外部中断1(INT1);定时器T1中断,串行口中断。
五、系统仿真与调试
本次设计的仿真软件为PROTEUS。
首先在PROTEUS文件下创建步进电机电路原理图。
根据设计需求打开器件模型库,在MCU库查找AT89C52模型,在电机类库中查找步进电机模型,在模拟IC库查找电机驱动器PCF8591模型,依次在相应器件模型子库中查找单片机的外围复位电路、晶振电路等的常用器件模型;然后将软件左侧的器件拾取框将相应器件拖入原理图工作区,基于单片机控制的数字电压表原理图如图16所示。
图16单片机数字电压表原理图
电路接通后,数码管显示最初始电压数值,由于电位器置于最高位,所以数码管显示最大电压5V。
如图17是电路接通后通道1电压显示的状态图:
图17通道1电压显示状态图
如图18是第二路电压显示:
图18通道2电压显示状态图
如图19是第三路电压显示:
图19通道3电压显示状态图
如图20是第四路电压显示:
图20通道4电压显示状态图
以下为焊接实物图。
如图21为PCB实物图的正反面图:
图21PCB板的正(左)反(右)面图
六、设计总结与心得体会
6.1设计总结
经过将近十天的制作过程,终于完成了这次设计所要实现的功能。
旋转电位器数码管能够实现电压的变化。
6.2心得体会
经过这次的制作后感觉还是软件编程是相当的重要。
能够使用软件解决的问题绝不用硬件解决。
程序开始只能显示0-0.255,不能显示0-5。
一直检查不出来,最后经过老师的指点,是数据的类型弄错了,最后经过修改程序就没有问题了。
在硬件的问题上基本没有错误。
七、参考文献
[1]杨居义、杨晓琴、王益斌.单片机课程设计指导[M].出版社:
清华大学出版社;出版年:
2009.
[2]李朝青.单片机原理及接口技术[M].出版社:
北京航空航天大学出版社.第3版;出版年:
2006.
科技学院
本科毕业论文(设计)管理办法
第一章总则
第一条本科毕业论文(设计)是人才培养方案的重要组成部分,是培养学生科研能力和创新能力的重要实践环节,为保证毕业论文(设计)工作的顺利完成,加强规范化管理,提高毕业论文(设计)质量,根据教育部、省教育厅的有关规定要求,结合我院实际情况,特制定本办法。
第二章目的与要求
第二条毕业论文(设计)教学环节的目的,培养学生勇于探索的创新精神,实事求是、严肃认真的科学态度和严谨求实的工作作风。
第三条使学生能综合运用所学的知识技能,提高思考问题、分析问题和解决实际问题的能力。
第四条培养学生从文献、科学实验、生产实践和调查研究中获取知识的能力,培养学生从事科学研究的兴趣,掌握科学研究的基本方法。
第五条对学生的知识面、掌握知识的深度、运用理论知识处理问题的能力、实践能力、外语水平、计算机运用水平、书面及口头表达能力等进行一次全面的考核。
第六条要求所有毕业生必须撰写毕业论文(设计),各系要认真组织毕业论文(设计)工作,确保毕业论文(设计)的质量。
第三章组织管理
第七条全院的毕业论文(设计)工作按照分级分工的原则,负责毕业论文(设计)工作的管理、指导、检查、考核和总结。
(一)教务处职责
1.负责制定全院本科毕业论文(设计)管理规章制度。
2.组织开展毕业论文(设计)工作的教学研究与改革。
3.组织毕业论文(设计)工作的检查、评估和总结。
4.审核答辩委员会组成人选,检查毕业答辩的过程。
5.组织评选院级优秀毕业论文(设计)。
(二)系职责
1.成立毕业论文(设计)工作领导小组,制定工作计划和安排。
2.组织专业教研室成立专业答辩委员会。
3.负责按照标准配备、审查、批准指导教师,组织指导教师培训。
4.依据学院的毕业论文(设计)成绩评定标准,结合专业特点,制定本系各专业的具体评分标准和规范。
5.负责本系学生毕业论文(设计)所需的场地、仪器设备的分配和保障。
6.评选系优秀毕业论文(设计)。
7.做好毕业论文(设计)工作总结与归档。
(三)教研室职责
1.根据指导教师的条件,提出指导教师名单。
2.审查毕业论文(设计)题目及指导教师的安排,对不合格的题目提出修改意见。
3.组织审定毕业论文(设计)选题,落实一人一题的工作要求;定期检查毕业论文(设计)工作的进度和质量。
4.检查毕业论文(设计)任务书的填写情况。
5.考核指导教师的工作,把握毕业论文(设计)的进度和质量。
6.组织毕业论文(设计)的答辩和成绩评定工作。
7.做好本专业优秀毕业论文(设计)的评选工作。
8.认真进行工作总结,汇总毕业论文(设计)资料送系归档。
(四)指导教师职责
1.毕业论文(设计)题目确定后,指导教师要及时做好各项准备工作,其中包括拟定任务书,收集资料以及做好实验的准备工作,制定指导计划和工作程序。
2.向学生下达《科技学院毕业论文(设计)任务书》(见附件3),并提出具体的要求,指定主要参考资料。
3.审定学生的总体方案和工作计划,并定期检查学生的工作进度和工作量,及时解答和处理学生提出的有关问题,严格要求学生。
4.做好学生外文翻译的评阅工作。
5.指导学生正确撰写毕业论文(设计)报告,并对报告写出评语。
6.按《科技学院毕业论文(设计)撰写规范》(见附件1)要求检查学生论文撰写完成情况并填写《科技学院毕业论文(设计)工作指导情况记录》(附件4)。
7.评定毕业论文(设计)成绩。
8.做好毕业论文(设计)材料的整理归档工作。
第四章选题、开题
第八条选题时应遵循的原则
(一)课题必须符合本专业的培养目标及教学基本要求,体现本专业基本训练的内容,使学生受到全面的锻炼。
(二)课题应尽可能结合生产、科研和实验室建设等任务,减少虚拟题目的数量及比重。
(三)课题的类型可以多种多样,贯彻因材施教的原则,使学生的创造性得以充分发挥,利于提高课题成果的质量。
(四)选题应力求有益于学生综合运用多学科的理论知识与技能。
(五)课题要在保证教学基本要求的前提下,学生在培养方案规定的时间内,在指导教师指导下经过努力能够完成任务。
(六)课题分配原则上每人一题,双方选择,学生在教师列入的选题中选题,也可以自主选定符合本专业的题目上报到指导教师,经指导教师审定、教研室批准后方可列入选题目录。
经教研室审定,报系主任批准后,确定分配题目。
教研室根据学生意向、学生本人的实际能力以及课题的类型、分量、难易程度,结合指导教师的意见进行综合平衡,最后确定课题分配,并以书面形式将课题任务书下达给学生,最终以系为单位将选题情况汇总报教务处。
第九条选题范围
(一)文、理、管、经、医类专业,应以完成毕业论文为主,题目以阐述理论原理和将理论原理应用于某些具体问题的课题为主,也可选择一些具有一定深度和难度的专题研究课题,使学生在分析问题方面得到较多的锻炼。
(二)工科专业,应以完成毕业设计为主,题目以工程设计类型的课题为主,有条件的可以选择既有工程设计又有专题研究的课题,使学生既能受到工程师的基本训练,又掌握本专业的基本技能。
(三)艺术类专业,应以毕业设计为主,毕业设计题目通过指导教师与学生沟
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 PCF8591 数字 电压表 课程设计