数字电压表

更新时间:2024-06-01 09:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

成绩 □优 □良 □中 □及格 □不及格

课 程 设 计

课程名称 单片机原理与应用课程设计

课题名称

数字电压表设计

专 业 电子信息工程

班 级 学 号 姓 名 指导老师

2015年6月19日

1

电气信息学院

课程设计任务书

课题名称 姓 名 指导老师 课程设计时间

专业

数字电压表设计 电子信息工程 班级

学号

2015年6月8日-2015年6月19日

一、任务及要求

设计任务:

本课题要求以MCS-51系列单片机为核心,设计一个数字电压表。 (1)能对多路电压信号进行采样并使用LED或者液晶显示器进行显示; (2)具有轮流显示功能

(3)* 能够通过键盘对采样通道进行选择 (4)*其它功能 设计要求:

(1)确定系统设计方案; (2)进行系统的硬件设计; (3)完成应用程序设计;

(4)应用系统的硬件和软件的调试。

二、进度安排

第一周:

周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。 周二~周三:完成硬件设计和电路连接 周四~周日:完成软件设计 第二周:

周一~周三:程序调试

周四~周五:设计报告撰写。周五进行答辩和设计结果检查。

三、参考资料

1、王迎旭等.单片机原理及及应用[M]. 2版.机械工业出版社,2012 2、胡汉才.单片机原理及其接口技术[M].3版.清华大学出版社,2010 3、戴灿金.51单片机及其C语言程序设计开发实例[M].清华大学出版社,2010

0

目录

第1章 总体方案设计........................................................ 1 1.1设计任务及要求 .......................................................... 1 1.2总体设计及系统原理 ...................................................... 1 第2章 硬件电路设计......................................................... 2 2.1 A/D转换模块 ............................................................ 2 2.2时钟电路和复位电路 ...................................................... 2 2.4 电压输入电路............................................................ 3 第3章 软件设计............................................................. 5 3.1主程序设计 .............................................................. 5 3.2 A/D转换程序 ............................................................ 5 第4章 调试结果............................................................. 7 第5章 总结................................................................ 8 附 录....................................................................... 9 附录A 整机原理图 .......................................................... 9 附录B 程序清单 ........................................................... 10

1

第1章 总体方案设计

1.1设计任务及要求

设计任务:

本课题要求以MCS-51系列单片机为核心,设计一个数字电压表。 (1)能对多路电压信号进行采样并使用LED或者液晶显示器进行显示; (2)具有轮流显示功能

(3)*能够通过键盘对采样通道进行选择 (4)*其它功能 设计要求:

(1)确定系统设计方案; (2)进行系统的硬件设计; (3)完成应用程序设计;

(4)应用系统的硬件和软件的调试。

1.2总体设计及系统原理

总体设计电路有由下几部分组成:AT89C51单片机、A/D转换电路、LCD显示电路、时钟电路、复位电路、测量电压输入电路。先通过ADC0808芯片将外侧电压信号转换成数字信号,再通过由AT89C51组成的电路处理转换成相应的实际电压,再通过LCD显示电路显示出来。总体硬件设计框图如图1所示:

时钟电路 单片LED显示电路 A/D转换 复位电路 机测量电压输入电路 图1

1

第2章 硬件电路设计

2.1 A/D转换模块

A/D转换器的功能是将模拟量转换为与其大小成正比的数字量信号。能实现这种转换的原理和方法很多,此设计采用ADC0808转换器。其引脚及连接电路如图2所示:

U2IN 026IN 127IN 228IN 312345ADD AADD BADD CALE252423221216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417STARTEOCOUT 1OUT 2OUT 3OUT 4OUT 5OUT 6OUT 7OUT 8OE9OE 图2

2.2时钟电路和复位电路

单片机89C51芯片中有一个内部时钟,其中引脚18为输入端,19为输出端引脚,这两个引脚连接一个12MHz的晶振,同时再连接两个瓷片电容,这样便提供片内相移的条件。复位信号高电平有效,并且其有效时间应该延续出现2个机器周期以上即可确保系统复位,复位操作完成后,RST端一直保持高电平,那么单片机就始终处于复位状态,当RST恢复低电平后单片机才能进入其他操作。时钟电路和复位电路分别如图3、4所示:

C31uF C1R21nF10kX1CRYSTALC21nFR110kC3 2

图3时钟电路 图4复位电路

2.3 LCD1602显示电路

本次设计中采用LCD1602作为显示器,模块的引脚及连接电路如图5所示:

RP1RESPACK-81LCD1LM016LVSSVDDVEERSRWERS4RW5E6123p00p01p02p03p04p05p06p077891011121314D0D1D2D3D4D5D6D7p002p013p024p035p046p057p068p079 图5显示电路

其中D0~D7数据接收端口与单片机P0口相连。E端为使能端,当它由0变为1,LCD1602才能进行读写操作,它和单片机P2.5相连,并由其输出控制信号。RS、RW是1602的读写控制端,它们分别与单片机的P2.3、P2.4相对应,这样使用LCD显示时可由单片机的程序完成控制。VDD、VSS为液晶屏的电源端口,VEE端电压信号的大小可以改变液晶屏的亮度。由于P0口作为输出口时,它没有高电平的状态所以仿真电路时需要加上拉电阻RP1,这样P0口就有高电平状态。

2.4 电压输入电路

输入电路如图6所示:

RV110%RV01kR49K64%IN 0IN 11k+88.8VoltsR31K

3

图6

当要测试的电压为0~5V时,选择IN0输入,在仿真中运用滑动变阻器分压的原理产生0-5V的电压来代表实际电压。而当超过5V时则选择IN1输入,由于实际的电压变允许适当的超量程,所以图中R3和R,4的电阻值分别为1k、9k,这样就把电压衰减为原来电压值的1/10。这样本电压表就有两个量程即0~5V和0V~10V。需要变换量程时,由中断开关相互切换。

4

第3章 软件设计

3.1主程序设计

图7

主程序主要负责各个模块的初始化工作:启动A/D转换,读取转换结果,处理量程转换响应,控制液晶实时显示等,其流程图如图7所示。

3.2 A/D转换程序

5

图8

A/D转换程序的功能是采集数据,将模拟信号转换为数字信号。当系统设置好后,单片机扫描转换结束管脚P2.6的输入电平状态,当输入为高电平则转换完成,将转换的数值转换并显示输出。若输入为低电平,则继续扫描。程序流程图如图8所示。

6

第4章 调试结果

1.当输入电压为2.10V时,显示结果如图9所示,实际电压为2.09V。

图9输入电压为2.10V时,LCD显示结果

2.当输入电压为8.61V时,显示结果如图10所示,实际电压为8.62V。

图10 输入电压为8.62V时,LCD显示结果

调试结果:基本满足设计需求,误差在可接受范围内。

7

第5章 总结

时光荏苒,转眼间两个星期过去了,在这两个星期里,我们终于完成了数字电压表的课程设计。这两周,是精彩的两周,它让我收获颇丰,也让我感慨良多。

首先我们要做的是焊电路板,在同组伙伴的配合下,我们花了一个下午终于焊好了电路板,并且能成功运行下载。第二天我们就开始查关于数字电压表的课程设计资料,网络、书本等等,能帮到我的一点也不能放过。设计中用到了Protues和keil两款软件,我们在嵌入式实验中用过,但不是很熟悉,所以找元器件时费了不少时间,特别是LED显示器。最后好不容易把线路接完,然后就开始仿真。课设中遇到的最难的就是C程序不知道怎样编写,经过多方查找资料,同时也向老师和同学们请教,才解决了问题。

最终磕磕绊绊还是把课程设计完成了,可能它并不完美,但是也是自己亲手设计的,多少有点成就感。

8

附 录

附录A 整机原理图

RV1(2)RV110%RV0(2)LCD1LM016LVSSVDDVEE1kR49K64%RV0RSRWERS4RW5E6IN 0123+88.8VoltsR31K1k+88.8VoltsRP1RESPACK-8U2IN 026IN 127IN 228IN 312345ADD AADD BADD CALE252423221216IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)ADC0808CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT81067212019188151417STARTEOCOUT 1OUT 2OUT 3OUT 4OUT 5OUT 6OUT 7OUT 8C111nFX1CRYSTALU119XTAL1p002p013p024p035p046p057p068p079C2181nFXTAL2C391uFRSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617p00p01p02p03p04p05p06p07ADD AADD BADD CRSRWEALESTARTEOCOEp00p01p02p03p04p05p06p077891011121314D0D1D2D3D4D5D6D7OE9OER210k293031PSENALEEAR110kOUT 81OUT 72OUT 63OUT 54OUT 45OUT 36OUT 27OUT 18P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51

9

附录B 程序清单

LCD1602.c

#include

#define uint unsigned int #define uchar unsigned char

sbit rs=P2^3; sbit rw=P2^4; sbit en=P2^5;

uchar code t1[]={%uchar code t2[]={\void delay(uint ms) {

uint i,j;

for(i=ms;i>0;i--) for(j=110;j>0;j--); }

void writelcd_cmd(uchar cmd)//向1602液晶显示器里写入命令的函数{ en=0; rs=0; rw=0; delay(1); P0=cmd; en=1; delay(1); en=0; }

void writelcd_dat(uchar dat)//向1602液晶显示器里写入数据的函数{ en=0;

10

rs=1; rw=0; delay(1); P0=dat; en=1; delay(1); en=0; }

void lcd_init() //初始化1602液晶显示器的函数{

uchar i,j;

writelcd_cmd(0x38); delay(5);

writelcd_cmd(0x38); delay(5);

writelcd_cmd(0x38); writelcd_cmd(0x08); writelcd_cmd(0x01); writelcd_cmd(0x06); writelcd_cmd(0x0c); writelcd_cmd(0x80); for(i=0;i<16;i++) {

writelcd_dat(t1[i]); }

writelcd_cmd(0xc0); for(j=0;j<16;j++) {

writelcd_dat(t2[j]); } }

mian.c

#include #include\

#define uint unsigned int

11

#define uchar unsigned char

sbit ale=P2^6; sbit start=P2^7; sbit eoc=P3^0; sbit oe=P3^1;

sbit adda=P2^0; sbit addb=P2^1; sbit addc=P2^2;

uchar add;

uint voltdata,realvolt;

void addselect()

{ switch(add) {

case 0:adda=0;addb=0;addc=0;break; case 1:adda=0;addb=1;addc=0;break;

default:break; } }

uint adtrans() {

addselect(); ale=1; ale=0;

start=1; //启动AD转换。 start=0;

while(eoc==0); //等待转换结束。 oe=1;

voltdata=P1; //出入转换结果。

12

delay(1); oe=0;

voltdata=(100*voltdata)/51; //处理运算结果。 return voltdata; }

void disvolt()

{ uchar qian,bai,shi,ge; switch(add) { case

0:realvolt=voltdata;writelcd_cmd(0x80+15);writelcd_dat('0');writelcd_cmd(0xc0+4);writelcd_dat('0');writelcd_dat('5');break; case

1:realvolt=voltdata*2;writelcd_cmd(0x80+15);writelcd_dat('2');writelcd_cmd(0xc0+4);writelcd_dat('1');writelcd_dat('0');break; default:break; }

qian=realvolt/1000; bai=realvolt00/100; shi=realvolt0/10; ge=realvolt;

writelcd_cmd(0xc0+9); writelcd_dat(qian+0x30); writelcd_dat(bai+0x30); writelcd_cmd(0xc0+12); writelcd_dat(shi+0x30); writelcd_dat(ge+0x30); }

void init() { EA=1; EX0=1;

IT0=1;

13

add=0;

lcd_init(); }

void main() {

init(); while(1) {

adtrans(); disvolt(); } }

void ext() interrupt 0 {

add++; add=add%2; }

14

《单片机原理及应用》课程设计评分表

评 价 项 目 优 设计方案的合理性与创造性(10%) 开发板焊接及其调试完成情况(10%) 硬件设计或软件编程完成情况(20%) 硬件测试或软件调试结果 (10%) 设计说明书质量(20%) 答辩情况(10%) 完成任务情况(10%) 独立工作能力(10%) 出勤情况(10%) **良 中 及格 不及格 课程设计成绩评定为: □优 □良 □中 □及格 □不及格 综 合 评 分 指导老师签名:______________ 日 期:______________

注:①表中标*号项目是根据课题实际情况二选一;

②此表装订在课程设计说明书的最后一页。

15

16

本文来源:https://www.bwwdw.com/article/6vk6.html

Top