设计并实现对电阻器电阻值测量文档格式.docx

上传人:b****5 文档编号:19516860 上传时间:2023-01-07 格式:DOCX 页数:15 大小:121.06KB
下载 相关 举报
设计并实现对电阻器电阻值测量文档格式.docx_第1页
第1页 / 共15页
设计并实现对电阻器电阻值测量文档格式.docx_第2页
第2页 / 共15页
设计并实现对电阻器电阻值测量文档格式.docx_第3页
第3页 / 共15页
设计并实现对电阻器电阻值测量文档格式.docx_第4页
第4页 / 共15页
设计并实现对电阻器电阻值测量文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

设计并实现对电阻器电阻值测量文档格式.docx

《设计并实现对电阻器电阻值测量文档格式.docx》由会员分享,可在线阅读,更多相关《设计并实现对电阻器电阻值测量文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

设计并实现对电阻器电阻值测量文档格式.docx

单片机 

最小系统 

LCD1602 

ADC0804PROTUESKEIL

1基本设计原理

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。

对51系列单片机来说,最小系统一般应该包括:

单片机、晶振电路、复位电路、按键输入、显示输出等。

单片机接口电路主要用来连接计算机和其它外部设备。

本次设计主要完成的扩展电路包括LCD1602显示电路、电阻分压电路,ADC0804转换电路。

其原理框图如下图1所示

STC89C51

电阻分压电路

ADC0804转换电路

LCD1602显示电路

图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。

1

图3.1主程序框图

4性能分析

本设计通过PROTUES进行仿真,整个系统设计图见附录。

设计要求可以测出待测电阻阻值范围是1~2000Ω,误差小于0.02。

本设计满足待测电阻阻值测量范围,测量电阻阻值范围是1~2000Ω,有前述公式

其中2500/255≈9.8039,误差<

0.005,满足设计要求。

仿真的电阻阻值与实际电阻测量阻值如表格4.1所示

实际电阻(Ω)

仿真测量(300Ω)

硬件测量(300Ω)

1.5

10

9.8

20

19.60

40

39.21

39.20

60

58.81

80

78.42

78.40

100

98.03

98.00

200

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<

reg52.h>

intrins.h>

math.h>

#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;

i<

n;

i++)

for(j=0;

j<

110;

j++);

}

***************ADC转换函数************************

voidadctrans()//ADCzhuanhuanhanshu

ucharadvalue;

longintvalue;

doubleresistor,a;

cs=0;

//kaishizhuanhuan

wr=1;

_nop_();

wr=0;

//while(intr!

=0);

delayms

(1);

//duquzhuanhuanhoudezhi

P1=0xff;

rd=1;

_nop_();

rd=0;

advalue=P1;

//P1koudezhisongdaoadvaule

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;

en=0;

******************液晶写数据函数************************

voidwritedata(ucharlcddata)//lcdxieshujuhanshu

rs=1;

P0=lcddata;

********************液晶初始化*************************

voidinit()//lcdchushuhuahanshu

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);

}

附录二:

系统总体电路设计图

本科生课程设计成绩评定表

姓名

性别

专业、班级

课程设计题目:

设计并实现对电阻器电阻值的测量

课程设计答辩或质疑记录:

成绩评定依据:

最终评定成绩(以优、良、中、及格、不及格评定)

指导教师签字:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1