数字电压表
更新时间: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
#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
正在阅读:
数字电压表06-01
中国石油大学远程教育学院--计算机网络应用基础第二阶段在线作业11-14
10371-2面向对象课程设计指导03-30
机电一体化毕业综述10-07
2年级3班假期作业安排05-19
经管院本科毕业设计(论文)中期检查结果概要 - 图文04-17
Unit4 What can you do BLet&39;s talk教学设计07-26
- 温度测量与显示及报警电路的设计 - 图文
- 政府及行政事业单位微信公众服务平台建设方案
- 人生就是一场修行
- 国内音乐院校本科视唱练耳专业方向教学现状分析与研究
- 理综答题卡(A3,机阅) - 图文
- 2014年安徽事业单位招聘考试题目丨免费资料丨考试资料259
- 苏燕雅-苏州产业结构分析
- 慧律法师--百法明门论表解(全)
- 凶猛私募18张新面孔
- 计算机·练习题(期末)
- 2018年中国液态硅胶现状研究及发展趋势预测(目录)
- 塑料成型工艺与模具设计复习资料
- 第五章 数据库设计基础分析
- 生化测试
- 2014年广东高考作文范文
- 七年级数学下册拓展题2
- 吉林大学新编物理题册下
- 班主任素质大赛情景答辩试题
- 第五课时:亿以内数的改写
- 煤炭行业第一批免试中国工程建设职业经理人