单片机课程设计数字电压表Word文档格式.docx
- 文档编号:18742354
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:19
- 大小:244.60KB
单片机课程设计数字电压表Word文档格式.docx
《单片机课程设计数字电压表Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计数字电压表Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
1、王迎旭等.单片机原理及及应用.2版.机械工业出版社,2012
2、胡汉才.单片机原理及其接口技术.3版.清华大学出版社,2010.
3、戴灿金.51单片机及其C语言程序设计开发实例.清华大学出版社,2010
目录
1总体方案设计1
1.1设计要求1
1.2设计思路1
1.3总设计框图2
2硬件电路设计2
2.1总硬件电路设计2
2.2单片机控制模块设计2
2.3AD转换模块设计3
2.4LCD显示模块5
3软件设计5
3.1主程序设计6
3.2A/D转换程序设计6
4调试8
4.1显示结果8
4.2误差分析8
5总结9
6参考资料10
7附录10
1总方案设计
1.1设计要求
本课题要求以MCS-51系列单片机为核心,设计一个数字电压表。
(1)采用串行A/D转换模块或者并行A/D转换模块能对多路电压信号进行采样并使用LED或者液晶显示器进行显示;
(2)具有轮流显示功能
(3)能够通过键盘对采样通道进行选择
(4)其它功能
1.2
设计思路
⑴基于AT89C51单片机来设计。
⑵用ADC0808芯片做为A/D转换器,与单片机的接口为P1口和P2口的高四位引脚。
⑶电压的输出显示采用LCD1602液晶显示器显示
通过按键选择通道
1.3总设计框图
利用AD转换器对输入电压进行采集并传输给单片机,得到相应的数字量,再按数字量与模拟量成正比关系运算得到对应的模拟电压值,然后把模拟值通过显示器显示出来,另外可以通过按键选择通道。
然后通过单片机与液晶显示器LCD1602连接,最终显示液晶显示器上。
图1设计总框图
根据系统的功能要求,控制系统采用AT89C52单片机,A/D转换器采用ADC0808。
ADC0808是8位的A/D转换器。
当输入电压为5.00V时,输出的数据值为255(0FFH),因此最大分辨率为0.0196V(5/255)。
ADC0808具有8路模拟量输入端口,通过3位地址输入端能从8路中选择一路进行转换。
如每隔一段时间依次轮流改变3位地址输入端的地址,就能依次对8路输入电压进行测量。
显示器采用LCD显示器,显示效果好。
按键可只设定一个,用于选择显示的当前通道。
2硬件电路设计
2.1总硬件电路设计
数字电压表具体硬件电路如图附录A所示。
其中,显示器LCD1602的数据线与89C51的P0口相连,RS与P1.7相连,R/
与P1.6相连,E端与P1.5相连。
按键只设定了一个K1,与AT89C52的P1.0,用于进行通道选择,当按下一次,通道加1,显示下一个通道。
ADC0808的数据线D0~D7与AT89C51的P2口相连,地址输入端ADDA、ADDB、ADDC与AT89C51的P3口的低3位P3.0、P3.1、P3.2相连,地址锁存控制端ALE和启动信号START连接在一起与P3.7相连,数据输出允许控制端OE与P3.6相连,转换结束信号EOC与P1.3相连。
ADC0808的时钟信号输入端CLOCK与P1.4相连,而P1.4由定时/计数器0控制,每10(s取反一次,则CLOCK的时钟周期为20(s,频率为50KHz,满足ADC0808的时钟要求。
参考电压VREF+接+5V电源,参考电压VREF-接地,则当输入电压为5.00V时,输出的数据值为255(0FFH),当输入电压为0V时,输出的数据值为0(00H),最大分辨率为0.0196V(5/255)。
2.2单片机控制模块设计
单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。
时钟电路
单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XYAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器C1和C2对振荡频率有微调作用,通常取(30±
10pF)石英晶体选择11.0592MHz。
时钟电路如图2所示。
图2时钟电路
复位电路
单片机的RST管脚为主机提供了一个外部复位信号输入口。
复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。
单片机的复位方式为上电复位方式。
复位电路如图3所示。
图3复位电路
2.3AD转换模块设计
逐次逼近型A/D转换器ADC0808属于直接型A/D转换器,它能把输入的模拟电压直接转换为输出的数字代码,而不需要经过中间变量。
ADC0808简介
ADC0808精度为8位,CMOS器件,不仅包括一个8位的逐次逼近型的ADC部分,而且还提供一个8通道的模拟多路开关和通道寻址逻辑,因而有理由把它作为简单的“数据采集系统”。
利用它可直接输入8个单端的模拟信号分时进行A/D转换,在多点巡回检测和过程控制、运动控制中应用十分广泛。
外部引脚图及引脚功能
ADC0808的外部引脚如图4所示。
图4ADC0808外部引脚图
IN0~IN7:
8路模拟量输入。
A、B、C:
3位地址输入,2个地址输入端的不同组合选择八路模拟量输入。
ALE:
地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。
D0~D7:
八位数据输出线,A/D转换结果由这8根线传送给单片机。
OE:
允许输出信号。
当OE=1时,即为高电平,允许输出锁存器输出数据。
START:
启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。
EOC:
转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。
AD转换模块设计
集成摸数转换芯片ADC0808实现的A/D转换电路如图5所示,被测信号由ADC0808模拟输入端输入,完成A/D转换后送入单片机,经相应处理后送出显示。
图5AD转换电路
2.4LCD显示模块
LCD显示器分为字段显示和字符显示两种。
其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。
字符显示是根据需要显示基本字符。
本设计采用的是字符型显示。
系统中采用LCD1602作为显示器件输出信息。
与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。
LCD1602可以显示2行16个汉字。
3软件设计
根据需要,可将系统软件按照功能划分为4个模块,分别是主程序模块、A/D转换模块、液晶显示模块、中断服务程序模块,各模块的功能关系如图6所示。
编写系统软件时,可首先编写各模块的底层驱动程序,而后是系统联机调试,编写上层主程序。
图6系统软件框图
3.1主程序设计
START
选择ADC0808的转换通道
设置定时器,提供时钟信号
N
启动A/D转换
Y
输出转换结果
数值转换
显示
图7主程序流程图
整个主程序就是在A/D转换,数据处理及显示程序循环执行。
整个程序流程框图如图7所示。
启动ADC0808对模拟量输入信号进行转换,通过查询P1.3引脚来确定转换是否完成,若完成则把数据通过P2端口读入,经过数据处理后在LCD1302上显示。
3.2A/D转换程序设计
程序开始执行后首先通过手动控制拨码开关来选择8路模拟通道的一路进行模数转换。
接着启动一次A/D转换,通过判断转换结束状态信号EOC是否为1来判断A/D转换是否结束。
EOC=1,
则表示A/D转换结束,否则EOC=0,则表示正在进行A/D转换。
接着输出允许信号OE=1,输出转换后的数据,就完成了一次A/D转换,程序返回到数据处理模块。
只要手动控制模拟通道就可以不停的循环进行模数转换。
开始
设置模拟输入口
启动转换
N
输出数值处理
图8A/D转换程序流程图
4调试
4.1显示结果
1.当输入电压为0V时显示结果如图所示,测量误差为0V。
图9输入电压为+0V时,LCD显示结果
2.当输入电压为+1.65V时,显示结果如图所示,测量误差为0.1V。
图10输入电压为+1.65V时,LCD显示结果
3.当输入电压为+3.85V时,显示结果如图所示,测量误差为0.1V。
图11输入电压为+3.84V时,LCD显示结果
4.当输入电压为+5V时,显示结果如图所示,测量误差为0V。
图12输入电压为+5.00V时,LCD显示结果
4.2误差分析
通过以上仿真测试结果可以得到数字电压表与实际电压对比表格,如表1所示:
表1数字电压表与实际输入电压对比测试表
输入电压值/V
电压表测量值/V
绝对误差/V
0.00
0.51
0.50
0.01
1.23
2.18
2.17
3.00
0.26
0.25
4.00
4.37
5.00
因为单片机AT89C51为8位处理器,当输入电压为5.00V时,ADC0808输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。
这就决定了电压表的最高分辨率只能到0.0196V,从上表可看到,测试电压一般以0.01的幅度变化。
而且数字电压表测得的值基本上比实际输入值偏小0-0.01V。
5总结
本设计以AT89C51单片机为控制核心,通过集成摸数转换芯片ADC0808将被测信号转换成数字信号,经单片机内部程序处理后,由液晶显示器LCD1602显示测量结果。
仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量范围为0.00~5.00V,最小分辨率为0.0196V,满足任务书指标要求。
但是,该系统也存在一定程度的不足,例如数字电压表测量结果误差还比较大,输出量可用平均值算法改善,使测量准确度更高。
通过本次课程设计的锻炼,我学到了很多有关仪表的设计方法与工作原理。
在设计的过程中,出现了很多错误,这让我明白了,对总体的把握固然重要,但对于一个实际的系统,很难在设计之初就把握所有细节,设计任何一个系统都需要耐心逐步去发现和解决问题。
在寻求解决困难的过程中,激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。
总体来说,这次实习使我受益匪浅。
在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维。
通过两个星期的学习让我把书本上的知识转换成实际可操作的东西,让我体会到成功的喜悦和快乐。
6参考资料
7附录
附录A数字电压表原理图
:
图13数字电压表原理图
附录B
程序清单:
#include<
reg51.h>
#include<
absacc.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitRS=P1^7;
sbitRW=P1^6;
sbitEN=P1^5;
sbitST=P3^7;
sbitOE=P3^6;
sbitEOC=P1^3;
sbitCLK=P1^4;
sbitkey1=P1^0;
uchardatachnumber;
//存放当前通道号
uchardisbuffer[4]={0,'
.'
0,0};
//定义显示缓冲区
uchardataad_data[8]={0,0,0,0,0,0,0,0};
//0808的8个通道转换数据缓冲区
uinttemp;
//检查忙函数
voidfbusy()
{
P0=0xff;
RS=0;
RW=1;
EN=1;
EN=0;
while((P0&
0x80))
{
//使能端EN高电平有效,能读取lcd内存储单元的值
}
}
//写命令函数
voidwc51r(ucharj)
fbusy();
RW=0;
P0=j;
//写数据函数
voidwc51ddr(ucharj)
fbusy();
//读状态;
RS=1;
voidinit()//初始化函数
wc51r(0x01);
//清屏
wc51r(0x38);
//使用8位数据,显示两行,使用5*7的字型
wc51r(0x0c);
//显示器开,光标开,字符不闪烁
wc51r(0x06);
//字符不动,光标自动右移一格
/********0808转换子函数********/
test()
ucharm;
for(m=0;
m<
8;
m++)
P3=m;
//送通道地址
ST=0;
_nop_();
ST=1;
ST=0;
//锁存通道地址启动转换
_nop_();
while(EOC==0);
//等待转换结束
OE=1;
ad_data[m]=P2;
OE=0;
//读取当前通道转换数据,当OE=1时输出允许,OE=0时输出禁止
//************延时函数************
voiddelay(uinti)//延时函数
{uinty,j;
for(j=0;
j<
i;
j++){
for(y=0;
y<
0xff;
y++){;
}}
//定时器/计数器T0产生0808的时钟
voidT0X(void)interrupt1using0
{CLK=~CLK;
voidmain(void)
uchari;
SP=0X50;
TMOD=0x02;
TH0=246;
TL0=246;
ET0=1;
EA=1;
TR0=1;
delay(10);
init();
wc51r(0x81);
//写入显示缓冲区起始地址为第1行第1列
wc51ddr('
A'
);
//
D'
//
R'
:
'
wc51r(0xC0);
//写入显示缓冲区起始地址为第2行第1列
V'
//第2行第1列显示字母V
//第2行第2列显示字母A
L'
//第2行第3列显示字母L
U'
//第2行第4列显示字母U
E'
//第2行第5列显示字母E
//第2行第6列显示字母:
while
(1)
test();
//调用ADC0808转换程序8个通道转换一次
if(key1==0){
while(key1==0);
chnumber++;
if(chnumber==8)chnumber=0;
//有键按下,当前通道地址加1
temp=ad_data[chnumber];
//取出当前通道值,转换成电压值所对应的字符
temp=(temp*100)/51;
disbuffer[0]=temp/100+0x30;
temp=temp%100;
disbuffer[2]=temp/10+0x30;
disbuffer[3]=temp%10+0x30;
wc51r(0x88);
wc51ddr(chnumber+0x30);
wc51r(0xc8);
//显示当前通道
for(i=0;
i<
4;
i++)wc51ddr(disbuffer[i]);
电气信息学院课程设计评分标准
环节
项目
评价
优
良
中
及格
不及格
实践环节(70%)
1、设计方案合理性与创造性
2、开发板焊接及其调试完成情况
3、硬件设计或软件编程完成情况
4、硬件测试或软件调试结果*
5、解决问题能力及答辩情况
6、纪律和出勤情况
设计报告(30%)
1、设计报告内容完整、规范,
2、图纸正确、清晰,
3、设计步骤规范、正确,
4、设计结果可行
综合评价
课程设计成绩评定为:
□优□良□中□及格□不及格
指导老师签名:
________________
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 数字 电压表