1、 深圳龙鑫科技电子机械高等专科学校 深圳龙鑫科技电子机械高等专科学校 二零壹贰 年 九月 成都电子机械高等专科学校 通信工程系毕业设计论文 简易数字电压表设计 摘要:数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,精度高、抗干扰
2、能力强,可扩展性强、集成方便,还可与PC进行实时通信。 [关键词] 数字电压表;数字化;精度本公丆司所有产品皆可以货到付丆款,也可自带电俵前来测试,非诚勿扰郑丆重声丆明:此产品仅限电工调校使用,非电工请勿购丆买! 用护购丆买后用于非丆法用途,后果自负! 商品说明: 每个系列仪器的图片一致,功率大小不同,价丆格也各有不同. 仪器大功率兼容小功率,三相兼容单相。 本产品具有体积小,使用简单效果明显. 本产品是一款近距离电俵控製噐,在一定范围内,可以控丆制电俵。每个系列仪器的图片一致,功率大小不同,采用的芯片价不同,格也各有不同. 电子系列:独特技术, 超强功率, 不动电俵,不改线路
3、距离30公分可使电子滚轮式电俵迅速减慢,停止,加快,不损坏电俵,使用后不留痕迹,若要电俵恢复正常计费,用仪器重复使用一次即可恢复正常,无须断电.使用简单效果明显.放心使用。是电工理想的调校工具。适用于各类电子数字电俵。 液晶系列仪器:采用震荡电路原理,可以发射高频电磁波信号,干扰电俵的计费系统,使用后电俵迅速减慢,停止,加快。不损坏电俵,使用后不留痕迹,而供电不受影响,电俵正常显示,若要电俵恢复正常计费,用仪器重复使用一次即可恢复正常,无须断电.使用简单效果明显.放心使用。 在购丆买产品之前,请先确定您的电俵是那一种类型(现在电俵类型很多种、电子俵,电子液晶显示俵、机械式电俵、IC卡预付
4、费电俵、数码管显示的电子俵)电俵又分几单相和三相,所以请您说清楚您的俵是单相还是三相的哪种类型的俵。 专丆业研发团队,在线咨询285-803-453二十四小时咨询电丆话156-5980-5231 以“最优惠的价丆格、最周到的咨询、最可靠的产品质量”的原则向您郑丆重承诺: 一、仪丆器质量承诺: 1、 为了给顾客更好的保证,我们是现做现卖,根据顾客的要求现做仪器,然后到场子试机调丆试好再发货。 2、 仪丆器质量我们给予12个月免丆费保丆修,一年免丆费更新3次的承诺! 二、仪丆器价丆格承诺: 1、为了保证仪丆器的高可靠性和先进性,系统的选材均选用国内或国际优质产品。 2、
5、在同等竞争条件下,我公丆司在不以降低仪丆器技术性能、更改仪丆器部件为代价的基础上,真诚以最优惠的价丆格供应. 三、交货期承诺: 1、仪丆器交货期:尽量按用户要求,EMS三天到货 2、先打10%的订金,余款货到支付 四、售后服丆务承诺: 1、服丆务宗旨:快速、果断、准确、周到、彻底 2、服丆务目标:服丆务质量赢得用户满意 3、服丆务效率:保修期内或保修期外如设备出现故障,供方在接到通知后,维修人员在24丆小丆时内给予处理 3、服丆务原则:产品保修期为12个月,在保修期内供方将免丆费维修和更换属质量原因造成的零部件损坏,保修期外零部件的损坏,提丆供的配件只收成本费,由
6、需方人为因素造成的设备损坏,供方维修或提丆供的配件均按成本价计。在保修期外,我公丆司技术人员每年不少于三次回访调丆查用户使用情况 公丆司理丆念: 以服丆务求信誉,以质量求发展;一次是朋友,永远是朋友。喝泉水找源头,买产品找厂家,那样才能有质量和售后服丆务的保丆障。 我们用新颖实用的产品赢得您的信赖,您用我们的产品优势! 季节在变—我们的服丆务不变!┨———— 选择在变—我们的承诺不变┨————— 目 录 第1章 绪论 1 1.1简介 1 1.2数字电
7、压表的优点 2 第2章 电路系统设计 3 2.1数据采集 3 2.1.1 A/D转换器 3 2.1.2 ADC0804的工作方式 5 2.2 数据处理 6 2.2.1 AT89S51 6 2.2.2 AT89S51单片机最小系统连接 9 2.3数据接收与数据处理电路 10 2.4 显示设计 10 2.4.1 LED显示的原理 10 2.4.2 LED显示驱动 11 第3章 程序设计 12 3.1 主程序设计框图 12 3.2 程序清单 12 第4章 仿真过程 15 4.1 KeilC软件介绍 15 4.2 Proteus软件简介 16 4.3 KeilC与P
8、roteus连接调试 17 4.4 仿真结果图 18 结语 20 致谢 21 参考文献 22 21 第1章 绪论 1.1简介 科学技术的发展为测量仪器、仪表提供了新原理和新技术以及新型的元、器体,同时又对测量仪表提出了更新、更高的要求。数字电压表(简写为 DVM)就是在精密电测量 技术、计算技术、自动化技术和电子技术的基础上产生和发展起来的。 数字式仪表是能把连续的被测量自动地变成断续的、用数字编码方式的、并以十进 制数字自动显示测量结果的一种测量仪表。这是一种新型仪表,它把电子技术、计算技术、自动化技术的成果与精密电测量技术密切的结合在一起。成为仪器、仪表领域中
9、独立而完整的一个分支。 1952 年,美国NLS公司首创四位数字电压表,到现在的五十多年中经过了不断的改进和提高。电压表是从电位差计的自动化考虑中研制成功的,开始是四位然后是五位、六位,而现在发展到七位、八位数码显示;从最初的一、二种工作原理发展到几十种原理,从最早采用继电器、电子管发展到全晶体管化、集成电路化、微处理器化;认一台DVM只能测一、二种参数到能测十几种参数的多用型;显示器件也从辉光数码显示发展 到等离子体、发光二极管、液晶显示等。电压表的体积和功耗越来越小,重量不断减轻,价格也逐步下降,可靠性越来越高,量程范围也逐渐扩大。回顾一下电压表的发展过程,大致可分为以下三个阶段:
10、 数字化阶段。50-60 年代中期,电压表的特点是运用各种原理实现模数(A/D)转换即将模拟量转化成数字量,从而实现测量仪表的数字化。 高准确度阶段。由于精密电测量的需要,电压表开始向高准确度、高位数方向发展,出现了所谓复合型原理的仪表。 智能化阶段.60 年代末期,电子技术和工艺结构有了飞跃的发展,而大规模集成 电路(LSI)与计算机技术相结合的产物是微处理器(简写为 μP)。1972 年,美国 Intel 公司首创微处理器不久即研制出微处理器式数字电压表,实现了电压表数据处理自动化和可编程序.因为带有存贮器并使用软件,所以可进行信息处理,可通过标准接口组成 自动测试系统(简写
11、为 ATS)。这些仪表除了完成原有电压表的各种功能外,还能够自校、自检,保证了自动测量的高准确度,实现了仪器、仪表的所谓“智能化”。当前,智能表发展十分迅速,而微处理式电压表在智能仪表中占的比重最大。智能化的电压表为实现各种物理量的动态测量提供了可能。 智能化数字电压表有以下几个突出的本领: 可以程序控制——利用事先编好的程序,可以让数字仪表自动按程序进行操作。例在测量时可以按程序完成自动校准、自动调零、自选量程,然后进行自动测量。测量得到的数据又可以按程序进行自动计算、自动判断后进行自动调节和自动控制,并把数据按要求送往数据处理中心。在测量系统发生故障时或者利用测量的间隙,它又有自动
12、诊断、自动排除故障的能力。所有这些工作又都是严格地按规定好的程序自动进行,不需要人的干预。人在做测量工作时还可能因为精神因素引入各种人为的误差甚至造成误,而这种自动测量却可以二十四小时不停地工作。 有自校和自动修正误差的能力——数字电压表的突出优点是准确度高,但为了取得高招准确度,数字电压表也付出了很高的代价:不得不使用一些高精度、高稳定度的元器件和使用各种复杂的电路。数字电压表智能化以后,由于它有记忆、判断、运算和贮存数据的功能,因此它可以在测量的间隙中,自动对工作条件(如温度、湿度.气压、频率等)的变化按给定的关系式进行计算,求出修正值.再根据误差理论按编好的程序对测得的一系列数据自动
13、进行计算求出整个测量系统购误差,最后把它存进存贮器。在下一个测量周期内,智能电压表能从测得的结果中自动地扣除这个系统误差。这样,就可以不再使用那些复杂的电路和高精度、高稳定度的元器件而同样可以得到很高的测量准确度。再加上双积分电路可以集成化,于是使得智能化的数字电压表体积缩小、结构简化.成本降低,而质量仍很高,这对提高数字电压表的准确度和推动数字仪表的普及是极有利的。 自动变换数据——由于智能化仪表有运算功能,因此它能用测量一些简单的数据,通过推算的办法,求出一些复杂或难以测量的数据来。例如我们可以从测量的电容量 c或电感量 L 通过关系式求出 Q 值、频率、周期、波形等等。这对简化测量方
14、法是很有用的。 有自检、自修复能力——智能电压表可以按程序对仪表进行自检,如果发现了故障还可以立即转入自修复程序,自动找出故障并修复。有些不允许停止控制的仪表(炼钢护、化工反应炉、飞行器等),还可以把关键部分的备件放进仪表内,当自检时发现故障后,它会立即自动转换到备用电路上工作,保证控制不间断。 由于智能仪表的这些优点,从上世纪七十年代末开始,各国的数字仪表已转向智能化仪表生产。进入八十年代后,除了普及型的数字电压表外,高档的数字电压表都已改为带微处理器的数字电压表。 1.2数字电压表的优点 数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的
15、模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。这里重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。 第2章 电路系统设计 数字电压表由A/D转换、数
16、据处理及显示控制等组成,测量0~5.0V范围内的输入电压值,由两个3位共阴7段数码管扫描显示,最大分辨率0.1V,误差±0.05V。以AT89S51和ADC0804为核心内件。ADC0804实现模数转换。单片机AT89S51是整个系统的核心,实现输入端的分路选择(量程转换),模数转换后数据的处理及在数码管上数据的显示,提供ADC0804芯片的工作频率等功能。 2.1数据采集 2.1.1 A/D转换器 模拟量转换成数字量(A/D转换)和数字量转换成模拟量(D/A)转换是计算机与外部环境进行联系的主要形式。当计算机用于工程控制,实时数据采集等方面是时,现场检测的模拟信号必须通过A/D
17、转换变成数字量,送入计算机处理,计算机的输出信号又必须通过D/A转换成模拟信号送到现场去驱动机械或电气设备动作。计算机控制过程如图1: D/A转换 计算机 A/D转换 现场检测信号→ → → →现场电气设备 图1 计算机控制过程示意图 A/D转换的种类很多,主要的有逐次比较式、双积分式、并行式。逐次比较式主要特点是转换速度快,精度高,但抗干扰能力不强,价格适中。本次使用的ADC0804就是逐次比较式A/D转换器。逐次比较式A/D转换器是以A/D转换器为基础,加上比较器、逐次比
18、较式寄存器、置数选择逻辑电路以及时钟等组成,如图2。其转换的基本原理如下:在启动信号控制下,首先置数选择逻辑电路给逐次逼近式寄存器最高位置“1”,经D/A转换成模拟量与输入的模拟量V1进行比较,电压比较器给出比较结果。如果输入量大于或等于经D/A转换器输出的量,则比较器输出为“1”,否则为“0”,置数选择逻辑电路根据比较器输出的结果,修改逐次逼近式寄存器中的内容,使其D/A转换后的模拟量逐次比较输入的模拟量。经过若干次修改后的数字量,就是A/D转换的结果。 D/A转换器 V1 Vref
19、 逐次比较式 寄存器 比较 数字量输出 … 置数选择逻辑 启动控制信号 时钟信号 图2 逐次比较式A/D转换器结构 ADC0804是用CMOS集成工艺制成的逐次比较型模数转换芯片。分辨率8位,转换时间100μs,输入电压范围
20、为0-5V,增加某些外部电路后,输入模拟电压可为 5V。该芯片内有输出数据锁存器,当与计算机连接时,转换电路的输出可以直接连接在CPU数据总线上,无须附加逻辑接口电路。ADC0804芯片外引脚图如图3下所示 图3 ADC0804引脚图 其规格如下: (1) 高阻抗状态输出 (2) 分辨率:8 位(0~255) (3) 存取时间:135 ms (4) 转换时间:100 ms (5) 总误差:-1~+1LSB (6) 工作温度:ADC0804C为0度~70
21、度;ADC0804L为-40 度~85 度 (7) 模拟输入电压范围:0V~5V (8) 参考电压:2.5V (9) 工作电压:5V (10) 输出为三态结构 2.1.2 ADC0804的工作方式 (1)转换时序 ADC0804控制信号的时序图如图4所示,由图可见各控制信号时序关系为:当CS与WR同时为低电平A/D转换器被启动且在WR上升沿后100 模数完成转换,转换结果存入数据锁存器,同时,INTR自动变为低电平,表示本次转换已结束。如CS、RD同时来低电平,则数据锁存器三态门打开,数字信号由DB0-DB7送出,而在RD高电平到来后三态门处于高阻状态,为交
22、互式控制方式。 (2)零点和满刻度调节 ADC0804的零点无须调整。满刻度调整时,先给输入端加入电压 ,使满刻度所对应的电压值是 ,其中 是输入电压的最大值, 是输入电压的最小值。当输入电压与 值相当时,调整端电压值使输出码为FEH或FFH。 (3)参考电压的调节 在使用A/D转换器时,为保证其转换精度,要求输入电压满量程使用。如输入电压动态范围较小,则可调节参考电压 ,以保证小信号输入时ADC0804芯片8位的转换精度。 (4)接地 模数、数模转换电路中要特别注意到地线的正确连接,否则干扰很严重,以至影响转换结果的准确性。A/D、D/
23、A及取样保持芯片上都提供了独立的模拟地(AGND)和数字地(DGND)的引脚。在线路设计中,必须将所有的器件的模拟地和数字地分别连接,然后将模拟地与数字地仅在一点上相连。 图4 ADC0804控制信号时序图 2.2 数据处理 数字电压表的核心为AT89S51单片机和ADC0804A/D转换集成芯片。ADC0804是CMOS的连续逼近式A/D转换器,采用差动式模拟电压输入,三态门数字输出。CS端接地,由单片机选择控制模拟信号输入,给WR选择信号一个负脉冲,开始A/D模数转换,当A/D转换结束后,INTR端输出低电平,单片机开始读取A/D转换后的数据。单片
24、机进行数据处理,由AT89S51的P2口读出,将单片机的P2口与数码管的a—g及h相连,高电平的位对应的发光二极管亮,这样,由P2口输出不同的代码,就可以控制数码管显示不同的电压值。可通过调节输入端的电位器,实现更大范围的电压测量,但精度会相应降低,误差也会相应增加。 2.2.1 AT89S51 图5 AT89S51引脚图 AT89S51(图5)是一个低功耗,高性能CMOS8位单片机,片内含4kBytes ISP(In-system programmable)的可反复擦
25、写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
26、 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。 (1).主要特性: • 与MCS-51完全兼容 • 4K字节可编程FLASH存储器(寿命:1000写/擦循环) • 全静态工作:0Hz-33MHz • 三级程序存储器保密锁定 • 128*8位内部RAM • 32条可编程I/
27、O线 • 两个16位定时器/计数器 • 6个中断源 • 可编程串行通道 • 低功耗的闲置和掉电模式 • 片内振荡器和时钟电路 (2).管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向
28、I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数
29、据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入)
30、 P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。上面图中的两个三角形表示的就是输入缓冲器CPU将根据不同的指令分别发出读端口或读引脚信号以完成不同的操作。这是由硬件自动完成的,不需要我们操心,1然后再实行读引脚操作,否则就可能读入出错,为什么看上面的图,如果不对
31、端口置1端口锁存器原来的状态有可能为0Q端为0Q^为1加到场效应管栅极的信号为1,该场效应管就导通对地呈现低阻抗,此时即使引脚上输入的信号为1,也会因端口的低阻抗而使信号变低使得外加的1信号读入后不一定是1。若先执行置1操作,则可以使场效应管截止引脚信号直接加到三态缓冲器中实现正确的读入,由于在输入操作时还必须附加一个准备动作,所以这类I/O口被称为准双向口。89C51的P0/P1/P2/P3口作为输入时都是准双向口。接下来让我们再看另一个问题,从图中可以看出这四个端口还有一个差别,除了P1口外P0P2P3口都还有其他的功能。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机
32、器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期
33、间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 AT89SXX系列单片机实现了ISP下载功能,故而取代了89CXX系列的下载方式,也是因为这样,A
34、TMEL公司已经停止生产89CXX系列的单片机,现在市面上的AT89CXX多是停产前的库存产品。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该
35、操作必须被执行。 此外,AT89S51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 2.2.2 AT89S51单片机最小系统连接 单片机最小系统的必备条件是:电源、EA引脚、晶体振荡电路,复位电路。 (1).晶体振荡电路 对于微处理器,其片内振荡器和时钟信号的产生是必不可少的,因为在执行指令时,必须按照一定的时钟节拍进行,此设计采用内部时钟方式,片内的
36、高增益反相放大器通过XTAL1\XTAL2外接作为反馈元件的片外晶体振荡器与电容组成的一个自激振荡器,向内部时钟电路提供振荡时钟。 (2)复位电路 复位分为上电复位和外部复位两种方式,因为上电复位每次复位都必须断开电源,所以次设计采用外部复位方式通过按一下开关就可实现可靠复位.复位电路如图6 图6 复位电路 2.3数据接收与数据处理电路 如图7,ADC0804 数据输出线与AT89S51 的数据总线直接相连,AT89C51 的RD 、WR 和INT1直接连到ADC0804,由于用P3.4 线来产生片选信
37、号,故无需外加地址译码器。当AT89S51 向ADC0804 发WR以启动0804;转换完成,0804送出一个低电平得INTR信号,请51单片机来提取数据;当51单片机要来提取之前,送一个低电平的RD信号通知0804;51单片机读取总线得数据。RD (读取结果)信号时,只要虚拟一个系统不占用的数据存储器地址即可。
38、 图7 接口电路图 2.4 显示设计 2.4.1 LED显示的原理 本设计中采用的是两个七段LED数码管来显示电压值。LED具有耗电低、亮度高、视角大、线路简单、耐震及寿命长等优点, 数码管是由8个发光二极管构成的显示器件,其外形如图5所示。a—g和h为8个发光二极管。在数码管中,若将二极管的阳极连在一起,称为共阳极数码管;若将二极管的阴极接在一起,就称为共阴极数码管,如(图6)所示。当发光二极管导通时,它就会发光。每个二极管就是一个笔画,若干个二极管发光时,就构成了一个显示字符。 图9 共阳接法与共阴接法
39、 图8 结构 将单片机的I/O口与数码管的a—g及h相连,高电平的位对应的发光二极管亮,这样,由I/O口输出不同的代码,就可以控制数码管显示不同的字符。例如:当I/O口输出的代码为0011 1111时,数码管显示的字符为0。这样形成的显示字符的代码称为显示代码或段选码。 2.4.2 LED显示驱动 在微型计算机控制系统中,常用的显示方法有动态显示和静态显示两种。在动态显示的方式下,各数码管的8个引脚(a-h)并联在一起。与单片机的一个I/O相连,每个数码管的共阴端(位选信号端)与单片机的另一I/O相连,控制数码管轮流被选中,轮流显示。 LED的驱动问题
40、是一个非常重要的问题,因为一般I/O接口芯片的驱动能力是有限的,在LED显示器接口电路中,输出口所能提供驱动电流是够的,尤其在设计中需要用到多位LED,此时就需要增加驱动电路,驱动电路有多种,常用的是TTL或MOS集成电路驱动器,动态显示的一位数据的显示是由段和位选信号共同配合完成,因此必须考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力。 本设计中对于LED的驱动,本设计中使用了单片机的P2口和数码管相连。P2口与数码管的a—g及dp相连,高电平的位对应的发光二极管亮,a—g高电平为显示字符,dp高电平时代表有小数点,这样,由P2口输出不同的代码,就可以控制数码管显示不同的
41、电压值。
第3章 程序设计
3.1 主程序设计框图
整个主程序就是在A/D转换,数据处理及显示程序循环执行。整个程序流程框图如图10所示。启动ADC0804对模拟量输入信号进行转换,通过查询INTR(P3.3引脚)来确定转换是否完成,若完成则把数据通过P1端口读入,经过数据处理后在数码管上显示。
图10 程序流程框图
3.2 程序清单
#include
42、d,0x7d,0x07,0x7f,0x6f}; uchar code ds[4]={0xfe,0xfd,0xfb,0xf7}; uchar code dispcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义数码管显示的十分位0,1,2,3,4,5,6,7,8,9; uchar code dispcod[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed};//定义个位包含小数点即0.,1.,2.,3.,4.,5.; int dis[2]; sbit cs=P3^4;
43、 //声明CS变量 sbit rd=P3^6; sbit wr =P3^7; sbit clk=P3^5; sbit intr =P3^3; sbit P30=P3^0; sbit P31=P3^1; int a=0,b=0,m=0; void calc() { int k=0; for (k=1;k>=0;k--) { dis[k]=b%10; b=b/10; } } //将电压值算出来存入数组中; delay(int i
44、) //延迟函数 { for(i=0;i++;i<=250) ; } void start() { int i=0,j,s; wr=0; rd=1; cs=1; delay(1); cs=0; delay(1); wr =1; delay(10); rd=0; for(i=0;i<2;i++) { if(i==0) { P31=1; P30=0; //位选通个位; P2=dispcod[dis[
45、i]]; //显示电压; } delay(1); if(i==1) { P30=1; P31=0; //位选通十分位 P2=dispcode[dis[i]]; } //显示电压; m=P1; P0=m; delay(1); } } void main ( ) { TH0=65536%500; TL0=65536/500; EA=1;
46、 ET0=1; while(1) { b=(2.56*10/256)*P1*4; //通过转换的数字电压值计算模拟电压值 calc(); start(); delay(50); } } void time0(void) interrupt 1 { if(a==0) clk=0; if(a==1) clk=1; //产生clk脉冲信号; a=a%2; a++; TH0=65536%500; T
47、L0=65536/500; //定时器的初值决定clk脉冲信号的周期; } 第4章 仿真过程 4.1 KeilC软件介绍 目前流行的51系列单片机开发软件是德国Keil公司推出的Keil C51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:μVision IDE集成开发环境(包括工程管理器①、源程序编辑器②、程序调试器③)、C5
48、1编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器和Monitor-51、RTX51实时操作系统。 应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)
49、并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project-New Project…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group ‘Source Group1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其它文件)。加入文件后点close
50、返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project-Option for Target‘Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“Creat Hex Fi”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。






