微机原理课程设计创新题报告蓝牙_第1页
微机原理课程设计创新题报告蓝牙_第2页
微机原理课程设计创新题报告蓝牙_第3页
微机原理课程设计创新题报告蓝牙_第4页
微机原理课程设计创新题报告蓝牙_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理设计报告创新型实验设计报告题目基于蓝牙通信的无线控制系统学院自动化学院专业电气工程及其自动化成员陈旭3012203270吴海成3012203292指导教师刘迎澍摘要随着现代互联网技术的发展,物联网和智能家居概念开始逐步发展。智能家居是以住宅为平台,利用综合布线技术、网络通信技术、自动控制等技术将生活有关的设施集成,构建高效的住宅设施与家庭日程管理系统,提升家居安全性、便利性,并能实现环保节能的居住环境。蓝牙技术是一种尖端的开放式无限通讯标准,蓝牙无线技术使用全球通用的频带(2.4GHz)蓝牙成本低,体积小,比802.11协议更具有移动性,并且一般的手持平台(手机,PC机,Pad)均具有

2、蓝牙功能。本系统是典型的蓝牙无线通信控制系统,包括手持设备指令的发送、处理系统的接收、处理、和功能的具现化。本文基于市场常见的蓝牙通讯模块(HC-06)和8086微机实验平台结合,利用现有的资源实现简单的基于蓝牙通信的无线控制系统的搭建。关键词:蓝牙;8086微机平台;串口通信目录第一章绪论1.1 课程介绍1.2 题目简介第12二章硬件结构2.1 硬件组成2.2 芯片简介8255芯片2.2.2 8253芯片2.2.3 8251芯片2.2.4 12864液晶显示模块2.3蓝牙接收模块第三章软件结构3.1 程序子模块组成3.1.1 概况3.1.2 模块组成3.2 程序运行详细流程主程序流程图中断子

3、程序流程图3.2.3 3.2.4 3.2.5 3.2.6 第四章实验总结4.1 实验现象4.2 实验感想4.3 实验分工附录程序清单第一章绪论1.1 课程介绍微型计算机原理及接口技术是电气工程及其自动化专业的重要基础课程,具有很强的实践性。天津大学在开展微机实践教学改革的过程中开辟了学生创新型题目,这类题目在教材知识的基础上,要求学生综合运用多学科知识,结合自学,通过团队合作来共同完成,以提升同学们的自学能力、团队精神、创新意识和动手能力,为把学生培养为卓越工程师打下良好基础。1.2 题目简介本题目是设计一个基于蓝牙通信的手机对PC机的控制系统,通过将手机发送的信息编码,在PC机的程序中解码,

4、可以实现手机发送指令,PC机执行相应功能的目的。我们利用微机开发试验箱共设计了四种功能:数码管显示输入数字、电机运动与停止、LCD屏显示英文与数字、LCD屏显示汉字报文。运行程序后,通过输入命令字可进入相应的功能中,然后根据功能可输入数字、英文、汉字的编码,即可实现相应的显示或动作。本题目的设计特色主要用两点。一、通过手机终端的智能控制是家居智能化的一个方向,目的是通过手机等终端发送指令,实现对电器设备的控制。本题目实现了手机控制PC机做出响应动作,而蓝牙的有效范围为10米,因此可以实现对一个房间内电器的控制,并且可以随时连接。二、蓝牙信号的接收。由于实验箱没有可接收蓝牙信号装置,因此我们接入

5、了一个蓝牙接收模块,并设计了模块底板,将信号以串行信号发出,再通过实验箱上的串口芯片接收,自己设计相应的通信协议和传输速率。第二章硬件结构2.1 硬件组成本课题的硬件由PC机、微型计算机实验系统、蓝牙接收模块构成。控制信号输入部分由手机通过蓝牙发出信号,蓝牙接收模块接收,并通过8251芯片将串行信号转换成并行数据传给PC机。被控部分由实验箱上的LCD屏,数码管,直流电手机蓝牙微机实验系统PC机图2-1 硬件组成原理示意图图2-2 实物连接图2.2 芯片简介 8255芯片一、简介:8255是可编程并行1/0接口芯片,有3个8位并行1/0口.具有3个通道3种工作方式的可编程并行接口芯片(40引脚)

6、。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口 A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而 8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。二、与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根DOD7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C 口及控制寄存器,故地址线为两根A0A1。此外CPU要对8255进行读、写与

7、片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下:(1)数据总线DB:编号为DOD7,用于8255与CPU传送8位数据。(2)地址总线AB:编号为A0A1,用于选择A、B、C口与控制寄存器。(3)控制总线CB:片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作对,必須先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。三、与外设接口部分根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则 8255可同时控制24路开关。各通道的

8、引脚编号如下:(1)A口:编号为PA0PA7,用于8255向外设输入输出8位并行数据。(2)B口:编号为PB0PB7,用于8255向外设输入输出8位并行数据。(3)C口:编号为PC0PC7,用于8255向外设输入输出8位并行数据。当8255工作于应答I/O方式时,C 口用于应答信号的通信。四、控制器8255将3个通道分为两组。即PA0PA7与PC4PC7组成A组,PB0PB7与PC0PC3组成B组.如图7. 5所示,相应的控制器也分为A组控制器和B组控制器,各组控制的作用如下:A组控制器:控制A口与上C口的输入与输出。B组控制器:控制B口与上C口的输入与输出。五、8255A的引脚功能说明825

9、5A采用40引脚的双列直插式封装。40个引脚分为与外设连接的引脚和与CPU连接引脚。(1)与外设连接的引脚8255A与外设连接的引脚共有:PA7PA0A端口数据线,双向三态。PB7PB0B端口数据线,双向三态。PC7PC0C端口数据线,双向三态。PB7PB0和PC7PC0引脚能驱动达林顿复合晶体管(在5V时输出1mA),所以B、C端口一般作为输出端口。(2)与CPU连接的引脚8255A与CPU连接的引脚,有8根数据引脚D7D0。它们全部是双向、三态引脚,用来与数据总线相连接;另外,它还有6根输入控制引脚,用来接收CPU送来的地址和控制信号。这些引脚分别是:RESET输入复位信号,高电平有效。当

10、RESET有效时,把8255A内部所有寄存器(包括控制寄存器)全部清零,端口A、B、C自动设置为输入状态,三个端口的数据线处于髙阻状态。一旦复位后,若使8255A重新工作必须进行初始化编程。CS片选信号输入端,低电平有效。当CS =0为低电平时,8255A才被选中,才能对 8255A进行读写操作。RD读命令信号,输入低电平有效。当RD =0为低电乎时CPU对8255A进行读操作,读出或状态。WR写命令信号,输入,低电平有效。WR=0为低电平时,CPU对8255A进行写操作,把数据或控制字写入8255A。A1A0端口选择信号,输入。A1A0的编码输入选择端口。8255A有四个端口地址,分别为A端

11、口、B端口、C端口和控制寄存器。选择方法见表8.5。表8.5 8255A端口寻址及基本操作向8255A输出一写操作CSRDWRA1A0操作功能01000选择A端口,对A端口写操作01001选择B端口,对B端口写操作01010选择C端口,对C端口写操作01011对控制寄存器写入控制字向8255A输出一读操作CSRDWRA1A0操作功能00100选择A端口,对A端口读操作00101选择B端口,对B端口读操作00110选择C端口,对C端口读操作00111非法操作,数据线处于高阻状态1XXXX未选中,数据线处于高阻状态2.2.2 8253芯片一、简介8253内部有三个计数器,分别称为计数器0、计数器1

12、和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。二、工作原理8253具有3个独立的计数通道,采

13、用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。1.数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。图2-3 8253内部原理图2.读/写控制读/写控制分别连接系统的IOR和IOW,由CPU控制着访问8253的内部通道。接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器

14、。A1A0:端口选择信号,由CPU输入。8253内部有3个独立的通道,加上控制字寄存器,构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。这4个端口地址由最低2位地址码A1和A0来选择。如表所示。(1) CS片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。(2) RD、WR读/写控制命令,由CPU输入,低电平有效。RD有效时,CPU读取由A1A0所选定的通道内计数器的内容。WR有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。CPU对8253的读/写操作。3.计数通道02每个计数通道内含1个16位的初

15、值寄存器、减1计数器和1个16位的(输出)锁存器。8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。采用二进制计数时,写入的初值范围为0000H0FFFFH,最大计数值是0000H,代表65536。采用BCD码计数时,写入的初值范围为00009999,最大计数值是0000,代表10000。与此计数器相对应,每个通道内设有一个16位计数值锁存器。必要时可用来锁存计数值。当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”,OU

16、T端将有输出,表示计数次数到。当某个通道用作定时器时,由CLK输入一定频率的时钟脉冲,根据要求定时的时间长短确定所需的计数值。计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:定时系数=需要定时的时间/时钟脉冲周期设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;计数/定时:向通道写入计数值,启动计数操作;读取当前的计数值:向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。计数到:当计数器减1为0时,通过引脚OUT向外输出“到”的脉冲信号。计数初值输入存放在初值寄存器中,计数开始或

17、重装入时被复制到计数器中。4.方式选择控制字8253的初始化编程就是对其工作方式的确定。具体实现就是在8253上电后,由CPU向8253的控制寄存器写入一个控制字,就可以规定8253的工作方式、计数值的长度以及计数所用的数制等,另外根据要求将计数值写入8253的相应通道。8253的一个方式控制字只决定一个技术通道的工作模式。三、8253的通道工作方式8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。8253的各种工作方式如下:1.方式0:计数结束则中断工作方式0被称为计数结束中断方式。当任一通道被定义为工作方式0时, OUT输出为低电平;若门控信号GATE为高

18、电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUT仍保持低电平,然后计数器开始减“1”计数,直到计数值为“0”,此刻OUT将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUT端输出的高电平一直维持到下次再写入计数值为止。在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。当GATE=1时,允许减“1”计数;GATE=0时,禁止减“1”计数;计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。显然,利用工作方式0既可完成计数功能,也可完成定时功能。当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从

19、CLK端输入,由它对计数器进行减“1”计数,直到计数值为0,此刻OUT输出正跳变,表示计数次数到。当用作定时器时,应把根据要求定时的时间和CLK的周期计算出定时系数,预置到计数器中。从CLK,输入的应是一定频率的时钟脉冲,由它对计数器进行减“1”计数,定时时间从写入计数值开始,到计数值计到“0”为止,这时OUT输出正跳变,表示定时时间到。有一点需要说明,任一通道工作在方式0情况下,计数器初值一次有效,经过一次计数或定时后如果需要继续完成计数或定时功能,必须重新写入计数器的初值。2.方式1:单脉冲发生器工作方式1被称作可编程单脉冲发生器。进入这种工作方式, CPU装入计数值n后OUT输出高电平,

20、不管此时的GATE输入是高电平还是低电平,都不开始减“1”计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。与此同时,OUT输出由高电平向低电平跳变,形成了输出单脉冲的前沿,待计数值计到“0”, OUT输出由低电平向高电平跳变,形成输出单脉冲的后沿,因此,由方式l所能输出单脉冲的宽度为CLK周期的n倍。如果在减“1”计数过程中, GATE由高电平跳变为低电乎,这并不影响计数过程,仍继续计数;但若重新遇到GATE的上升沿,则从初值开始重新计数,其效果会使输出的单脉冲加宽,如教材图9-22(b)中的第2个单脉冲。这种工作方式下,计数值也是一次有效,每输入一次计数值,只产

21、生一个负极性单脉冲。3.方式2:速率波发生器工作方式2被称作速率波发生器。进入这种工作方式, OUT输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUT保持为高电平不变;待计数值减到“1”和“0”之间, OUT将输出宽度为一个CLK周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUT将输出一定频率的负脉冲序列,其脉冲宽度固定为一个CLK周期,重复周期为CLK周期的n倍。如果在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。这样会改变输出脉冲的速率。如果在操作过程中要求改变输出脉冲的速率

22、,CPU可在任何时候,重新写人新的计数值,它不会影响正在进行的减“1”计数过程,而是从下一个计数操作用期开始按新的计数值改变输出脉冲的速率。4.方式3:方波发生器工作方式3被称作方波发生器。任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波。进入工作方式3,OUT输出低电平,装入计数值后,OUT立即跳变为高电平。如果当GATE为高电平,则立即开始减“1”计数,OUT保持为高电平,若n为偶数,则当计数值减到n/2时,OUT跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。这时OUT端输出的周期为nCLK周期,占空比为1:1的方波序

23、列;若n为奇数,则OUT端输出周期为nCLK周期,占空比为(n+1)/2)/(n-1)/2)的近似方波序列。如果在操作过程中, GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,重新从初值n开始减“1”计数。如果要求改变输出方波的速率,则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。5.方式4:软件触发方式计数工作方式4被称作软件触发方式。进入工作方式4,OUT输出高电平。装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUT输出宽度为一个CLK周期的负脉冲。由软件装入的计数值只有一次有效,如果要继

24、续操作,必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。显然,利用这种工作方式可以完成定时功能,定时时间从装入计数值n开始,则OUT输出负脉冲(表示定时时间到),其定时时间=nCLK周期。这种工作方式也可完成计数功能,它要求计数的事件以脉冲的方式从CLK输入,将计数次数作为计数初值装入后,由CLK端输入的计数脉冲进行减“1”计数,直到计数值为“0”,由OUT端输出负脉冲(表示计数次数到)。当然也可利用OUT向CPU发出中断请求。因此工作方式4与工作方式0很相似,只是方式0在OUT端输出正阶跃信号、方式4在OUT

25、端输出负脉冲信号。2.2.3 8251芯片一、8251A的内部结构图2-4 8251引脚图二、8251A的工作过程(1)8251A发送数据的过程当发送缓冲器为空时,信号TXRDY有效(或状态字的D0=1),以示发送器准备好,等待CPU送入数据。CPU将要发送的数据写入8251A的发送缓冲器;发送的数据进行“并串”转换;插入起始位、奇/偶位和停止位或同步字符等,数据一位一位从TXD端串行输出。(2)8251A接收数据的过程在RXD端检测到起始位或同步字符;开始在RXD线上采集数据;将接收到的数据“串并”转换,并进行奇偶校验和检查错误;将采样到的、经过变换的8位数据由接收缓冲器送入数据总线缓冲器;

26、信号RXRDY有效(或状态字的D1=1),以示8251A已接收到一个数据,待CPU读取。三、8251A的初始化在如前面已经强调过的,在使用可编程接口之前必须进行初始化,即在使用8251A进行数据传输前,对其进行编程,将相关方式指令字、命令指令字写入8251A。8251A初始化的具体步骤如图所示。图2-5 初始化流程图四、8251A的控制字和状态字关于8251A的方式指令字、命令指令字和状态字,应着重对字中各位符号0、1含义的理解,掌握这些字的应用。(1)方式指令字(控制字)格式方式指令字的格式如图1-4所示:注方式指令字的B2B1=00,此时8251A工作于同步方式,而字中S2S1的设置不起作

27、用。图2-6 251A方式指令字格式(2)命令指令字(控制字)格式命令指令字的格式如图1-5所示:图2-78251A方式指令字格式(3)状态字8251A的状态字格式如图1-6所示:(i)状态位RXRDY、TXE、SYNDET和8251A的引脚信号RXRDY、TXE、SYNDET定义相同,电平一致;(ii)状态位TXRDY与8251A的引脚信号TXRDY定义相同,但条件不一样。当发送缓冲器为空时,状态位TXRDY=1;而引脚信号TXRDY为高电平的条件是状态位TXRDY=1、命令控制字TXEN=1,且输入低电平。(iii)采用查询方式利用8251A传送数据时,可通过对状态位RXRDY或TXRDY

28、的测试来进行数据的传送。图2-88251A的状态字格式 12864字符型液晶屏一、管脚详解管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H

29、/L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。二、控制器接口信号说明(1)RS,R/W的配合选择决定控制界面的4种模式:RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HL

30、MPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据(2)E信号E状态执行动作结果高低I/O缓冲DR配合/W进行写数据或指令高DRI/O缓冲配合R进行读数据或指令低/低高无动作 忙标志:BF BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据. 利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态. 字型产生ROM(CGROM)字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY ON),DDR

31、AM 的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。显示数据RAM(DDRAM)模块内部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H7F

32、H的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140D75F),GB(A1A0-F7FFH)。 字型产生RAM(CGRAM)字型产生RAM提供图象定义(造字)功能, 可以提供四组1616点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。 地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时

33、而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。光标/闪烁控制电路此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。3、指令说明模块控制芯片提供两套控制命令,基本指令和扩充指令如下:指令表1:(RE=0:基本指令)指 令 码功 能令RSR/WD7D6D5D4D3D2D1D0 清除显示0000000001将DDRAM填满20H,并且设定DDRAM的地址计数器(AC)到00H地址归位000000001X设定DDRAM的地址计数器(AC)到00H,并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容/home设定显示状态开/关0000001DC

34、BD=1: 整体显示 ONC=1: 游标ON B=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位I/D=1;AC自增,若光标显示允许,则光标自动右移1位I/D=0;AC自减,SH=1;移动显示打开,若I/D=1;整屏左移一位,0右移一位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容功能设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM

35、地址设定DDRAM地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到内部的RAM (DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11数据从内部RAM读取数据D7D0(DDRAM/CGRAM/IRAM/GRAM)指令表2:(RE=1:扩充指令)指令指 令 码功 能RSR/WD7D6D5D4D3D2D1D0 待命模式00000000

36、01进入待命模式,执行其他指令都棵终止待命模式卷动地址开关开启000000001SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM和CGRAM地址 反白 选择00000001R1R0选择2行中的任一行作反白显示,并可决定反白与否。初始值R1R000,第一次设定为反白显示,再次设定变回正常 睡眠 模式0000001SLXXSL=0:进入睡眠模式SL=1:脱离睡眠模式 扩充 功能 设定00001CLXREG0CL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作G=1/0:绘图开关设定绘图RAM地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC

37、0AC0设定绘图RAM先设定垂直(列)地址AC6AC5AC0再设定水平(行)地址AC3AC2AC1AC0将以上16位地址连续写入即可备注;当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。2.2 蓝牙收发模块2.2.1 概述BLK-MD-BC04-B蓝牙模块是深圳市博陆科电子科技有限公司专为智能无线数据传输而打造,采用英国 CSR 公司 BlueCore4-Ext 芯片,遵循V2.1+EDR蓝牙规范。本模块支持

38、UART,USB,SPI,PCM,SPDIF 等接口,并支持SPP蓝牙串口协议,具有成本低、体积小、功耗低、收发灵敏性高等优点,只需配备少许的外围元件就能实现其强大功能。2.2.2 特点蓝牙 V2.1+EDR 蓝牙 Class 2内置 PCB 射频天线内置 8Mbit Flash 支持 SPI 编程接口支持 UART,USB,SPI,PCM 等接口3.3V 电源通过 REACH、ROHS 认证2.2.3 应用领域该模块主要用于短距离的数据无线传输领域。可以方便的和 PC 机的蓝牙设备相连,也可以两个模块之间的数据互通。避免繁琐的线缆连接,能直接替代串口线。蓝牙无线数据传输;工业遥控、遥测; P

39、OS系统,无线键盘、鼠标;交通,井下定位、报警;自动化数据采集系统;无线数据传输;银行系统;无线数据采集;楼宇自动化、安防、机房设备无线监控、门禁系统;智能家居、工业控制;汽车检测设备;电视台的互动节目表决设备;政府路灯节能设备无线 LED 显示屏系统2.2.4 功能框图图2-8 蓝牙模块功能框图2.2.5 应用电路图图2-9 应用电路图2.2.6 主从设置及其他配置状态指示 LED:PIO(1)用于指示蓝牙模块所处状态,LED 灯闪烁方式与蓝牙模块状态对应见下表:模式LED 显示模块状态从模式均匀快速闪烁(200ms-on,200ms-off)等待配对长亮建立连接第三章软件结构3.1 程序子

40、模块组成3.1.1 设计思路1、基本功能通过输入命令字可进入相应的功能中:= 1 * GB2、数码管显示输入数字= 2 * GB2、电机运动与停止= 3 * GB2、LCD屏显示英文与数字= 4 * GB2、LCD屏显示汉字报文。在各个功能可输入数字、英文、汉字的编码,即可实现相应的显示或动作。2、设计过程在本创新课程设计中根据复杂程序设计思想模块化程序设计,首先分析和确定程序设计的总体目标;然后将总体目标划分为若干模块,具体的对每个功舵的实现进行设计。裎序设计的思路按以下顺序进行:分析与确定程序总体设计目标.蓝牙接收部分的选择.蓝牙接收电路的设计、焊接与调试.定义毎个模块的具体任务编写源程序

41、并进行调试。程序调试过程中现将各个模块进行调试,然后和进行整体调试。完成实舱报告。程序模块组成主程序主程序首先是对各个芯片及外设的初始化,然后根据串口中断中收到的数据判断命令字,根据命令字进入相应的程序块中执行相应动作。主程序实际是一个死循环,当进入主程序后判断命令字,只有输入正确命令字才进入相应的程序块中。再程序块中执行相应功能时,如果再有命令字输入就会再次跳到命令字判断程序。显示实现子程序对LCD的操作主要有两个方面:(1)在使用之前要先对其进行初始化。这次实验均是对各文字显示,因此只涉及对基本显示的命令设置,包括开显示和游标复位。在写入命令字时根据操作要求将对应控制为置位、复位。(2)写

42、显示操作。在对LCD初始化之后,就能写要显示的数据了,数据是通过串口接收到的。写入数据时先使能液晶屏,再将D/I位置位表示写入为数据,然后将读写位复位,字符型数据可直接写入数据口,在写入汉字时要将数据第八位写1,并连续写入两个数据才能显示出一个汉字。串口复位及初始化子程序串口复位及初始化主要是根据8251芯片工作方式控制字及命令控制字对8251写入控制字。由于初始化编程必须在系统复位以后,因此需要首先进行复位操作。8251的复位操作是将8251的命令控制字响应位写1实现的。系统复位后,就可以对8251进行工作方式的设置,通过写入工作方式控制字,将工作方式设置为1停止位、无校验位、波特率因子为1

43、6,最后使能串口发送和接收即可完成初始化编程。串口接收子程序在串口接收程序中,首先重新写入控制字,允许接收,以使波特率误差校正。然后不断的读状态控制寄存器,检测是否接收完成。接收完成后即可读出数据寄存器中的数据,并在PC机屏幕显示R以表示接收完成。各功能程序块1、数码管显示数码管显示比较容易,就是将接收到的字符码转换为十进制数,然后查找数码管码表得到编码,进行显示即可。如果接收到新的命令字,返回程序命令判断部分。2、电机动作当接收到电机动作指令时,进入电机动作程序块,将电机控制端置位,电机即可运转。在此期间对于非命令字,不予理睬,如果接收到新的命令字,返回程序命令判断部分。3、LCD屏显示英文

44、及数字这个是利用了LCD屏最基本的显示字符功能,通过手机控制端发送英文及数字,蓝牙协议将转化为编码形式发出,PC机接收到编码后,写入LCD翻译显示即可实现在LCD上显示英文及数字的功能。4、LCD屏显示报文ASCII码表只是对字符的编码,对于汉字并没有编码,因此就要根据汉字码表进行翻译显示。在接收到数据后要对数据进行简单处理,首先将接收数据第八位写1,变成汉字表,然后要将两个连续接收的数据依次写入LCD屏才能实现汉字显示。通过此功能可实现显示短信、报文翻译显示的功能。3.2 程序运行流程图主程序流程图开始初始化8253,设置CNT0初值为0DH初始化8255,IO口设置为输出初始化LCD,功能

45、设定,开显示存储原中断向量,填写中断向量表开放中断请求,打开中断调用8251初始化子程序,初始化8251是DATA_R是否等于2跳转至数码管显示程序块否0是DATA_R是否等于3跳转至电机动作程序块是否0跳转至LCD显示英文、数字程序块DATA_R是否等于4否0是DATA_R是否等于5跳转至LCD显示报文程序块否0等待中断中断子程序流程图开始关中断调用串口数据读入函数,将接收的数据存入DATA_R变量SW写入8发出中断结束指令结束开中断复位8251子程序流程图开始向8251控制寄存器写入数据并延时保护现场向8251数据寄存器写入数据并延时写入控制命令字,内部复位恢复现场结束初始化8251子程序

46、流程图开始调用8251复位子程序并延时保护现场写入工作方式字,1停止位,无校验,波特率因子为16延时写入控制命令字,允许发送接收延时恢复现场结束串口发送子程序流程图开始检测TXRED位,等待发送缓冲器空,写入待发送数据允许发送RTS输出低电平,复位出错检验位允许发送检测TXE位,等待发送完毕延时结束串口接收数据子程序流程图开始允许发送读入状态字,检测RXRED位,等待接收就绪读入数据将数据存入变量DATA_R中在PC屏幕显示数据,并显示R表示接收正确结束LCD控制位相关子程序流程图LCD液晶屏EN位置位子程序开始保护现场将8255的PC2口置位恢复现场结束3.2.5.2 LCD液晶屏EN位复位

47、子程序开始保护现场将8255的PC2口复位恢复现场结束 LCD液晶屏RW位置位子程序开始保护现场将8255的PC1口置位恢复现场结束3.2.5.2 LCD液晶屏RW位复位子程序开始结束恢复现场将8255的PC1口复位保护现场 LCD液晶屏DI位置位子程序开始结束恢复现场将8255的PC0口置位保护现场3.2.5.2 LCD液晶屏DI位复位子程序开始保护现场将8255的PC0口复位恢复现场结束LCD屏显示子程序流程图开始保护现场调用EN置位子程序,使能LCD调用DI置位子程序,写入数据调用RW复位子程序,对LCD写操作通过8255的PA口,输出数据调用EN复位子程序,复位EN位结束恢复现场数码管

48、显示程序块流程图开始等待中断接收串口数据是DATA_R是否小于0AH返回命令判断程序否0DATA_R减30H,得到字符对应的十进制数0BX指向数码管编码首地址这个数字是否大于0FH否是将H的编码存入AL查表得到编码显示显示电机动作程序块流程图开始8255电机控制口输出置位等待中断接收串口数据0是DATA_R是否小于0AH8255电机控制口输出复位否返回命令判断程序0LCD显示英文、数字程序块流程图开始等待中断接收串口数据是DATA_R是否小于0AH清屏,游标复位否0返回命令判断程序否这个数字是否等于0FH是将数据写入LCD清屏,游标复位数码管显示报文程序块流程图清屏,游标复位将数据写入LCD这

49、个数字是否等于0FH0DATA_R是否小于0AH清屏,游标复位等待中断接收串口数据开始是返回命令判断程序第四章实验总结4.1 实验现象1开始实验打开手机蓝牙,与串口蓝牙芯片连接,准备通信。2通过手机蓝牙向串口发送控制指令,选择功能菜单。3进入功能菜单选择功能,控制电机/数码管/LCD屏显示。4在功能中选择控制菜单退出功能,(电机停转/数码管清零/LCD清屏)5电机的转动控制6数码管显示数据,超限报警。7LCD附带功能,显示蓝牙串口通信内容与清屏。4.2 实验感想能够完成这个实验,首先需要感谢大家的精诚合作和不懈的努力,以及刘老师提供的资料和支持。本实验是独立依靠自己所学的知识,查找资料,最后通

50、过反复实验和调试完成的独立开发设计。在实验的过程中,既得到了知识经验方面的积累,又对个人的长期发展和性格形成上起到了积极的作用,所以总的来说,这是一次很不错的实践活动,是一个团结协作不畏困难的创新过程。通过这次试验,在学习经验积累方面,我们通过原来积累的知识,按照一贯的开发流程能够在一开始就完成整个程序的架构和独立子程序的编写,这都得益于平时课堂和实验中积累。其次,在实验中,我们也遇到了一些重要的没有预料到的问题。比如说,软件编写过程中脱离硬件。对8250和8251的通讯原理和编程逻辑的混淆对我们的实验造成了很大困扰。在选择同步通信,异步通信犹豫不定,耗时将近半天才得以发现和解决,极大干扰了设

51、计思路和实验进程。第三,当解决完8251异步通信的问题后,我们又被模块波特率调制的问题拦在路前。因为之前没有做过串行通信的底层开发,所以在串行异步的收发波特率以及数据帧格式方面花了很大的功夫,一个个的排除可能的问题,从数据帧位,停止位,校验位到时序,在这个过程中,我们基本上考察了串行异步通信的方方面面,查阅了各种资料,由于蓝牙通信波特率固定为9600,在调试过程中不断出现乱码。首先我们使用PC模拟串口与8251通信。经过一个下午的,乱码,时序混乱和程序崩溃最终能够完成稳定地8251与PC通信。之后我们在蓝牙芯片的使用上又出现了问题,上电的蓝牙芯片对通信没有任何反应。最后我们通过电脑串口调试助手

52、和蓝牙通信,保存数据,然后进行分析,找出蓝牙通信协议的规律,再对8251接收进行设置,才完成了PC机和手机的通信。在这个过程中,我们互相激励并且集思广益,发挥了团队合作的重要优势,互相协调最后解决了问题。在个人发展方面的收获相比而言更是珍贵,但又是一言难尽的。每个人的分工不同,感触肯定也不同,但是总的来说,耐心,细心,团队合作,坚持不懈,不畏困难都是不可或缺的。在紧张的学习中大家还能抽出时间一起为同一个项目努力,让每一个成员都倍感欣慰。4.3 实验分工吴海成:蓝牙模块调试,线路连接,程序控制部分编写,流程图设计,实验报告书写。陈旭:资料搜集,8251芯片通信程序编写,命令执行部分程序编写,实验

53、报告书写。附录程序清单;=;文件名:CONTROL_BLUTH;版本号:V2.6;作者:WHC, CX;=NAME CONTROL_BLUTHSTACKS SEGMENT STACK STACK ;定义堆栈段STA DW 1000 DUP(?) ;定义1000个字节的连续存储区TOP EQU LENGTH STASTACKS ENDSDATA SEGMENT ;定义数据段CON_8255 EQU 0293HPORTA EQU 0290HPORTB EQU 0291H PORTC EQU 0292H ;8255地址CON_8253 EQU 0283H ;8253地址 Y0译码CNT0 EQU 0

54、280HCNT1 EQU 0281H CON_8251 EQU 0289H ;8251地址 Y1译码DATA_8251 EQU 0288HDATA_R DB 2DATA_T DB ?SW DB 0NUM DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HINT_SEG DW ? ;用于存储中断向量段基址的变量INT_OFF DW ? ;用于存储中断向量偏移量的变量DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSSTART: MOV AX, DATA MO

55、V DS, AX MOV AX, STACKS MOV SS, AX MOV SP, TOP ;写入:初始化8253,并设置计数初值 MOV DX, CON_8253 MOV AL, 36H ;00 11 011 0B,CNT0方式3,读写16位,二进制计数 OUT DX, AL MOV DX, CNT0 ;写入CNT0计数初值 MOV AX, 000DH ;00D0H OUT DX, AL MOV AL, 00H OUT DX, AL ;写入:配置8255 MOV DX, CON_8255 MOV AL, 80H ;10000000B OUT DX, AL ;设置8255,都为输出 ;LCD

56、功能设定 CALL SET_E CALL RESET_DI CALL RESET_RW MOV DX, PORTA MOV AL, 00110000B OUT DX, AL CALL RESET_E ;LCD开显示 CALL SET_E CALL RESET_DI CALL RESET_RW MOV DX,PORTA MOV AL,00001111B OUT DX,AL CALL RESET_E ;存储中断向量 MOV AL, 0BH ;中断号 MOV AH, 35H INT 21H ;取中断向量 MOV INT_SEG, ES MOV INT_OFF, BX ;保存向量地址 CLI ;填写中

57、断向量表 PUSH DS MOV AX, SEG INT_PROG MOV DS, AX ;中断程序段基址送入DS MOV DX, OFFSET INT_PROG ;中断程序偏移量送入DX MOV AL, 0BH ;中断号 MOV AH, 25H ;置该中断向量 INT 21H POP DS ;保护原中断屏蔽字 IN AL, 21H AND AL, 0F7H ;开放中断请求 OUT 21H,AL STI ;开中断 CALL INIT_8251CONTROL: CMP BYTE PTR DATA_R, 02H JZ SHUMA ;2号功能数码管 CMP BYTE PTR DATA_R, 03H

58、JZ MOTOR ;3号功能电机 CMP BYTE PTR DATA_R, 04H JZ LCD_D ;4号功能LCD显示字符 CMP BYTE PTR DATA_R, 05H JZ LCD_W ;5号功能LCD显示汉字BB: CMP SW,0 JZ BB MOV SW, 0 ;等待中断,HLT指令不知为何没有作用 JMP CONTROL ;主程序 ;= ;*SHUMA: BB1: CMP SW,0 JZ BB1 MOV SW, 0 CMP DATA_R, 0AH ;判断是否为命令字 JB CONTROL SUB DATA_R, 30H MOV DX, PORTB CMP DATA_R, 0F

59、H ;小于0F执行循环数字部分 JNA BELOW ;大于0F执行H MOV AL, 76H OUT DX, AL JMP SHUMA ;在0f内显示数字BELOW: MOV AL, DATA_R MOV BX, OFFSET NUM XLAT ;查表得到显示编码 OUT DX, AL JMP SHUMA ;= ;*MOTOR: MOV DX, PORTB MOV AL, 80H OUT DX, ALBB2: CMP SW,0 JZ BB2 MOV SW, 0 CMP DATA_R, 0AH JNB MOTOR MOV DX, PORTB MOV AL, 00H ;有命令字,关电机 OUT D

60、X, AL JMP CONTROL ;= ;*LCD_D: BB3: CMP SW,0 JZ BB3 MOV SW, 0 CMP DATA_R, 0AH ;判断是否为命令字 JB EXIT3 CMP DATA_R, 0FH JNZ DISPLAY1 ;判断是否为清屏命令;收到清屏命令的清屏处理 CALL SET_E CALL RESET_DI CALL RESET_RW MOV DX,PORTA MOV AL,00000001B OUT DX,AL CALL RESET_E ;此处清屏 CALL DELAY CALL SET_E CALL RESET_DI CALL RESET_RW MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论