单片机数字电压表.docx
- 文档编号:7335647
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:9
- 大小:67.23KB
单片机数字电压表.docx
《单片机数字电压表.docx》由会员分享,可在线阅读,更多相关《单片机数字电压表.docx(9页珍藏版)》请在冰豆网上搜索。
单片机数字电压表
信息与电气工程学院
课程设计说明书
(2010/2011学年第二学期)
课程名称:
单片机原理及应用
题目:
数字电压表
专业班级:
自动化0801
学生姓名:
董祥飞
学号:
080410122
指导教师:
王静爽韩昱杨怡君郭伟
设计周数:
二周
设计成绩:
2011年6月24日
1.引言
电子电压表主要用于测量各种高、低频信号电压,它是电子测量中使用最广泛的仪器之一。
根据测量结果的显示方式及测量原理不同,电压测量仪器可分为两大类:
模拟式电压表(AVM)和数字式电压表(DVM)。
模拟式电压表是指针式的,多用磁电式电流表作为指示器,并在表盘上刻以电压刻度。
数字式电压表首先将模拟量经模数(A/D)转换器变成数字量,然后用电子计数器计数,并以十进制数字显示被测电压值。
众所周知,模拟电压表精度较高,曾经有很广阔的市场,现在依然有不少工程师依然在使用模拟电压表。
的确模拟电压表在显示测量值方面精度校准,然而却也存在问题。
模拟电压表采用用指针式,里面是磁电或电磁式结构,所以其响应速度较慢。
然而在高速发展的当今社会,高速信号处理的需求越来越多,由于模拟电压表响应速度较慢已经不适用与高速信号领域,取而代之的将是数字电压表。
但数字电压表由于存在采样误差,精度不是很高。
不过目前可以通过技术手段来缩小误差。
使其精度达到与模拟电压表一样精确甚至更高。
可见将来数字电压表必将取代模拟电压表。
现在有越来越多的数字测量仪器的出现但原理皆与数字电压表殊途同归,因此研究数字电压表有着很大现实意义。
2.设计目的
2.1学习与掌握单片机的应用能综合应用所学知识,并在实践的基本技能方面进行一次系统的训练。
2.2了解单片机芯片的功能,并初步掌握小型单片机系统设计的基本方法。
2.3了解数字电压表的工作流程与STC90C52的功能。
2.4培养查阅资料以及撰写实验说明书的能力。
2.5掌握基本编程方法。
3.设计要求
3.1可以测量0-5V的2路输入电压值。
3.2能用LED数码管显示测量结果。
3.3测量范围可达0~5V,最小分辨率为0.02V。
3.4系统具有复原功能。
4.硬件设计
主电路原理图
标识符
器件名称
规格型号
数量
标识符
器件名称
规格型号
数量
U1
单片机
STC90C52AD
1
C11C12
瓷片电容
22p或30p
2
U2
RS232驱动
MAX232
1
C13-C17
独石电容
0.22uF(224)
5
J1-J4,CRY
LstsHsts
接线插孔座
排母
86针
C1C2
电解电容
1.0uF/50V
2
C3C4C0
电解电容
10uF/50V
3
CRY
晶体谐振器
6MHz
1
C5-C8
电解电容
47uF(22uF)
4
High,Low,PS
发光二极管
φ3
3
JPS
接线端子
电源用
1
R1
金属膜电阻
200Ω
1
RST
按钮
小(0.2×0.3)
1
R0
金属膜电阻
6.8K
1
JDB
DB9插座
DB9针形座
1
R2R3R4
金属膜电阻
3.3K
3
U1
DIP插座
DIP40
1
R9
金属膜电阻
1M
1
U2
DIP插座
DIP16
1
5.软件设计
在刚上电时,系统默认为循环显示8个通道的电压值状态。
当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间为1S左右。
主程序在调用显示子程序和测试程序之间循环,主程序流程图见图。
图3主程序流程图
6.系统调试
先编写短小程序测试各个部件的完好性,如有故障有针对性地进行修改更正,逐步完善,通过先局部后整体最后完成整个调试,有些问题比较隐蔽,需要反复检查才能解决因此要做到耐心认真,有时是问题出现在硬件上,有时出现在软件上,需要做到各个环节都检查到,不能有遗漏之处。
而且自己也要学会一些基本的技巧定位那种故障属于那方面的故障,做到有的放矢方能事半功倍。
7.设计总结及心得
经过本次单片机课题的设计与研究,我们将学习的理论知识运用到了实践中,体会了实践与理论的区别,不仅掌握了很多实验室操作技能,而且加强了自己的工程思想。
在两个星期的团队工作中,我们在实际设计中遇到很多问题,甚至有时陷入僵局,但结合所学知识,查找各种资料,不断地尝试,终于克服了困难。
通过观察现象,查找原因,解决问题,我们学会了解决实际问题的方法,提高了自己独立思考的能力。
单片机在日常生活中应用广泛,通过这次课程设计,我们更多的了解了单片机的发展现状和发展趋势,以及在生活中的广泛应用。
在实际应用中,有各个公司生产的不同型号的、针对不同功能设计的、以及根据用户的需要和发展自主研发设计的单片机还有很多,由此设计出来的系统更是数不胜数。
在这次课题设计过程中,我们合理的分工,适宜的规划进度的进展,发现了理论资料与实践上的区别,通过多次尝试,成功完成了硬件和软件的设计。
在这一过程中,我们充分发挥我们的主观能动性,想象创造性,攻克了很多之前都没有想过的难关,真的受益匪浅,对我们理论和实验都有很大的提升,我想这些对于我们今后的学习生活都有很重要的意义,这将是我们在程序设计以及大学学习过程中的宝贵经验和财富。
单片机是一门应用性和实践性很强的学科,需要扎实的基础,缜密的思维和足够的耐力。
在这次单片机设计中,我们的工作和收获大致如下:
首先是认识芯片。
我们这次选用的是STC90C52AD单片机,这是一款比较新的单片机,内部结合了模数转换这一功能,和我以前接触的89C52单片机有一定的差别。
为此,我们专门查找了它的用户手册,结合指导老师提供的资料,我们大致了解了它的各个引脚及其功能,各种寄存器等等。
因为我们这次需要设计一个0~5V量程的简易数字电压表,这就需要用到模数转换这一功能,加上以前从未涉及这一运用,所以在一开始我们便着重学习了它的D/A转换这一模块,掌握了它的运行机制和编程要求。
在这过程中。
我们了解了STC90C52AD单片机,初步掌握了模数转换的功能。
其次是电路的设计。
根据设计要求,我们先将电压表分成了了几个模块,分别是电压检测,模数转换,显示电路。
然后根据这几大模块分别设计电路,对单片机端口进行了合理分配,检测电压部分我们选用了一个电位器;模数转换部分则是又单片机内部自动完成;显示电路部分我们选用了3个共阴极的数码管,由P2口控制段选,P0口控制位选端。
有了大致的轮廓之后,我们使用DXP画出了电路图。
在此过程中,我们将所学的知识运用到了实践中,设计电路图时对各个器件有了更深的了解尤其是共阴极数码管的驱动。
而在画图时,掌握了电路图制作软件,更好的掌握了建库和连线。
这次设计虽然没画PCB图,但是我们还是从中还是积累了很多制图经验。
再者是电路板的连接。
因为主控板已经布线了,所以很快就焊完了。
但是扩展板因为没有PCB图,所以在安放器件时遇到了一些麻烦,不知道放哪合适。
而且之前没考虑电源线和地线,因此安放电阻时不小心连接在了电源上,最后只好拆了重新焊接了一遍。
焊接时候的一些问题比较多比较杂,但经过小组努力都成功的解决了。
总得来说,焊接并不简单,它是一项非常重要的技术活,需要你合理安排,细心排查,小心连接,防止脱焊、短接,错焊等等一系列问题。
接着是编程和仿真。
在编程之前我们需要先画流程图,将电压表拆成若干个子模块进行编写。
编程语言要求汇编语言或C语言。
我们采用的是C语言,我们看了一些关于C语言编程的书籍,比如《单片机C语言程序设计参考书》马忠梅等著,北京航空航天大学出版社出版的《单片机的C语言应用程序设计》。
经过分析,结合芯片引脚的各个功能,并参照了有关这一类的程序,规定了11.0592的晶振,运用Keil软件我们终于将程序编写完成并通过仿真软件的运用,对电路和程序进行了试验。
在这一步,我们将C知识运用到了实践中,了解了标准程序的要求,学会了怎样在keil环境下编写程序。
最后就是下载执行程序,利用下载软件,对单片机进行了烧写,将程序下载进去之后并没有出现自己想要的结果。
因此,我们又检查了一遍硬件电路,在确保电路正确的情况下,我们又从软件着手,对程序进行了修改。
在这一步,总是改写调试程序,这让我们见识编程的难度,稍有不留神,结果就相差十万八千里。
在编写程序的过程中,研究生学姐帮了我们不少忙,从中我们对C语言在单片机编程中有了个直观的感受,对此有了更深的了解。
在这次课程设计中我们未能全部完成课程任务,没有实现预期效果,但是这次课程设计还是让我们收获颇丰。
从电路设计到编程,软硬件的结合,让我们对单片机有了更深更全的认识,在这次课设中,我们认识了一个新的芯片,我们掌握了A/D转换的一个新的知识,明白了理论和实践是由差别的,意识到了实践经验的重要性。
对为什么单位都喜欢招有经验的人才也有了答案。
在这次课设中感谢老师们的指导和帮助,让我们收获了那么多。
在今后的学习实践中,我们会吸取这次课设的教训,不断积累自己的实践经验,拓宽自己的知识面,提高自己的理论联系实际的水平,培养自己的耐心、细心和恒心,争取早日成为一名高级工程师。
8.参考文献
[1] 马潮詹卫前耿德根编《Atmel51原理及应用手册》清华大学出版社
[2] 谭浩强编《C语言程序设计(第二版)》清华大学出版社
[3] 马潮编 《AVR单片机嵌入式系统原理与应用实践》北京航空航天大学出版社
[4]张毅刚编《单片机原理及应用》高等教育出版社
9.附录
程序:
#include
#defineuintunsignedint
#defineucharunsignedchar
doubles;
uintnum,ge,shi,bai,flag;
uinta=0;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
ucharcodetel[]={
0xbf,0x86,0xdb,0xcf,
0xd6,0xed};
sfrP1_ADC_EN=0x97;
sfrADC_CONTR=0xC5;
sfrADC_DATA=0xC6;
/******延时函数*******/
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//AD转换程序//
ucharget_AD_result(ucharchannel)
{
ucharAD_finished=0;
ADC_DATA=0;
ADC_CONTR=channel;
delay(10);
ADC_CONTR|=0x08;//启动AD
AD_finished=0;
while(AD_finished==0)
{
AD_finished=(ADC_CONTR&0x10);
}
ADC_CONTR&=0xf7;
return(ADC_DATA);
}
main()
{
EA=1;
ET0=1;
TMOD=0x01;
TH0=0xf6;//6M5ms
TL0=0x3c;
TR0=1;
P1=P1|0x01;
P1_ADC_EN=0x01;
while
(1)
{
num=get_AD_result(0);
s=num*5.0/255.0;
s=s*100;
bai=s/100;
flag=s;//取模不能用浮点型,所以进行转化
shi=flag%100/10;
ge=flag%10;
}
}
voidtime0()interrupt1
{
TH0=0xf6;
TL0=0x3c;
a++;
switch(a)
{
case1:
P0=0x01;P2=table[ge];break;
case2:
P0=0x02;P2=table[shi];break;
case3:
P0=0x04;P2=tel[bai];a=0;break;
default:
break;
}
课程设计
评语
课程设计
成绩
指导教师
(签字)
年月日
注:
此表必须在同一页面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 电压表