33
8 1 显显显 显显显显显显显显显 一、 LED 显显显显显显显显显显 显显显 显显显 5V a bc d e f g dp a b a b c d e f g 显 8-1 显显显显显显显显显显 显显显 显显显显显显 显显显显显显显显

第八章 单片机应用系统的设计方法及实例

  • Upload
    hector

  • View
    117

  • Download
    8

Embed Size (px)

DESCRIPTION

第八章 单片机应用系统的设计方法及实例. 8 . 1 显示器、键盘与单片机的连接. 一、 LED 数码管与单片机的连接. 图 8-1 共阴极和共阳极数码管. 1 .静态显示. 图 8-2 静态显示原理. DISP : MOVR 0 , #50H ; R 0 指向第一个显示单元 MOVR 2 , #4 ;循环计数器赋初值 MOVR 3 , #0 ;显示位指针赋初值 LOOP : MOVA , @R 0 ANLA , #0FH ;取第 i 个显示单元的低 4 位 SWAPA - PowerPoint PPT Presentation

Citation preview

Page 1: 第八章 单片机应用系统的设计方法及实例

8 . 1 显示器、键盘与单片机的连接 一、 LED 数码管与单片机的连接

共阴极 共阳极 +5V

a b c d e f g dp(a) (b)

a b c d e f g dp

图 8-1 共阴极和共阳极数码管

第八章 单片机应用系统的设计方法及实例

Page 2: 第八章 单片机应用系统的设计方法及实例

1 .静态显示

e VCC

f dg ch+i bA a

B VCR

LE D

VSS C

8031P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

abcdfgdp

(a) (b)

图 8-2 静态显示原理

Page 3: 第八章 单片机应用系统的设计方法及实例

DISP : MOV R0 , #50H ; R0 指向第一个显示单元

MOV R2 , #4 ;循环计数器赋初值MOV R3 , #0 ;显示位指针赋初值LOOP : MOV A , @R0

ANL A , #0FH ;取第 i 个显示单元的低 4 位SWAP AORL A , R3 ;第 i 个显示单元的低 4

位送 R3 的高 4 位MOV P1 , A ;第 i 个显示单元的低 4

位送 R3 指出的数码管去显示MOV A , @R0

ANL A , #0F0H ;取第 i 个显示单元的高 4 位INC R3 ;指向下一个数码管ORL A , R3 ;第 i 个显示单元的高 4

位送 R3 指出的数码管去显示MOV P1 , A ;将第 i 个显示单元的高

4 位送到相应的数码管去显示INC R0 ;指向下一个显示单元INC R3 ;指向下一个 LED 数码

管DJNE R2 , LOOP ;未显示完 4 单元的 8 个 BCD 码,

返回继续显示RET

Page 4: 第八章 单片机应用系统的设计方法及实例

P1.7P1.6P1.5P1.4

8031P1.3P1.2P1.1P1.0

D C B A LE

G Y0A Y1B Y2C

Y7

D C B A LE D C B A LE

74LS138

MC14495 …

图 8-3 采用译码器的静态显示接口电路

Page 5: 第八章 单片机应用系统的设计方法及实例

2 .串行显示接口

8031

RXD

TXD

P1.0

AB CLK CLR AB CLK CLR AB CLK CLR

¡

74LS164

图 8-5 串行显示接口

Page 6: 第八章 单片机应用系统的设计方法及实例

DISP : SETB P1.0 ;选通显示器MOV SCON , #00H ;置串口方式 0

MOV R0 , #50H ; R0 指向第一个显示单元 MOV R2 , #4 ;循环计数器置初值 MOV DPTR , #TAB ; DPTR 指向第一个显示单元LOOP : MOV A , @R0

ANL A , #0FH ;取第 i 个显示单元的低 4 位 MOVC A , @A + DPTR ;查译码表 MOC SBUF , A ;第 i 个显示单元的低 4 位的显示码送串口缓

冲器WAIT1 :JNB TI , $ ;未发送完,等待 CLR TI ;清发送中断标志 MOV A , @R0

ANL A , #0F0H ;取第 i 个显示单元的高 4 位 SWAP A MOVC A , @A + DPTR ;查译码表 MOC SBUF , A ;第 i 个显示单元的高 4 位的显示码送串口缓

冲器WAIT2 :JNB TI , $ ;未发送完,等待 CLR TI ;清发送中断标志 INC R0

DJNZ R2 , LOOP ;未发送完 4 个单元的 8 个字符,返回继续RETTAB : DB 03H , 9FH , 25H , 0DH , 99H , DB 49H , 41H , 1FH , 01H , 19H

Page 7: 第八章 单片机应用系统的设计方法及实例

3 .动态扫描显示接口

P1.7 PI.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0AT89C2051

P3.3 P3.2 P3.1 P3.0

+5V

图 8-6 动态扫描显示接口电路

Page 8: 第八章 单片机应用系统的设计方法及实例

; ----------------- 主程序 ------------------STAR: ∶

∶LOOP:∶ACALLS00EF ;将显示缓冲区内容送去显示∶

∶SJMP LOOP; -------------- 送显示子程序 --------------DISP: CLR A

ORL A,P3 ;取 P3 口内容ANL A,#0F0HMOV R3,A ;保护 P3 口高 4 位MOV A,43H ;取位选信号ANL A,#0FH ;位选信号送 A 的低 4 位ORL A,R3 ; P3 口高 4 位送 A 的高

4 位MOV R0,34H ;取段选指针MOV P1,#0FFH ;关显MOV P3,A ;输出位选信号MOV A , @R0 ;显示内容送 AMOV DPTR,#TAB ;译码表首址送 DPTRMOVC A,@A+DPTR ;查表译显示码MOV P1,A ;输出段选信号 1

MOV A,43H ;RL A ;

MOV 43H,A ;位选指针指向下一位INC 34H ;段选指针指向下一位JB ACC.0,DONE ;不到最后一位,转MOV 34H,#50H ;段选指针复位MOV 43H,#0EEH ;位选指针复位

DONE: RET; ----------------- 显示译码表 ---------------TAB: DB 0C0H ;显示字符 0 ,相对地址 00HDB 0F9H ; 1DB 0A4H ; 2DB 0B0H ; 3DB 99H ; 4DB 92H ; 5DB 82H ; 6DB 0F8H ; 7DB 80H ; 8DB 90H ; 9

Page 9: 第八章 单片机应用系统的设计方法及实例

1G Vcc1A1 2G2Y4 1Y11A2 2A42Y3 1Y21A3 2A32Y2 1Y31A4 2A22Y1 1Y4GND 2A1

P1.0 P 1.1 P 1.2 P 1.3 P 1.4 P 1.5 P 1.6 P 1.7

8031

S1

S4S3S2

( a ) ( b )

图 8-7 按键与单片机直接连接

Page 10: 第八章 单片机应用系统的设计方法及实例

S1

S4S3S2

P0.0 P0.1 P0.2 P0.3

8031

P2.7 RD

1A1 1Y11A2 1Y21A3 1Y31A4 1Y4

1G

+5V

74LS244

图 9-8 带锁存器的按键与单片机的接口电路

Page 11: 第八章 单片机应用系统的设计方法及实例

两 ?次按键值不同吗

第一次发现键按下吗?

键有效标志=0吗 ?

?无键按下吗

置第一次发现键按下标志,存键值

清键有效标志

清第一次发现键按下标志,清键值下标志,保存键值

键处理

返回

开始

置键有效标志

键有效标志=1 ?吗

Y

Y

Y

Y

Y

图 8-9 按键接口程序流程图

Page 12: 第八章 单片机应用系统的设计方法及实例

程序如下:KSCAN : MOV DPTR , #7FFFH ;指向 244MOVX A , @DPTR ;读 244ANL A , #0FH ;取 4 个按键的值CJNE A , #0FH , LOOS ;无键按下,转去判断是否键放开JB 11H , L0475 ;键有效标志等于 1 ,等待键放开,返回JC 10H , SETSYN ;第一次发现键按下,转去置标志,存键值CJNE A , R4 , CLRSYN ;两次读得的按键值不同,键无效,清第一次发现键按下标志SETB 11H ;置键有效标志RETLOOS : JNB 11H , RETUR ;键有效标志等于 0 ,未按过键,返回

SJMP KEYDO ;键放开,转键处理SETSYN : SETB 10H ;置第一次发现键按下标志MOV R4 , A ;保存键值SJMP RETUR ;返回CLRK : CLR 11H ;清键有效标志CLRSYN : CLR 10H ;清第一次发现键按下标志MOV R4 , #00H ;清键值暂存单元RETKEYDO : RRC AJC JUS2 ;没按 S1 ,再判断 S2ALMP DOS1 ;转键 S1 处理程序JUS2 : JC JUS3 ;没按 S2 ,再判断 S3ALMP DOS2 ;转键 S2 处理程序JUS3 : JC JUS4 ;没按 S3 ,再判断 S4ALMP DOS3 ;转键 S3 处理程序JUS4 : JC RETUR ;没按 S4 ,误判断,退出

ALMP DOS4 ;转键 S4 处理程序DOS1 : …… ;键 S1 处理程序……SJMP RETURDOS2 : …… ;键 S2 处理程序……SJMP RETURDOS3 : …… ;键 S3 处理程序……SJMP RETURDOS4 : …… ;键 S4 处理程序……SJMP RETUR

Page 13: 第八章 单片机应用系统的设计方法及实例

三、 键盘与单片机的接口

P0.0

P0.1

P0.2

P0.3

P2.7

RD 8031

P0.0 P0.1

P0.2 P0.3

P0.4P0.5

P0.6P0.7

1Y11Y21Y31Y42Y12Y2 2Y32Y41G2G1A11A21A31A42A11A22A32A4

+5V

S8S1

S32S25

S24S17

S16S9

74LS244

图 8-10 键盘与单片机的接口电路

Page 14: 第八章 单片机应用系统的设计方法及实例

两次按键值不同吗?

第一次发现键按下吗?

键有效标志=0吗?

R2-1≠ 0吗?

置第一次发现键按下标志,存键值

清键有效标志

清第一次发现键按下标志,清键值下标志,保存键值

键处理

返回

开始

置键有效标志

键有效标志=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 键盘接口程序流程图

Page 15: 第八章 单片机应用系统的设计方法及实例

二、 A/D 转换器与单片机的接口

CS Vcc

RD CLKR

WR DB0

CLK DB1

INTR DB2

VIN(-)

VIN(+) DB4AGND DB5

VREF/2 DB6

DGND DB7

DB3

图 8-12 ADC0801 ~ ADC0805

P0.0

P0.1P0.2P0.3P0.4P0.5P0.6P0.7RDWRINT1P2.7

CLKR DB0CLKI DB1

DB2VREF/2 DB3

DB4VIN(+) DB5

DB6

VIN(-) DB7 RD

DGND WR INTR

AGND CS

10K

150P

NC

VIN ( 0 5V~ )

+

图 8-13 ADC0801 ~ 0805 与单片机的接口

Page 16: 第八章 单片机应用系统的设计方法及实例

8. 3 D/A转换器与单片机的连接一、 D/A 转换器的基本原理

…R

2R2R2R2R2R

2RRRRf

Vo

VR

d0 d1 d2 dn-1

图 8-14 T 型网络 D/A 转换器

Page 17: 第八章 单片机应用系统的设计方法及实例

二、 D/A 转换器与单片机的接口

1 .内部结构

八位输入锁存器

八位DAC寄存器

八位D/A转换器

CS Vcc

WR1 I LE

AGND WR2

DI3 XFER

DI2 DI4DI1 DI5

DI0 DI6

VREF DI7Rfb

IOUT1

DI0

DI7

I LE

CSWR1

WR2

ILE1 ILE2

XFER

DGND

IOUT2

AGND

Rfb

IOUT2

IOUT1

VREF

图 8-15 DAC0832 的引脚排列 图 8-16 DAC0832 结构图

Page 18: 第八章 单片机应用系统的设计方法及实例

3 .接口电路

( 1 ) 单缓冲器方式

P2.7

P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7

8031WR

CS VCCXFER ILE

DI0 VREF

DI1 Rfb

DI2DI3 IOUT1

DI4DI5 IOUT2

DI6DI7WR1WR2 DGND

+

-

+

-ab

+5V

图 8-17 DAC0832 与单片机的接口

Page 19: 第八章 单片机应用系统的设计方法及实例

( 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

XFERDI0DI1DI2DI3 0832DI4 (1)DI5DI6DI7WR1WR2 DGND

CS VCCXFER ILE

DI0DI1DI2DI3 0832DI4 (2)DI5DI6DI7WR1WR2 DGND

+5V

图 8-18 多路 DAC0832 同步转换的接口电路

Page 20: 第八章 单片机应用系统的设计方法及实例

程序如下:MOV DPTR , #0DFFFH ;指向 0832 ( 1 )MOV A , # data1MOVX @DPTR , A ; data1 送 0832 ( 1 )锁存器MOVX @DPTR , #0BFFFH ;指向 0832 ( 2 )MOV A , #data2MOVX @DPTR , A ; data2 送 0832 ( 2 )锁存器MOV DPTR , #7FFFH ;指向 0832 ( 1 )和 0832 ( 2 )的数据传送端MOVX @DPTR , A ; data1 和 data2 同时送 D/A 转换器进行转换

Page 21: 第八章 单片机应用系统的设计方法及实例

8. 4 MCS-51单片机应用系统设计举例

一、 系统构成及控制原理

1

2

3

4 5 6 7

8

8

9

图 8-19 糖果包装机的结构图

Page 22: 第八章 单片机应用系统的设计方法及实例

4 8

7

7

图 8–20 走纸轮的顶视图

Page 23: 第八章 单片机应用系统的设计方法及实例

v

Δ v

tΔφ

O

图 9-21 相位误差与速度误差

Page 24: 第八章 单片机应用系统的设计方法及实例

开始

初始化

周期误差超标吗?

改变速度

相位误差超标吗?

改变速度误差方向

Y

Y

图 8-22 控制流程图

Page 25: 第八章 单片机应用系统的设计方法及实例

二、 硬件电路

1 .主程序

图 9-23 硬件电路

Page 26: 第八章 单片机应用系统的设计方法及实例

初始化

开始

?没测到走纸信号吗

?没测到切纸信号吗

走纸早吗?

走纸慢小于 3 ?%吗走纸快小于 1 ?%吗

走纸晚小于 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 主程序流程图

Page 27: 第八章 单片机应用系统的设计方法及实例

------------- 初始化 ------------------ ORG 0000H AJMP ADR00 ORG 0003H CLR EX0 ;关外部中断 0 ,以防止脉冲抖动造成中断重复响应 AJMP INT0 ORG 000BH AJMP T0

ORG 0013H CLR EX1 ;关外部中断 1 AJMP INT1 ORG 001BH AJMP T1

ORG 0030HADR00: MOV R0,#20H ; 20H ~ 70H 单元清 0

MOV R1,#50H

CLR AADR10: MOV @R0,A

INC R0

DJNZ R1,ADR10

ACALL SUB1 ;清显示器 MOV SP,#5FH ;堆栈从 60H 开始 MOV SCON,#00H ;串行口置为方式 0

Page 28: 第八章 单片机应用系统的设计方法及实例

MOV A,43H ;相位滞后误差送 A ACALL SUB2 ;将 A 中绝对误差转为相对误差放在 R7 中 MOV A,R7

CLR C SUBB A,#2JNC ADR20 ;相位滞后小于 2% ,返回JB P1.0 , ADR75 ;电磁离合齿轮有电,转MOV R5 , 43H ;保存本次测量的相位误差SETB P1.0 ;电磁离合齿轮通电,提速 2%AJMP ADR20 ;返回ADR75 : MOV A , R5 ;取回上次测量的相位误差CLR CSUBB A , 43H ;减本次测量的相位误差进行比较JNC ADR20 ;本次测量的相位误差小,返回SETB P1.1 ;否则,胀紧电机正转,提速MOV R2,#06H ;设置最小提速量ACALL SUB3 ;延时 0.6秒CLR P1.1 ;停止胀紧电机正转AJMP ADR20; ------------------- 相位超前误差调整 -------------------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 CSUBB A , 42H ;减本次测量的误差JNC ADR20 ;本次测量的误差小,返回SETB P1.2 ;否则,胀紧电机反转,减速MOV R2,#06H ;设置最小减速量ACALL SUB3 ;延时 0.6秒CLR P1.2 ;停止胀紧电机反转AJMP ADR20

Page 29: 第八章 单片机应用系统的设计方法及实例

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 ;借位 INC R7 ;商加 1

AJMP ADR90 ;返回再减 ADR0C0:RET

Page 30: 第八章 单片机应用系统的设计方法及实例

( 2 ) R2×0.1秒延时子程序

R2×0.1秒延时子程序,用于控制 P1.1 和 P1.2 输出的脉冲宽度。程序如下:

SUB3: MOV R3,#64H

ADR0D0:MOV R4,#0F9H

ADR0E0:NOPNOPDJNZ R4,ADR0E0

DJNZ R3,ADR0D0

DJNZ R2,SUB3

RET

Page 31: 第八章 单片机应用系统的设计方法及实例

3 .中断服务程序

T0 、 T1 、 INT0 和 INT1 中断服务程序的流程图如图 9-25 ~图 9-28。

(36H ←) (36H)+1

定时器0赋初值

(37H ←) (37H)+1

定时器 1赋初值

返回 返回

开始开始

8- 图 25 T0 中断服务程序 图 8-26 T1 中断服务程序

Page 32: 第八章 单片机应用系统的设计方法及实例

(40H ←) ( 36H)(36H ←) 00H(42H ←) ( 37H)

(41H ←) ( 37H)(37H ←) 00H(43H ←) ( 36H)

(10H ←) 1

(11H ←) 1

显示缓冲区内容加 1

显示缓冲区内容送显

开始

开始

返回

返回

图 8-27 INT0 中断服务程序 图 8-28 INT1 中断服务程序

Page 33: 第八章 单片机应用系统的设计方法及实例

( 4 ) INT1 中断服务程序

INT1: PUSH PSW MOV 41H,37H ;取走纸周期 MOV 37H,#00H ;为下一次记数做准备 MOV 43H,36H ;取走纸滞后切纸的时间 MOV R5,#00H ;清监视计数器 SETB 11H ;置检测到走纸周期标志 SETB RS0 ;选中 1 区工作寄存器 MOV R1,#30H ; R1 个位ADR0F0:INC @R1 ;显示缓冲区某位加 1

CJNE @R1,#0AH,ADR180 ;加 1 后不到 10 ,退出 MOV @R1,#00H0 ;加 1 后等于 10 ,将该位清 0

INC R1 ;指向显示缓冲区下一位 CJNE R1,#36H,ADR0F0 ;不到显示缓冲区最高位,返回将下一位加 1

MOV R0,#2FH ;显示缓冲区位指针 R0 赋初值 MOV R2,#06H ;显示位数送 R2

ADR100:INC R0 ;指向显示缓冲区下一位 MOV DPTR,#ADR120 ;基址指针送指向显示译码表首址 MOV A,@R0 ;某位显示内容送 A

MOVC A,@A+DPTR ;显示内容译成显示码后 A MOV SBUF,A ;显示码通过串口送去显示ADR110:JNB TI,$ ;等待 1 个字节传送完毕 CLR TI ;清传送完标志,为下一次传送做准备 DJNZ R2,ADR100 ; 6 位没有全部显示完,返回继续显示CLR RS0 POP PSW SETB EX1 ;开外部中断 1 RETIADR120:DB 03H ;显示 0 DB 9FH ;显示 1 DB 25H DB 0DH DB 99H DB 49H DB 41H DB 1FH DB 01HDB 09H ;显示 9