设计并实现对电阻器电阻值测量.docx
《设计并实现对电阻器电阻值测量.docx》由会员分享,可在线阅读,更多相关《设计并实现对电阻器电阻值测量.docx(19页珍藏版)》请在冰豆网上搜索。
设计并实现对电阻器电阻值测量
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
设计并实现对电阻器电阻值的测量
初始条件:
(1)PROTUES、KEIL等软件;
(2)课程设计辅导书:
《单片微型计算机》
(3)先修课程:
51单片机C语言教程、微机原理。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1)设计原理或方法;
(2)系统硬件线路设计图;
(3)程序框图;
(4)资源分配表;
(5)总结与心得。
时间安排:
第19周
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
摘要1
1基本设计原理2
2.硬件电路设计原理3
2.1复位电路3
2.2振荡电路4
2.3分压电路5
2.4模数转换电路5
2.5液晶显示电路7
2.6硬件系统设计图8
3系统程序框图8
4性能分析10
5资源分配表11
6总结体会12
7参考文献13
附录一:
系统源程序14
附录二:
系统总体电路设计图18
摘要
单片微型计算机简称单片机,又称为微型控制器,是微型计算机的一个重要分支。
随着电子技术的发展,大规模及超大规模集成电路和制造工艺的进一步提高,单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,广泛应用于控制系统、数据采集系统、智能化仪器表等领域。
单片机最小系统,无论对单片机初学人员还是开发人员都具有十分重要的意义,可以利用最小系统进行编程实现工业控制。
单片机最小系统电路板在单片机开发市场和大学生电子设计方面十分流行。
本次课程设计包括STC89C52单片机最小系统包括复位和时钟电路及供电系统、液晶显示模块,电组分压模块以及ADC0804单路模数转换器。
通过固定电阻与待测电测进行分压,通过ADC0804模数转换器将模拟量转换为数字量送到P2,最后通过LCD1602显示电路显示出电阻值,具有精度较高,电路简单等优点。
关键字:
单片机 最小系统 LCD1602 ADC0804PROTUESKEIL
1基本设计原理
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路、按键输入、显示输出等。
单片机接口电路主要用来连接计算机和其它外部设备。
本次设计主要完成的扩展电路包括LCD1602显示电路、电阻分压电路,ADC0804转换电路。
其原理框图如下图1所示
图1:
电路总体框图
本设计中选用的微处理芯片是STC89C51,它是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz。
整个电路的设计是通过一个固定电阻与待测电阻进行分压,通过ADC0804将分压的电压量转换为数字量送给单片机,单片机将数字量进行运算处理,得出待测电阻的阻值,然后单片机将阻值送到液晶1602上,通过液晶屏进行阻值示数显示,从而达到了测量电阻的目的。
2.硬件电路设计原理
硬件电路主要由复位电路,振荡电路,分压电路,模数转换电路与液晶显示电路组成。
2.1复位电路
单片机复位电路分为上电自动复位和按键复位。
按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。
电路图如图2.1。
图2.1复位电路
2.2振荡电路
单片机系统里都有晶振,在单片机系统里晶振作用非常大,全称叫晶体振荡器,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。
在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。
高级的精度更高。
有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。
晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。
单片机晶振的作用是为系统提供基本的时钟信号。
通常一个系统共用一个晶振,便于各部分保持同步。
有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。
如果不同子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。
STC89C51使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。
其电路原理图如2.2所示。
图2.2振荡电路
2.3分压电路
要求用单片机测待测电阻,但是单片机无法直接测量电阻的阻值,通过分压电路,将待测电阻的阻值转换成相应值得电压,通过测量电压值得大小,间接测量出待测电阻的大小。
由图2..3所示,待测电阻与一个固定阻值为500Ω进行分压,然后将待测电阻的电压值送到模数转换器ADC0804上。
图2.3分压电路
2.4模数转换电路
通过分压电路将电阻值转换成相应的电压值,通过模数转换电路将电压值这种模拟量转换成数字量送到单片机,这里使用的是ADC08004.
ADC0804是属于连续渐进式(Successive Approximation Method)的A/D转换器,这类型的A/D转换器除了转换速度快(几十至几百us)、分辨率高外,还有价钱便宜的优点,普遍被应用于微电脑的接口设计上。
该芯片工作电压:
5V,即VCC=5V。
模拟输入电压范围:
0~5V,即0≤Vin≤5V。
分辨率:
8位,即分辨率为1/2=1/256,转换值介于0~255之间。
转换时间:
100us(fCK=640KHz时)。
转换误差:
±1LSB。
参考电压:
2.5V,即Vref=2.5V。
图2.4.1adc0804引脚图
本次实验用的固定电阻阻值是500Ω,adc0804转换位数是8位,即0~255,参考电压VREF/2为2.5V.则
其中2500/255≈9.8039,其电路图如图2.4.2所示。
图2.4.2模数转换电路
2.5液晶显示电路
本实验用:
LCD1602来代替数码管进行电阻阻值显示。
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,它具有低功耗,控制简单,成本较低等优点。
单片机将从ADC0804传送过来的数字量送到液晶1602显示出来,从而达到对电阻阻值的显示。
液晶显示电路如图2.5所示
图2.5液晶显示电路
2.6硬件系统设计图
整个硬件电路的设计图见后面附录所示。
3系统程序框图
系统程序框图如图3.1所示
程序执行时,先进行复位初始化,对液晶1602进行初始化操作,之后进入循环查询显示。
ADC0804对电阻分压的电压进行模数转换,将电压值转换成数字量。
接着对液晶显示屏进行操作。
确定液晶显示的位置,单片机将ADC0804转换的数字量换算成电阻值送到LCD1602显示,从而完成了对待测电阻的阻值测量,仿真误差为0.0005。
0
1
图3.1主程序框图
4性能分析
本设计通过PROTUES进行仿真,整个系统设计图见附录。
设计要求可以测出待测电阻阻值范围是1~2000Ω,误差小于0.02。
本设计满足待测电阻阻值测量范围,测量电阻阻值范围是1~2000Ω,有前述公式
其中2500/255≈9.8039,误差<0.005,满足设计要求。
仿真的电阻阻值与实际电阻测量阻值如表格4.1所示
实际电阻(Ω)
仿真测量(300Ω)
硬件测量(300Ω)
0
0
0
1.5
0
0
10
9.8
10
20
19.60
19.60
40
39.21
39.20
60
58.81
58.81
80
78.42
78.40
100
98.03
98.00
200
196.06
196.06
400
401.93
402.03
800
803.86
803.66
1000
999.92
1001.02
1500
1499.88
1499.80
2000
1999.99
1999.83
表格4.1性能测试表格
5资源分配表
单片机的资源分配表如表格5.1所示
单片机资源
资源分配
P0.0~P0.7
LCD的D0~D7
P1.0~P1.7
ADC0804的P1.0~P1.7
P2.1
ADC0804的CS
P2.2
ADC0804的INTR
P2.3
LCD的E
P2.4
LCD的RW
P2.5
LCD的RS
P3.6
LCD的WR
P3.7
LCD的RD
表5.1资源分配表
6总结体会
本次课程设计结合本学期所学习的单片机的基础知识,将硬件和软件的知识全都联系起来,硬件方面有电路的连接和芯片的选取,软件方面有程序的设计和编写,这也为以后进一步学习嵌入式系统打好了基础。
以前对单片机更多的只是一些感性的理论上的认识自己真正动手的时候才真正理解到其中的精华所在。
本次设计让我更好的了解如何灵活应用单片机的I/O口。
其中最重要的是分析问题解决问题的能力。
在我看来写程序并不难,重要的是把程序优化,无论是在节省硬件资源,还是提高数据的准确度来看,都需要下一些功夫把它做到最好。
这些天来,令我印象最深刻的是编写程序与焊接电路。
编写程序是一个枯燥却很有乐趣的一件事。
在编写的过程中,虽然会遇到一个又一个问题,要不厌其烦的进行修改调试,虽然很辛苦,但是看到自己把一个又一个程序问题解决,有一种从心底发出的自豪感与成就感。
它不但提高了自身对软件的认识与应用,也极大的锻炼了自己的毅力与耐力,艰苦而难忘。
而焊接电路也是一项慢工出细活的工作,以前对使用电烙铁的各项注意还是不熟悉,操作起来不是很得心应手,有点笨手笨脚的感觉,不过还是顺利的将电路焊接完成,虽然不是很完美,却给自己一个警醒,提醒自己今后要加强这方面的动手能力。
与此同时,这次课设进一步加强了自己查找资料的自学能力。
每天都遨游在各种专业书籍和文献之中,不断学习,不断提炼。
特别是对专业软件的学习和使用同时也大大加强了我们编程的能力。
后期在程序调试方面,不断地对代码进行调试,不断地查阅书籍察看哪里理解错误了,现在想起来还有些意犹未尽,有种淡淡的甘甜。
当然,最终实物实现了所要求的功能,可是还是有很多地方需要改进,例如程序的书写规范,不过总的来说这次单片机实习还是让我学到非常多的东西,也增加了我的动手机会
7参考文献
[1] 谢自美. 电子线路设计·实验·测试(第三版).武汉:
华中科技大学出版社
[2] 李群芳. 单片微型计算机与接口技术(第3版).电子工业出版社,2008
[3] 刘教瑜. 单片机原理及应用.武汉理工大学出版社,2011
[4] 张东亮. 单片机原理与应用.人民邮电出版社,2009
[5] 郭天祥. 51单片机C语言教程.电子工业出版社
附录一:
系统源程序
***********************************************
#include
#include
#include
#defineucharunsignedchar
sbiten=P2^3;//dingyiI/Okou
sbitrw=P2^4;
sbitrs=P2^5;
sbitcs=P2^1;
sbitintr=P2^2;
sbitwr=P3^6;
sbitrd=P3^7;
uchartable[12]="0123456789.~";//
intshuzhi[8];//dingyiyigeshuzu
****************延时函数***********************
voiddelayms(ucharn)//yanshihanshu
{
uchari,j;
for(i=0;ifor(j=0;j<110;j++);
}
***************ADC转换函数************************
voidadctrans()//ADCzhuanhuanhanshu
{
ucharadvalue;
longintvalue;
doubleresistor,a;
cs=0;
//kaishizhuanhuan
wr=1;
_nop_();
wr=0;
_nop_();
wr=1;
//while(intr!
=0);
delayms
(1);//duquzhuanhuanhoudezhi
P1=0xff;
rd=1;
_nop_();
rd=0;
_nop_();
advalue=P1;//P1koudezhisongdaoadvaule
rd=1;
a=(double)advalue;
resistor=a*9.8039;//shuzhibianhuan
resistor*=100;
value=(longint)resistor;//fenliweishu
shuzhi[0]=(value%1000000)/100000;
shuzhi[1]=(value%100000)/10000;
shuzhi[2]=(value%10000)/1000;
shuzhi[3]=(value%1000)/100;
shuzhi[4]=10;
shuzhi[5]=(value%100)/10;
shuzhi[6]=value%10;
shuzhi[7]=11;
}
*******************液晶写指令函数**********************
voidwritecommand(ucharm)//lcdxiezhilinghanshu
{
rs=0;
rw=0;
P0=m;
delayms(4);
en=1;
delayms(4);
en=0;
}
******************液晶写数据函数************************
voidwritedata(ucharlcddata)//lcdxieshujuhanshu
{
rs=1;
rw=0;
P0=lcddata;
delayms(4);
en=1;
delayms(4);
en=0;
}
********************液晶初始化*************************
voidinit()//lcdchushuhuahanshu
{
en=0;
writecommand(0x38);
writecommand(0x0c);
writecommand(0x06);
writecommand(0x01);
}
****************主程序*********************************
voidmain()
{
ucharf;
init();//LCDchushihua
while
(1)
{
adctrans();//ADCzhuanhuan
writecommand(0x80);//lcdxianshiweizhi
for(f=0;f<8;f++)
{
writedata(table[shuzhi[f]]);//yejingxianshi
delayms(5);
}
}
}
附录二:
系统总体电路设计图
本科生课程设计成绩评定表
姓名
性别
专业、班级
课程设计题目:
设计并实现对电阻器电阻值的测量
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日