找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7486|回复: 0
收起左侧

基于STC89C52单片机系统的综合应用

[复制链接]
sss101 发表于 2019-6-26 21:58 | 显示全部楼层 |阅读模式
功能包括显示姓名 学号(工号) 红外遥控电机启动停止 播放音乐 测室内温度 串口传输数据等
第一章 绪论
1.1 单片机基础知识
1.2 单片机的应用领域              2
1.3 单片机的发展趋势              3
第二章 实验相关              4
2.1 实验目的              4
2.2 实验内容              4
2.3 程序流程图              5
2.4 实验功能汇总              5
第三章 实验功能的原理              6
3.1 液晶屏显示姓名、学号              6
3.2 液晶屏显示矩阵键盘键值              7
3.3 数码管显示矩阵键盘键值              8
3.4 液晶屏显示红外遥控器键值              9
3.5 遥控器控制电机开关              10
3.6 音乐播放器              10
3.7 单片机与计算机之间的串口通信              11
3.8 液晶屏显示DS18B20温度              12
第四章 使用说明              13
4.1启动              13
4.2 功能选择              13
4.3 返回              18
实验目的
  • 了解51单片机各个模块内部结构及特点;
  • 掌握软件设计的基本知识,学会使用Keil进行编程;
  • 通过编程设计完整程序来实现51单片机各项功能组合。
2.2 实验内容
  • 熟悉51单片机,并完成51单片机开发板的调试;
  • 运用Keil软件进行编程实现不同功能的组合:
(1)液晶屏显示姓名、学号;
(2)液晶屏显示矩阵键盘键值;
(3)数码管显示矩阵键盘键值;
(4)液晶屏显示红外遥控器键值;
(5)遥控器控制电机开关;
(6)蜂鸣器播放音乐;
(7)单片机与计算机之间串口通信;
(8)液晶屏显示DS18B20温度。
2.3 程序流程图

2.4 实验功能汇总
  •    基本要求:
  •    用液晶器显示自己的姓名、学号以及按键值;
  •    用数码管显示任意字符;
  •    利用遥控器显示按键值;
  •    发挥部分:
  •    利用遥控器控制风扇的开/关;
  •    利用蜂鸣器演奏一段音乐;
  •    单片机与PC机之间利用串口进行“聊天”;
  •    其它功能:
  •    用按键切换蜂鸣器演奏的音乐;
  •    用液晶屏显示ASCII码表;
  •    液晶屏显示DS18B20温度;
第三章 实验功能的原理3.1 液晶屏显示姓名、学号
  •    运用到的模块
a.LCD1602模块
图3.1.1  LCD1602模块
图3.1.2  操作时序

  •    液晶概述
液晶显示器(Liquid Crystal Display,LCD)的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。各种型号的液晶通常是按照显示字符的行数和液晶点阵的行、列数来命名的。比如:1602的意思是每行显示16个字符,一共可以显示两行。
液晶体积小、功耗低、显示操作简单,但它有个致命的弱点,其使用的温度范围很窄,因此在设计相应产品时,务必要考虑周全,选取合适的液晶。
  •    原理
LCDEN为使能端,RS为数据/命令选择口,RW为读/写选择口,D0—D9为数据线。先给使能端一个高电平使LCD1602进行工作,需要写入数据时,设置RS=1,RW=0;需要读数据时,设置RS=0,RW=1,通过数据线给1602输送数据,可以实现1602显示不同字符。
而液晶显示屏显示的字符已经存储在液晶屏内部存储器中,以ASCII码形式存放在相应地址单元中,可以通过编程选择相应的地址单元从而显示所需要的字符。也可以通过相关软件,如汉字取模软件等自行编辑字符。
3.2 液晶屏显示矩阵键盘键值
  •    运用到的模块
a.LCD1602模块
b.矩阵键盘模块
图3.2  矩阵键盘模块

  •    矩阵键盘
为了减少键盘与单片机接口时所占用I/O线的数目,在键数较多时,通常都将键盘排列成行列矩阵形式。每一水平线(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通。利用这种行列矩阵结构只需N条行线和M条列线,即可组成具有NM个按键的键盘。

  •    原理
扫描显示键值是通过行列反转法读入矩阵键值,然后返回给LCD1602屏显示。行列反转法工作原理如下:
如图,选择P3口与矩阵键盘的行线和列线相连,P30-P33接行线,P34-P37接列线。按键识别时,首先判断是否有键按下,并进行消抖确定键按下;首先将行作为输出,列作为输入,给P3口一个0FH信号,使行线输出全为0,从而读入列线值;再将行列进行反转,行作为输入,列作为输出,给一个F0H信号,将上一步读取到的列线输入值从列线输出,读取行线值,根据输出的列线值和读取到的行线值就可以确定按下键所在的位置,从而查表确定键值。然后将扫描所得的键值返回给key_value,从而在LCD1602的函数中进行调用。

3.3 数码管显示矩阵键盘键值
  •    运用到的模块
  • 数码管锁存器模块
  • 矩阵按键模块
  • 八位共阴极数码管
图3.3.1  数码管锁存器模块              图3.3.2  8位共阴极数码管
  •    原理
实习所用单片机开发板使用的是八位共阴极数码管,其内部为八个阴极相连的二极管,当给一个高电平时,二极管导通,从而二极管发光,数码管相应的段点亮。
数码管和数码管锁存器相连,打开锁存器时,数据可以流通,从而数码管可以显示相应的数值。通过编程进行位选,选择哪一位数码管点亮,在通过段选信号选择数码管哪一段点亮,数码管八段分别为a~g和dp,对应八位二进制码的低位到高位,通过扫描按键值,发送相应的十六进制数值,可以给数码管不同的段赋高电平和低电平,从而实现数码管显示按键数值。

数码管显示和按键值对应表:
按键值(十六进制形式)
数码管显示值
3FH
0
06H
1
5BH
2
4FH
3
66H
4
6DH
5
7DH
6
07H
7
7FH
8
6FH
9
77H
A
7CH
B
39H
C
5EH
D
79H
E
00H
熄灭/自定义
3.4 液晶屏显示红外遥控器键值
  •    运用到的模块
  • LCD1602模块
  • 红外接收模块

                              图3.4  红外接收模块
  •    原理
实现红外遥控需要信号的发送和接收,发送数据的一方将红外信号进行调制后发送给接收数据的一方,接收方收到调制后的信号后需要进行解调才能读取信息的内容。
遥控器内部电路将遥控器的按键信息进行编码、调制后,发送红外信号;红外接收头收到遥控器发送的信号后,通过1引脚给P32口输出信号,然后我们通过编写程序,对接收到的信号进行解码,读取原有信息。
通常为了使信号能更好的被传输,发送端将基带二进制信号调制为脉冲串信号,通过红外发射管发射。
遥控器使用的是NEC协议,NEC标准下的编码:引导码高电平约9000us左右,低电平约4500us左右;用户码16位,数据码16位,共32位;数据0是用“高电平约560us加上低电平约560us”表示;数据1可用“高电平约560us加低电平约1680us”表示。
3.5 遥控器控制电机开关
  •    运用到的模块
  • LCE1602模块
  • 红外接收模块
  • 电机驱动模块

          图3.5  电机驱动模块
  •    原理
电机驱动模块上有4个端口:1IN到4IN,分别控制电机的接入端口ABCD,将P10引脚与4IN引脚相连,电机(不区分正负端)接在驱动输出接口的“D”和“+”,然后通过P10引脚输出高低电平控制电机的转动与停止。
通过红外接收装置,对遥控器发送的信号进行接收,在通过变成解调,读取其中信息,然后通过P10输出。按“+”键,P10=1,电机转动;按“-”键,P10=0时,电机停止工作。
3.6 音乐播放器
  •    运用到的模块
  • LCE1602模块
  • 矩阵键盘
  • 蜂鸣器模块


             图3.6  蜂鸣器模块
  •    原理
音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂鸣器发音,要想产生音频脉冲信号,需要算出某音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用单片机定时器计时这个半周期的时间,每当计时到后就输出脉冲的I/O口反相,这样就在此I/O口上得到此脉冲的频率。
本实验中,蜂鸣器与P23相连,输入低电平时,蜂鸣器工作。使用定时器1,工作在方式1,改变计数初始值TH0和TL0来产生不同的频率。
首先定义音符数组和音调数组,再通过编写代码来确定歌曲的歌谱,三个数为一组,第一个数表示音符,数值表示定义音符数组的第几个十六进制数;第二个数表示音调,数值对应音调数组的相应值;第三个数表示延时时间(节拍)。然后通过P23口输出高低电平使蜂鸣器进行工作,播放已经编写好的音乐代码。
通过扫描按键值,进行歌曲间的切换。
3.7 单片机与计算机之间的串口通信
  •    运用到的模块
  • LCD1602模块
  • 串口通信模块

                 图3.7  串口通信模块
  •    原理
在串行通信中,数据是在两个站之间传送的。传送数据还需要一个中间媒介,将传输的文件段存储,即SBUF。SUBF分为两个寄存器,一个是发送缓冲寄存器SBUF,另一个是接收缓冲寄存器SBUF。如果CPU写SBUF,数据就会被送入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收缓冲器。即CPU对SBUF的读写,实际上是分别访问上述两个不同的寄存器。
串行控制寄存器SCON用于设置串行口的工作方式、监视串行口的工作状态、控制发送与接收的状态等。它是一个既可以字节寻址又可以位寻址的8位特殊功能寄存器。其中,SM0、SM1为串行口工作方式选择位,实习中我们选择工作方式1;REN为允许接受控制位,在进行串口通讯时设置REN=1;TI和RI分别为发送中断标志和接收中断标志。
在串行通信中,收发双方对发送或接收数据的速率要有约定。波特率表示每秒钟传输二进制代码的位数,单位是:位/秒(bps)。本实验中设置波特率为9600bps。
本实验进行串口通信时,设置定时器T1工作在模式2,打开串行口中断,当中断触发,检测到接受完成,即RI=1时,读取接收缓存器的数值,然后通过对此数值进行处理,在液晶显示屏上显示相应的字符,从而实现串口通信。
3.8 液晶屏显示DS18B20温度
  •    运用到的模块
  • LCD1602模块
  • DS18B20温度传感器接口

                               图3.8  温度传感器接口
  •    原理
DS18B20具有如下特点:通信采用1-Wire接口,有唯一的64位序列码储存在板载ROM中,可测量的温度范围在-55℃ ~ +125℃,温度计分辨率可设置为9~12位,12位时分辨率对应为0.0625℃。
单总线访问DS18B20时,首先初始化,再执行ROM操作指令,再执行功能指令,对温度进行转换和读取暂存器内容,再通过函数在LCD1602显示屏上进行显示。
第四章 使用说明4.1启动
首先将单片机通过数据线与电脑相连,按下电源开关,电源指示灯亮,同时LED1亮,单片机正常启动。LCD1602液晶显示屏第一行显示“MENU”,第二行显示“AnJ:0→7;Retn:15”。效果:
图4.1  菜单页面
4.2功能选择
(1)液晶屏显示姓名、学号:
按矩阵键盘的键S6(KEY0),进入功能1,LCD1602液晶显示屏第一行显示姓名“name:Zhong Ye”,第二行显示学号“num:20161001271”。
按S21(KEY15)返回主菜单界面。效果:
图4.2.1  液晶屏显示姓名学号效果图
  • 液晶屏显示矩阵键盘键值;
按矩阵键盘的键S7(KEY1),进入功能2,此时LCD1602液晶显示屏第一行显示“Anjianzhi:    9”。按矩阵键盘S6—S20,液晶屏第一行的数值将从0变化至14。
按S21(KEY15)返回主菜单界面。效果:
图4.2.2  液晶屏显示按键值效果图
  • 数码管显示矩阵键盘键值;
按矩阵键盘的键S8(KEY2),进入功能3,此时LCD1602液晶显示屏第一行显示“Shumaguan Anjian”,数码管左边第一位显示,按矩阵键盘S6—S15,数码管第一位从0变换至9,按S16—S20,数码管第一位从a显示至e,此时数码管显示的实际上是十六进制的0到15。
按S21(KEY15)返回主菜单界面。效果:
图4.2.3  8位共阴极数码管显示按键值效果图
  • 液晶屏显示红外遥控器键值;
按矩阵键盘的键S9(KEY3),进入功能4,此时LCD1602液晶显示屏第一行显示“HW_Anjianzhi:”,使用遥控器对准红外接收装置,按按键值0-9,液晶显示屏第一行末尾将显示相应的数值。
按S21(KEY15)返回主菜单界面。效果:
图4.2.4 液晶屏显示红外遥控器按键值
  • 遥控器控制电机开关;
将电机的两个接口与左下角电机驱动模块的“+”、“D”相连,无线序要求。用一根杜邦线将单片机P10引脚与电机驱动模块“4IN”相连。
按矩阵键盘的键S10(KEY4),进入功能5,此时LCD1602液晶显示屏第一行显示“Dianjikongzhi:”,第二行显示“Zhuangtai:”。使用遥控器,按遥控器“+”键,液晶屏第二行显示状态“ ON”,电机转动;按遥控器“-”键,液晶屏第二行显示状态“OFF”,电机停止工作。
按S21(KEY15)返回主菜单界面。效果:
图4.2.5  电机转动效果图
图4.2.6  电机停止效果图

  • 音乐播放器;
按矩阵键盘的键S11(KEY5),进入功能6,此时LCD1602液晶显示屏第一行显示“MUSIC:”,蜂鸣器工作,播放编写好的歌曲。
按键S19和键S20进行歌曲之间的切换。
按S21(KEY15)返回主菜单界面。效果:
图4.2.7  音乐播放器液晶屏效果图
  • 单片机与计算机之间串口通信(用液晶屏显示ASCII码表);
打开烧录软件,点击右上角模块的“串口助手”,选择串口为单片机驱动端口,调节波特率为9600,点击下方“打开串口”按钮,按矩阵键盘的键S12(KEY6),进入串口通信功能,此时LCD1602液晶显示屏第一行显示“Chuankou:”,液晶显示屏第二行显示“C:  H:   Num: ”,分别表示接受到的文本模式、HEX模式、接收到的数据总数。
在“串口助手”的发送缓冲区输入一个数据(数字或字母),选择文本模式,点击下方“发送数据”,接收缓冲区方框内将显示相应模式下的数值,同时液晶显示屏第二行分别显示发送数据的文本形式、HEX形式和接收到的数据总数。
按S21(KEY15)返回主菜单界面。
效果:比如显示#。如表,#对应的ASCII值为35(十进制),这里将它转换成23(十六进制),


图4.2.8  液晶屏显示ASCII码表效果图
  • 液晶屏显示DS18B20温度。
将DS18B20原件插到单片机预留的位置,注意丝印面向外。
按矩阵键盘的键S13(KEY7),进入温度计功能,此时LCD1602液晶显示屏第一行显示“Dangqianwendu:”,液晶显示屏第二行显示当前温度值。由于当前温度会有微小的改变,会发现显示的温度值在不停地跳变。
按S21(KEY15)返回主菜单界面。效果:




图4.2.9  液晶屏显示DS18B20温度效果图
4.3返回
按矩阵键盘最后一个键S21(KEY15),系统将返回主菜单,LCD1602显示菜单界面。需注意,每次进行功能选择后,不能直接按KEY0—KEY7进行功能切换,必须按键返回主菜单才可继续进行其他功能的选择。

以上内容Word格式文档51黑下载地址:
基于STC89C52单片机系统的综合应用.docx (1.21 MB, 下载次数: 27)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表