单片机课设数字电压表110VWord格式.docx
《单片机课设数字电压表110VWord格式.docx》由会员分享,可在线阅读,更多相关《单片机课设数字电压表110VWord格式.docx(10页珍藏版)》请在冰豆网上搜索。
3)显示电路
第2章系统硬件设计与实现·
8
2.1电路仿真图·
2.2电路原理图·
9
2.3PCB图·
第3章软件的设计
3.1程序·
10
第4章课设心得·
13
第5章参考文献·
14
附表元件列表·
摘要
数字电压表实数字化测量技术,吧连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理后再通过显示器件显示。
电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。
所以数字化测量仪表的产生于发展与电子计算机的发展是密切相关的。
目前实现电压数字化测量的方法仍然是模-数(A-D)转换的方法。
数字电压表已经绝大部分取代了传统的模拟指针式电压表。
传统式电压表功能单一、精度低、很容易出错。
而采用单片机控制的的数字电压表由于测量精度高、速度快、抗干扰能力强,可以扩展性等优点已被广泛用于电子及电工的测量。
。
1.1设计简介
我们采用AT89S52单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表。
该电路通过ADC0809芯片采样输入口IN0输入的0~5V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89S52芯片的P0口。
AT89S52负责把接收到的数字量经过数据处理,产生正确的数码管的显示段码,再传送给数码管。
AT89S52还控制着ADC0809的工作。
1.2系统组成
1)主控制器
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结。
2)模数转换电路
ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
(1)ADC0809的内部逻辑结构
由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
(2).ADC0809引脚结构
ADC0809各脚功能如下:
D7-D0:
8位数字量输出引脚。
IN0-IN7:
8位模拟量输入引脚。
VCC:
+5V工作电压。
GND:
地。
REF(+):
参考电压正端。
REF(-):
参考电压负端。
START:
A/D转换启动信号输入端。
ALE:
地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换).
EOC:
转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:
输出允许控制端,用以打开三态数据输出锁存器。
CLK:
时钟信号输入端(一般为500KHz)。
A、B、C:
地址输入线。
ADC0809对输入模拟量要求:
信号单极性,电压范围是0-5V,若信号太小,必须进行放大;
输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:
4条
ALE为地址锁存允许输入线,高电平有效。
当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。
A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
通道选择表如下表所示。
CBA选择的通道
000IN0
001IN1
010IN2
011IN3
100IN4
101IN5
110IN6
111IN7
数字量输出及控制线:
11条
ST为转换启动信号。
当ST上跳沿时,所有内部寄存器清零;
下跳沿时,开始进行A/D转换;
在转换期间,ST应保持低电平。
EOC为转换结束信号。
当EOC为高电平时,表明转换结束;
否则,表明正在进行A/D转换。
OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。
OE=1,输出转换得到的数据;
OE=0,输出数据线呈高阻状态。
D7-D0为数字量输出线。
CLK为时钟输入信号线。
因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,
VREF(+),VREF(-)为参考电压输入。
3)显示电路
显示电路采用液晶显示器,从P0串口输出段码。
第2章系统硬件设计与实现
2.1电路仿真图
2.2电路原理图
2.3PCB图
3.1程序
#include<
reg52.h>
LCD_DESPLAY.H>
sbitST=P2^0;
sbitOE=P2^1;
sbitEOC=P2^2;
sbitCLK=P2^3;
//时钟接口
#defineucharunsignedchar
#defineuintunsignedint
voiddesplay();
voidInit_zduan();
uchartable1[]={"
VoltageTest:
"
};
uchartable2[]={"
0123456789."
uchari,ge=0,shi=0,bai=0,temp2;
uinttemp;
voidmain()
{
init();
write_com(0x80);
for(i=0;
i<
13;
i++)
{
write_data(table1[i]);
delay
(1);
}
Init_zduan();
while
(1)
ST=1;
//启动
ST=0;
while(EOC==1);
while(EOC==0);
//查询等待转换结果
OE=1;
//打开输出允许信号
temp2=P1;
//读数据
OE=0;
desplay();
}
}
voiddesplay()
temp=temp2*1.96;
ge=temp%10;
shi=temp%100/10;
bai=temp/100;
write_com(0x80+0x45);
write_data(table2[bai]);
delay
(1);
write_data(table2[10]);
write_data(table2[shi]);
write_data(table2[ge]);
write_data(table1[0]);
delay(500);
//=====T0初始化函数============
voidInit_zduan(void)
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
TR0=1;
voidtimer0()interrupt1
CLK=~CLK;
第4章课设心得
经过两个周的单片机课程设计,我们终于完成了电压表的设计及制作,这是我们第一次用实践去验证课堂所学的知识,虽然第一次做板没有成功,但经过我们的改进,终于完成了设计要求,挺高兴的,毕竟把实物做出来了。
这次的课程设计让我懂得很多,也发现了很多问题,比如对PROTEL及PROTEUS软件的不熟悉让我在制作的时候吃了很多苦头,经过看视频教程和上网查资料,现在可以熟悉的运用了。
通过这次课设,我还懂得了仿真与实物,理论与实际不能一并而论,但也紧密相连。
在具体的制作过程中我们发现现在书本上的知识与实际的应用存在着不小的差距,书本上的知识很多都是理想化后的结论,忽略了很多实际的因素,或者涉及的不全面,可在实际的应用时这些是不能被忽略的,我们不得不考虑这方的问题,这让我们无法根据书上的理论就轻易得到预想中的结果,有时结果甚至很差别很大。
通过这次实践使我更深刻的体会到了理论联系实际的重要性,我们在今后的学习工作中会更加的注重实际,避免称为只会纸上谈兵的赵括。
我们要将理论很好地应用到和实际当中去,才能达到我们想要的成果。
而且要培养创新精神,才能不断开发我们的大脑,不断进步,超越前人。
第5章参考文献
1.(978-7-301-10760-7/TN0032)魏立峰王宝兴、《单片机原理及应用技术》、2006年8月、第一版、北京大学出版社、P165~P169。
2.(9787560935911)胡乾斌、《单片机原理与应用》、2006年2月、第二版、华中科技大学出版社、P20~P24。
3.(9787810778374)李广弟朱月秀冷祖祁、《单片机基础》、2007年6月、第一版、北京航空航天大学出版社、P65~P67。
附表
AT89S52单片机芯片一块
ADC0809芯片一块
10K划阻两个、10K电阻一个
LED二极管一个
30PF电容两、22PF极性电阻个
12MHZ晶振一个
按键一个
按键开关一个
液晶显示器一块