关于AT89S52单片机串口通信功能的单片机系统的设(5)
2013-06-18 02:00
导读:式0多了起始位和终止位,便于控制。比起方式2和方式3没有校验位,稍微简单一些,便于实现。而PC部分则直接采用网上提供的已经做好的串口调试程序,
式0多了起始位和终止位,便于控制。比起方式2和方式3没有校验位,稍微简单一些,便于实现。而PC部分则直接采用网上提供的已经做好的串口调试程序,方便而且直观。
五 设计计算
主要有以下部分需要进行设计和计算。
1 时钟电路参数
由于提供的晶体为12MHz的石英晶体谐振器,接成内部时钟,两个电容选择陶瓷电容,都为20pF。因此系统的机器周期为1us。
2 复位电路参数
复位电路接成图9所示,将电容C1改成10uf,R2为1K,R1为10K。
3 数码管编码
设计16个按键分别代表0到9及A到F,而由于电路排布的原因,需要将每个数字按照对应关系进行编码。如图20所示
图20 数码管编码
4 消除抖动时间计算
在判断按键是否响应时有一个去抖动的过程,要延时10ms左右,计划用一个两重循环来实现这个延时,程序如下:
MOV R7,#10
D2: MOV R6,#490
DJNZ R6,$
DJNZ R7,D2
一个DJNZ语句要两个机器周期,即2us时间,因此忽略掉其他语句,DJNZ R6,$这条语句的执行时间为10*490*2us=9.8ms,实现去抖动。
5 波特率计算
设计波特率值为2400,则TH1的重装载值N=256-2º*12*10M/(2400*384)=242.98≈243=F3H
6 电路图(见附表)
8 程序
最终程序如下:
ORG 00H ;定义程序入口
JMP START ;跳转到START
START: MOV SCON,#50H ;设置程序控制器,使UART工作在方式1,允许串行接收,启动RXD,开始接收数据
(科教范文网http://fw.nseac.com)
MOV TMOD,#20H ;设置定时器,以运行控制位TR0(或TR1)启动或禁止定时器/计数器,选择定时工作方式,工作模式为模式2
MOV TH1,#0F3H ;设定波特率为2400
MOV TL1,#0F3H
SETB TR1 ;启动定时器1
SCAN0: MOV R3,#0F7H ;行扫描初始值
SCAN: JB RI,UART ;检测SCON的RI是否为1,是则表示接收到,跳转到UART
MOV R1,#00H ;TABLE取码指针
SCAN1: MOV A,R3 ;扫描输出
MOV P1,A ;将11110111给P1口
MOV A,P1 ;将检测后的结果给累加器A
MOV R4,A ;将检测的结果给R4,作后续对照
SETB C ;C=1
MOV R5,#04H ;设置循环扫描的次数,4次
L1: RLC A ;将A的值进行带进位的左循环移位,检测是否有按键
(科教范文网 lw.AsEac.com编辑整理)
JNC KEYIN &