单片机课程设计-数字电压表的设计.doc_第1页
单片机课程设计-数字电压表的设计.doc_第2页
单片机课程设计-数字电压表的设计.doc_第3页
单片机课程设计-数字电压表的设计.doc_第4页
单片机课程设计-数字电压表的设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计设计名称 数字电压表的设计 .全套设计加扣3012250582 学年学期 2014-2015(上) 课程名称 单片机课程设计 专业年级 电气112班 姓 名 学 号 1 提交日期 2014年6月7日 成 绩 指导教师 水利与建筑工程学院第 18 页 共 18 页目录第一章 设计目的及要求41.1、设计目的41.2、设计要求41.2.1、课程设计要求41.2.2、基本设计功能要求主要分为以下几个部分:4第2章 方案设计52.1、研究背景52.2、方案论证52.2.1、方案一5第3章 主要元器件介绍63.1 AT89C51单片机介绍6第4章 硬件电路设计9第5章 软件设计及主要子程序115.1、软件设计思路115.2、主程序模块12系统软件总体框图如下12第6章 系统仿真与调试146.1、Keil编译146.2、Protues仿真平台146.2.1、Protues仿真简介及部分模块仿真146.2.2、硬件电路总图与仿真15第7章课程设计总结16附录17参考文献19摘要 在日常维修、教学和科研中,电压表是不可缺少的。我设计的的就是以单片机为基础设计出一种结构简单、工作可靠、灵活性好的数字电压表,它能实现电压表的各项功能,具有很高的实用性。 对基于单片机的数字电压表的硬件系统、 软件系统的设计原理及具体实现方案作以详细介绍,其中,在硬件部分,较为详细的讨论了硬件的选择、设计原理、使用方法和功能,同时,对各部分接口电路作以介绍;在软件部分,介绍了软件所使用的编程语言和编程思路。最后,对电路调试、印刷 PCB 板的制作及系统的抗干扰设计作了进一步分析和总结。 本次设计的数字电压表,其硬件电路所用元件较少、成本低、调节简单;软件采用 C 语言编程,其灵活性高,可读性强。关键词:单片机; 电压表; A/D 转换器;串行总线 第1章 设计目的及要求1.1、设计目的本次课程设计目的是想能够把在书本中学到的有关单片机的知识运用到现实生活中,真正实现知识的价值。另一方面,通过这次的设计,希望能够提升和加深自己对于单片机这门课程的的了解和认识。能灵活运用Keil进行软件编程调试以及用proteus软件仿真。本次设计组成数字电压表,画出系统硬件电路图,对电路调试、印刷 PCB 板的制作及系统的抗干扰设计作了进一步分析和总结。在调试程序时,要求整个系统工作正常、显示正确、结果满意,掌握该芯片的工作原理并完成读、写程序的设计、编写和调试。1.2、设计要求1.2.1、课程设计要求能熟练运用51单片机实现硬件与软件结合完成电子产品的设计,把理论真正运用于实践,会用Keil等软件编程调试运行,熟悉应用Proteus软件仿真。强化编程练习,注意查询方式与中断方式的区别等等。1.2.2、基本设计功能要求主要分为以下几个部分:(1)能在4个七段LED数码管上显示电压:前三位显示结果,末位显示后缀(2)LED数码管显示方式采用动态扫描方式;(3)能以十六进制和十进制两种显示方式显示;(4)显示方式通过键盘按键切换:按1键显示十六进制,按2键显示十进制; 3键表示通道切换键;(5) 10进制精度要求:高于0.04V。第2章 方案设计2.1、研究背景 在日常维修性差,系统功能固定,难以更新扩展,不能满足日益发展的电子工业要求。而应用微处理器(单片机)为核心单元,其灵活性高、系统功能扩展简单,性能稳定可靠。本课题目的就是以单片机为基础设计出一种结构简单、工作可靠、灵活性好的直流数字电压表。要求数字电压表精度为0.05V,测量范围为 05V。、教学和科研中,电压表是不可缺少的,传统的数字电压表设计通常以大规模 ASIC专用集成电路为核心器件,并辅以少量中规模集成电路及显示器件构成,但是这种设计方法灵活。2.2、方案论证2.2.1、方案一方案:本课题所设计的数字电压表主要包括两部分:硬件电路及软件程序。而硬件电路采用 ATMEL 公司的 AT89C51 作为主处理器, A/D 系统主要由信号采集、 转换、数据处理输出、驱动显示等几个功能模块组成。各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用 C 语言编程,利用 Keil 软件对其编译和仿真,详细的设计算法将会在程序设计部分详细介绍。系统框图如下: 被测直流电压由 A/D 转换单元采集后被量化,再由单片机对 A/D 转换的结果进行标度变换,得到被测电压的数值,通过单片机对数次转换结果求平均值、并通过 SOI 串行数据接口把所求平均值输出给显示驱动单元,由该单元完成译码,并驱动数码管显示。第3章 主要元器件介绍3.1 AT89C51单片机介绍AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。管脚说明: VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能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口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.2、ADC0809介绍对ADC0809主要信号引脚的功能说明如下: IN7IN0模拟量输入通道 ALE地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。 START转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。本信号有时简写为ST. A、B、C地址线。通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。 CLK时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号 EOC转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。 D7D0数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高 OE输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。 Vcc+5V电源。 Vref参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V,Vref(-)=-5V第4章 硬件电路设计4.1硬件电路图及工作过程简介 电压表的数字化是将连续模拟的电压量经 A/D 转化后变为不连续的离散的数字量并加以显示7。在设计过程中采用分模块设计,按照图 2.1 把电路分 A/D转换、数据处理输出、驱动、显示四个单元,分别设计。 A/D 转换器选用的是八位模/数转换器 ADC0809。其次,计算机中的数字都是十六进制数,而我们习惯于十进制数的读写,因此,在软件设计中则要把十六进制数转换成十进制数。在显示的时候也是如此。本装置的输出用四位 LED 显示,因此在软件设计中还要解决数字输出与 LED 的接口问题。硬件则需要将输出线接 4 西安工业大学学士学位论文到八段数码管上8。 数值显示采用八段数码管,由单片机以动态扫描方式驱动,在此方式下能保证足够的亮度和较长的使用寿命。 由电路原理图可以看出 ADC0809 通过 IN0 采集电压信号并送给单片机,单片机将采集来的信号进行一定的处理然后通过串口扩展的共阴极 LED 数码管显示采集的电压值。 数码管显示是采用动态显示的原理, 要显示的数码通过单片机的串口发送然后通过 ZLG7289 转换为并行信号分别加到四个数码管的 SADP,而四个数码管的公共端分别接 ZLG7289 的 DIG0DIG3 接口,因此要使哪个数码管显示就把相应的公共端口置零即可。 数字 比如: “1”的字型码通过串口发送出来并经过 ZLG7289译码加到了四个数码管上,如果其中一个引脚为“0”那么对应的数码管显示数 。在此电路中电压值的三个数字分别通过串口依次的送出,对应的公共端字“1”也依次被置“0”,由于两次置“0”的时间间隔很短,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。因此给人的感觉就是三个数码管同时的显示出电压值四个数字。 电路原理图 ADC0809 的 REF接地,REF接电源5V,因此采集电压的范围是 05V,A/D 转换输出的结果 D0D7 为 8 位二进制数。转换输出的结果在 0255 之间分别对应着 05V 之间的 256 个电压值,因此单片机必须把 A/D 转换输出的结果转换成可以显示的电压值,当 ADC0809 输出为(11111111)B 时,输入电压值 VIN5.00V;当 ADC0809 输出为(00000000)B 时,输入电压值 VIN0.00V;当 ADC0809 输出为(10000000)B 时,输入电压值 VIN2.50V,但是单片机在进行数学运算时结果只读取整数部分,因此当输出为(10000000)B 时计算得来的电压值 VIN2.00V。由此可以看出这样运算的输出结果很不准确,在 05V 之间只有 0,1,2,3,4,5 六个电压值,所以必须把单片机运算结果中的小数部分保留下来8。具体方法是:如果保留小数点后两位,在运算的时候分子乘以 100, 保留三位就乘以 1000。当 ADC0809 输出位(10000000)B 时,单片机运算结果为 2500。然后单片机将 250 除以 10 得到商为 250,余数为 0,再将 250 除以 10 得到商为25,余数为 0,再将 25 除以 10 得到商为 2,余数为 5。这样就可以得到电压值的四个数字,最后分别将 2、5、0、0 四个数通过串口送出,显示在四个数码管上,并且把第一个数码管的 dp 脚(即小数点)直接接地使其一直发亮,那么数码管上就可以显示输入的电压值。 第5章 软件设计及主要子程序5.1、软件设计思路 开机后首先初始化,使数码管显示为“0.000”然后调用 A/D 转换子程序启动AD 转换器,单片机等待查询转换结束信号,如果有信号则通过并行口读取转换数据并存储,就这样连着读取五次数据后求平均值,再按上面的方法通过串行口把数据传输出,经译码在数码管显示。5.2、主程序模块系统软件总体框图如下 系统上电即初始化,首先,单片机片选A/D转换器,然后发出信号启动A/D转换。此时单片P3.2口开始工作,不断扫描A/D转换结束端口有无结束信号。若有,即启动采集信号,对A/D转换器的数据输出口送来的数值进行储存,有重新开始,并且准备下一次的采集;若没有,则继续等待。每当采集系统采集一次,a的值就自加1,直至采集满5次时归零,然后单片机一边对数据处理,一边准备下一次的扫描。数据处理完后,通过SPI总线将数据传给ZLG7289,ZLG7289把接收到的数据译码后送显示器显示出来。第6章 系统仿真与调试6.1、Keil编译Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势, Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。如果使用C语言编程,那么Keil几乎就是不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。本次设计采用汇编语言编程,生成.hex文件以供装载到Protues中的单片机进行仿真。6.2、Protues仿真平台6.2.1、Protues仿真简介及部分模块仿真Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。在编译方面,它也支持IAR、Keil和MATLAB等多种编译。目标代码的加载方法为,在Protues编辑环境双击AT89C51,弹出下图所示的对话框,在PROGRAM FILM一栏中单击打开按钮,选中Keil中生成的lzy.hex文件,在CLOCK FREQUENCY栏中设置系统工作频率为12MHZ,单击OK完成目标代码的加载。图6.1 程序代码加载6.2.2、硬件电路总图与仿真第7章课程设计总结通过这次用单片机对数字电压表的设计与仿真,使得我对电子产品的设计产生了浓厚的兴趣,对于程序与步骤的设计也基本掌握,更让我对51单片机的基本原理与设计理念有深刻的理解,这是第二次用Proteus做仿真,虽然有了之前的一些经验,但是在实际操作时还是遇到了了不少的困难,好在在同学和网络的帮助下,这些问题都得到了很好的解决。短短的一个星期,从开始选题到完成设计,我学会了用理论联系实际并结合单片机原理与接口技术课程解决实际问题,巩固、加深和扩展了有关单片机设计方面的知识,尤其重要的是让我明白了实践出真知的道理,今后我要多多的去实践。附录 C语言源程序 #include unsigned char code dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00; unsigned char dispbuf8=10,10,10,10,10,0,0,0; unsigned char dispcount; unsigned char getdata; unsigned int temp; long int i; 代替原来的unsigned char i; sbit ST=P30; sbit OE=P31; sbit EOC=P32; sbit CLK=P33; void main(void) ST=0; OE=0; ET0=1; ET1=1; EA=1; TMOD=0x12; TH0=216; TL0=216; TH1=(65536-5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论