单片机与PC机串口通信的设计(4)

2019-08-31 00:13

表4-3 常用的各种波特率

Timer1 波特率(bit/s) 4800 2400 1200 19200 9600 4800 2400 1200 Fosc(MHZ) 12 12 12 11.059 11.059 11.059 11.059 11.059 SMOD C/T 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 模式 2 2 2 2 2 2 2 2 自动载入 F3H F3H F6H FDH FDH FAH F4H F8H UART的中断要求:

其中断要求有两种方式:(1)当UART的接收器(RXD)接收到一个字节的数据且将其存入SBUF

寄存器后,就会将RI设定为1,而对AT89C51提出中断要求。(2)当UART的发送器将SBUF寄存器的8个位数据发送出去后,会将TI设定为1。

UART中断要求设定的步骤:

1.设定UART中断起始地址。

ORG 23H JMP

UART

2.设定TIMER1工作在MODE2

MOV

TMOD,#00100000B

3.设定波特率为2400

ANL MOV

4.启动计时器

SETB

TRX

PCON,#01111111B TH1,#0F3H

5.设定UART工作方式

MOV

SCON,#01××0000B

3.设定UART中断功能

MOV

IE,#10010000B

4.3 键盘扫描子程序设计

键盘扫描的步骤:

(1)设置P1口初始值07FH;

第16页,共37页

(2)P1口右移,检测行; (3)P1口左移,检测列; 流程图如图4-2所示。

键盘接口程序如下:

MOV R3,#0F7H ;扫描初值(P2.3=0)

MOV R1,#00H ;取码指针初值 D3: MOV A,R3 ;载入扫描指针

MOV P2,A ;输出至P2,开始扫描行 MOV A,P2

;读入P2

CLR C CPL C

;令C=1

MOV R5,#04H ;检测列 D4: RLC A

;左移一位(P2.7~P2.4) JNC KEYIN ;检测行C=0,表示被按 INC R1 ;没按则取码指针加1 DJNZ R5,D4 ;4列检测完毕了?

MOV A,R3 CLR C CPL C ;C=1

RRC A

;扫描下一行,即下一行为0

MOV R3,A ;存回R3扫描指针寄存器 JC D3

;C=0表示扫描完毕

RET

KEYIN: MOV 22H,R1 ;取码指针存入22H地址

MOV R7,#10 ;消除抖动 D5: MOV R6,#248 DJNZ R6,$

DJNZ

R7,D5

D6: MOV A,P2

;按钮放开否?

XRL

A,R4

4.4 按键发声子程序的设计

按键发声子程序框图如图4-3所示。 程序如下:

ORG 00H

;主程序其始地址

图4-2 读键输入子程序框图 图4-3按键发声子程序框图 第17页,共37页

JMP START ORG 0BH JMP TIM0

;跳至主程序 ;TIMER0中断其始地址 ;跳至TIMER0中断子程序

START: MOV MOV

SETB

D1: CALL CLR JB MOV RL MOV MOVC MOV MOV MOV RL A INC A MOVC MOV

MOV

D2: CALL SETB JB

JMP KEY: SETB MOV

MOV D3: MOV MOV

MOV

TMOD,#00000001B ;设定TIMER0工作在MODE1 IE,#10000010B ;中断使能

TR0

;启动TIMER0

KEY ;调用KEY,判断是否有按下?

EA ;中断屏蔽 F0,D1 ;没按则F0=1,没按则F0=0

A,22H ;有按则将取码指针暂存地址的值载入A A

;乘2

DPTR,#TABLE ;至TABLE取码,取T的值 A,@A+DPTR; TH0,A ;取到的高位字节存入TH0 21H,A ;取到的高位字节存入(21H) A,22H ;再载入取码指针

;乘2

;加1

A,@A+DPTR;至TABLE取相对的低位字节计数值 TL0,A ;取到的高位字节存入TL0 20H,A

;取到的高位字节存入(20H)

KEY ;调用KEY,判断是否有键按下 EA; ;中断使能 F0,D1 ;有按否? D2;

;有则跳至D2

F0

;设F0=1

R3,#0F7H;扫描初值(P2.3=0) R1,#00H ;取码指针初值 A,R3 ;载入扫描指针

P2,A ;输出至P2,开始扫描行 A,P2

;读入P2

第18页,共37页

CLR CPL MOV RLC JNC INC DJNZ MOV CLR CPL RRC MOV JC RET

C C

;令C=1

R5,#04H ;检测列 A

;左移一位(P2.7~P2.4) ;检测行C=0,表示被按 ;没按则取码指针加1 ;4列检测完毕了?

D4:

KEYIN R1 R5,D4 A,R3 C C A

;C=1

;扫描下一行,即下一行为0 ;存回R3扫描指针寄存器 ;C=0表示扫描完毕

R3,A D3

KEYIN: MOV

CLR RET PUSH PUSH MOV MOV CPL POP POP RETI

22H,R1 ;取码指针存入22H地址 F0

;令F0=0

TIM0:

ACC PSW

;将A的值暂存于堆栈 ;将PSW的值暂存于堆栈

TL0,20H ;重设计数值 TH0,21H P3.4 PSW ACC

;将P3.4反相 ;至堆栈取回PSW的值 ;至堆栈取回A的值

TABLE: DW 64021,64103,64260,64400

DW 64524,64580,64684,64777 DW 64820,64898,64968,65030 DW 65058,65110,65157,65178

5软硬件调试及结果

5.1 软件仿真

软件仿真使用的是ISIS 6 Professional,它可以完成单片机的电路仿真。图5-5-1是软件仿真的结果。

第19页,共37页

图5-1-1 软件仿真的结果

5.2硬件焊接

硬件的焊接是毕业设计中重要的环节,用的工具很简单:电烙铁、焊丝和镊子。因为我们选用的是实验板,所以要用导线把各个元器件连接起来,这就要有一定的技术基础,幸好这个在我们以前的生产实习中已经掌握。焊接要细心,还要有耐心。焊接前要对照电路图对元器件有一个合理的布局,那样的话就会使电路简洁明朗,而且不易出错,即使出错也容易检查。 5.3调试

调试的时候,PC机可以使用ComTools串口调试工具,而不必自己编写程序。ComTools的界面

如图5-3-1所示。

图5-3-1 ComTools串口调试工具操作界面

它的主要功能如下:

可设置各种通讯速率、奇偶校验、数据位和停止位;

可分别设置ASCII码(包括中文)或十六进制数据格式的发送模式或接收模式; 能将接收数据保存成文本文件,便于观察分析; 自动保存设置参数,无需每次重新设置;

第20页,共37页


单片机与PC机串口通信的设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:山西XXXX煤化工有限公司污水处理及中水回用设计方桉

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: