基于单片机的水位控制器毕业设计Word格式.docx
- 文档编号:17131007
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:19
- 大小:248.15KB
基于单片机的水位控制器毕业设计Word格式.docx
《基于单片机的水位控制器毕业设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的水位控制器毕业设计Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
第四章系统程序的设计-10-
4.1程序设计方案-11-
第五章调试及性能分析-11-
5.1软件调试-12-
5.2仿真结果-12-
5.3性能分析-12-
参考文献-13-
附件-14-
附件一设计总电路图和仿真结果-15-
附件二程序-15-
第1章系统功能要求
1.1课程设计题目
设计出一个用单片机控制的水位控制器。
1.2课程设计用材
电烙铁,锡丝,,PCB板,AT89C51单片机,ADC0809,晶振,数码管,发光LED(红绿各一个),继电器,水位传感器,电机,各种不同阻值电阻,各种型号电容,导线,杜邦线等等。
第二章设计方案论证
2.1设计方案
硬件选择:
选择AT89C51作为单片机芯片、ADC0809实现模数转换、WaterSensorforArduino水位传感器实现信号采集。
软件开发环境:
用Proteus7Professional软件画电路图、KeiluVision4软件进行程序编写。
第三章系统硬件电路的设计
3.1主要芯片简介
3.1.1AT89C51简介
单片机是将微处理器、一定容量的ROM和RAM以及I/O口、定时器等电路集成在一块芯片上,构成的单片微型计算机。
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
AT89C51提供以下标准功能:
4k
字节Flash
闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
3.1.2AT89C51的引脚功能
AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C51可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
引脚配置如图1.1所示。
图3.1AT89C51引脚图
VSS:
接地端。
VCC:
电源端。
P0.0-P0.7:
通道0,双向I/O口。
第二功能是在访问外部存储器时可分时用作低8位地址线和8位数据线,在编程和检验时,用于数据的输入和输出。
P1.0-P1.7:
通道1,双向I/O口,在编程和检验是,用于接收地址字节。
P2.0-P2.7:
通道2,双向I/O口,在第二功能是在访问外部存储器时,输出高8位地址,在编程和检验时,用做高位地址字节和控制信号。
P3.0-3.7:
双向I/O口,每条线都有自己的功能,如表3.1所示。
表3.1P3口各位的第二功能
P3口各位
第二功能
P3.0
RTD(串行口输出)
P3.1
TXD(串行口输入)
P3.2
(外部中断0输入)
P3.3
(外部中断1输入)
P3.4
T0(定时器/计数器0的外部输入)
P3.5
T1(定时器/计数器1的外部输入)
P3.6
(片外数据存储器写信号)
P3.7
(片外数据存储器读信号)
ALE:
地址锁存允许线,在访问外部存储器是,用来锁存P0口送出的低8位地址信号。
在不访问外部存储器是,ALE也震荡频率的六分之一的固定速率输出,此时,它可用做外部时钟和外不定时。
但若要访问外部存储器,则ALE不是连续周期脉冲,无法用做时钟信号。
:
片外存储器访问选择线,可以控制89C52使用片内ROM或使用片外ROM,若是
=1,则允许使用片内ROM;
若是
=0,则只使用片外ROM。
PSEN:
片外ROM的选通线,在访问片外ROM时,89C52自动在PSEN线上产生一个负脉冲,作为片外ROM芯片的读选通信号。
RST:
复位线,可以使89C52处于复位(即初始化)工作状态。
通常89C51复位有自动上电复位和人工按键复位两种。
XTAL1和XTAL2:
片内震荡电路输入线,这两个端口用来外接石英晶体和微调电容,即用来连接89C52片内OSC(震荡器)的定时反馈回路。
AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
3.2ATC89C51基本电路
3.2.1复位电路
复位是使单片机处于某种确定的初始状态。
单片机工作从复位开始。
在单片机RST引脚引入高电平并保持2个机器周期,单片机就执行复位操作。
复位操作有两种基本方式:
一种是上电复位,另一种是上电与按键均有效的复位。
复位电路如图3.2所示。
开机瞬间RST获得高电平,随着电解电容C3的充电,RST引脚的高电平将逐渐下降。
若该高电平能保持足够2个机器周期,就可以实现复位操作。
根据经典电路选择参数,选取C3=10µ
F,R1=10KΩ。
图3.2复位电路图
3.2.2晶振电路
单片机的时钟信号通常有两种产生方式:
一是内部时钟方式,二是外部时钟方式。
内部时钟方式是利用单片机内部的振荡电路产生时钟信号。
外部时钟方式是把外部已有的时钟信号引入到单片机内。
本次设计中,采用的是12MHz晶振,配上30pF的电容,构成谐振,这样有助于输出稳定的波形。
如图3.3所示。
图3.3晶振电路图
在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振),作为单片机内部振荡电路的负载,构成自激振荡器,可在单片机内部产生时钟脉冲信号。
C1和C2的作用是稳定振荡频率和快速起振。
根据经典电路选择参数,本电路选用晶振12MHz,C1=C2=30PF。
其中晶振周期(或外部时钟信号周期)为最小的时序单位。
3.3A/D转换器
3.3.1ADC0809简介
ADC0809
是8位逐次逼近型A/D转换器。
它由一个8路模拟开关、一个地址锁存译码器、一个A/D
转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁存器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
3.3.2ADC0809引脚功能
图3.4ADC0809引脚
ADC0809各脚功能如下:
D7-D0:
8位数字量输出引脚。
IN0-IN7:
8位模拟量输入引脚。
+5V工作电压。
GND:
地。
REF(+):
参考电压正端。
REF(-):
参考电压负端。
START:
A/D转换启动信号输入端。
地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换)。
EOC:
转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:
输出允许控制端,用以打开三态数据输出锁存器。
CLK:
时钟信号输入端(一般为500KHz)。
B、C:
地址输入线。
如图3.5选择信号输入通道。
图3.5ADC0809通道选择
ADC0809对输入模拟量要求:
信号单极性,电压范围是0-5V,若信号太小,必须进行放大;
输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:
4条
ALE为地址锁存允许输入线,高电平有效。
当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换。
A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
通道选择表如下表所示。
3.3.3
ADC0809应用说明
●ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。
●
初始化时,使ST和OE信号全为低电平。
送要转换的哪一通道的地址到A,B,C端口上。
在ST端给出一个至少有100ns宽的正脉冲信号。
是否转换完毕,我们根据EOC信号来判断。
●当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
3.4数码管显示电路
3.4.1数码管简介
led数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
3.4.2数码管工作原理
根据其引脚接线,点亮相应的LED,即可得到想要的显示。
图3.6
3.4.3数码管显示电路
此数码管为共阴极接法,接一个上拉电阻后,接入单片机的P0端口,由P0口控制输出,高电平点亮相应的二极管。
图3.7数码管显示电路
第四章系统程序的设计
4.1程序设计方案
4.2程序
见附件二
第五章调试及性能分析
5.1软件调试
本设计的调试主要用到keil和protues软件。
其中,系统电路图的绘制和仿真采用的是Proteus软件,而C语言程序用Keil软件调试并把程序写入单片机。
软件调试结果如图5.1所示。
图5.1软件调试
5.2仿真结果
仿真结果见附件一。
5.3性能分析
本次课程设计所应用到的软件有:
KEIL,PROTEUS这两个软件,两个软件结合起来用对这个设计有着至关重要的作用。
软件调试是通过s进行的,此软件不多介绍了,功能强大,是学习电路的好帮手。
但进行软件仿真的时候,却一直没有出现结果。
这就要我们进行错误的排查,这就包括各个端口的检查和分析。
由于网上下载了中文补丁,因此对于我们初学者来说难度降低了不少,仿真软件proteus仿真时按键数码管老是加二,最后发现是个按键的延时太短了,增加延时后才实现加一,不仅要看电路是否有问题,c语言编程也要检查。
在实物的制作过程中遇到的麻烦更大,其中锻炼动手能力还是很好的,首先对于那些硬件都不怎么熟悉,这得就需要我们去查阅书籍资料,一个元器件的接口有什么功能、在哪里,平常我们在书本上只能想象一下,现在拿到硬件了又该如何是好,大部分的硬件只有一个名字,其余的引脚全部要查阅相关资料。
还有在焊接的过程中对于东西的使用也是很有讲究和技巧的。
了解助焊剂与焊锡丝的关系,如何使用,怎么用得安全对于我们动手少的人来说是很有难度的。
因此在第一次做的时候,线路极其混乱,出现了很多错误,没办法只有一次次的检查,重新排版、焊接,找到错误的地方。
参考文献
[1]李朝青.单片机原理及接口技术[M].4版.北京:
北京航空航天大学出版社,2013.7
[2]郭天祥.新概念51单片机C语言教程[M].北京:
电子工业出版社,2009.1
[3]康光华.数字电路基础数字部分[M].5版.北京:
高等教育出版社,2006.1
附件
附件一设计总电路图和仿真结果
附件二程序
#include<
reg52.h>
//头文件
#defineucharunsignedchar//宏定义无符号字符型
#defineuintunsignedint//宏定义无符号整型
sbitST=P3^1;
//A/D启动转换信号
sbitOE=P3^3;
//数据输出允许信号
sbitEOC=P3^2;
//A/D转换结束信号
sbitCLK=P3^0;
//时钟脉冲
sbitb1=P3^4;
sbitb2=P3^5;
sbitb3=P3^6;
sbitb4=P3^7;
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitkey5=P1^4;
sbitkey6=P1^5;
sbitkey7=P1^6;
sbitOUT=P1^7;
sbitzsd1=P3^6;
sbitzsd2=P3^7;
uintz,x,c,v,AD0809,date,sw,reng;
//定义数据类型
unsignedcharleddata[]={
0x3F,//"
0"
0x06,//"
1"
0x5B,//"
2"
0x4F,//"
3"
0x66,//"
4"
0x6D,//"
5"
0x7D,//"
6"
0x07,//"
7"
0x7F,//"
8"
0x6F,//"
9"
0x77,//"
A"
0x7C,//"
B"
0x39,//"
C"
0x5E,//"
D"
0x79,//"
E"
0x71,//"
F"
0x76,//"
H"
0x38,//"
L"
0x37,//"
n"
0x3E,//"
u"
0x73,//"
P"
0x5C,//"
o"
0x40,//"
-"
0x00,//熄灭
0x00//自定义
};
/*************************************************************************
CLK振荡信号
**************************************************************************/
voidtimer0()interrupt1//定时器0工作方式1
{
TH0=(65536-2)/256;
//重装计数初值
TL0=(65536-2)%256;
CLK=!
CLK;
//取反
}
voidanniu()
if(key1==0)
sw=8;
reng=0;
if(key2==0)
sw=5;
if(key3==0)
sw=4;
if(key4==0)
sw=3;
if(key5==0)
sw=2;
if(key6==0)
sw=1;
if(key7==0)
reng=1;
if(reng==1)
OUT=key7;
zsd2=key7;
}
voidxianshi()
P0=leddata[date];
if(date>
=sw&
&
reng==0)
{
OUT=1;
zsd2=1;
}
elseif(date<
sw&
OUT=0;
zsd2=0;
主函数
voidmain()
{
key1=1;
key2=1;
key3=1;
key4=1;
key5=1;
key6=1;
key7=1;
OUT=1;
zsd1=1;
zsd2=1;
P0=0x00;
TMOD=0X01;
//定时器中断0
CLK=0;
//脉冲信号初始值为0
//定时时间高八位初值
//定时时间低八位初值
EA=1;
//开CPU中断
ET0=1;
//开T/C0中断
TR0=1;
while
(1)//无限循环
ST=0;
//使采集信号为低
ST=1;
//开始数据转换
//停止数据转换
while(!
EOC);
//等待数据转换完毕
OE=1;
//允许数据输出信号
AD0809=P2;
//读取数据
OE=0;
//关闭数据输出允许信号
if(AD0809>
=251)//电压显示不能超过5V
AD0809=250;
date=AD0809/30;
anniu();
xianshi();
=8)
zsd1=0;
8)
zsd1=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 水位 控制器 毕业设计