课程
(论文)-基于单片机的数字电压表的设计
重庆三峡学院
目: 基于单片机的智能数字
电压表设计
学院(系): 应用技术学院
年级专业: 08级电信(仪表)
学 号:
学生姓名:
指导教师:
教师职称: 副 教 授
2010年12月25日
目 录
第一章 引言„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„2
1.1设计目的„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„2
1.2设计任务及要求„„„„„„„„„„„„„„„„„„„„„„„„„„„2
1.3 设计
„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„2 第二章 数字电压表简介„„„„„„„„„„„„„„„„„„„„„„„„„„„2
2.1数字电压表的介绍„„„„„„„„„„„„„„„„„„„„„„„„„„2
2.2数字电压表工作原理„„„„„„„„„„„„„„„„„„„„„„„„„2 第三章 硬件部分的设计„„„„„„„„„„„„„„„„„„„„„„„„„„„2
3.1 8255内部结构概述 „„„„„„„„„„„„„„„„„„„„„„„„„3
3.2 AT89S52控制电路„„„„„„„„„„„„„„„„„„„„„„„„„„3
3.21 AT89S52„„„„„„„„„„„„„„„„„„„„„„„„„„„„4
3.22 74LS373„„„„„„„„„„„„„„„„„„„„„„„„„„„„4
3.23 74LS245„„„„„„„„„„„„„„„„„„„„„„„„„„„„5
3.3时钟电路和复位电路„„„„„„„„„„„„„„„„„„„„„„„„„5
3.4显示电路„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„6
3.5模数(A/D)转换电路 „„„„„„„„„„„„„„„„„„„„„„„„7
3.6键盘电路„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„10 第四章 系统软件的设计„„„„„„„„„„„„„„„„„„„„„„„„„„„11
4.1程序框图„„„„„„„„„„„„„„„„„„„„„„„„„„„„„12
4(2主程序 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„12 第五章 系统的调试„„„„„„„„„„„„„„„„„„„„„„„„„„„„„22
5.1硬件调试„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„22
5.2软件调试„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„22 第六章 心得体会„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„23 第七章 参考文献„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„23 第八章 附录„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„24
整体电路图„„„„„„„„„„„„„„„„„„„„„„„„„„„„„24
实验结果„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„24
元器件清单„„„„„„„„„„„„„„„„„„„„„„„„„„„„„25
2
基于单片机的数字电压表的设计
重庆三峡学院应用技术学院
第一章 引言
摘要:本次设计主要解决A/D转换、数据处理及显示键盘控制等模块。控制系统采用AT89S52单片机,A/D转换采用ADC0809。显示采用6位LED显示数码管的具有电压测量功能的具有一定精度的数字电压表。数字电压表可以测量0~5V的输入电压值,并在6位LED数码管上轮流显示或单路选择显示。测量最小分辨为0.020V,测量误差约为?0.02V。 关键字:A/D转换 显示电路 AT89S52单片机 8255 键盘电路
,.1设计目的
本课程的任务是使学生通过“数字电压表的设计”的设计过程,综合所学课程,掌握目前自动化仪表的一般设计要求,
设计方法,开发及设计工具的使用方法,通过这一设计实践过程,锻炼学生的动手能力和
,解决问题的能力;积累经验,培养按部就班,一丝不苟的工作个对所学知识的综合应用能力。
,.2设计任务及要求
基本要求:以单片机及A/D转换器为核心,设计一个智能数字电压表。可以测量0,5V的直流电压,并实时显示在LED或LCD显示器上。第一位显示定时时间的采样值,第二、三位屏敝,第四、五、六位显示电压值,在第四位后加小数点。转换精度?20mV。有适当的抗干扰措施。
扩展要求:外加键盘控制时间即第一位LED。
,.3设计方案
按系统功能实现要求,决定控制系统采用AT89S52单片机,A/D转换采用ADC0809,显示采用LED七段共阴极数码管和74LS20反向驱动电路。系统除能确保复位控制,外加键盘电路进行采样值的控制功能外,还可以方便地进行其它8路模拟量的测量。
第二章 智能数字电压表简介
2.1数字电压表的介绍
数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。 2.2 数字电压表的基本结构及工作原理
电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的以指针加刻度盘进行读数的方法, 避免了读数的视差和视觉疲劳。目前数字电压表的内部核心部件是A/D转换器, 转换器的精度很大程度上影响着数字电压表的准确度,数字式电压表是由高阻抗电压表头与分压电路组成的。
3
1.各部分的功能
A/D转换器:将输入的模拟信号转换成数字信号。
基准电源:提供精密电压,供A/D转换器作参考电压。
标度变换:将十六-十进制(BCD)码转换成七段信号。
驱动器:驱动显示器的a、b、c、d、e、f、g七个发光段,驱动发光数码管(LED)进行显示。
显示器:将译码输出的七段信号进行数字显示,读出A/D转换结果。
第三章 硬件部分的设计
数字电压测量电路由A/D转换、数据处理及显示控制等组成,电路原理图如图所示(见附录图一)。
3.1 8255内部结构概述
8255管脚图如图1所示
8255有3个8位的数据端口,即端口A、端口B、端口C。端口A对应一个8位输入锁存器和一个8位数据输出锁存器/缓冲器。
图, 8255管脚图
3.2 AT89S52控制电路(如图2)
4
图2 AT89S52控制电路
3.21 AT89S52(图2)
AT89S52是一个低功耗,高性能CMOS 8位单片机 AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器74LS245是我们常用的芯片,用来驱动led或者其他的设备,用法很简单如上图,这里简单的给出一些资料,他是8路同相三态双向总线收发器,可双向传输数据。 At89s52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。 3.22 74LS373(图3)
74LS373是常用的8D三态同相锁存器,作用是在单片机系统中扩展外部存储器,其引
OE脚图和功能表如图6-2所示。当门控端G输入正脉冲,且输出控制低电平有效时,D端
OE的数据被锁存到锁存器的输出端,当G为低电平时,输出Q保持不变;当为高电平时,输出Q是高阻态。
5
120OEVcc输出输入219Q0Q7318QGDD0D7OE417D1D600516Q1Q61615Q2Q5011714D2D574LS373813D3D4不变0,Q3Q49121高阻,,GNDG1011
图3 74LS373引脚图和功能表
3.23 74LS245(图4)
74LS245还具有双向三态功能,既可以输出,也可以输入数据。图6-7为74LS245的引
G脚图和功能表,图中,为允许端,DIR为方向控制。
124DIRVcc控制信号 223A0G321A1B0传输方向 422DIR A2B1 G520A3B2
619A4B30 B?A 0 718A5B474LS2451 A?B 816A6B5
1 × 高阻 A7B6917
GNDB71015
图4 74LS245引脚图和功能表
PSENGRD74LS245的固定接地,其DIR端由单片机的和相“与”后控制。当CPU
PSENRD执行读外部数据存储器(=0)或访问外部程序存储器(=0)时,DIR,0,驱动
PSENRD器导通方向为从外部到内部总线;否则,=1,=1,使DIR=1,驱动器导通方向为从内部总线向外,可供CPU向外传送数据。
当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收) DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。 3.3时钟电路和复位电路
时钟信号用来提供单片机内各种微操作的时间基准;复位操作则使单片机的片内电路初始化,使单片机从一种确定的状态开始运行。
1 时钟电路(图5a)
单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。
此次采用内部振荡方式。
2 复位电路(图5b)
当单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。本次采用开关复位。
6
图5a 内部振荡电路 图5b 开关复位
开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。
3.4显示电路
本次设计采用共阴数码管,数码管是最常用的一种显示器件,它是由几个发光二极管组成的8字段显示器件,其特点是价格非常的便宜,使用也非常的方便,显示效果非常的清楚。小电流下可以驱动发光,发光响应时间极短,体积小,重量轻,抗冲击性能好,寿命长。但数码管只能是显示0——9的数据。不能够显示字符。这也是数码管的不足之处。(见图6)
图6 共阴数码管
这次设计中,采用的是74LS240反向驱动中的/Y1到/Y8的输出信号驱动数码管的a .b.c.d.e.f.g..DP七段显示。74LS240中的A1,A8与8255的PB口相连(段控),8255的PA口为位控。(如图7)
7
图7 显示电路
3.5模数(A/D)转换电路
A/D转换器是模拟量输入通道中的一个环节,单片机通过A/D转换器把输入模拟量变成数字量再处理。
A/D转换由集成电路0809完成。0809具有8路模拟输入端口,地址线(23~- 25脚)可决定对哪一路模拟(IN0-IN7)输入作A/D转换。22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。6脚为测试控制,当输入一个高电平脉冲时,就开始A/D转换。7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。10脚为0809的时钟输入端,利用单片机AT89S52的30脚6分频晶振频率再通过74LS90五分频得到500KHz时钟。8255的PA0-PA5端口作为六位LED数码管显示控制。P0端口作A/D转换数据读入用,P2端口用作0809的A/D转换控制。
ADC0809是8位逐次逼近型A/D转换器,它是由一个8路的模拟开关、一个地址锁存译码器、一个A/D 转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8
8
路模拟量分时输入,共用A/D 转换器进行转换。A/D转换器的特点是8位精度,属于并行口,如果输入的模拟量变化大快,必须在输入之前增加采样电路。(如图8(A))
图8(A) ADC0809端子图
图8(B) A/D转换电路
1. ADC0809
(1) ADC0809内部结构及功能
D0,D7:8位数字量输出端。
9
IN0,IN7:8路模拟量输入端。
ADDA、ADDB、ADDC:地址输入端,用于选通8路(IN0-IN7)模拟输入中的一路。其与模拟输入通道的关系如表1所示。
表1 ADDA、ADDB、ADDC与模拟输入通道的关系
ADDC ADDB ADDA 模拟输入通道
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3
1 0 0 IN4
1 0 1 IN5
1 1 0 IN6
1 1 1 IN7
表1
ALE: 地址锁存允许信号。输入,高电平有效。用来控制通道选择开关的打开与闭合。ALE,1时,接通某一路的模拟信号,ALE,0时,锁存该路的模拟信号。
START: A/D转换启动信号,输入,高电平有效。在使用时,该信号通常与ALE信号连在一起,以便在锁存通道地址的同时启动A/D转换。
CLK:时钟脉冲输入端。允许最高输入频率为1280kHz,此时其转换时间为75μs。若时钟频率下降,时间随之增加。如CLK选640KHz,则转换时间为100μs。若CLK选500KHz,则转换时间为128μs。OE:数据输出允许端。当OE为高电平时,转换结果数据出现在D7,D0引脚。当OE为低电平时,D7,D0引脚对外呈高阻状态。
EOC:A/D转换结束信号,输出。该信号在ADC0809进行A/D转换期间保持低电平,直至A/D转换结束时,EOC从低电平变为高电平。该信号可直接与单片机的I/O口线直接相连,
INT0INT1采用查询方式工作;也可把EOC信号取反后接单片机的或,采用中断方式读取A/D转换数据。
VREF,、VREF,:分别为基准电源的正、负输入端。其典型值为+5V,可与电源电压(+5V)相连。电源电压往往有一定波动,当精度要求较高时,可用高稳定度基准电源输入。当模拟信号电压较低时,基准电压也可取低于5V的数据。
VCC:电源输入端,+5V。
GND:地。
(2) ADC0809与单片机的接口
ADC0809与单片机的接口如图8(A)(B)所示。
由于ADC0809具有输出三态锁存器,故其8位数据输出线可直接与单片机数据总线相连。单片机的低8位地址信号在ALE作用下锁存在74LS373中。74LS373输出的低3位信号分别加到ADC0809的通道选择器ADDC、ADDB、ADDA上,作为通道编码。单片机的P2.6作为片选
10
WRRD信号,结合或信号选通芯片。此电路采用,通道进行采样,所以其地址为0BFFFH。
ADC0809的ALE和START引脚接在一起,当单片机执行外部RAM写操作时, ADC0809在锁存通道地址的同时也启动转换。当单片机执行外部RAM读操作时,OE信号有效,打开三态输出锁存器,读取A/D转换结果。上述操作时,P2.6应为低电平。ADC0809的EOC端经
INT1反相器连接到单片机的P3.3()引脚。单片机可用查询、延时或中断方式采集A/D转换的数据。
ADC0809的时钟信号CLK可由单片机ALE信号经74LS90分频而来。图5(A)(B)中的单片机晶振频率为12MHZ,则ALE频率是晶振频率的1/6,即2MHZ,再经五分频后为500KHZ。ADC0809能够可靠工作。
. 74LS90 2
74ls02具有如下的五种基本工作方式:(分频器)
五分频:即由FD、FC、和FB组成的异步五进制计数器工作方式。
十分频(8421码):将QA与CK2联接,可构成8421码十分频电路。
六分频:在十分频(8421码)的基础上,将QB端接R1,QC端接R2。其计数顺序为000,101,当第六个脉冲作用后,出现状态QCQBQA=110,利用QBQC=11反馈到R1和R2的方式使电路置“0”。
本电路采用五分频
3. 74ls02
74ls02引脚功能:实现2输入四或非门功能,常用于各种数字电路中 3.6键盘电路(图9)
图9 键盘电路
(1) 判断键盘上有无键按下。使PA口输出扫描字00H,读PC口状态,若PC0~PC3都为1,则无键按下;若不都为1,则有键按下。
(2) 消除键抖动影响。在检测到有键闭合后,软件延时10~20ms后再检测有无键闭合。如有键闭合予以确认,否则按键抖动处理。
11
(3) 若有键按下,确定按下键的键号。从PA口依次输出不同的列扫描字,当扫描次数为0~7时,扫描字为FEH、FDH、FBH、F7H、EFH、DFH、BFH、7FH,即依次使行列式键盘的一根线为0,其余为1。每次都读取PC0~PC3的值,若其中某位为0,则这次扫描有键按下。
假设PA口输出扫描字F7H时(PA3=0,PA口其余口线=1),若检测到PC0=0,则闭合键的键号为03H;若检测到PC1=0,则闭合键的键号为13H。由此可计算出闭合键的键号值。
闭合键的键号=所在行号×键盘列数+所在列号
(4) 键闭合一次,CPU仅作一次处理。当有键闭合时,CPU暂不作处理,等待键释放以后,就可以根据键号方便的通过散转进入相应键的功能处理程序。
第四章 软件系统的设计
4.1程序框图
系统默认为循环显示8个通道的电压值状态。当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间为1S左右。主程序在调用显示子程序和测试之程序之间循环,主程序流程图见:
开始
初始化
调用A/D转换子程序
设置延时时间
主程序
调用子程序
显示
4.2源程序
12
EOC BIT P1.0
VIH DATA 51H
VIL DATA 52H
ADDATA DATA 50H
ZSD BIT P1.1
ORG 0
LJMP MAIN
ORG 001BH
LJMP AD_INT
ORG 0100H
MAIN: MOV SP,#53H
MOV P2,#0FFH
MOV A,#81H
MOV DPTR,#0FF23H
MOVX @DPTR,A
MOV 7EH,#01H
MOV 7DH,#10H
MOV 7CH,#10H
MOV 7BH,#02H
MOV 7AH,#05H
MOV 79H,#0H
;------采样单元及标度变换单元清0-----------------
MOV VIH, #0
MOV VIL, #0
MOV ADDATA, #0
;----------------------------------
MOV R7 , #1 ;数据采集次数
MOV R2 , #20 ;R2为“50ms”计数器,置入初值100(计5s)
MOV R3 , #1 ;R3为秒计数器,置入初值24(计5s)
MOV TMOD , #10H ; T1方式1,定时50ms
MOV TH1 , #3CH ;定时器初值,定时50ms
MOV TL1 , #0B0H
MOV IE , #0 ;关闭中断
SETB ET1 ;定时器T1允许中断
13
SETB EA ;CPU开放中断
SETB TR1 ;启动T1中断 ;------------------------------
LCALL SSEE1 LOOP: LCALL BIAODU
LCALL PTDS
LCALL SSEE
LCALL KEY
LCALL KEYPD
SJMP LOOP ;等待中断 ;-----------------------------------
ORG 05D0H
PTDS: MOV A , VIL
ANL A, #0FH
MOV R0,#79H ; 保存VIL低4位
MOV @R0, A
MOV A, VIL
SWAP A
ANL A , #0FH
MOV R0, #7AH ; 保存VIL高4位
MOV @R0, A
MOV A, VIH
ANL A , #0FH
MOV R0, #7BH ; 保存VIH高4位
MOV @R0, A
INC R0 ;7CH和7DH两位不显示
MOV A , #10H
MOV @R0, A
INC R0
MOV A , #10H
MOV @R0, A
INC R0
MOV A , 7EH ;7EH位显示“1”
MOV @R0, A
14
RET
;------显示子程序-------------------------
ORG 0D50H
SSEE: SETB RS1
MOV R5,#05H
SSE2: MOV 30H,#20H
MOV 31H,#7EH
MOV R7,#06H
SSE1: MOV R1,#20H
MOV A,30H
CPL A
MOVX @R1,A
MOV R0,31H
MOV A,@R0
MOV DPTR,#DDFF
MOVC A,@A+DPTR
MOV 3FH , A ; 暂存显示码
MOV A , 30H
CJNE A , #04H ,SSE3
MOV A , 3FH
CLR ACC.7
SJMP SSE4
SSE3: MOV A , 3FH SSE4: MOV R1,#21H
MOVX @R1,A
MOV A,30H
RR A
MOV 30H,A
DEC 31H
MOV A,#0FFH
MOVX @R1,A
DJNZ R7,SSE1
DJNZ R5,SSE2
CLR RS1
15
RET
;-------初始化显示子程序--------------------------
ORG 1D50H
SSEE1: SETB RS1
MOV R5,#05H
SSE12: MOV 30H,#20H
MOV 31H,#7EH
MOV R7,#06H
SSE11: MOV R1,#20H
MOV A,30H
CPL A
MOVX @R1,A
MOV R0,31H
MOV A,@R0
MOV DPTR,#DDFF
MOVC A,@A+DPTR
MOV R1,#21H
MOVX @R1,A
MOV A,30H
RR A
MOV 30H,A
DEC 31H
MOV A,#0FFH
MOVX @R1,A
DJNZ R7,SSE11
DJNZ R5,SSE12
CLR RS1
RET
;---------显示代码表-------------------------
DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
;-----------AD转换子程序-----------------------------------
AD_INT: PUSH DPL
PUSH DPH
16
MOV TH1 , #3CH ;中断服务程序,重新赋定时器初值
MOV TL1 , #0B0H
DJNZ R2 , RETURN ;5S未到,返回
MOV R2 , #20 ;重新置“50ms”计数器初值
DJNZ R3 , RETURN ;5s未到,返回
MOV R3 , #1 ;重新置“5s”计数器初值
CPL ZSD ;1分钟指示灯变换
MOV DPTR , #0FF80H ;IN0通道地址 AD_LP2: MOVX @DPTR,A ;启动A/D转换
JNB EOC ,$ ;转换是否结束,
MOVX A , @DPTR ;读取A/D转换结果
MOV ADDATA , A
RETURN: POP DPH ;恢复通道地址
POP DPL
RETI
;-------标度变换-----------------------------
BIAODU:MOV A,ADDATA
MOV B,#5
MUL AB
MOV VIH,B
MOV B,#100
MUL AB
MOV A,#10
XCH A,B
DIV AB
SWAP A
ORL A,B
MOV VIL,A
RET
;------键盘扫描--------
;出口:(A)=键码值
LS3: DB 07H,04H,08H,05H,09H,06H,0AH
DB 0BH,01H,00H,02H,0FH,03H,0EH
DB 0CH,0DH
17
KEY: SETB RS1
MOV R2,#0FEH
MOV R3,#08H
MOV R0,#00H LP1: MOV A,R2
MOV R1,#20H
MOVX @R1,A
RL A
MOV R2,A
MOV R1,#22H
MOVX A,@R1
CPL A
ANL A,#0FH
JNZ LP0
INC R0
DJNZ R3,LP1
MOVX A,@R1
JB ACC.4,XP33
MOV A,#20H
SJMP XP3 XP33: MOV A,#20H XP3: CLR RS1
RET
LP0: CPL A
JB ACC.0,XP0
MOV A,#00H
SJMP LPP XP0: JB ACC.1,XP1
MOV A,#08H
SJMP LPP XP1: JB ACC.2,XP2
MOV A,#10H
SJMP LPP XP2: JB ACC.3,XP33
18
MOV A,#18H LPP: ADD A,R0
CLR RS1
CJNE A,#10H,LX0
LX0: JNC XP35
MOV DPTR,#LS3
MOVC A,@A+DPTR XP35: RET
ORG 0D50H SSEE2: SETB RS1
MOV R5,#05H
SSE22: MOV 30H,#20H
MOV 31H,#7EH
MOV R7,#06H
SSE23: MOV R1,#20H
MOV A,30H
CPL A
MOVX @R1,A
MOV R0,31H
MOV A,@R0
MOV DPTR,#DDFF
MOVC A,@A+DPTR
MOV R1,#21H
MOVX @R1,A
MOV A,30H
RR A
MOV 30H,A
DEC 31H
MOV A,#0FFH
MOVX @R1,A
DJNZ R7,SSE23
DJNZ R5,SSE22
CLR RS1
RET
19
;---------键盘判断---------- KEYPD: CJNE A,#01H,k1
MOV 7EH,#01H
CLR TR1
MOV R2,#20 ;修改延时时间
MOV R3,#1
SETB TR1
SJMP RET1
k1: CJNE A,#02H,K2
MOV 7EH,#02H
CLR TR1
MOV R2,#40
MOV R3,#1
SETB TR1
SJMP RET1
K2: CJNE A,#03H,k3
MOV 7EH,#03H
CLR TR1
MOV R2,#60
MOV R3,#1
SETB TR1
SJMP RET1
k3: CJNE A,#04H,k4
MOV 7EH,#04H
CLR TR1
MOV R2,#80
MOV R3,#1
SETB TR1
SJMP RET1
20
k4: CJNE A,#05H,k5
MOV 7EH,#05H
CLR TR1
MOV R2,#100
MOV R3,#1
SETB TR1
SJMP RET1
k5: CJNE A,#06H, k6
MOV 7EH,#06H
CLR TR1
MOV R2,#120
MOV R3,#1
SETB TR1
SJMP RET1
k6: CJNE A,#07H,k7
MOV 7EH,#07H
CLR TR1
MOV R2,#140
MOV R3,#1
SETB TR1
SJMP RET1
k7: CJNE A,#08H,k8
MOV 7EH,#08H
CLR TR1
MOV R2,#160
MOV R3,#1
21
SETB TR1
SJMP RET1
k8: CJNE A,#09H,RET1
MOV 7EH,#09H
CLR TR1
MOV R2,#180
MOV R3,#1
SETB TR1
RET1:RET
END
第五章 系统的调试
完成了系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系件和软件调统调试。调试分了硬试
5.1硬件调试
完成了系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系件和软件调统调试。调试分了硬试
硬件调试的主要任务是排除硬件故障,其中包括设计的错误和连线故障等。
1.检查所设计的硬件所有的器件和引脚是否正确,尤其是电源的连接是否正确;检查各总线是否有短路的故障。
2.将40芯片的仿真插头插入单片机插座进行调试,检查各接口是否满足设计的要求,有正常的程序测试硬件电路的好坏。。
3.将显示子程序保存好ASM文件并运行。
4.按下复位按键时,通道号将变成0通道,电压也为初始值。
5.硬件电路调试与测试均正常。
5.2软件的调试
软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序的错误,同时也能发现硬件的故障。软件调试是一个模块一个模块进行的。首先单独调试各子程序是否能够按照预期的功能,接口电路的控制是否正常。最后调试整个程序。尤其注意的是各模块间能否正确的传递参数。
1. 检查LED显示模块程序。观察在LED上是否能够显示相应的字符。
2. 检查按键模块程序。
3. 检查A/D转换模块程序。可以在硬件电路的输入端输入已知的几个电压,分别观察
22
LED上是否显示相应的电压值。(软件调试结果见附录4)
4(所有程序运行正常后,在这个程序中加入中断延时5s。
第六章 心得体会
经过将近两周的单片机设计实训,终于完成了智能数字电压表的设计,这次设计达到设计基本要求和一个扩展要求,这是我们团队合作的结果,在这过程中我们也遇到了不少的困难,在这次实训中我们分工合作,发挥团队精神最后完成了设计。同时通过这次的实训我也明白了很多。
在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计让我增长很多知识。对于这次的单片机设计,是把硬件和软件结合起来的设计,我们主要是负责画原理图,这个需要足够的耐心加细心,因为连线的错误以及芯片的选择等都会关系PCB板最后的结果。同时也需要一定的硬件知识基础,得了解管脚功能等。只有这样才能保证电路的成功。在画有原理图的过程中,主要的困难就是我们的库里没有8255芯片,也没有和它类似的,只能通过自己去画了之后再添加进来,还有封装问题。
硬件工作完成了就是解决程序设计的问题,程序设计是一个很灵活的东西,它反映了我们解决问题的逻辑思维和创新能力,它是一个设计的灵魂所在。很多子程序是借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。通过我们努力和老师的指导最终完成了程序设计。
要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。通过这次实训,我在书本理论知识的基础上又有了更深层次的理解。
在两周的实训中,收获知识的同时,还收获了阅历,收获了成熟与合作。我们通过查找大量资料,请教老师,寻求同学的帮助,以及不懈的努力,培养了独立思考的能力。更重要的是我们学会了学习的方法,这是日后最实用的。面对社会的挑战,只有通过不断的学习和实践才能完成知识的积累,才能更好的提高自己取得更好的成绩。
第七章 参考文献
1、李全利 《单片机原理及应用技术》 [M] 北京: 等教育出版社 2008年 2、蔡明文 冯先成《单片机课程设计 》 [M] 北京: 华中科技大学出版社 2007年12月 3、李秀忠 单片机应用技术》 [M] 北京: 人民邮电出版社 2007年3月 4、欧阳文 《ATMEL89系列单片机的原理》 [M] 北京: 中国电力出版社2007年
23
第八章 附录 附录一 整体框图
附录二 实验结果
24
附录三 智能数字电压表设计元器件清单
种类 型号 数量 备注
AT89S52 1块 集成块 ADC0809 1块
74LS90 1块
8255 1块
74LS245 1块
74LS373 1块
74LS02 1块
74LS240 1块
电位器 10KΩ 1个
100PF 3只 电容器
12MHZ 晶振 1只
与门 7个
数码管 共阴 6支
1K 电阻 1个
开关 20个
导线 无数
25