版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第19章 单片机应用系统设计,19.1 软件编译与调试 19.2 十字路口交通灯模拟控制器设计 19.3 单片机与PC机的串口通讯设计 19.4 语音报站系统设计,19.1 软件编译与调试,19.1.1 WAVE600 的使用 1建立新程序 1)选择菜单:文件|新建文件,如图19-1所示。 2)在出现的源程序窗口中输入所需编写的程序,如图19-2所示。 3)保存程序,选择菜单文件|保存文件,保存时文件名称必须带上后缀名“.ASM”,如图19-3所示。 4)建立新项目,选择菜单 :文件|新建项目,如图19-4所示。 5)在弹出的窗口中,加入模块文件,选择刚才保存的文件jtxhd.asm,如图19
2、-5所示。,下一页,返回,19.1 软件编译与调试,6)加入包含文件,若没有包含文件,则可按取消键,此处按取消键。如图19-6所示。 7)保存项目。在保存项目对话框中输入项目名称,注意此处无须添加后缀名,软件会自动将后缀名设成“.PRJ”。按保存键将项目存在与你的源程序相同的文件夹下。如图19-7所示。 2调试程序 1)仿真器设置,选择菜单:设置|仿真器设置,在弹出的“仿真器设置”对话框中,按图19-8设置,选择“使用伟福软件模拟器”。点击“好”“好”结束仿真器设置。,上一页,下一页,返回,19.1 软件编译与调试,2)双击项目中JTXHD.ASM文件,选择菜单:项目|编译,出现编译信息见图1
3、9-9。 3)点击,或按F8,程序单步执行。即按一次执行一条指令。其他执行方法见图19-10。 4)在所需设置断点的指令上右键设置断点,如图19-11所示。设置断点的目的是使程序执行到该处,达到调试程序的目的。 5)查看结果,选择菜单:窗口|数据窗口|DATA,如图19-12、图19-13,其他窗口见图19-14所示。,上一页,下一页,返回,19.1 软件编译与调试,19.1.2 Keil C的使用 1建立工程 1)新建工程。点击Project菜单,选择弹出的下拉式菜单中的New Project如图19-15。接着弹出一个名为“Create New Project”的对话框,如图19-16,先
4、选择一个合适的文件夹准备来存放工程文件,如“C51” 是新建的文件夹。在“文件名”中输入您的第一个程序项目名称,这里我们用“test”,“保存”后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名。 2)选择单片机: Keil C51 提示选择CPU 器件。在这里我们选择Atmel公司的AT89S51。此时屏幕如图19-17所示。一个空的Keil C51 工程建立完毕。,上一页,下一页,返回,19.1 软件编译与调试,3)首先我们要在项目中创建新的程序文件或加入旧程序文件。点击图19-18中1的新建文件的快捷按钮,在2中出现一个名为“Text n”(其中n 表示序号)的文档,或
5、通过菜单File-New或快捷键Ctrl+N来实现。 点击图19-18中的3保存新建的程序,也可以用菜单File|Save或快捷键Ctrl+S进行保存。因是新文件所以保存时会弹出如图19-19的文件操作窗口,我们把第一个汇编语言编写的程序命名为test1.asm,保存在项目所在的目录中。注意:扩展名“.asm”不可省略。,上一页,下一页,返回,19.1 软件编译与调试,4)添加源程序文件到工程中。现在,一个空的源程序文件“test1.asm”已经建立,但是这个文件与刚才新建的工程之间并没有什么内在联系。我们需要把它添加到工程中去。单击Keil C51 软件左边项目工作窗口“Target 1”上
6、的“”,将其展开。然后右击“Source Group 1”文件夹,会弹出如图19-20所示的选择菜单。单击其中的“Add Files to Group Source Group 1”项,将弹出如图19-21所示的对话框。 请在文件类型下拉列表中选择Asm source file源文件,再选择刚刚保存的文件“test1.asm”,按ADD按钮(请不要多次点击“Add”按钮),最后按“Close”按钮,程序文件已加到项目中了。这时可以点击Source Group1文件夹图标左边的“+” 展开后查看。 5)输入程序(略),上一页,下一页,返回,19.1 软件编译与调试,6)单击Keil C51 工具
7、栏的“ ”图标,弹出名为“Options for Target Target 1”的对话框。单击“Output”标签页,选中“Create HEX File”项,然后“确定”。参见图19-22。 7)编译程序图19-23中1、2、3都是编译按钮,不同是1是用于编译单个文件;2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的;3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。,上一页,下一页,返回,19.1 软件编译与调试,8)编译后的结果会生成Intel HEX 格
8、式的程序文件“test1.hex”,如图19-24。该文件可以被专门的芯片烧写工具(例如Top2004 编程器)载入并最终烧录到具体的芯片中。芯片安装到自己的电路板上,通电,就可以运行里面的程序了。 2调试程序 1)进入仿真状态 如果程序编译通过,就可以仿真了。在仿真之前,有一项参数最好配置一下,仍然按“ ”图标进入编译环境设置,如图19-25,找到“target”下的“Xtal (MHz)”项,填入合适的晶振频率,比如12。最后点击“确定”。进入仿真状态很简单,直接点击工具栏红色的“ ”图标。,上一页,下一页,返回,19.1 软件编译与调试,2)仿真窗口 (1)源程序窗口 Keil C51
9、调试界面的中间是源程序窗口。黄色箭头“ ”所指为当前即将执行的代码。以深灰色标记的程序行是可以执行的代码(当然,在调试过程中未必一定要去执行)。以浅灰色标记的程序行不可作为代码来执行,它们是注释、空行、标号或ROM 数据表。以绿色标记的程序行表示曾经执行过的代码。如图19-26所示。,上一页,下一页,返回,19.1 软件编译与调试,(2)寄存器窗口 Keil C51 调试界面的左边是寄存器窗口。8051 的工作寄存器(R0R7)和系统寄存器(a、b、sp、dptr、PC、psw)都列出来了。Value 栏显示的是寄存器的当前数值。如果在调试过程中某个寄存器的值有变化,则会用蓝色的背景标记。单击
10、psw 寄存器左边的“”,展开后还可以看到其每一位的情况。 (3)汇编窗口 单击工具栏的“ ”图标,源程序窗口会自动切换成汇编窗口。在汇编窗口里,我们可以看到每条指令的存储地址和编码等信息。再次单击“ ”,回到源程序窗口。,上一页,下一页,返回,19.1 软件编译与调试,(4)存储器窗口 单击工具栏的“ ”图标,将显示出存储器窗口。51 单片机的存储器分为多个不同的存储空间,如果要观察代码存储器,就在地址栏“Address:”内输入“C:地址”,例如:C:0080H;如果要观察外部数据存储器,就输入“X:地址”;如果要观察内部数据存储器,则可以输入“I:地址”。拖动存储器窗口右边的滚动条还可以
11、观察输入地址附近的存储单元。 存储器窗口有“Memory #1Memory #4”共4 个观察子窗,您可以用来分别观察代码存储器、内部数据存储器和外部数据存储器。 存储器的内容是可以修改的。用鼠标右击打算要修改的存储单元,选择“Modify Memory at ”项,弹出修改对话框,可以随意修改存储单元的内容。,上一页,下一页,返回,19.1 软件编译与调试,(5)变量观察和堆栈窗口 单击工具栏的“ ”图标,将显示变量观察和堆栈窗口(Watch 串口工作于工作方式0,既移位寄存器状态 SETB EA ;开总中断 SETB ET0 ;开定时器中断 SETB TR0 ;启动T0定时器 SETB I
12、T0 ;外中断0为脉冲触发方式 SETB IT1 ;外中断0为脉冲触发方式 MOV IP ,#05 ;外中断0,1为高优先级 SETB EX0 ;开外中断0 SETB EX1 ;开外中断1 外中断程序流程图见图19-44,定时中断程序和外中断0,1程序见源程序。,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,3串口工作方式设计 1)串口工作方式 串口有4种工作方式:方式0、1、2、3.由串口控制寄存器SCON和PCON控制。 SM0、SM1功能见表19-9,SM2: 0表示单机通讯, 1表示多机通讯,REN: O禁止接收,1允许接收,TB8:发送数据第9位,RB9: 接收数据第
13、9位,TI: 发送中断标志,RI: 接收中断标志。 (1)方式1:10位异步收发 方式1下,串行口位10位通用异步接口。发送或接收一帧数据信息为10位,包括1位起始位“0”、8位数据位、1位停止位“1”。,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,(2)方式2:11位异步收发方式。发送或接收一帧信息包括1位起始位“0”、8位数据位、1位可编程位、1位停止位“1”。 (3)方式3:11位异步收发。方式3为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同。 (4)方式0:在方式0下,串行口作同步移位寄存器用,以8位数据为一帧,先发送或接收最低位,每
14、个机器周期发送或接收一位,故其波特率固定为“fosc/12”。串行数据由RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)端送出。这种方式常用于扩展I/O口。可以外接74165或者74164.,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,2)十字路口交通灯模拟控制器串口设计 本例设计串口工作于工作方式0,既同步移位寄存器状态 MOV SCON,#00H ;串口工作方式0 传送数据语句如下: MOV DPTR, #SEGTAB1 ;字形码09地址 MOV A,DIS_LB ;低位数据 MOVC A,A+DPTR ;查表 MOV SBUF,A ;发送数据 DL1:J
15、NB TI,DL1 ;查询是否发送完一个字节 CLR TI,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,4字形码 根据各管的接线形式,可分成共阴极型和共阳极型。给LED 数码管的七个发光二极管加不同的电平,二极管显示不同亮暗的组合就可以形成不同的字形,这种组合称之为字形码。下面以1为高电平,0 为低电平,给出字形码表。 5软件总流程图(见图19-45),上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,19.2.5 源程序清单 ;以下为共阳极LED,交通灯控制器源程序 DIS_LB EQU 32H ;时间数据高位 DIS_HB EQU 33H ;时间数据高位 E_
16、PASST EQU 30 ;东西方向绿灯通电时间 N_PASST EQU 20 ;南北方向绿灯通电时间 FLASHT EQU 5 ;黄灯闪烁时间 SECOND_F EQU 20H.0 ;定时1S标志 INT0_F EQU 20H.1 ; 外中断0标志位,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,INT1_F EQU 20H.1 ; 外中断1标志位 ORG 0000H AJMP MAIN ORG 0003H ;外中断0入口地址 LJMP INT_0 ;调至外中断0服务程序 ORG 000BH ;TO中断入口 AJMP T0_INT ; 调至T0服务程序 ORG 0013H ;
17、外中断1入口地址 LJMP INT_0 ;调至外中断1服务程序 ORG 0100H,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,MAIN: ;* ;初始化程序 MOV SP,#50H ;定时器T0工作于方式1,定时125MS,开起定时器0中断 MOV TMOD,#01 MOV TH0,#0BH MOV TL0,#0DCH,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,;串口工作于工作方式0,既移位寄存器状态 MOV SCON,#00H SETB EA ;;开总中断 SETB ET0 ;开定时器中断 SETB IT0 ;外中断0为脉冲触发方式 SETB IT1
18、; 外中断0为脉冲触发方式 MOV IP ,#05 ;外中断0,1为高优先级 SETB EX0 ;开外中断0 SETB EX1 ;开外中断1 ;*,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,MOV R2,#0 MOV 20H,#0 ;开始所有灯亮以便检测交通灯的好坏 ,亮一秒 MOV P1,#0FFH SETB TR0 ;开启定时 JNB SECOND_F,$ CLR SECOND_F ;*,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,T_LIGHT:MOV R3,#E_PASST F_STEP:MOV P1,#24H ;东西亮绿灯,南北亮红灯,即P1 M
19、OV A,R3 LCALL H_D ;调用十六-十进制程序 LCALL DIS ; 调用显示程序 JNB INT0_F ,LP11 AJMP F_STEP LP11: JNB INT1_F ,LP12 AJMP T_STEP LP12: JNB SECOND_F,$ ;显示上面数据1S CLR SECOND_F CJNE R3,#0,F_STEP ;变化显示数据,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,;* MOV R3,#FLASHT ;东西亮绿灯,南北闪烁黄灯 S_STEP:MOV A,R3 MOV P1,#22H LCALL H_D LCALL DIS JNB IN
20、T0_F ,LP21 ;是否第一次出现外中断0,是转东西亮绿灯,南北亮红灯 , ;否则检测是否有外中断1信号第一次出现 AJMP F_STEP ;,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,LP21: JNB INT1_F, LP22 ; AJMP T_STEP ;外中断1第一次出现 转东西亮红灯,南北亮绿灯 LP22: JNB SECOND_F,$ CLR SECOND_F ;未出现外中断正常显示 CJNE R3,#0,LP1 AJMP T_STEP LP1: MOV P1,#02H MOV A,R3 LCALL H_D LCALL DIS JNB SECOND_F,$
21、CLR SECOND_F CJNE R3,#0,S_STEP,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,;* T_STEP:MOV R3,#N_PASST ;南北亮绿灯,东西亮红灯 LP2: MOV P1,#81H MOV A,R3 LCALL H_D LCALL DIS JNB INT0_F ,LP31 AJMP F_STEP LP31: JNB INT1_F, LP32 AJMP T_STEP LP32: JNB SECOND_F,$ CLR SECOND_F CJNE R3,#0,LP2,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,;* MOV R3
22、,#FLASHT ; 南北亮绿灯,东西闪烁黄灯 FORTH_STEP: MOV P1,#41H MOV A,R3 LCALL H_D LCALL DIS JNB INT0_F ,LP41 AJMP F_STEP LP41: JNB INT1_F ,LP42 AJMP T_STEP,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,LP42: JNB SECOND_F,$ CLR SECOND_F CJNE R3,#0,LP3 LJMP T_LIGHT LP3: MOV P1,#40H MOV A,R3 LCALL H_D LCALL DIS JNB SECOND_F, $ CLR
23、SECOND_F CJNE R3,#0,FORTH_STEP LJMP T_LIGHT,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,;* ;十六进制转换为十进制 H_D: MOV B,#10 DIV AB MOV DIS_HB,A JNZ LP5 MOV A,#10 LP5: MOV A,B MOV DIS_LB,A RET,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,;* ; 时间显示子程序, 显示两位十进制数,发光显示器共阳极, DIS:MOV R7,#2 MOV R0,#DIS_LB DL0:MOV A,R0 ADD A,#0BH MOVC A,A+P
24、C MOV SBUF,A,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,DL1:JNB TI,DL1 CLR TI INC R0 DJNZ R7,DL0 RET SEGTAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH ,00H ;* T0_INT: CLR TR0 MOV TH0,#0BH MOV TL0,#0DCH SETB TR0,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,INC R2 CJNE R2,#8,RETURN MOV R2,#0 SETB SECOND_F DEC R3 RETI INT_0
25、: CLR EX0 ; 关外中断 CLR EX1 JNB INT0_F, INT0LP1 ; 检测外中断0信号是否第一次,是则置位 CLR INT0_F ; 外中断0信号第二次出现,恢复数据,启动定时器0,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,MOV R3,40H ; SETB TR0 ; SETB EX1 ; 开外中断1 AJMP INT0LP2 ; INT0LP1: CLR TR0 ; 外中断0信号第一次出现,关定时器0 清1S标志位 CLR SECOND_F ; SETB INT0_F ; 置位外中断0标志位 MOV 40H,R3 ; 保存数据 MOV R3,#9
26、9 ; 送99S显示,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,INT0LP2: SETB EX0 ;开外中断0 RETI INT_1: CLR EX1 CLR EX0 JNB INT1_F ,INT1LP1 CLR INT1_F MOV R3,40H SETB TR0 SETB EX0 AJMP INT1LP2,上一页,下一页,返回,19.2 十字路口交通灯模拟控制器设计,INT1LP1: CLR TR0 CLR SECOND_F SETB INT1_F MOV 40H,R3 MOV R3,#99 INT1LP2: SETB EX1 RETURN: RETI END,上一
27、页,返回,19.3 单片机与PC机的串口通讯设计,19.3.1 设计任务 设计硬件电路以便单片机和PC 机的电平匹配,根据硬件电路设计软件实现单片机和PC 机的串行通讯。 19.3.2 设计目的 随着计算机技术的快速发展和广泛应用,上位机和下位机的主从工作方式更加为数据采集系统所采用,由于微机的分析处理能力较强,处理速度更快,而单片机则使用灵活方便,所以一般主机采用微机,从机采用单片机来构成主从多机工作模式。在实际应用中,在要求数据量大的应用场合,单片机往往难以胜任,而PC机着重发展海量高速数值运算技术,其控制能力是有限的。 这时使用多个单片机结合PC机组成分布式系统是一个比较好的解决方案,这
28、样单片机与PC机的数据通信技术就变得十分重要,本设计的主要目的就在于,实现单片机与PC机之间的串行通讯。因此必须熟悉单片机串行通讯技术,了解串行口的工作方式;熟悉串口中断技术;了解串口调试助手的使用;了解通讯协议,下一页,返回,19.3 单片机与PC机的串口通讯设计,19.3.3 硬件电路设计及工作原理 利用MAX232芯片完成单片机TTL电平到RS-232双向电平的转换,达到电平匹配,并通过规定单片机和PC机的通讯协议,实现单片机与PC机的串行通讯。 1相关知识一:单片机与PC串行通讯实现方法 1)利用MODEM实现单片机与PC间的远程通信(远距离通讯) 在单片机应用中,时常遇到与计算机通信
29、的情况。但在远距离(大于)通信时,必须用调制解调器。一般资料介绍的单片机与间连接至少要用个口。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,2)利用MAX232芯片实现单片机与PC间的通信(近距离通讯) 单片机和PC机的串行通信一般采用RS-232、RS-422或B3-485总线标准接口,也有采用非标准的20nnJL电流环的。为保证通信的可靠,在选择接口时必须注意:(1)通信的速率(2)通信距离(3)抗干扰能力(4)组网方式。 本书主要介绍采用RS-232接口与单片机通信的方法。 2相关知识二:RS232 通常 RS-232 接口以9个接脚 (DB-9) 或是25个接脚 (D
30、B-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,(1)DB-25: PC和XT机采用DB-25型连接器。DB-25连接器定义了25根信号线,分为4组: 异步通信的9个电压信号(含信号地SG)2,3,4,5,6,7,8,20,22 20mA电流环信号 9个(12,13,14,15,16,17,19,23,24) 空6个(9,10,11,18,21,25) 保护地(PE)1个,作为设备接地端(1脚),上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,(2)DB-9连接
31、器 在AT机及以后,不支持20mA电流环接口,使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2G两个串行接口的连接器。它只提供异步通信的9个信号。DB-25型连接器的引脚分配与DB-25型引脚信号完全不同。因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。 电缆长度:在通信速率低于20kb/s时,RS-232C所直接连接的最大物理距离为15m(50英尺)。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,3相关知识三:TTL与RS232电平转换电路 RS-232规定的电平和一般微处理器的逻辑电平不一致,必须进行电平转换,实现逻辑电平转换可
32、以采用以下三种方式。 1)采用MCl488和MCl489芯片的转换接口 MCl488和MCl489芯片为早期的RS-232至TTL逻辑电平的转换芯片,不便之处是需要12V电压,并且功耗较大,不适合用于低功耗的系统。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,2)采用分立元件实现的转换接口 图19-46为采用分立元件实现的RS-232-TTL电平的转换接口电路,其特点是利用PC机的BS-232接口的脚信号出(也可用、脚)来供给负电源,FC机的、脚在非发送逻辑0电平时均为1电平(-10V左右),其驱动能力为20mA,利用这个特性,用一个二极管和电解电容,即在电解电容上获取了RS
33、-232通信所需的负电源。该电路简单、功耗小,在没有专用芯片时不失为一种替代方法。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,3)采用MAX232芯片的转换接口(见图19-47) MAX232是MAXIM公司生产的,包含两路驱动器和接收器的RS-232转换芯片。芯片内部有一个电压转换器,可以把输入的+5v电压转换为RS-232接口所需的10V电压,尤其适用于没有12V的单电源系统。与此原理相同的芯片还有MAx202、AD公司的ADDtl01以及INl2只SIL公司的ICl232芯片。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,4相关知识四:串口通讯及通讯
34、协议 1)串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收。它很简单并且能够实远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米(RS485)。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线(2)发送(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
35、,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,2) 所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程。 5本书实例通讯协议的规定 本书以一个简单系统设计为例,介绍通讯协议,通过规定的通讯协议完成单片机与PC的通讯功能,实现PC对单片机的控制。为了简化设计,单片机不起控制作用,PC机也不作数据处理工作,单片机的控制功能用做加、减法模拟。另外上位机程序也不用编写,直接使用串口调试助手。,上一页,下一页,返回,19.3 单片机与PC机的
36、串口通讯设计,(1)系统结构:系统主要由单片机A,单片机B, PC机构成。单片机可完成加法、减法以便模拟控制功能。 (2) 系统任务: a: 区分单片机A、单片机B。 b: 启动单片机A、单片机B。 c: 使单片机A、单片机B停止工作。 d: 单片机根据接收的命令完成相应的工作 (3) 根据系统的任务要求,规定了下面通讯协议: 波特率:9600bps,起始位一位,数据位八位,停止位一位,无校验位 约定通讯格式见表19-11,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,6相关知识五:串口调试助手的使用 下图19-48为串口调试助手的界面,下面简要介绍一下它的使用方法: 1)设置
37、串口参数 通过下拉菜单选择串口、波特率、奇偶校验、数据位数、停止位: (1)串口号选择:COM1COM4, 一般 PC有两个串口,与单片机连接的串口假设是COM2则在下拉菜单中选择COM2; (2)波特率选择:波特率有300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200可供选择,单片机软件设计的的串口波特率为9600,为了与单片机收发数据速度匹配,PC机选择9600。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,(3)校验位:由NONE、ODD、EVEN即无奇偶校验、奇校验、偶校验。主要用作简单检错,
38、出于简化设计的目的这里选择无奇偶校验NONE,对数据的正确性要求较高的场合,要设奇偶检验位,对数据的正确性要求非常高的场合,串口调试助手还不能满足要求,应该自己编制程序,对数据进行严格校验,纠错。 (4)数据位选择:8位、7位、6位 这就是要实际传送的数据位数。这里选择8位。 (5)停止位选择:1位、2位,这里选择1位,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,2)接收区 接收数据:如果要按十六进制形式显示接收数据,将十六进制显示选项选中。如果接收ASCII码则十六进制不选,点击打开/关闭串口区中的打开串口按钮。此时状态指示灯亮. 显示接收数据的长度:因某些限制,显示接收数
39、据的文本不能太长,所以当显示文本长度快达到 62K 时会自动将显示文本删减到 32K,此时文本可保留 32K 的字符或约 10K 的十六进制数据显示。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,选中自动清空,则数据满接收框后数据清空。可以手动点击清除显示按钮,则此前显示区的数据全部清除。点击停止显示按钮,则数据停止显示,点击继续显示按钮,则数据从新开始显示, 点击保存显示数据可以把但前显示框的数据保存在默认的路径C:COMDATA,要更改保存路径点击更改就会出现下图对话框。选择保存数据的文件夹。界面见图19-49.,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设
40、计,3)发送区 可以发送单字符串,多字符串(字符串序列)或直接在键盘上发送英文字符。有两种发送数据格式,一种是普通的字符串,另外一种是十六进制数据即 HEX 格式数据。发送 HEX 格式数据时要在字符串输入区中输入 HEX 格式字符串,并且要将相应区内的十六进制发送选项选中。 在发送输入框中输入12 34 AB CD FF 不选中十六机制,点击发送,则字符串12 34 AB CD FF发送出去,发送的数据为14字节。因为上述字符串中的1,其实是ASCII码1,用十六进制数31H表示,为一个字节。14字节数分别为4个数字、6个字母,4个空格键的ASCII码。12 34 AB CD FF字符串用十
41、六机制表示为31 32 20 33 34 20 41 42 20 43 44 20 45 46 20。见图19-50 串口调试助手界面3,发送、接收的字节数见TX RX 的值。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,4)状态栏:显示发送,接收数据的字节数。计数清零按钮,可以清零收发数据的字节数。状态栏和自动发送一个非常重要的用途是检测通讯是否出错,特别是在高速传送数据时的出错情况检测,例如以20MS的速度发送命令给单片机并要求单片机实时传送相应的数据回PC机,因此发送数据和接收数据应该有严格的比例关系,如果比值变化,说明出现数据丢失现象,应该检测硬件和软件。 7硬件电路
42、原理图 串口通讯原理如图19-51所示。,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,19.3.4 串口通讯源程序清单 ;* S1_F EQU 20H.0 ;发送地址命令起始位 C_F EQU 20H.1 ;发送命令指令命令位 D_F EQU 20H.2 ;发送地址命令命令位 S2_F EQU 20H.3 ;发送命令指令起始位 FIN1_F EQU 20H.4 ;发送地址命令结束位 FIN2_F EQU 20H.5 ;发送命令指令起始位 COM_F EQU 20H.6 ;发送命令数据结束位 AD_F EQU 20H.7 ;发送加法命令位 SB_F EQU 21H.0 ;发送减
43、法命令位 SD_F EQU 21H.1 ;发送回送命令位 FDATA_F EQU 21H.2 ;发送数据命令第一位,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,ADD_F EQU 21H.3 ;发送加法命令位 SEND_F EQU 21H.4 ;发送回送命令位 SUBB_F EQU 21H.5 ;发送减法命令位 A_F EQU 21H.6 ;发送地址A位 F_DATA EQU 40H ;要接收的数据高位 S_DATA EQU 41H ;要接收的数据低位位 J_DATA EQU 42H ;要发送运算结果高位,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,;* O
44、RG 0000H LJMP START ORG 0023H ;串口中断入口地址 LJMP SERI_INT ;转串口中断程序 ORG 0100H START: MOV SP,#67H MOV 20H,#0 ;清零各存储单元 MOV 21H,#0 MOV F_DATA,#0 MOV S_DATA,#0 MOV J_DATA,#0,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,;* ;初始化T1,串口 MOV TMOD,#20H ;定时器T1 自动重装载 MOV TL1,#0FDH ;波特率9600 MOV TH1,#0FDH MOV PCON ,#00H MOV SCON,#50
45、H ; 串口工作方式1 ; MOV SCON,#0F0H ;多机通讯,串口工作方式3 SETB EA ;开中断, SETB ES ;开串口中断, SETB TR1 ;启动定时器1,,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,;* LP1:JNB ADD_F ,LP2; 根据接收的命令完成加法或减法工作 LCALL ADD_S ; 调用加法子程序 LP2:JNB SUBB_F,LP3 LCALL SUBB_S ; 调用减法子程序 LP3:JNB SEND_F,LP1 LCALL SEND_S ; 调用发送数据子程序 AJMP LP1 ;* CLR RS0 ;使用0组通用 寄存
46、器 CLR RS1,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,;* ;串口中断服务程序 SERI_INT:JB RI,REC ; 接受数据 TRAN: CLR TI ;发送数据 INC R0 DJNZ R1,TRAN_NEXT ; 数据是否发送完 MOV 20H,#0 MOV 21H,#0 SINTOUT: RETI,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,TRAN_NEXT:MOV SBUF,R0 ; 数据发送继续 AJMP SINTOUT REC:CLR RI ;接收数据 MOV A,SBUF JNB FIN2_F,LOOP21 JNB ADD_F
47、 ,LOOP22 JNB FDATA_F,LP11 MOV S_DATA,A CLR FDATA_F AJMP FIN,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,LP11: MOV F_DATA,A LOOP22:JNB SUBB_F,LOOP23 JNB FDATA_F,LP12 MOV S_DATA,A CLR FDATA_F AJMP FIN LP12: MOV F_DATA,A LOOP23:JNB FDATA_F,LP13 MOV S_DATA,A CLR FDATA_F AJMP FIN,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,LP13:
48、MOV F_DATA,A LOOP21:JNB FIN1_F,LOOP LJMP COMS LOOP: CJNE A ,#53H,LOOP1 ; 是否为地址指令S SETB S1_F ; 置位发送地址命令起始字 FIN: AJMP RETIFIN LOOP1: CJNE A,#44H,LOOP2 ;是否为地址命令D JNB S1_F, FIN1 SETB D_F ;置位发送地址命令字 AJMP FIN FIN1: CLR S1_F AJMP FIN,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,LOOP2: CJNE A,#41H,LOOP3 ;是否为本机地址A JNB D_F
49、,FIN2 SETB A_F ; ; 置位发送地址A AJMP FIN FIN2: CLR S1_F CLR D_F AJMP FIN LOOP3: CJNE A,#21H,FIN3 ;是否为! JNB A_F,FIN3 SETB FIN1_F ;置位发送地址命令结束字 AJMP FIN,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,FIN3: CLR S1_F CLR D_F CLR A_F AJMP FIN COMS: CJNE A ,#53H,LOOP11 ; 是否为命令指令起始位S SETB S2_F ; 是置位命令指令起始位 AJMP RETIFIN LOOP11:J
50、NB S2_F,FIN11 CJNE A,#43H,LOOP12 ;是否为命令C SETB C_F ; 是置位命令指令命令位 AJMP FIN,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,FIN11:CLR S2_F AJMP FIN LOOP12:JNB C_F,FIN12 CJNE A,#31H,LOOP13 ;是加法还是减法指令或数据回送指令 SETB AD_F ; 是置位命令指令加法位 SETB COM_F ; 是置位加法或减法命令或回送数据接收完 AJMP FIN FIN12:CLR S2_F CLR C_F AJMP FIN,上一页,下一页,返回,19.3 单片机
51、与PC机的串口通讯设计,LOOP13:CJNE A,#32H,LOOP14 ;是加法还是减法指令或数据回送指令 SETB SB_F ; 是置位命令指令减法位 SETB COM_F AJMP FIN LOOP14:CJNE A,#33H,LOOP15 ;是加法还是减法指令或数据回送指令 SETB SD_F ; 是置位回送数据位 SETB COM_F ; 是置位命令指令减法位 AJMP FIN,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,LOOP15: JNB COM_F,FIN13 CJNE A,#21H,FIN13 ;是否为! JNB AD_F,LOOP16 SETB ADD
52、_F ; 是置位加法命令接收完 SETB FIN2_F ; 是置位接收加法或减法或回送数据命令完成位 AJMP FIN LOOP16: JNB SB_F,LOOP17 SETB SUBB_F ; 是置位减法命令接收完 SETB FIN2_F ; 是置位接收加法或减法或回送数据命令完成位 AJMP FIN,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,LOOP17: SETB SEND_F ; 是置位回送命令接收完 SETB FIN2_F ; 是置位接收加法或减法或回送数据命令完成位 AJMP FIN FIN13:CLR S2_F CLR C_F CLR AD_F CLR SB_
53、F CLR SD_F AJMP FIN,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,RETIFIN:RETI ADD_S: JB FDATA_F,LP31 MOV A,S_DATA ADD A,F_DATA MOV J_DATA,A JC ERR MOV 43H,S_DATA MOV 44H,F_DATA MOV 45H,J_DATA LP31: RET ERR: MOV 43H,#45H MOV 44H,#52H MOV 45H,#52H AJMP LP31,上一页,下一页,返回,19.3 单片机与PC机的串口通讯设计,SUBB_S:JB FDATA_F,LP32 CLR
54、C MOV A,S_DATA SUBB A,F_DATA MOV J_DATA,A JC ERR MOV 43H,S_DATA MOV 44H,F_DATA MOV 45H,J_DATA LP32: RET SEND_S :MOV R0,#43H MOV R1,#3 MOV A,R0 MOV SBUF,A RET END,上一页,返回,19.4 语音报站系统设计,19.4.1 电路设计要求 为公交车设计语音报站系统要求电路有录、放功能。 19.4.2 电路设计目的 了解典型的语音芯片及其使用 了解单片机对语音芯片的控制,下一页,返回,19.4 语音报站系统设计,19.4.3 电路设计及工作原理
55、 1相关知识 1)ISD2500语音芯片 美国ISD公司的2500芯片,按录放时间60秒、75秒、90秒和120秒分成ISD2560、2575、2590和25120四个品种。ISD2500系列和1400系列语音电路一样,具有抗断电、音质好,使用方便等优点。它的最大特点在于片内EEPROM容量为480K(1400系列为128K),所以录放时间长;有10个地址输入端(1400系列仅为8个),寻址能力可达1024位;最多能分600段;设有OVF(溢出)端,便于多个器件级联。,上一页,下一页,返回,19.4 语音报站系统设计,(1)ISD2500 DIP封装图(见图19-52)及各引线端功能 (2) 操作模式 当最高位地址(MSB)A8、A9都为高电平时,地址端就作为操作模式选择端 (高电平有效)详情见表19-13. (3)分段录放音 2500系列最多可分为600段,只要在分段录/放音操作前(不少于300纳秒),给地址A0A9赋值,录音及放音功能均从设定的起始地址开始,录音结束由停止键操作决定,芯片内部自动在该段的结束位置插入结束标志(EOM);而放音时芯片遇到EOM标志即自动停止放音。,上一页,下一页,返回,19.4 语音报站系统设计,2500系列地址空间是这样分配的:地址0599作为分段用(见下表19-14),地址600767未使用,地址7681023为工作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管道接口处理方案
- 工程通信设备施工监理报告
- 防台风防洪安全工程竣工验收报告
- 《休闲农业园区景观规划设计方案》
- 2026年会计从业资格(财务审计)《审计程序管理》题库及答案解析
- 2024年汾河文旅职业学院单招职业技能考试模拟试卷(轻巧夺冠)附答案详解
- 2025年陕西陕南职业学院高职单招职业适应性测试考试题库附答案详解【培优B卷】
- 2024年湖南化工职业技术学院高职单招职业技能考试模拟试卷含答案详解(完整版)
- 2024年山东昌邑职业学院高职单招职业适应性测试考试题库【培优】附答案详解
- 2027年安宁河职业学院单招职业技能考试模拟试卷带答案详解(黄金题型)
- 计算机组成原理(广西师范大学)智慧树知到期末考试答案2024年
- 胜任力与胜任力模型构建方法研究
- 品质部人员培训管理规定
- 充电桩运维的安全风险分析
- RB/T 089-2022绿色供应链管理体系要求及使用指南
- 2023年托幼机构幼儿园卫生保健人员考试题库及参考答案
- 水喷砂除锈施工方案
- 《餐饮业老年营养餐要求(过审稿)》
- 鸿门宴原文及译文
- ECOTROL调节阀阀体组件简介
- 第五章电路交换技术
评论
0/150
提交评论