单片机的应用毕业论文.docx
- 文档编号:11016469
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:32
- 大小:838.34KB
单片机的应用毕业论文.docx
《单片机的应用毕业论文.docx》由会员分享,可在线阅读,更多相关《单片机的应用毕业论文.docx(32页珍藏版)》请在冰豆网上搜索。
单片机的应用毕业论文
单片机的应用毕业论文
大庆石油学院应用技术学院
应用电子技术专业毕业论文
题目单片机的应用
专业:
应用电子技术
班级:
一班
学号1001330116
姓名:
彭伟民
指导教师:
张利国
设计日期:
2013年4月16号
摘要
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。
单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),单片机芯片
常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
它最早是被用在工业控制领域。
由于单片机在工业控制领域的广泛应用,单片机由仅有CPU的专用处理器芯片发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
在全国高等学校电子信息类专业中,已普遍开设单片机及其相关课程。
单片机课程是全国大中专院校电子类专业实践性,应用性和专业性很强的专业基础课程,仅在课堂上讲基本原理是不够的,必须加强实践环节让学生有足够的实践机会。
其中单片机实验板就是一个很好的学习单片机的工具。
目前市场上单片机实验板种类较多。
此次设计的实验板是将各个单元电路合理的拼凑在一块大印刷电路板上,构成一个有机的整体。
根据学生知识水平,教学内容可深可浅更加符合多层次学习单片机的需求,有利于培养学生的创新精神。
关键词:
单片机;实验板;接口电路;C语言
第1章绪论
1.1单片机现状及概述
单片机也叫嵌入式微控制器,属于第四代微型计算机的一个重要分支,它是把中央处理器CPU,随机存储器RAM,只读存储器ROM,定时器/计数器以及I/O接口电路等集成在电路芯片上的微型计算机。
单片机自从70年代问世以来功能日趋完善。
第一,单片机集成了越来越多的资源,用户不需要扩充什么资源就可以完成对项目的开发。
第二,由于单片机抗干扰能力很强,使得它更适用于工业控制领域,具有更加广阔的市场前景。
现在,随着计算机技术,电子技术的发展,单片机作为微型计算机的一个重要的分支已经成为了现在电子技术,计算机应用,网络,自动控制与计量测试,通信,信号处理与采集等技术等技术中非常普及的一项技术。
1.2单片机的性能特点
单片机作为控制系统的核心部件,除了具备通用微机CPU的数值计算功能外,还必须具有灵活强大的控制功能,以便实时监测系统的输入量,控制系统的输出量实现自动控制的目的。
由于单片机主要面向工业控制,工作环境比较恶劣,例如高温,电磁干扰等。
因此具有抗干扰能力强,工作温度范围宽,可靠性高,控制功能很强,指令系统比普通微机简单等优点。
1.3主要产品及系列
自单片机诞生的近30年中,单片机已有70多个系列,国际上较有名的有美国英特尔公司的MCS-48系列,MCS-51系列;美国ATMEL的AT89系列,东芝公司的TLCS-470系列,美国摩托罗拉公司的8位单片机主要有68HC05,68HC08,68HC11系列,16位单片机有68HC12,68HC16系列。
上述产品既有很多共性,又各具有一定的特色。
我国所用的单片机以MCS-51,MCS-48系列为主。
1.4实验板系统功能
该实验板将各种单元电路合理的拼凑在一块大印刷电路板上,构成一个有机的整体能够为相关的学生单片机实验提供支持。
本实验板可以做键盘实验,流水灯实验,温度采集实验,液晶显示及串口调试等实验。
1.5AT89C51在实验板中的应用
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4KB可反复擦写的只读程序存储器和128B的随机存取数据存储器。
因为AT89C51在整个实验板系统中处于核心地位,所以硬件电路设计中几乎所有元器件的选取都要依据AT89C51的性能参数来决定。
例如电源电路中基于AT89C51的工作电压为+5V,所以稳压芯片选择7805系列。
在软件设计中,AT89C51接收并处理键盘输入的信号,将其发给显示器件,实现液晶显示功能,或发给PC机实现串口通信功能。
另一方面,它也接收上位机发送的数据处理后传送给显示器件。
第2章实验板的硬件设计
外围电路是AT89C51工作的基础保障——电源电路提供稳定的+5V工作电压;时钟电路用于产生单片机工作所需要的时钟信号;复位电路是单片机实现初始化复位状态;键盘电路向系统输入运行参数,控制系统的运行状态。
通过键盘扫描等程序设计把键盘输入的数据在液晶显示器上显示或者把数据发送到PC机实现串行通信。
LCD电路用来显示键盘输入的数据。
上位机发送到AT89C51的数据其功能也是靠硬件电路的设计和软件程序结合来实现的。
串行通信电路也是为了单片机与上位机之间数据传递而设计的
单片机实验板是一个实际的应用系统,能够为一般的学生单片机实验提供支持。
此实验板能够实现简单的测试实验。
各个部分组成如下:
1单片机所需的平稳电压
2时钟电路
3复位电路
44X4的矩阵键盘
5液晶显示
6串行通信电路
7I/O口扩展电路
8DS18B20温度采集电路
9数码管动态扫描
9红外遥控接收及其解码
2.1单片机外围电路
图2-2单片机的外围电路
1)时钟电路
时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行过程中各信号之间的相互关系.在AT89C51内部带有时钟电路,因此只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡和电容),即可构成一个稳定的自激振荡器。
用晶振和电容构成谐振电路。
电容C1和C2容量在15~40PF之间,大小与晶振频率和工作电压有关。
AT89C51的时钟电路如图所示:
2)复位电路
复位是单片机的初始化操作,其主要功能是使单片机从0000H单元开始执行程序。
在AT89C51内部有复位电路,RST引脚是复位信号的输入端,复位方式有手动复位和自动复位两种。
图2-3晶振
AT89C51复位电路如图所示
图2-4AT89C51复位电路
3)电源电路
电源是整个实验板正常工作的动力源泉。
电源电压过大会大大缩短芯片的工作寿命,严重的会烧毁芯片或其他元件,过小将不能驱动整个实验板,因此设定合适的工作电压值非常重要。
此实验板工作电压设定为+5V。
接通电源后灯亮表示电源电路供电正常。
图2-5电源电路
2.24X4矩阵键盘电路
图2-64X4矩阵键盘电路
2.3液晶显示
小型液晶显示器具有体积小,功耗低,显示内容丰富等特点。
此实验板介绍LCD1602液晶显示模块。
LCD1602属于16X2型,采用标准的14引脚或16引脚。
RS为寄存器选择端,高电平时选择数据寄存器,低电平时选择指令寄存器。
R/W为读写线信号,高电平时进行读操作,低电平时进行写操作。
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
D0~D7为8位双向数据线。
图2-7LCD1602指令表
2.4串行通信线路
AT89C51中的串行接口能方便的与其他计算机或串行通信的外围设备实现双机,多机通信。
发送数据线TXD和接收数据线RXD均采用EIA电平。
但是单片机串行口采用正逻辑的TTL电平,这样就存在TTL电平和EIA电平之间的转换问题。
MAX232电平芯片实现电平转换,仅需外加四个0.1UF的电容,即可实现TTL电平和RS-232电平的互换。
RS-232串口的标准为:
正电平在+3~+15V,负电平在-3~-15V之间。
51单片机内部集成了两个同名同地址的串口缓存区SBUF,一个发送缓存区,一个接收缓存区。
其中RI为接收完成中断标志,TI为发送完成中断标志。
“波特率”是串行通信的一个重要概念。
所谓波特率,就是单位时间内传送的二进制的位数,单位是bit/s,51单片机的串行口有4种工作方式,可以根据需要选择相应的工作方式。
图2-8串行通信线路
2.5I/O口扩展电路
51单片机有4个8位的并行I/O口,分别记为P0,P1,P2,P3。
其中P0,P2,P3还有第二功能。
2.6数码管动态扫描
数码管可以显示带小数点的0~9十个数字。
数码管内部有八个LED。
共阳数码管使用时将COM端接高电平,各个LED的阴极a~g端接低电平时相应的笔段亮,小数点控制端dp接低电平时点亮小数点。
共阴数码管使用时将COM端接低电平。
数码管动态扫描显示是将所有数码管的8个笔段控制引脚并接在一起,连接到MCU的同一个I/O端口,由I/O口控制字段输出。
数码管动态扫描显示方式是利用了数码管具有余辉特性和人眼的视觉暂留效应,把8个数码管按照一定的顺序逐个点亮,显然这些字符是在不同时刻出现的,而且在同一时刻只有一位显示,但只要控制好每位数码管的时间间隔就会看到一个连续稳定的显示效果。
图2-9数码管动态扫描
图2-10数码管显示
2.7DS18B20
DS18B20主要包括:
寄生电源电路,64位ROM及单总线接口,高速暂存存储器RAM,温度传感器,存储温度报警上下限的E^2PROM报警触发器TH和TL,E^2PROM配置存储器,存储控制逻辑电路,8位CRC发生器。
DS18B20采用高级单总线协议,利用一个控制信号执行总线通信。
DS18B20的一个特点是可以在不需要外部电源供电的情况下工作。
红外遥控的接收端一般使用一体化红外线接收头进行红外信号的接收,它是一种集红外线接收,放大,滤波,解调,整形于一体的集成电路,不需要任何外接元件,就能完成从红外线接收到输出与TTL信号兼容电平的所有工作,常用的一款SM0038红外接收头,其对外只有三个引脚,分别是数据输出端OUT,接地端GND,电源端VCC,与单片机接口非常方便。
图2-11DS18B20外观
图2-12红外(HS0038)
第3章实验板的软件设计
软件总体设计
实验板的软件设计是在硬件电路板的基础上,通过程序来实现的,在仿真器上调试成功后,录入AT89C51中以便实验板调用。
此设计过程主要完成键盘扫描,液晶显示,数码管动态扫描,与上位机串行通信,DS18B20温度采集,红外解码,I/O口驱动,定时器及外中断的使用。
程序设计一般按以下步骤进行:
1分析问题
分析问题就是要熟悉和明确问题的要求,明确已知条件以及对运算与控制的要求,建立数学模型。
2确定算法
根据实际问题的要求和指令系统的特点,选择解决问题的方法。
算法是进行程序设计的依据。
3设计程序流程图
程序流程图是程序结构的一种图解表示法,它直观,清晰的体现了程序设计思想,是程序设计常用的一种工具。
4编写程序
根据流程图和指令系统编写程序。
编写程序时,力求简单明了,层次清晰。
5调试程序
程序编写好以后必须上机调试,然后用系统进行联调修改,直至预定要求。
以下是各模块的设计:
3.1键盘扫描
当键盘中数字键按下时,INT0引脚触发,CPU扫描P1口,接收并判断被按下是否为数字键。
下面是一矩阵键盘驱动程序,采用P1口获取键值。
按键抖动问题
按下或者松开的瞬间,由于机械触点存在弹跳现象,即存在抖动现象。
AT89C51CPU处理的速度是微秒级,而机械抖动的时间至少是毫秒级,所以这种现象必须消除。
此实验板采用软件延迟方式实现解决按键抖动问题。
*********驱动程序*******
Ucharscankey()
{uchartemp1,temp2;
KEY=0x0f;//赋按键初值
If(KEY!
=0x0f)delay(5);//按键去抖
If(KEY!
=0x0f)//有键按下则分别取出高4位和低4位,并合成键值
{temp1=KEY;
KEY=0xf0;
temp2=KEY;
while(KEY!
=0xf0);//等待按键释放
return(temp1|temp2);
}
}
矩阵键盘键号与键值对应表
键号
0
1
2
3
4
5
6
7
键值
0xee
0xde
0xbe
0x7e
0xed
0xdd
0xbd
0x7d
键号
8
9
A
B
C
D
E
F
键值
0xeb
0xdb
0xbb
0x7b
0xe7
0xd7
0xb7
0x77
3.2液晶显示
当有键按下时,显示器能够显示程序中事先编辑的数字,汉字,图形。
现在有很多现成的字模软件,利用其图片取模功能,调入要显示的BMP图片,选择好取模方式,即可生成需要的图片点阵数据。
注意:
图像尺寸必须是128X64,否则不能正确显示图片。
下面是LCD1602的C语言驱动程序。
/*****LCD1602初始化函数*****/
Voidini_LCD()
{write_com(0x38);/8位数据接口,2行显示,5X7点阵字符
write_com(0x01);/清DDRAM和AC值
write_com(0x06);/数据读写操作画面不动,AC自动加1
write_com(0x0c);/开显示,关光标和闪烁
}
/*****LCD1602忙检测*****/
Voidlcd_busy(void)
{
while(P0&0x80)/读取忙标志位BF,BF=1则一直等待
{
RS=0;/指令
RW=1;/读操作
EN=1;/使能控制
EN=0;
EN=1;
}
EN=0;
}
/*****向LCD1602写指令*****/
Voidwrite_com(ucharLCDzhiling)
{
Lcd_busy();/忙检测确保上一直令完成
RS=0;
RW=0;/写操作
P0=LCDzhiling;
EN=1;
delay
(1);
EN=0;
}
/*****向LCD1602写数据*****/
Voidwrite_dat(ucharLCDshuju)
{
Lcd_busy();/忙检测确保上一指令完成
RS=1;
RW=0;
P0=LCDshuju;
delay(10);/改变延时长短控制写入数据的节奏
EN=1;
delay
(1);
EN=0’
}
3.3数码管动态扫描
数码管可以显示带小数点的0~9十个数字。
数码管内部有八个LED。
共阳数码管使用时将COM端接高电平,各个LED的阴极a~g端接低电平时相应的笔段亮,小数点控制端dp接低电平时点亮小数点。
共阴数码管使用时将COM端接低电平。
数码管动态扫描显示是将所有数码管的8个笔段控制引脚并接在一起,连接到MCU的同一个I/O端口,由I/O口控制字段输出。
数码管动态扫描显示方式是利用了数码管具有余辉特性和人眼的视觉暂留效应,把8个数码管按照一定的顺序逐个点亮,显然这些字符是在不同时刻出现的,而且在同一时刻只有一位显示,但只要控制好每位数码管的时间间隔就会看到一个连续稳定的显示效果。
采用74HC573三态锁存器驱动段码,74HC138译码器驱动位选端。
例8个数码管同时依次显示01234567
图3-1数码管电路图
*********************************************************
#include”reg52.h”
#defineucharunsignedchar
Ucharcodetable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/共阴数码段码表
UcharcodeLED_W[8]={0,1,2,3,4,5,6,7};/位选控制
/*****T0初始化程序*****/
T0_ini()
{
TMOD=0X01;/设定T0的工作模式1
EA=1;/开总中断
TH0=0XF4;/装入初值,定时3ms
TL0=0X48;
ET0=1;/定时器0允许中断
TR0=1;/启动定时器0
}
display()Y
{N
UcharI;
P2=I;/位选通
P0=table[i];/送段码
If(++i>=8)i=0;
}Y
/*****主程序*****/
Voidmain()N
{
T0_ini();/初始化T0
While
(1);
}
/*****T0中断服务程序*****/
Voidtimer0()interrupt1
{TH0=0XF4;TL0=0X48;display();}/重装初值,定时3ms显示
3.4串行通信
串行通信是指通信双方的信息一位接一位的传送。
按传输方向,串行通信有单工,双半工,全双工三种形式。
51单片机有一个全双工的串行通信接口,能同时接收和发送数据,以异步方式进行数据传输。
51单片机内部集成了两个同名同地址的串口缓冲区SBUF,一个是发送缓冲区,一个是接收缓冲区,虽然二者名字上相同但物理上相互独立。
串口发送和接收事件发生时,由硬件标志来通知处理器,RI为接收完成中断标志,TI为发送完成中断标志,标志为“1”时表示事件发生。
“波特率”是串行通信中的一个重要概念。
所谓波特率,就是单位时间内传送的二进制数据的位数,单位是bit/s。
51单片机的串行口有4种工作方式。
图3-2串行通信电路图
串口发送数据
将数组table[6]={6,5,2,7,10,15}以2400bit/s的波特率从单片机串行口发送出去。
#include”reg52.h”
#defineucharunsignedchar
#defineuintunsignedint
Ucharcodetable[6]={6,5,2,7,10,15};/定义要发送的数据
Serial_ini()/串行口初始化子函数
{
TMOD=0x20;/TI,工作方式2
TH1=0XF4;/波特率2400bit/s
TL1=0XF4;
SCON=0X00;/串行口工作方式1,禁止接收
PCON=0x00;/SMOD为0
TR1=1;/启动定时器1,用于产生串口波特率
}
voidserial_send()/发送数据子函数
{
UcharI;
For(i=0;i<6;i++)
{
SBUF=table[i];/将要发送的数据发送缓冲区
While(TI==0);等待一帧数据发送完毕
TI=0;将发送中断标志位清零
}
}
main()/主函数图3-3串行通信工作原理
{
serial_ini();
serial_send();
while
(1);
}
串口接收一个字节,送P0口的LED显示
#include”reg52.h”
serial_ini()
{
TMOD=0X20;/T1工作于方式2,自动重装载模式
TH1=0XFD;/波特率9600bit/s
TL1=0XFD;
SCON=0X50;/串口工作于方式1,允许接收
PCON=0X00;/SMOD=0
TR1=1;/定时器1开始工作,用于产生串口波特率
}
serial_receieve()
{
while(RI==0);/RI为0则一直等待
RI=0;
P0=SBUF;
}
(main()
{
(serial_ini();
While
(1)
{serial_receieve();}
}
3.5DS18B20多路测温
DS18B20可以在MCU的控制下将温度转换成数字量,DS18B20单总线通信功能是分时完成的,有严格的时序要求,因此读写时序非常重要。
MCU要得到温度数据,必须按照单总线协议进行,协议的流程为:
初始化DS18B20→发送ROM操作命令→发送RAM操作命令→处理数据。
图3-4DS18B20多路测温
以下是驱动程序
********延时子程序********
voiddelay_ms(uchart)
{
uchari;
while(t--)
for(i=0;i<124;i++);
}
********延时函数*******
voiddelay(uchari)
{while(i--);}
*********初始DS18B20*************
voidinit_DS18B20(void)
{
ucharx=0;
DQ=1;
delay(8);
DQ=0;
delay(90);
DQ=1;
delay(5);
x=DQ;
delay(50);
}
******向DS18B20写入一个字节********
voidwritebyte(uchardat)
{
uchari;
for(i=8;i>0;i--)
{
DQ=0;拉低总线,开始写时隙
DQ=dat&0x01;写入数据
delay(8);延时等待到写时隙结束
dat>>=1;
DQ=1;总线回到空闲状态
}
}
*********读入一个字节*********
ucharreadbyte(void)
{
uchari,dat;
for(i=0;i<8;i++)
{
DQ=0;下降沿自动读时隙
dat>>=1;
DQ=1;将总线拉高以便接收数据
if(DQ)
dat|=0x80;
delay(8);读时序必须保持足够时间才能结束,最后自动回到高电平状态
}
return(dat);
}
**********读取温度*********
voidreadtemperature(void)
{uchari;
init_DS18B20();
writebyte(0x55);发送匹配ROM命令
for(i=0;i<8;i++)
{writebyte(DS18B20_1[i]);}发送DS18B20序列号
writebyte(0x44);启动温度转换
init_DS18B20();
writebyte(0x55);发送匹配ROM命令
for(i=0;i<8;i++)
{writebyte(DS18B20_1[i]);}发送18B20序列号
writebyte(0xbe);发送读取暂存命令
templ=readbyte();温度低
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 应用 毕业论文
![提示](https://static.bdocx.com/images/bang_tan.gif)