单片机应用系统的设计方法及实例_第1页
单片机应用系统的设计方法及实例_第2页
单片机应用系统的设计方法及实例_第3页
单片机应用系统的设计方法及实例_第4页
单片机应用系统的设计方法及实例_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、81 显示器、键盘与单片机的连接 一、 led数码管与单片机的连接 共阴极共阳极 5v a b c d e f g dp (a)( b) a bc d e f g dp 图 8-1 共阴极和共阳极数码管 第八章 单片机应用系统的设计方法及实 例 1静态显示 evcc fd gc h+ib a a b vcr le d vss c 8031 p1.0 p1.1 p1.2 p1.3 p1.4 p1.5 p1.6 p1.7 a b c d f g dp (a)(b) 图 8-2 静态显示原理 disp:movr0,#50h;r0指向第一个显示单 元 movr2,#4;循环计数器赋初值 movr3,#

2、0;显示位指针赋初值 loop:mova,r0 anla,#0fh;取第i个显示单元的低4位 swapa orla,r3;第i个显示单元的低4位 送r3的高4位 movp1,a;第i个显示单元的低4位 送r3指出的数码管去显示 mova,r0 anla,#0f0h;取第i个显示单元的高4位 incr3;指向下一个数码管 orla,r3;第i个显示单元的高4位 送r3指出的数码管去显示 movp1,a;将第i个显示单元的高4 位送到相应的数码管去显示 incr0;指向下一个显示单元 incr3;指向下一个led数码管 djner2,loop;未显示完4单元的8个bcd码,返回 继续显示 ret

3、p1 .7 p1.6 p1.5 p1.4 8031 p1.3 p1.2 p1.1 p1.0 d c b a le g y0 a y1 b y2 c y7 d c b a le d c b a le 74ls138 mc14495 图 8-3 采用译码器的静态显示接口电路 2串行显示接口 8031 rxd txd p1.0 ab clk clrab clk clrab clk clr 74ls164 图 8-5 串行显示接口 disp:setbp1.0;选通显示器 movscon,#00h;置串口方式0 movr0,#50h;r0指向第一个显示单元 movr2,#4;循环计数器置初值 movdp

4、tr,#tab;dptr指向第一个显示单元 loop: mova,r0 anla,#0fh;取第i个显示单元的低4位 movca,adptr;查译码表 mocsbuf,a;第i个显示单元的低4位的显示码送串口缓冲 器 wait1: jnbti,$;未发送完,等待 clrti;清发送中断标志 mova,r0 anla,#0f0h;取第i个显示单元的高4位 swapa movca,adptr;查译码表 mocsbuf,a;第i个显示单元的高4位的显示码送串口缓冲 器 wait2: jnbti,$;未发送完,等待 clrti;清发送中断标志 incr0 djnzr2,loop;未发送完4个单元的8个

5、字符,返回继续 ret tab: db03h,9fh,25h,0dh,99h, db49h,41h,1fh,01h,19h 3动态扫描显示接口 p1.7 pi.6 p1.5 p1.4 p1.3 p1.2 p1.1 p1.0 at89c2051 p3.3 p3.2 p3.1 p3.0 +5v 图 8-6 动态扫描显示接口电路 ;-主程序- star: loop: acall s00ef;将显示缓冲区内容送去显示 sjmploop ;-送显示子程序- disp: clra orla,p3;取p3口内容 anla,#0f0h movr3,a;保护p3口高4位 mova,43h;取位选信号 anla,

6、#0fh;位选信号送a的低4位 orla,r3;p3口高4位送a的高4位 movr0,34h;取段选指针 movp1,#0ffh;关显 movp3,a;输出位选信号 mova,r0;显示内容送a movdptr,#tab;译码表首址送dptr movca,a+dptr;查表译显示码 movp1,a;输出段选信号1 mova,43h; rla; mov43h,a;位选指针指向下一位 inc34h;段选指针指向下一位 jb acc.0,done;不到最后一位,转 mov34h,#50h;段选指针复位 mov43h,#0eeh;位选指针复位 done: ret ;-显示译码表- tab:db 0c0

7、h;显示字符0,相对地址00h db 0f9h;1 db 0a4h;2 db 0b0h;3 db 99h;4 db 92h;5 db 82h;6 db 0f8h;7 db 80h;8 db 90h;9 1g vcc 1a12g 2y41y1 1a22a4 2y31y2 1a32a3 2y21y3 1a42a2 2y11y4 gnd 2a1 p1.0 p1.1 p1.2 p1.3 p1.4 p1.5 p1.6 p1.7 8031 s1 s4 s3 s2 ( a )( b ) 图 8-7 按键与单片机直接连接 s1 s4 s3 s2 p0 .0 p0.1 p0.2 p0.3 8031 p2.7 r

8、d 1a1 1y1 1a21y2 1a31y3 1a41y4 1g +5v 74ls244 图 9-8 带锁存器的按键与单片机的接口电路 两次按键值不同吗? 第一次发现键按下吗 ? 键有效标志 =0吗 ? 无键按下吗? 置第一次发现键 按下标志,存键值 清键有效标志 清第一次发现键 按下标志,清键值 下标志,保存键值 键处理 返回 开始 置键有效标志 键有效标志 =1吗? y y y y y 图 8-9 按键接口程序流程图 程序如下: kscan:movdptr,#7fffh;指向244 movxa,dptr;读244 anl a,#0fh;取4个按键的值 cjnea,#0fh,loos ;无

9、键按下,转去判断是否键放开 jb11h,l0475;键有效标志等于1,等待键放开,返回 jc10h,setsyn;第一次发现键按下,转去置标志,存键值 cjnea,r4,clrsyn ;两次读得的按键值不同,键无效,清第一次发现键按下标志 setb11h;置键有效标志 ret loos:jnb11h,retur;键有效标志等于0,未按过键,返回 sjmpkeydo;键放开,转键处理 setsyn:setb10h;置第一次发现键按下标志 movr4,a;保存键值 sjmpretur;返回 clrk:clr11h;清键有效标志 clrsyn:clr10h;清第一次发现键按下标志 movr4,#00

10、h;清键值暂存单元 ret keydo:rrca jcjus2;没按s1,再判断s2 almpdos1;转键s1处理程序 jus2:jcjus3;没按s2,再判断s3 almpdos2;转键s2处理程序 jus3:jcjus4;没按s3,再判断s4 almpdos3;转键s3处理程序 jus4:jcretur;没按s4,误判断,退出 almpdos4;转键s4处理程序 dos1:;键s1处理程序 sjmpretur dos2:;键s2处理程序 sjmpretur dos3:;键s3处理程序 sjmpretur dos4:;键s4处理程序 sjmpretur 三、 键盘与单片机的接口 p0 .0

11、 p0.1 p0.2 p0.3 p2.7 rd 8031 p0.0 p0.1 p0.2 p0.3 p0.4 p0.5 p0.6 p0.7 1y11y2 1y31y42y12y2 2y32y4 1g 2g 1a11a21a31a42a11a2 2a3 2a4 +5v s8s1 s32s25 s24s17 s16s9 74ls244 图 8-10 键盘与单片机的接口电路 两次按键值不同吗? 第一次发现键按下吗? 键有效标志=0 吗? r2 1 0 吗? 置第一次发现键 按下标志,存键值 清键有效标志 清第一次发现键 按下标志,清键值 下标志,保存键值 键处理 返回 开始 置键有效标志 键有效标志=

12、1 吗? 向所有的行输出0 读入各列的值 全为1吗? 向第i 行输出0 i i+1 读入各列的值 有0 吗? 第j 列等于0 吗? j j+1 r3 1 0 吗? r2 行数 r3 列数 y y y y y y y y y 图 8-11 键盘接口程序流程图 二、 a/d转换器与单片机的接口 cs vcc rd clkr wr db0 clkdb1 intr db2 vin() vin() db4 agnd db5 vref/2 db6 dgnd db7 db3 图 8-12 adc0801adc0805 p0.0 p0.1 p0.2 p0.3 p0.4 p0.5 p0.6 p0.7 rd wr

13、 int 1 p2.7 clkrdb0 clki db1 db2 vref/2 db3 db4 vin(+) db5 db6 vin(-) db7 rd dgnd wr intr agnd cs 10k 150p nc vin( 05v) + 图 8-13 adc08010805与单片机的接口 83 d/a转换器与单片机的连接转换器与单片机的连接 一、 d/a转换器的基本原理 r r 2 2r r2 2r r2 2r r2 2r r2 2r r 2 2r rr rr r r rf f v vo o v vr r d d0 0 d d1 1 d d2 2 d dn n- -1 1 图 8-14

14、t型网络d/a转换器 二、 d/a转换器与单片机的接口 1内部结构 八位 输入 锁存 器 八位 dac 寄存 器 八位 d/a 转换 器 cs vcc wr1 ile agnd wr2 di3xfer di2 di4 di1 di5 di0 di6 vref di 7 rfb iout1 di0 di7 ile cs wr1 wr2 ile1ile2 xfer dgnd iout2 agnd rfb iout2 iout1 vref 图 8-15 dac0832的引脚排列 图 8-16 dac0832结构图 3接口电路 (1) 单缓冲器方式 p2.7 p0.0 p0.1 p0.2 p0.3 p

15、0.4 p0.5 p0.6 p0.7 8031 wr cs vcc xfer ile di0 v ref di1 r fb di2 di3 i out1 di4 di5 iout2 di6 di7 wr1 wr2dgnd + + - - + + - - a b +5v 图 8-17 dac0832与单片机的接口 (2) 双缓冲器方式 p2 .5 p2 .6 p2 .7 p 0.0 p 0.1 p 0.2 8031 p 0.3 p 0.4 p 0.5 p 0.6 p 0.7 wr cs vcc ile xfer di0 di1 di2 di30832 di4( 1) di5 di6 di7 wr

16、1 wr2 dgnd cs vcc xfer ile di0 di1 di2 di30832 di4( 2) di5 di6 di7 wr1 wr2dgnd +5v 图 8-18 多路dac0832同步转换的接口电路 程序如下: mov dptr,#0dfffh ;指向0832(1) mov a,# data1 movx dptr,a ;data1送0832(1)锁存器 movx dptr,#0bfffh ;指向0832(2) mov a,#data2 movx dptr,a ;data2送0832(2)锁存器 mov dptr,#7fffh ;指向0832(1)和0832(2)的数据传送端

17、movx dptr,a ;data1和data2同时送d/a转换器进行转换 84 mcs-51单片机应用系统设计举例单片机应用系统设计举例 一、 系统构成及控制原理 1 2 3 4 5 6 7 8 8 9 图 8-19 糖果包装机的结构图 4 8 7 7 图 820 走纸轮的顶视图 v v t o 图 9-21 相位误差与速度误差 开始 初始化 周期误差超标吗? 改变速度 相位误差超标吗? 改变速度误差方向 y y 图 8-22 控制流程图 二、 硬件电路 1主程序 图 9-23 硬件电路 初始化 开始 没测到走纸信号吗? 没测到切纸信号吗? 走纸早吗? 走纸慢小于 3 吗? 走纸快小于 1吗

18、? 走纸晚小于 2 吗? 电磁离合齿轮通电,提速 2 走纸晚减少了吗? 胀紧皮带轮电机正转秒,提速 1 走纸早小于 2 吗? 走纸快吗? 电磁离合齿轮断电,减速 2 走纸早减少了吗? 胀紧皮带轮电机反转 秒,减速 1 走纸快 x,胀紧皮带轮 电机反转x 秒,减速 x走纸慢 y,胀紧皮带轮 电机正转y秒,提速 y 电磁齿轮有电吗? 电磁齿轮没电吗? y y y y y y y y y y y y 图 8-24 主程序流程图 -初始化- org 0000h ajmp adr00 org 0003h clr ex0 ;关外部中断0,以防止脉冲抖动造成中断重复响应 ajmp int0 org 000b

19、h ajmp t0 org 0013h clr ex1 ;关外部中断1 ajmp int1 org 001bh ajmp t1 org 0030h adr00: mov r0,#20h ;20h70h单元清0 mov r1,#50h clr a adr10: mov r0,a inc r0 djnz r1,adr10 acall sub1 ;清显示器 mov sp,#5fh ;堆栈从60h开始 mov scon,#00h ;串行口置为方式0 mov a,43h ;相位滞后误差送a acall sub2 ;将a中绝对误差转为相对误差放在r7中 mov a,r7 clr c subb a,#2 j

20、nc adr20 ;相位滞后小于2%,返回 jb p1.0,adr75 ;电磁离合齿轮有电,转 mov r5,43h ;保存本次测量的相位误差 setb p1.0 ;电磁离合齿轮通电,提速2% ajmp adr20 ;返回 adr75:mov a,r5 ;取回上次测量的相位误差 clr c subb a,43h ;减本次测量的相位误差进行比较 jnc adr20 ;本次测量的相位误差小,返回 setb p1.1 ;否则,胀紧电机正转,提速 mov r2,#06h ;设置最小提速量 acall sub3 ;延时0.6秒 clr p1.1 ;停止胀紧电机正转 ajmp adr20 ;-相位超前误差

21、调整- adr80:mov a,42h ;相位超前误差送a acall sub2 ;将a中绝对误差转为相对误差放在r7中 mov a,r7 clr c subb a,#2 jc adr20 ;相位超前误差小于2%,返回 jnb p1.0,adr85 ;电磁离合齿轮未通电,转取比较两次测量的误差 mov r6,42h ;保存本次测量的误差 clr p1.0 ;电磁离合齿轮断电,减速2% ajmp adr20 ;返回 adr85:mov a,r6 ;取回上次测量的误差 clr c subb a,42h ;减本次测量的误差 jnc adr20 ;本次测量的误差小,返回 setb p1.2 ;否则,胀

22、紧电机反转,减速 mov r2,#06h ;设置最小减速量 acall sub3 ;延时0.6秒 clr p1.2 ;停止胀紧电机反转 ajmp adr20 2子程序 1)绝对误差转换为相对误差子程序 sub2: mov b,#64h mul ab mov r7,#00h adr90: clr c subb a,41 ;误差的百分数减切纸周期 jc adr0a0 ;不够减,转 inc r7 ;够减,商加1 ajmp adr90 ;返回再减 adr0a0: mov r6,b cjne r6,#00h,adr0b0 ajmp adr0c0 ;无位可借,除法结束 adr0b0:dec b ;借位 i

23、nc r7 ;商加1 ajmp adr90 ;返回再减 adr0c0:ret (2)r20.1秒延时子程序 r20.1秒延时子程序,用于控制p1.1和p1.2输出的脉冲宽度。 程序如下: sub3: mov r3,#64h adr0d0:mov r4,#0f9h adr0e0:nop nop djnz r4,adr0e0 djnz r3,adr0d0 djnz r2,sub3 ret 3中断服务程序 t0、t1、int0和int1中断服务程序的流程图如图9-25图9-28。 (36h)( 36h)1 定时器0赋初值 (37h)( 37h)1 定时器1赋初值 返回 返回 开始 开始 8-图25 t0中断服务程序 图 8-26 t1中断服务程序 ( 40h )(36h ) ( 36h ) 00h ( 42h )(37h ) ( 41h )(37h ) ( 37h ) 00h ( 43h )(36h ) ( 10h ) 1 ( 11h ) 1

温馨提示

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

评论

0/150

提交评论