课程设计任务书
学生姓名:周鸣一专业班级:电信1301班 指导教师:陈德军工作单位:武汉理工大学
题目: 用串行A/D芯片采集波形
初始条件:
(1)max2win、wave等软件;
(2)先修课程:数字电子技术、模拟电子技术、单片机、微机处理。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)课程设计时间:第17周;
(2)课程设计题目:用串行A/D芯片采集波形;
(3)本课程设计统一技术要求:采用单片机AT89C51实现交流采样,即系统采集的是交流电压。该系统主要包括几大模块:数据采集模块,A/D转换模块,控制模块,显示模块。在LED上显示采样的采样的瞬时值,有效值和峰值。
(4)课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,并标明参考文献(至少5篇);
(5)写出本次课程设计的心得体会(至少500字)。
时间安排:第17周
参考文献:
[1] 李广弟等单片机基础北京航空航天出版社, 2001.7
[2] 楼然苗等 51 系列单片机设计实例北京航空航天出版社, 2003.3
[3] 唐俊翟等单片机原理与应用冶金工业出版社, 2003.9
指导教师签名:年月日
系主任(或责任教师)签名:年月日
目录
摘要................................................................ 4
1 单片机系统........................................................ 6
1.1 标准功能..................................................... 6
1.2 主要特性..................................................... 6
2 ADC0809芯片简介 .................................................. 7
2.1 主要特性 ...................................................... 7
2.2 内部结构 ...................................................... 7
2.3 工作过程 ...................................................... 8
3 软件简介.......................................................... 9
3.1 WAVE6000 ...................................................... 9
3.2 protues ....................................................... 9
4 硬件电路设计..................................................... 10
4.1硬件电路流程图 ............................................... 11
4.2 单片机最小系统设计 ........................................... 11
4.3 ADC0809芯片及其接线设计 ..................................... 12
4.4 其他部分 ..................................................... 12
5 程序部分设计..................................................... 13
5.1 ADC0809所需时钟信号产生 ..................................... 13
5.1.1 程序流程图 ............................................... 13
5.1.2 时钟产生程序 ............................................. 13
5.2 A/D转换程序设计 ............................................. 14
5.2.1 程序流程图 ............................................... 14
5.2.2 A/D转换程序 ............................................. 14
5.3 数据处理转换程序 ............................................. 15
5.3.1 数据处理原理 ............................................. 15
5.3.2 数据处理程序 ............................................. 15
5.4 数码管显示程序 ............................................... 16
6 仿真结果分析..................................................... 17
7 心得体会......................................................... 19
参考文献........................................................... 20
附录1 程序清单 .................................................... 21
附录2 实物照片 .................................................... 25
摘要
随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。多媒体技术。网络技术、智能信息处理技术、自试用控制技术、数据挖掘与处理技术都离不开计算机。本课程设计是基于微机原理与接口技术的简单应用。运用所学的微机原理和接口技术知识完成ADC0809的采样,即基于
STC89C52RC芯片将模拟电压同过ADC0809的采样完成模拟量转换成的数字量并显示出来。通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了ADC0809的芯片功能和硬件配置,结合硬件和软件阐述了该系统的工作原理,得出了一种简单实用的ADC0809的交流电压采样硬件与软件设计方案。该系统能测量0-5V的电压,并能将瞬时值、峰峰值、有效值结果显示与数码管上。
关键字:STC89C52RC;ADC0809;AD转换;数码管显示
Abstract
With the development of electronic technology, computer plays a more and more important role in the development of modern science and technology. Multimedia
technology. Network technology, intelligent information processing technology, since the trial control technology, data mining and processing technology cannot do without computer. This curriculum design is a simple application based on Microcomputer Principle and interface technology. The use of the microcomputer principle and interface technology knowledge to complete the sampling of ADC0809, which is based on STC89C52RC chip analog digital voltage sampling with ADC0809
complete analog converted and displayed. Through a combination of hardware and software of chip function and hardware configuration of the ADC0809 we just learned in the assembly language the simulation program, a combination of hardware and software and expounds the working principle of the system, the AC voltage is a
simple and practical sampling of ADC0809 hardware and software design. Case. The system can measure the voltage of 0-5V, the results show that with the digital tube.
Key words:STC89C52RC;ADC0809;A/DTransformation;Digital tube display
1 单片机系统
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。本课程设计采用的是STC89C52RC单片机系统。
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
1.1 标准功能
具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
1.2 主要特性
8K字节程序存储空间;
512字节数据存储空间;
内带4K字节EEPROM存储空间;
可直接使用串口下载;
2 ADC0809芯片简介
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。目前仅在单片机初学应用设计中较为常见。
2.1 主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时)。
4)单个+5V电源供电。
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度。
7)低功耗,约15mW。
2.2 内部结构
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能: IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。 ALE:地址锁存允许信号,输入端,产生一个正脉冲以锁存地址。
START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC: A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入端,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHz。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
2.3 工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
3 软件简介
3.1 WAVE6000
WAVE6000编译软件,采用中文界面。用户源程序大小不受限制,有丰富的窗口显示方式,能够多方位、动态地展示程序的执行过程。其项目管理功能强大,可使单片机程序化大为小,化繁为简,便于管理。另外,其书签、断点管理功能以及外设管理功能等为51单片机的仿真带来极大的便利。
3.2 protues
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30 /DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP
系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
4硬件电路设计
4.1硬件电路流程图
图4.1 系统硬件电路
4.2单片机最小系统设计
图4.1 单片机最小系统仿真电路图
单片机最小系统以STC89C52RC为核心,并设计晶振为12MHZ,由于protues仿真没有STC系列芯片,所以仿真采用AT89C52代替,仿真电路图如图5.1所示。
4.3ADC0809芯片及其接线设计
因设计要求为测出交流电压的瞬时值,有效值,峰值,所以我设计为从IN0输入采样,将ADD A、ADD B、ADD C三个引脚接地,时钟接在单片机P3.7口,定时器输出为1KHZ,EOC输出后接一个反相器,方便单片机外部中断进行对中断信号的判断,因为protues没有ADC0809的仿真模型,所以采用ADC0808作仿真,两款芯片功能引脚相似,只是ADC0809精度更高所连电路图如图5.2所示。
图4.2 ADC0809相关连线
4.4 其他部分
数码管采用共阴数码管,为了连接方便和电路图更简单,所以设计单片机引脚直连数码管引脚,并设计三个按键开关,使其能选择是测量瞬时值、有效值还是峰峰值。
5 程序部分设计
5.1 ADC0809所需时钟信号产生
由于单片机定时器越快越不稳定,也越来越多干扰主程序运行,所以设计时钟为1KHZ,这样既能保证AD采样速度较快,也能减少进入中断次数。本部分采用定时器0,16位方式。
5.1.1 程序流程图
图5.1时钟产生程序流程图
5.1.2时钟产生程序
采样中断方式,定时器T0置于方式1(16位)为计数方式,时钟信号频率
计数初值为f=2KHz,t=1/f=500us,fosc=12MHz,MC=12/fosc=1us,
2^16-t/MC=FE0BH。WAVE程序截图如图5.2所示。
图5.2 中断服务程序截图
5.2 A/D转换程序设计
由于硬件将ADD A、ADD B、ADD C选择端置低,并将ALE于START相连。
5.2.1 程序流程图
图5.3 A/D转换模块程序流程图
5.2.2 A/D转换程序
给A/D芯片START脉冲转换信号,并用标志A判断等待期转换结束,在收到转换结束信号后,单片机进入外部中断1,并发出允许输出信号,改变标志A。程序截图如5.4和5.5所示。
图5.4 A/D转换主程序
图5.5 AD芯片转换结束中断服务程序
5.3 数据处理转换程序
因为单片机P0口从AD芯片得到的转换数字量为8位二进制代码,所以通过处理才能得到人善于分辨的数字。
5.3.1 数据处理原理
因为ADC0809最大测量电压为5V,利用
Y=5×X 255
其中X为,得到的转换后的8位二进制数字。
峰值为测量得到的最大值减去最小值,而有效值为峰峰值的0.7。
5.3.2数据处理程序
相关程序如图5.6所示。
图5.6 数据处理转化程序截图
5.4 数码管显示程序
数码管显示采用查表的方式,将数字显示在数码管上。程序代码如图5.7所示。
图5.7 数码管显示程序
6 仿真结果分析
将WAVE生成的HEX16进制代码导入protues中89C52芯片中,添加输入源并点击开始仿真。仿真结果如图6.1、图6.2、图6.3所示。
图6.1 瞬时值测量仿真结果
图6.2 峰峰值测量仿真结果
图6.3 有效值测量仿真结果
由仿真结果显示本设计电路以及程序满足了设计要求,能将瞬时值,峰峰值,有效值按按键顺序显示出来。最后我将其电路焊接在一起,制作出了实物,实物图见附录。
7 心得体会
在本次课程设计中,我们的题目是A/D芯片对交流电压的瞬时值有效值峰峰值进行检测并显示,刚开始进行得很顺利,在protues中将电路画上后,单片机也能正常使用,但是我返现protues中可供模拟的AD芯片很少,所以我选择了一款ADC0808进行仿真,这样可以结合书本内容进行设计。
刚开始设计时,我发现怎么也不能让ADC0808仿真正常工作,我使用了示波器进行仿真一步一步看波形,最终发现了要使ADC0808进行转换,要用START引脚给一个脉冲,而不是上升沿,这是我在进行书本学习中也没有仔细注意的地方,虽然很小的问题,却造成了芯片怎么都不正常工作。
最后仿真出来后进行实物测试时,我发现怎么都不能正常显示,在经过示波器一步一步看返回信号发现ADC0809已经正常工作了,再仔细分析发现是数码管的问题,最后才想起来,当时仿真的时候就注意到了数码管的仿真引脚并是不是按引脚顺序来的,最后重新连线解决了问题,虽然最后数码管没有接三极管放大直接用引脚驱动看起来有点暗,但是能正常显示还是让我很高兴的。
通过这次课设让我懂得了有时候问题就出现在很小的地方,但是可以让你整个系统都不能正常工作,所以我们在设计和分析时尽量避免这些错,不然到时候找错的时候非常麻烦,一个小问题会浪费我们很多的时间和精力。最后的成功也让我很有成就感,毕竟看见系统从元器件到实物一步一步得到是很高兴地一件事。
参考文献
附录1 程序清单
START EQU P3.0
OE EQU P3.1
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP IV0
ORG 0013H
AJMP INT1
ORG 0030
MAIN: MOV TMOD,#01H
MOV TH0,#0FEH
MOV TL0,#0BH
CLR OE
CLR START
SETB TR0
SETB IT1
SETB EA
SETB ET0
SETB EX1
MOV R2,#0FH
MOV DPTR,#TAB
TEST: SETB START
MOV R6,#0FFH
DJNZ R6,$
CLR START
CJNE A,#01H,$
MOV A,P0
JB P3.5,XX
MOV 20H,#00H
MOV 30H,#00H
XX: JNB P3.4,VPP
JNB P3.6,VPP
INST: MOV B,#33H
DIV AB
MOV R0,A
MOV A,B
MOV B,#05H
DIV AB
MOV R1,A
AJMP DISP
VPP: CJNE A,20H,CMP
AJMP CMP1
CMP: JB CY,CMP1
MOV 20H,A
CMP1: CJNE A,21H,CMP2
AJMP CMP3
CMP2: JNB CY,CMP3
MOV 21H,A
CMP3: MOV A,20H
CLR CY
SUBB A,21H
JNB P3.6,EFFE
AJMP INST
EFFE: MOV B,#0AH
DIV AB
MOV R2,B
MOV B,#07H
MUL AB
PUSH A
MOV A,R2
MOV B,#07H
MUL AB
MOV B,#0AH
DIV AB
MOV R2,A
POP A
ADD A,R2
AJMP INST
DISP: MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
AJMP TEST
IV0: MOV TH0,#0FEH
MOV TL0,#0BH
CPL P3.7
RETI
INT1: SETB OE
MOV A,#01H
RETI
TAB:DB 7FH,60H,0B7H,0F3H,0E9H,0DBH,0DFH,71H,0FFH,0FBH
附录2 实物照片
课程设计任务书
学生姓名:周鸣一专业班级:电信1301班 指导教师:陈德军工作单位:武汉理工大学
题目: 用串行A/D芯片采集波形
初始条件:
(1)max2win、wave等软件;
(2)先修课程:数字电子技术、模拟电子技术、单片机、微机处理。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)课程设计时间:第17周;
(2)课程设计题目:用串行A/D芯片采集波形;
(3)本课程设计统一技术要求:采用单片机AT89C51实现交流采样,即系统采集的是交流电压。该系统主要包括几大模块:数据采集模块,A/D转换模块,控制模块,显示模块。在LED上显示采样的采样的瞬时值,有效值和峰值。
(4)课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,并标明参考文献(至少5篇);
(5)写出本次课程设计的心得体会(至少500字)。
时间安排:第17周
参考文献:
[1] 李广弟等单片机基础北京航空航天出版社, 2001.7
[2] 楼然苗等 51 系列单片机设计实例北京航空航天出版社, 2003.3
[3] 唐俊翟等单片机原理与应用冶金工业出版社, 2003.9
指导教师签名:年月日
系主任(或责任教师)签名:年月日
目录
摘要................................................................ 4
1 单片机系统........................................................ 6
1.1 标准功能..................................................... 6
1.2 主要特性..................................................... 6
2 ADC0809芯片简介 .................................................. 7
2.1 主要特性 ...................................................... 7
2.2 内部结构 ...................................................... 7
2.3 工作过程 ...................................................... 8
3 软件简介.......................................................... 9
3.1 WAVE6000 ...................................................... 9
3.2 protues ....................................................... 9
4 硬件电路设计..................................................... 10
4.1硬件电路流程图 ............................................... 11
4.2 单片机最小系统设计 ........................................... 11
4.3 ADC0809芯片及其接线设计 ..................................... 12
4.4 其他部分 ..................................................... 12
5 程序部分设计..................................................... 13
5.1 ADC0809所需时钟信号产生 ..................................... 13
5.1.1 程序流程图 ............................................... 13
5.1.2 时钟产生程序 ............................................. 13
5.2 A/D转换程序设计 ............................................. 14
5.2.1 程序流程图 ............................................... 14
5.2.2 A/D转换程序 ............................................. 14
5.3 数据处理转换程序 ............................................. 15
5.3.1 数据处理原理 ............................................. 15
5.3.2 数据处理程序 ............................................. 15
5.4 数码管显示程序 ............................................... 16
6 仿真结果分析..................................................... 17
7 心得体会......................................................... 19
参考文献........................................................... 20
附录1 程序清单 .................................................... 21
附录2 实物照片 .................................................... 25
摘要
随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的作用。多媒体技术。网络技术、智能信息处理技术、自试用控制技术、数据挖掘与处理技术都离不开计算机。本课程设计是基于微机原理与接口技术的简单应用。运用所学的微机原理和接口技术知识完成ADC0809的采样,即基于
STC89C52RC芯片将模拟电压同过ADC0809的采样完成模拟量转换成的数字量并显示出来。通过硬件与软件的结合,用我们刚刚学过的汇编语言编写程序模拟分析了ADC0809的芯片功能和硬件配置,结合硬件和软件阐述了该系统的工作原理,得出了一种简单实用的ADC0809的交流电压采样硬件与软件设计方案。该系统能测量0-5V的电压,并能将瞬时值、峰峰值、有效值结果显示与数码管上。
关键字:STC89C52RC;ADC0809;AD转换;数码管显示
Abstract
With the development of electronic technology, computer plays a more and more important role in the development of modern science and technology. Multimedia
technology. Network technology, intelligent information processing technology, since the trial control technology, data mining and processing technology cannot do without computer. This curriculum design is a simple application based on Microcomputer Principle and interface technology. The use of the microcomputer principle and interface technology knowledge to complete the sampling of ADC0809, which is based on STC89C52RC chip analog digital voltage sampling with ADC0809
complete analog converted and displayed. Through a combination of hardware and software of chip function and hardware configuration of the ADC0809 we just learned in the assembly language the simulation program, a combination of hardware and software and expounds the working principle of the system, the AC voltage is a
simple and practical sampling of ADC0809 hardware and software design. Case. The system can measure the voltage of 0-5V, the results show that with the digital tube.
Key words:STC89C52RC;ADC0809;A/DTransformation;Digital tube display
1 单片机系统
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。本课程设计采用的是STC89C52RC单片机系统。
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
1.1 标准功能
具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
1.2 主要特性
8K字节程序存储空间;
512字节数据存储空间;
内带4K字节EEPROM存储空间;
可直接使用串口下载;
2 ADC0809芯片简介
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。目前仅在单片机初学应用设计中较为常见。
2.1 主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时)。
4)单个+5V电源供电。
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度。
7)低功耗,约15mW。
2.2 内部结构
ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能: IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。 ALE:地址锁存允许信号,输入端,产生一个正脉冲以锁存地址。
START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC: A/D转换结束信号,输出端,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入端,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHz。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
2.3 工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。
(1)定时传送方式
对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式
A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
3 软件简介
3.1 WAVE6000
WAVE6000编译软件,采用中文界面。用户源程序大小不受限制,有丰富的窗口显示方式,能够多方位、动态地展示程序的执行过程。其项目管理功能强大,可使单片机程序化大为小,化繁为简,便于管理。另外,其书签、断点管理功能以及外设管理功能等为51单片机的仿真带来极大的便利。
3.2 protues
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30 /DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP
系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
4硬件电路设计
4.1硬件电路流程图
图4.1 系统硬件电路
4.2单片机最小系统设计
图4.1 单片机最小系统仿真电路图
单片机最小系统以STC89C52RC为核心,并设计晶振为12MHZ,由于protues仿真没有STC系列芯片,所以仿真采用AT89C52代替,仿真电路图如图5.1所示。
4.3ADC0809芯片及其接线设计
因设计要求为测出交流电压的瞬时值,有效值,峰值,所以我设计为从IN0输入采样,将ADD A、ADD B、ADD C三个引脚接地,时钟接在单片机P3.7口,定时器输出为1KHZ,EOC输出后接一个反相器,方便单片机外部中断进行对中断信号的判断,因为protues没有ADC0809的仿真模型,所以采用ADC0808作仿真,两款芯片功能引脚相似,只是ADC0809精度更高所连电路图如图5.2所示。
图4.2 ADC0809相关连线
4.4 其他部分
数码管采用共阴数码管,为了连接方便和电路图更简单,所以设计单片机引脚直连数码管引脚,并设计三个按键开关,使其能选择是测量瞬时值、有效值还是峰峰值。
5 程序部分设计
5.1 ADC0809所需时钟信号产生
由于单片机定时器越快越不稳定,也越来越多干扰主程序运行,所以设计时钟为1KHZ,这样既能保证AD采样速度较快,也能减少进入中断次数。本部分采用定时器0,16位方式。
5.1.1 程序流程图
图5.1时钟产生程序流程图
5.1.2时钟产生程序
采样中断方式,定时器T0置于方式1(16位)为计数方式,时钟信号频率
计数初值为f=2KHz,t=1/f=500us,fosc=12MHz,MC=12/fosc=1us,
2^16-t/MC=FE0BH。WAVE程序截图如图5.2所示。
图5.2 中断服务程序截图
5.2 A/D转换程序设计
由于硬件将ADD A、ADD B、ADD C选择端置低,并将ALE于START相连。
5.2.1 程序流程图
图5.3 A/D转换模块程序流程图
5.2.2 A/D转换程序
给A/D芯片START脉冲转换信号,并用标志A判断等待期转换结束,在收到转换结束信号后,单片机进入外部中断1,并发出允许输出信号,改变标志A。程序截图如5.4和5.5所示。
图5.4 A/D转换主程序
图5.5 AD芯片转换结束中断服务程序
5.3 数据处理转换程序
因为单片机P0口从AD芯片得到的转换数字量为8位二进制代码,所以通过处理才能得到人善于分辨的数字。
5.3.1 数据处理原理
因为ADC0809最大测量电压为5V,利用
Y=5×X 255
其中X为,得到的转换后的8位二进制数字。
峰值为测量得到的最大值减去最小值,而有效值为峰峰值的0.7。
5.3.2数据处理程序
相关程序如图5.6所示。
图5.6 数据处理转化程序截图
5.4 数码管显示程序
数码管显示采用查表的方式,将数字显示在数码管上。程序代码如图5.7所示。
图5.7 数码管显示程序
6 仿真结果分析
将WAVE生成的HEX16进制代码导入protues中89C52芯片中,添加输入源并点击开始仿真。仿真结果如图6.1、图6.2、图6.3所示。
图6.1 瞬时值测量仿真结果
图6.2 峰峰值测量仿真结果
图6.3 有效值测量仿真结果
由仿真结果显示本设计电路以及程序满足了设计要求,能将瞬时值,峰峰值,有效值按按键顺序显示出来。最后我将其电路焊接在一起,制作出了实物,实物图见附录。
7 心得体会
在本次课程设计中,我们的题目是A/D芯片对交流电压的瞬时值有效值峰峰值进行检测并显示,刚开始进行得很顺利,在protues中将电路画上后,单片机也能正常使用,但是我返现protues中可供模拟的AD芯片很少,所以我选择了一款ADC0808进行仿真,这样可以结合书本内容进行设计。
刚开始设计时,我发现怎么也不能让ADC0808仿真正常工作,我使用了示波器进行仿真一步一步看波形,最终发现了要使ADC0808进行转换,要用START引脚给一个脉冲,而不是上升沿,这是我在进行书本学习中也没有仔细注意的地方,虽然很小的问题,却造成了芯片怎么都不正常工作。
最后仿真出来后进行实物测试时,我发现怎么都不能正常显示,在经过示波器一步一步看返回信号发现ADC0809已经正常工作了,再仔细分析发现是数码管的问题,最后才想起来,当时仿真的时候就注意到了数码管的仿真引脚并是不是按引脚顺序来的,最后重新连线解决了问题,虽然最后数码管没有接三极管放大直接用引脚驱动看起来有点暗,但是能正常显示还是让我很高兴的。
通过这次课设让我懂得了有时候问题就出现在很小的地方,但是可以让你整个系统都不能正常工作,所以我们在设计和分析时尽量避免这些错,不然到时候找错的时候非常麻烦,一个小问题会浪费我们很多的时间和精力。最后的成功也让我很有成就感,毕竟看见系统从元器件到实物一步一步得到是很高兴地一件事。
参考文献
附录1 程序清单
START EQU P3.0
OE EQU P3.1
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP IV0
ORG 0013H
AJMP INT1
ORG 0030
MAIN: MOV TMOD,#01H
MOV TH0,#0FEH
MOV TL0,#0BH
CLR OE
CLR START
SETB TR0
SETB IT1
SETB EA
SETB ET0
SETB EX1
MOV R2,#0FH
MOV DPTR,#TAB
TEST: SETB START
MOV R6,#0FFH
DJNZ R6,$
CLR START
CJNE A,#01H,$
MOV A,P0
JB P3.5,XX
MOV 20H,#00H
MOV 30H,#00H
XX: JNB P3.4,VPP
JNB P3.6,VPP
INST: MOV B,#33H
DIV AB
MOV R0,A
MOV A,B
MOV B,#05H
DIV AB
MOV R1,A
AJMP DISP
VPP: CJNE A,20H,CMP
AJMP CMP1
CMP: JB CY,CMP1
MOV 20H,A
CMP1: CJNE A,21H,CMP2
AJMP CMP3
CMP2: JNB CY,CMP3
MOV 21H,A
CMP3: MOV A,20H
CLR CY
SUBB A,21H
JNB P3.6,EFFE
AJMP INST
EFFE: MOV B,#0AH
DIV AB
MOV R2,B
MOV B,#07H
MUL AB
PUSH A
MOV A,R2
MOV B,#07H
MUL AB
MOV B,#0AH
DIV AB
MOV R2,A
POP A
ADD A,R2
AJMP INST
DISP: MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
MOV A,R1
MOVC A,@A+DPTR
MOV P2,A
AJMP TEST
IV0: MOV TH0,#0FEH
MOV TL0,#0BH
CPL P3.7
RETI
INT1: SETB OE
MOV A,#01H
RETI
TAB:DB 7FH,60H,0B7H,0F3H,0E9H,0DBH,0DFH,71H,0FFH,0FBH
附录2 实物照片