用单片机实现电压采集单片机课程设计 精品.docx
- 文档编号:23627287
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:26
- 大小:642.10KB
用单片机实现电压采集单片机课程设计 精品.docx
《用单片机实现电压采集单片机课程设计 精品.docx》由会员分享,可在线阅读,更多相关《用单片机实现电压采集单片机课程设计 精品.docx(26页珍藏版)》请在冰豆网上搜索。
用单片机实现电压采集单片机课程设计精品
中国矿业大学
单片机课程设计
姓名:
学号:
专业:
电子科学与技术
题目:
用单片机实现电压采集
专题:
单片机系统设计
指导教师:
设计地点:
时间:
2011-04
2011年4月
单片机课程设计任务书
专业年级学号学生姓名
任务下达日期:
2011年4月18日
设计日期:
2010年4月18日至2010年4月29日
设计题目:
用单片机实现电压采集
设计专题题目:
单片机系统设计
设计主要内容:
1、制作可产生0至+5V电压模块
2、制作单片机电压采集装置
设计要求:
一、基本要求
(1)制作可产生0至+5V电压模块
(2)制作单片机电压采集装置
电压采集功能在ADC0809的0通道输入0~5V电压,实时显示被测电压值(显示精度0.001V,即显示1位整数,3位小数)。
二、扩展要求
(1)指定通道采集默认采集通道为0,按2:
通道+1,按3:
通道-1,按1:
进入下一模式。
(2)循环采集显示,默认每通道显示2秒钟。
按1:
进入下一模式。
(3)报警设置报警上限默认为4.0V,警下限默认为0.0V
按2进行上限设置,按3进行下限设置,按1:
进入制定通道选择。
指导教师签字:
摘 要
随着电子科技的不断进步,电压测量成为广大电子领域中必须掌握的过程,并且对测量的精度和采集功能的要求越来越高,而电压的测量与显示系统甚为重要。
本文介绍的重点是电压数据采集与显示系统,数据采集与通信控制采用了模块化设计,数据采集与通信控制采用了单片机52来实现,硬件部分是以单片机为核心,还包括模-数转换模块,显示模块,和串行接口部分,还有一些简单的外围电路。
8路被测电压通过通用ADC0809模-数转换,实现对采集到的数据进行模拟量到数字量的转换,由单片机对数据进行处理,用数码管显示模块来显示所采集的结果,由相关控制器完成数据接收和显示。
本系统主要包括四大模块:
数据采集、控制模块、显示模块、A/D转换模块。
绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。
在软件编程上,采用了C语言进行编程,开发环境使用相关集成开发环境。
开发了显示模块程序、通道切换程序、A/D转换程序。
关键词:
单片机ADC0809A/D转换模块显示电压测量
目 录
一绪论..................................................................1
1.1系统概述......................................................1
1.1.1设计性质、目的、任务...................................1
1.2系统设计方案.................................................1
1.2.1系统设计原理框图.......................................2
二硬件电路设计.........................................................2
2.1主要芯片介绍.................................................2
2.1.1AT89S51.................................................2
2.1.2A/D0809.................................................3
2.2单片机电路...................................................4
2.1.1单片机电路板............................................4
2.2.2单片机最小系统.........................................4
2.2.3单片机的复位电路.......................................5
2.2.4开关电路...............................................5
2.2.5显示译码电路...........................................6
2.2.6蜂鸣器和继电器电路.....................................7
2.3A/D转换......................................................7
2.3.1ADC0809内部结构........................................7
2.3.2ADC0809转换原理........................................8
2.3.3电路设计................................................8
2.3.4采集数据和对应电压的转换...............................8
三软件设计..............................................................9
3.1设计任务.....................................................9
3.1.1基本任务.............................................9
3.1.2扩展任务.............................................9
3.2程序代码.....................................................9
3.2.1C语言实现基本功能......................................9
3.2.2主程序框图............................................17
四系统调试.............................................................17
4.1硬件部分...................................................17
4.2软件部分...................................................18
五总结..................................................................18
参考文献:
...............................................................18
附录一A/D转换板原理图.................................................19
附录二A/D转换板PCB图...................................................20
附录三单片机板电路原理图...............................................21
附录四单片机印刷电路板布线图...........................................22
一绪论
1.1系统概述
1.1.1设计性质、目的、任务
《单片机系统设计》是在学习《模拟电子技术》、《数字电子技术》、《单片机原理及应用》等相关理论课程之后,所设置的重要的综合性实践教学环节,课程的任务是通过选题的设计、安装和调试,巩固已学的理论知识,综合应用所学知识,进行电子系统的设计,从而培养工程实践能力、创新能力,培养严肃认真的工作作风和科学态度。
通过查阅资料、选定方案、设计电路、安装调试、写报告等过程,得到一次科学研究工作的启蒙训练,也为以后利用单片机开发电子产品奠定坚实的基础。
1.2系统设计方案
本次实验要求设计电压采集装置,课程设计分设计、制作和调试三个部分。
设计选题以单片机为核心,基本内容应包括单片机最小系统、键盘和LED显示电路,以及设计系统涉及的其他电路。
系统硬件电路由标准电路和自制电路两部分组成。
标准电路包括单片机学习板,这部分电路已制成电路板,可根据设计需要进行配置选用。
自制电路需自行设计焊接,包含标准电路不具备的其他电路。
设计中采用了模数转换器,利用AD0809型8位MOS型A/D转换器。
可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,实现模拟信号到数字信号的转换。
控制部分采用单片机AT89C52来完成。
显示部分利用LED数码管显示模块,来显示采集到的电压分量。
1.2.1系统设计原理框图
二硬件电路设计
系统硬件电路由标准电路和自制电路两部分组成。
标准电路包括单片机最小系统、8个LED数码管电路和键盘电路,这部分电路已制成电路板,可根据设计需要进行配置选用。
自制电路需自行设计焊接,包含标准电路不具备的其他电路。
2.1主要芯片介绍
2.1.1AT89S52
AT89S52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89S52单片机在电子行业中有着广泛的应用。
兼容MCS51指令系统;8k可反复擦写(大于1000次)FlashROM;32个双向I/O口;
256x8bit内部RAM;3个16位可编程定时/计数器中断;时钟频率0-24MHz;2个串行中断,可编程UART串行通道;2个外部中断源,共8个中断源;2个读写中断口线,3级加密位;
2.1.2A/D0809
共28脚,双列直插式封装。
主要引脚功能如下:
(1)IN0~IN7:
8路模拟信号输入端。
(2)D0~D7:
8位数字量输出端。
(3)C、B、A:
控制8路模拟通道的切换,C、B、A=
000~111分别对应IN0~IN7通道。
(4)OE、START、CLK:
控制信号端,OE为输出允许端,
START为启动信号输入端,CLK为时钟信号输入端。
(5)VR(+)和VR(-):
参考电压输入端。
2.2单片机电路
2.1.1单片机电路板
单片机电路板电路框图如图2;原理图见附录3;PROTEL绘制的电路排版图见附录4。
2.2.2单片机最小系统
上图为CPU原理图。
该原理图包含单片机以及外部连接译码,锁存电路端口,其中的ALE,REST为高电平时用来启动ADC0809.P0、P2口控制数码输出显示,P1口的低四位控制按键,P1.3~P1.6控制通道选择。
晶振采用12MHZ,该频率有利于提高串口的通信可靠性,同时又保证单片机有较高的运行速度。
2.2.3单片机的复位电路
当开关断开的时候,VCC对电容充电,RESET端为低电平;在开关闭合时电容放电,RESET端为高电平。
2.2.4开关电路
4位脉冲按键,共用端口。
--按下:
输入高电平
2.2.5显示译码电路
显示电路采用6位共阴极LED动态扫描显示,输出所需字形,74LS273选择字位。
在动态方式中,逐个地循环地点亮各位显示器。
如图所示:
74LS273芯片是用来控制显示时候的字位的,由于单片机的管脚是有限的通过使用273芯片可以避免少使用些单片机的管脚,两片273一个控制字形选择,一个控制字位选择,选择方式为总线地址结构。
2.2.6蜂鸣器和继电器电路
2.3A/D转换
2.3.1ADC0809内部结构
ADC0809由8路模拟开关、地址锁存与译码器、比较器、256电阻阶梯、树状开关、逐次逼近式寄存器SAR、控制电路和三态输出锁存器等组成。
2.3.2ADC0809转换原理
图11:
ADC0809转换工作时序
工作原理:
当单片机端的P3.3接低电平时,可以使两个非门打开
(1)当模拟量送至某一输入通道后,CPU将标识该通道编码的三位地址信号经数据线或地址线输入到ADDC、ADDB、ADDA引脚上。
(2)地址锁存允许ALE锁存地址信号,启动命令START启动A/D转换。
(3)转换开始,EOC变低电平,转换结束,EOC变为高电平。
EOC可作为中断请求信号。
(4)转换结束后,可通过执行IN指令,设法在输出允许OE脚上形成一个正脉冲,打开三态缓冲器把转换的结果输入到DB,一次A/D转换便完成。
2.3.3电路设计
硬件资源分配
数码管显示电路:
用总线结构,字型码地址为efff;字位码地址为dfff;
键盘电路:
4个键--P3.2,P3.3,P3.4,P3.5
蜂鸣器p1.0
继电器p1.6
ADC0809电压转换电路控制信号:
/wr==p3.6/rd==p3.7
eoc==p3.2Cs==p3.3(可以不要,使0809常选通)
AD总线地址为7fff,p1.1,p1.2,p1.3控制通道选择。
2.3.4采集数据和对应电压的转换
一个8位二进制的AD采集数据转换为5位10进制显示数据。
对应关系:
00H~FFH---0.000V~5.000V;AD分辨率为:
5/255=19.6mV;算法:
Y=X×19.6=X×196/10
具体步骤:
1、求Y=X×196,结果为双字节二进制数
2、将Y转换为十进制数,最大是一个5位的十进制数
3、去掉十进制数的最低位,相当于除10
三软件设计
3.1设计任务
3.1.1基本任务进行电压采集并显示
3.1.2扩展任务
1、指定通道采集
2、循环采集显示,默认每通道显示2秒钟,并具有锁定通道功能。
3、报警设置报警上限默认为4.0V
报警下限默认为0.0V
3.2程序代码
3.2.1C语言实现基本功能
#include
Unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsignedcharxdatazixin_at_0xefff;
unsignedcharxdataziwei_at_0xdfff;
unsignedcharxdataad_at_0x7fff;
unsignedchargetdata;
unsignedchara,b,c,d,e,f,g,gt;
unsignedintget;
unsignedintn,q,z=0,j,p,sx,xx;
sbitK1=P3^5;
sbitK2=P3^4;
sbitK3=P3^3;
sbitBE=P1^0;
sbitJD=P1^6;
unsignedcharchannel=0x0f1;
unsignedchari=0;
voiddelay(unsignedintcnt)
{
cnt--;
}
voidint0(void)interrupt0
{
getdata=ad;
get=getdata*196;
a=get/10000;
b=get%10000/1000;
c=get%10000/1000/100;
d=get%10000/1000/100/10;
sx=a*10+b;
xx=p*10+q;
zixin=dispcode[i];
ziwei=1;
delay(200);
ziwei=0;
zixin=dispcode[a]|0x80;
ziwei=16;
delay(200);
ziwei=0;
zixin=dispcode[b];
ziwei=32;
delay(200);
ziwei=0;
zixin=dispcode[c];
ziwei=64;
delay(200);
ziwei=0;
zixin=dispcode[d];
ziwei=128;
delay(200);
ziwei=0;
if(a>=4&&b>=j)
{
BE=0;
JD=0;
delay(2000);
zixin=dispcode[4]|0x80;
ziwei=4;
delay(100);
ziwei=0;
delay(100);
zixin=dispcode[j];
ziwei=8;
delay(100);
ziwei=0;
delay(100);
}
elseif(sx { BE=0; JD=0; delay(2000); zixin=dispcode[p]|0x80; ziwei=4; delay(100); ziwei=0; delay(100); zixin=dispcode[q]; ziwei=8; delay(100); ziwei=0; delay(100); } else { BE=1; JD=1; delay(2000); } ad=0; } voidt0(void)interrupt1 { q++; if(q>=40) { q=0; TR0=0; TH0=0x3C; TL0=0x0b0; channel=channel+2; i++; if(i==8) { channel=0x0f1; i=0; } P1=channel; zixin=dispcode[i]; ziwei=1; delay(200); ziwei=0; } else { TH0=0x3C; TL0=0x0B0; } TR0=1; } voidmain(void) { TMOD|=0x01; IT0=1; EX0=1; EA=1; TH0=0x3c; TL0=0xbb; ET0=1; ad=0; while (1) { if(! K1) { z++; if(z>2) { z=0; } if(z==0) {TR0=0;} if(z==1) {TR0=~TR0;} if(z==2) {TR0=0;} while(! K1) for(n=0;n<100;n++); } if(z==2) { TR0=0; if(! K2) { j++; if(j>9) {j=0;} while(! K2); delay(2000); } if(! K3) { q++; if(q>9) { q=0; p++;; if(p>1) {p=0;} } if(p==1&&q>5) { p=0; q=0; } while(! K3); delay(2000); } } if(z==0) { TR0=0; if(! K2) { for(n=0;n<100;n++); channel=channel+2; i++; if(i==8) { channel=0xf1; i=0; } while(! K2); for(n=0;n<100;n++); } if(! K3) { for(n=0;n<1000;n++); channel=channel-2; if(i==0) { channel=0xf1; i=1; } i--; while(! K3); for(n=0;n<100;n++); } } } } 3.2.2主程序框图 四系统调试 系统调试是设计的最后一部分,此部分用于检查硬件和软件错误。 硬件上此次实验主要焊接了扩展板上的A/D转换部分,电路简单,容易检查,软件上编程是分段进行,按模块编写。 4.1硬件部分 扩展板上主要难度在于芯片之间的连接,由于是手工布线,不可避免的会出现虚焊等情况,由于粗心,把两个焊点连接了起来,调试的过程出了一点问题,不过还好,借助万用表成功找出了问题。 4.2软件部分 软件程序设计是花费时间最多的地方,在同学的指导下,程序的编写循序渐进,先实现比较简单的功能,再在此基础上扩展功能。 由于单片机知识当时学的不牢固,现在用到了得现场去书上查,一边学习一边编程。 困难出现在最后的上下限处理,手动设置上下限上出现了困难,最后在同学的共同讨论和老师的指导下,终于实现了功能。 中间进行调试程序使用到了仿真器,掌握了用仿真器调程序的技巧。 五总结 本次课程设计的内容是基于51单片机的直流电压采集与显示系统的设计,核心部分是模数转换及电压显示,这一知识点在本学期的教学过程中已经广泛使用,对模数转换芯片ADC0809有进一步了解,故我将此次设计的重点放在了功能的扩展部分的实现方法及显示的改变上。 大四学期教学实验中,通过网上资料及课本信息,我了解了简单编程和设计最重要的是排版效果,此次,我之前基础上,扩展了模数转换的通道,增添了量程选择功能,在数码管显示上,采用了动态扫描的方法,并且编程由由汇编转变为C语言。 在这些过程中我获益匪浅,加深了对穆数转换的了解,能对其功能进行多元化的应用,数码管的显示技术上,我在以前所存静态显示的基础上,又掌握了动态扫描方法,有利于简化硬件设施。 通过这次综合课程设计,我对单片机的开发和应用产生了浓厚的兴趣,课外也在进行一些探究,希望能熟练地掌握它。 在此基础上,我发现学习好它的一个有效方法就是动脑动手进行一些开发和设计,在开发和设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用单片机实现电压采集单片机课程设计 精品 单片机 实现 电压 采集 课程设计