单片机原理与应用技术第10章

上传人:guoc****ang 文档编号:118576170 上传时间:2022-07-12 格式:PPT 页数:129 大小:1.18MB
收藏 版权申诉 举报 下载
单片机原理与应用技术第10章_第1页
第1页 / 共129页
单片机原理与应用技术第10章_第2页
第2页 / 共129页
单片机原理与应用技术第10章_第3页
第3页 / 共129页
资源描述:

《单片机原理与应用技术第10章》由会员分享,可在线阅读,更多相关《单片机原理与应用技术第10章(129页珍藏版)》请在装配图网上搜索。

1、http:/ 10.1 单片机应用系统概述单片机应用系统概述 n10.2 10.2 键盘接口键盘接口 n10.3 10.3 显示器接口显示器接口 n10.4 10.4 数数/模转换接口模转换接口 n10.5 10.5 模模/数转换接口数转换接口 n10.6 10.6 单片机应用系统实例单片机应用系统实例 n本章小结本章小结n习题习题 http:/ 10.1.1 单片机应用系统的结构单片机应用系统的结构 n10.1.2 10.1.2 单片机应用系统的设计方法单片机应用系统的设计方法 n10.1.3 10.1.3 单片机应用系统的开发工具单片机应用系统的开发工具 http:/ 对象 其他计算机系统

2、或智能设备 单片机 MCU EEPROM 人机通道 RAM 输出通道 输入通道 通信接口 输入/输出设备 传感器等 执行机构 单片机典型应用系统的结构 http:/ 户 系 统 仿 真 头 PC 仿真器 单片机的在线仿真http:/ 编 程 器 芯 片 座 编程器与计算机的连接http:/ 10.2.1 键盘的结构与原理键盘的结构与原理 n10.2.2 10.2.2 独立式键盘应用实例独立式键盘应用实例 n10.2.3 10.2.3 矩阵式键盘应用实例矩阵式键盘应用实例 http:/ 结构如下图所示,其特点是每个按键单独占用一根I/O口线,每个按键工作不会影响其他I/O口线的状态。多用于所需按

3、键不多的场合。可采用JNB(或JB)来查询哪一个按键按下,并转向相应的功能处理程序。JNB P1.0,A0 ;JNB P1.0,A0 ;如如P1.0P1.0键按下键按下,就跳到就跳到A0A0 JNB P1.1,A1 ;JNB P1.1,A1 ;如如P1.1P1.1键按下键按下,就跳到就跳到A1A1 JNB P1.2,A2 ;JNB P1.2,A2 ;如如P1.2P1.2键按下键按下,就跳到就跳到A2A2 JNB P1.3,A3 ;JNB P1.3,A3 ;如如P1.3P1.3键按下键按下,就跳到就跳到A3A3 JNB P1.4,A4 ;JNB P1.4,A4 ;如如P1.4P1.4键按下键按下

4、,就跳到就跳到A4A4 JNB P1.5,A5 ;JNB P1.5,A5 ;如如P1.5P1.5键按下键按下,就跳到就跳到A5A5 JNB P1.6,A6 ;JNB P1.6,A6 ;如如P1.6P1.6键按下键按下,就跳到就跳到A6A6 JNB P1.7,A7 ;JNB P1.7,A7 ;如如P1.7P1.7键按下键按下,就跳到就跳到A7A7 8031 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 VCC http:/ 单片机系统中,若使用按键较多时,通常采用矩阵式键盘,其结构如下图所示。由图可知,一个44的行、列结构,可以构成一个含有16个按键的键盘,节省

5、了很多I/O口。l控制方式:先判断是否有键按下。如有,再判断哪一键按下,并得到 键码值,然后根据键码值转向不同 的功能程序。l矩阵式结构键盘比独立式按键要复 杂,识别也要复杂一些。最常用的 识别方法是键盘扫描法,将在 10.2.3小节进行具体说明。P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 +5V 10k 10k 10k 10k 89S51 http:/ 2 3 UA 4 5 6 UB S GND+5V Q a b 1k1k双稳态去抖动电路http:/ 0000H CLR P1.0 ;使发光二极管灭NEXT:SETB P1.1 ;先对P1.1写1 JB P1

6、.1,L1;开关断开,跳至L1 SETB P1.0 ;开关合上,发光二极管亮 SJMP NEXT L1:CLR P1.0 ;开关断开,发光二极管灭 SJMP NEXT ENDhttp:/ 30pF 12MHz GND EA/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 PSEN ALE/P

7、 TXD RXD U 89S51 10F VCC VCC S 470 1 2 U1A 74LS04 VCC 4.7k VCC GND X1 X2 X1 X2 LED 开关监视控制电路图 http:/ EA/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24

8、 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U 89S51 30pF 30pF 10F 12MHz 1 2 U1A 3 4 U1B 5 6 U1C 8 9 U1D 1 2 U2A 3 4 U2B 5 6 U2C 8 9 U2D S0 S1 S2 S3 GND GND VCC VCC 4708 VCC P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P20 P21 P22 P23 P24 P25 P26 P27 4.7k4 VCC LED http:/ http:/ 0000H MOV S

9、P,#60H MOV P2,#00H MOV P1,#0FH START:JNB P1.0,A0 ;如P1.0键按下,就跳至A0 JNB P1.1,A1 ;如P1.1键按下,就跳至A1 JNB P1.2,A2 ;如P1.2键按下,就跳至A2 JNB P1.3,A3 ;如P1.3键按下,就跳至A3 SJMP START*左移*A0:MOV DPTR,#TAB ;左移常数表首地址送DPTR ACALL DISP SJMP START*右移*A1:MOV DPTR,#TAB1 ;右移常数表首地址送DPTR ACALL DISP SJMP START*闪烁*A2:MOV DPTR,#TAB2 ;闪烁常

10、数表首地址送DPTR ACALL DISP SJMP START 信号灯控制参考程序http:/ DPTR,#TAB3 ;流水追逐常数表首地址送DPTR ACALL DISP SJMP START*LED显示控制子程序*功能:根据常数表控制P2口的LED发光 入口:常数表的地址送到DPTR 出口:无*DISP:CLR A MOVC A,A+DPTR CJNE A,#0AH,LOOP1 RET LOOP1:MOV P2,A MOV R3,#20 ACALL DELAY INC DPTR JMP DISP 信号灯控制参考程序http:/ R4,#20 D1:MOV R5,#248 DJNZ R5,

11、$DJNZ R4,D1 DJNZ R3,DELAY RET TAB:DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0AH ;左移 TAB1:DB 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH,0AH ;右移 TAB2:DB 0FFH,00H,0FFH,00H,0FFH,00H,0FFH,00H,0AH ;闪烁 TAB3:DB 01H,02H,06H,08H,10H,20H,60H,80H,0AH ;流水追逐 END信号灯控制参考程序l说明:本例中,根据所按下的键输入不同的常数表地址到DPTR,然后再调用显示子程序(DPTR为DISP程序

12、的入口条件),从而根据不同的参数控制发光二极管的变化规律。显然通过改变常数表可任意设定发光规律,读者可以试一下。调用子程序,可使程序设计实现模块化,但必须明确子程序的功能、入口和出口参数。l通过以上两个实例可以看出独立式键盘应用的特点:识别键盘比较容易,编程也比较简单,很适合于功能键较少的单片机应用系统。但每一个按键上用一根口线,当按键较多时(超过8个)应采用矩阵式键盘。http:/ 其方法为:P1.0P1.3输出0,然后读P1口,若高4位P1.4P1.7全为1,则键盘上没有闭合键,若P1.4P1.7不全为1,则有键处于闭合状态。(2)去除键的机械抖动 其方法为:当判别到键盘上有键闭合后,延时

13、一段时间再判别键盘的状态,若仍有键闭合,则认为键盘上有一个键处于稳定的闭合状态,否则认为键抖动。http:/ 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 1

14、1 RXD 10 U 89S51 30pF 30pF 10F 12MHz GND VCC VCC S 1k 1k GND RESET RESET X1 X2 X1 X2 1 2 3 4 5 6 7 8 9 0 enter clr s _+#P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 VCC 44键盘硬件电路图 http:/ 其方法为:对键盘的行线进行扫描,P1.3P1.0依次循环输出1110、1101、1011和0111,相应地读P1口,若高4位P1.7P1.4全为“1”,则说明

15、该行上没有键闭合;否则,这一行上有键闭合,而且就是行线为0,列线为0的交叉键。高4位和低四位合并即得到键码值。例如,P1.3P1.0输出“1110”时,读入P1.7P1.4为“1101”时,即不全为“1”,说明有键按下,那一个键呢?显然是P1.0与P1.5交叉的键。将高四位和低四位合并后的值为“11011110”;也就是该键的键码值。依此类推可得各键的健码值。各键和对应的键码值如下图所示。(4)使CPU对键的一次闭合仅作一次处理 采用的方法是等待闭合键释放以后再作处理。http:/ 10110111 11010111 11100111 01111011 10111011 11011011 11

16、101011 01111101 10111101 11011101 11101101 01111110 10111110 11011110 11101110 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.76S+90enterClr5781234#各键和对应的键码值 l44键盘参考程序如下。该程序可作为子程序来调用,入口参数无,出口参数为键码值,存于A。l本例的另一种实现方法:以上程序所得到的键码值,离散性较大,不利于用指令对按键进行处理。可采用按键编码为依次排列键号的程序设计方法。详见教材,这里不再赘述。http:/ KEY:MOV P1,#0F0H ;P1.0P1.3输出0

17、,P1.4P1.7输出1 MOV A,P1 ;读键盘,检测有无键按下 ANL A,#0F0H ;屏蔽P1.0P1.3,检测P1.4P1.7是否全为1 CJNE A,#0F0H,HAVE ;P1.4P1.7不全为1,有键按下 SJMP KEY ;P1.4P1.7全为1,无键按下,重新检测键盘 HAVE:MOV A,#0FEH ;有键按下,逐行扫描键盘,置扫描初值 NEXT:MOV B,A ;扫描码暂存于B MOV P1,A ;输出扫描码 READ:MOV A,P1 ;读键盘 ANL A,#0F0H ;屏蔽P1.0P1.3,检测P1.4P1.7是否全为1 CJNE A,#0F0H,YES ;P1.

18、4P1.7不全为1,该行有键按下 MOV A,B ;被扫描行无键按下,准备查下一行 RL A ;置下一行扫描码 CJNE A,#0EFH,NEXT ;未扫描到最后一行,则循环 YES:ACALL DELAY ;延时,去抖动 http:/ A,P1 ;再读键盘 ANL A,#0F0H ;屏蔽P1.0P1.3,保留P1.4P1.7(列码)MOV R2,A ;暂存列码 MOV A,B ANL A,#0FH ;取行扫描码 ORL A,R2 ;行码、列码合并为键码 PUSH A ;键码入堆栈 KS:ACALL DELAY ;延时 MOV P1,#0F0H ;P1.0P1.4为0,检测键是否放开 MOV

19、A,P1 ;读P1 CPL A ;键如果已松开,取反后P1高四位全为0 ANL A,#0F0H ;保留高四位 JNZ KS ;判断,键松开则返回,否则继续等待 POP A ;弹出键码 RET ;返回 DELAY:MOV R7,#60 ;延时子程序 D2:MOV R6,#248 DJNZ R6,$DJNZ R7,D2 RET END44键盘参考程序 http:/ LED10.3.1 LED显示器的结构与原理显示器的结构与原理 n10.3.2 LED10.3.2 LED显示器静态显示及应用实例显示器静态显示及应用实例 n10.3.3 LED10.3.3 LED显示器动态显示及应用实例显示器动态显示

20、及应用实例 n10.3.4 LCD10.3.4 LCD显示器的结构与原理及应用显示器的结构与原理及应用 http:/ 共阴极数码管 共阳极数码管 a b c d e f g dp GND a b c d e f g dp+5V a b f c g d e 3 COM e 1 d 2 c 4 dp 5 b 6 a 7 8 f 9 g 10 COM(a)(b)(c)http:/ 段 符 号十六进制代码dp gfedcba共阴极共阳极0123456789AbCdEFHP000000000000000000001111101111011111100011101111101111101000101011

21、1111111011011011011110001101111111110100101111100111100100111011011111101011013FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H76HF3HC0HF9HA4HB0H99H92H82HF8H80H90H88H83HC6HA1H86H8EH89H8CHhttp:/ 30pF 30pF 12MHz GND EA/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3

22、P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 89S51 10F VCC VCC X1 X2 X1 X2 1 2 3 U1A 4 5 6 U1B 74ALS00 S 1k 1k VCC D0 3 Q0 2 D1 4 Q1 5 D2 7 Q2 6 D3 8 Q3 9 D4 13 Q4 12 D5

23、 14 Q5 15 D6 17 Q6 16 D7 18 Q7 19 OE 1 LE 11 U2 74LS373 GND GND VCC 3007 a b f c g d e DPY dp a 7 b 6 c 4 d 2 e 1 f 9 g 10 3 LED GND http:/ 000H AJMP MAIN ORG 0013H AJMP INT1 ;外部中断1入口地址*主程序*MAIN:SETB EA ;开通中断开关 SETB EX1 ;开外部中断 SETB IT1 ;下降沿触发 MOV R0,#0 ;计数指针清0 MOV P1,#3FH ;开始显示0 MOV DPTR,#TAB ;字形码地址

24、送DPTR SJMP$;等待中断(开关来回拨动一次产生一次中断)*外部中断处理程序*INT1:INC R0 ;开关每来回拨动一次计数指针加1 MOV A,R0 MOVC A,A+DPTR ;查字形码 MOV P1,A ;字形码送P1显示 CJNE R0,#0FH,RE;是否等于15次 MOV R0,#00H ;计数指计清0 RE:RETI TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;字形码 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H END一位数码管显示参考程序http:/ 扫描显示电路 30pF 30pF 12MHz GND EA

25、/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 89S51 10F VCC X1 X2 X1 X2 1 2 3 U1A 4 5

26、 6 U1B S 1k 1k GND VCC VCC 1A1 2 1A2 4 1A3 6 1A4 8 2A1 11 2A2 13 2A3 15 2A4 17 1Y1 18 1Y2 16 1Y3 14 1Y4 12 2Y1 9 2Y2 7 2Y3 5 2Y4 3 1G 1 2G 19 U2 74LS244 3 U3B 7407 1 23 U3A 7407 1k 1k VCC 3007 GND a b f c g d e DPY dp a 7 b 6 c 4 d 2 e 1 f 9 g 10 LED1 a b f c g d e DPY dp a 7 b 6 c 4 d 2 e 1 f 9 g 1

27、0 34 LED0 http:/ 30H ;个位显存 AD1EQU 31H ;十位显存 ORG 0000H AJMP MAIN ORG 0013H ;外部中断入口地址 AJMP INT1 *主程序*MAIN:MOV SP,#60HMOV AD0,#0 ;显存清0MOV AD1,#0 SETB EA ;开通中断开关SETB EX1 ;开外部中断SETB IT1 ;下降沿触发 LOOP:MOV R2,#0FDH ;显示位码(十位)初值送R2ACALL DISP ;调两位显示子程序SJMP LOOP两位数码管动态扫描显示参考程序http:/ AD0 ;每中断一次(开关来回拨动一次)计数加1MOV A

28、,AD0 CJNE A,#10,LOOP1;个位小于10?MOV AD0,#0 ;等于10,个位调整为0十位加1INC AD1MOV A,AD1CJNE A,#10,LOOP1 ;计数是否等于100?MOV AD1,#0 ;等于100,个位十位调整为0LOOP1:RETI ;返回 两位数码管动态扫描显示参考程序http:/ DPTR,#TAB ;字形码首地址MOV R0,#AD1 ;十位显存地址送R0NEXT:MOV A,R0 MOVC A,A+DPTR ;查字形码MOV P1,A ;字形码送P1MOV P2,R2 ;位显码送P2ACALL DELAY ;延时DEC R0 ;指向下一地址MOV

29、 A,R2 RR A ;指向下一位显MOV R2,A CJNE R2,#07FH,NEXT ;2位数码显示完?RET ;显示完返回DELAY:;延时子程序(略)TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;字形码两位数码管动态扫描显示参考程序http:/ In2O3或SnO2透明导电层,即ITO膜层。经光刻加工制成透明导电图形。这些图形由像素图形和外引线图形组成。因此,外引线不能进行传统的锡焊,只能通过导电橡胶条或导电胶带等进行连接。如果划伤、割断或腐蚀,则会造成器件报废。http:/ 液晶显示器的结构图 http:/ 从显示的形式上通常可分笔

30、段型、字符型和点阵图形型。笔段型。笔段型 LCD是以长条状显示像素组成一位显示。在形状上总是围绕数字“8”的结构变化,广泛用于电子表、数字仪表中。字符型。字符型液晶显示模块是专门用来显示字母、数字、符号等的点阵型液晶显示模块。在电极图形设计上它是由若干个 5 8或 511点阵组成,每一个点阵显示一个字符。这类模块广泛应用于寻呼机、手机、电子记事本等类电子设备中。点阵图形型。点阵图形型是在一平板上排列多行和多列,形成矩阵形式的晶格点,点的大小可根据显示的清晰度来设计。这类液晶显示器可广泛用于图形显示如游戏机、笔记本电脑和彩色电视等设备中。http:/ l液晶显示器件在使用时必须选配相应的控制器和

31、驱动器才能工作。l将液晶显示器件、控制器、PCB线路板、背光源、结构件装配在一起的组件称之为液晶显示模块。只需通过控制器接口外接数字信号或模拟信号即可驱动LCD显示。因液晶显示模块使用方便、简洁,在字符型LCD和点阵图形型LCD中得到广泛应用。http:/ ICM7211是MAXIM公司推出的四位七段码LCD液晶显示驱动器。该器件内部含有输入数据锁存器、BCD码到七段码的译码器、基准时钟信号发生器和位选电路。采用40脚双列直插式封装。ICM7211中的RC振荡器的工作方式:将36脚悬空可产生19kHz方波信号;如果希望用较低的频率来驱动大显示器,可在36脚与1脚或35脚之间接一个电容,外接电容

32、越大,频率越小;也可以在36脚接一个外部时钟源来激励振荡器。如果将36脚接地,那么BP脚将作输入用,此时可用另一片ICM7211的背极输出来驱动,这种情况一般适用于两片ICM7211级联的情况。http:/ ICM7211(A)M接口使用的位选信号是两条地址线和两条片选信号线,其真值表如下表所示。DS2DS1CS2CS1功 能0000数据存储在D40100数据存储在D31000数据存储在D21100数据存储在D2XX其他未选中ICM7211(A)M真值表http:/ DPTR,A”时,WR送出一负脉冲使CS2有效,从而选中ICM7211(A)M。http:/ DPTR,A”控制LCD的显示。这

33、种程序设计方法巧妙地将BCD码值作为低位地址,而将ICM7211作为“只写”外部RAM使用,这一设计大大地简化了显示子程序设计。30pF 30pF 12MHz GND EA/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P

34、26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 89S51 10F Vcc VCC X1 X2 X1 X2 1 2 3 U1A 4 5 6 U1B 74ALS00 S 1k 1k GND VCC B4 21 F3 19 C4 22 G3 18 D2 9 C2 8 B2 7 A2 6 V+1 F1 4 G1 3 E1 2 D1 40 C1 39 E3 17 B1 38 A1 37 OSC 36 A4 20 CS2 34 CS1 33 DS2 32 DS1 31 B0 27 B1 28 D3 16 B2 29 B3 30 F4 26 G4 25 E4

35、24 D4 23 C3 15 B3 14 A3 13 F2 12 G2 11 E2 10 GND 35 BP 5 U2 ICM7211AM GND VCC B4 21 F3 19 C4 22 G3 18 D2 9 C2 8 B2 7 A2 6 F1 4 G1 3 E1 2 D1 40 C1 39 E3 17 B1 38 A1 37 A4 20 D3 16 F4 26 G4 25 E4 24 D4 23 C3 15 B3 14 A3 13 F2 12 G2 11 E2 10 COM 1 U3 YXY4501 LCD显示器接口电路http:/ EQU 30H ;个位计数及显存地址 D1 EQU 3

36、1H ;十位计数及显存地址 D2 EQU 32H ;百位计数及显存地址 D3 EQU 33H ;千位计数及显存地址 AD0 EQU 40H ;存放个位显示选通码地址 AD1 EQU 41H ;存放十位显示选通码地址 AD2 EQU 42H ;存放百位显示选通码地址 AD3 EQU 43H ;存放千位显示选通码地址 ORG 0000H AJMP MAIN ORG 0013H LJMP INT1 ORG 0030H MAIN:MOV SP,#60H MOV AD0,#03H ;个位显示选通码 MOV AD1,#02H ;十位显示选通码 MOV AD2,#01H ;百位显示选通码 MOV AD3,#

37、00H ;千位显示选通码 SETB EA ;开通中断 SETB IT1 ;下跳沿触发 SETB EX1 ;开通外部中断1参考程序http:/ R2,#4 ;显示4位 MOV R0,#D0 ;显存首地址送R0 MOV R1,#AD0 ;选通码首地址送R0 LOOP:MOV A,R1 MOV DPH,A ;显示位码送高八位 MOV A,R0 MOV DPL,A ;要显示的数据送低八位 MOVX DPTR,A ;靠地址码控制显示 INC R0 INC R1 DJNZ R2,LOOP SJMP DISPLAY*外部中断处理程序,完成计数指针加1并进行各位计数指针的调整(最大只能到9)*(略,可参考例9

38、)END参考程序http:/ 10.4.1 数数/模转换器概述模转换器概述 n10.4.2 10.4.2 数数/模转换芯片应用实例模转换芯片应用实例http:/ 有关D/A转换器的技术性能指标很多,例如绝对精度、相对精度、线性度、输出电压范围、温度系数、输入数字代码种类(二进制或BCD码)等。D/A转换器与接口有关的技术性能指标:l分辩率。数/模转换的分辩率是指最小输出电压(对应的输入二进制数为1)与最大输出电压(对应的输入二进制数的所有位全为1)之比。例如8位数的分辨率为1/2560.004,10位数分辨率为1/1024,约等于0.001。由此可见数字量位数越多,分辨率也就越高。分辨率通常用

39、数字输入信号的位数表示,有8位、10位、12位等。http:/ DAC0832是一个8位D/A转换器。单电源供电,从+5V+15V均可正常工作。基准电压的范围为-10V+10V;电流建立时间为1s;采用CMOS工艺,低功耗20mW。DAC0832转换器芯片为20引脚,双列直插式封装。其引脚排列如右图所示。1 2 3 4 5 6 7 8 9 10 20 19 18 17 16 15 14 13 12 11 DAC0832 VCC ILE 2WR XFER DI4 DI5 DI6 DI7 IOUT2 IOUT1 CS 1WR AGND DI3 DI2 DI1 DI0 VREF RFB DGND D

40、AC0832引脚图http:/ DAC寄存器中数据全为0时,输出电流为0。lIOUT2:模拟电流输出端2,IOUT2与IOUT1的和为一个常数,l 即IOUT1+IOUT2=常数。lRFB:反馈电阻引出端,DAC0832是电流输出,为了取得电压输出,需在电压输出端接运算放大器。DAC0832内部已经有反馈电阻,所以 RFB端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。lVREF:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10-10)V。VREF端与D/A内部T

41、形电阻网络相连。lVCC:芯片供电电压,范围为(+515)V。lAGND:模拟量地,即模拟电路接地端。lDGND:数字量地。http:/ 输入 寄存器 8位 DAC 寄存器 8位 D/A 转换器 10 20 3 9 11 12 8 19 1 18 2 17 47 1316 ILE CSWR1 WR2 XFER VREF IOUT2 IOUT1 RFB AGND VCC DGND DI3DI0 DI7DI4 nDAC0832内部结构框图如下图所示。从图中可见,在DAC0832中有两个数据缓冲器:输入寄存器和DAC寄存器。其控制端分别受ILE、CS、WR1和WR2、XFER的控制。DAC0832内

42、部结构框图http:/ UOUT=-(D/256)*VREF,图中如果向DAC0832传送的8位数据量为40H(01000000B),则输出电压UOUT=-(64/256)*5V=-1.25V(反相),其输出过程可用“MOV P0,#40H”一条指令完成。http:/ 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 3

43、2 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 8051 VCC 3 2 6 1 5 7 4 U3 741-12V+12V AGND 3 2 6 1 5 7 4 U4 741+12V-12V R3 10k R4 10k AGND+5V VCC R1 10k AGND GND GND VCC Uo 5V VCC 20 Iout1 11 DI0 7 Iout2 12 DI1 6 DI2 5 Rfb 9 DI3 4 DI4 16 Vref 8 DI5 15 DI6

44、14 DI7 13 ILE 19 WR2 18 CS 1 WR1 2 Xfer 17 AGND 3 U2 DAC0832 单片机和DAC0832直通方式输出连接图 http:/ 0000H MOV R0,#0 ;置转换初值 DAC:MOV P0,R0 ;送数据到P0口,DAC0832同时进行转换 INC R0 ;转换数字量加1,当加到最大值0FFH时,再加1,R0变为0 ACALL DELAY ;延时量决定锯齿波周期 AJMP DACDELAY:(略)ENDhttp:/ 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT12 INT1 13 T0 14 T1 15 P

45、10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 8051 VCC 3 2 6 1 5 7 4 U3 741-12V+12V AGND R2 10k 3 2 6 1 5 7 4 U4 741 R1 50k+12V-12V R3 10k R4 10k AGND AG

46、ND+5V VCC Uo Uo Vcc VCC 20 Iout1 11 DI0 7 Iout2 12 DI1 6 DI2 5 Rfb 9 DI3 4 DI4 16 Vref 8 DI5 15 DI6 14 DI7 13 ILE 19 WR2 18 CS 1 WR1 2 Xfer 17 AGND 3 U2 DAC0832 单缓冲方式接口电路 http:/ DPTR,A”来发送数据和启动转换。http:/ DPTR,#7FFFH ;指向0832地址 MOV R0,#00H ;置转换数字初值 DA1:MOV A,R0 MOVX DPTR,A ;启动转换 INC R0 ;转换数字量加1 ACALL D

47、ELAY ;延时 AJMP DA1DELAY:MOV R7,#7DH ;延时子程序 DL1:NOP NOP DJNZ R7,DL1 REThttp:/ EA/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P2

48、7 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 8051 VCC 3 2 6 1 5 7 4 U3 741-12V+12V AGND 3 2 6 1 5 7 4 U4 741+12V-12V R3 5.1k R4 10k AGND+5V VCC+5V R1 10k VCC Uo Uo+5V-5V VCC 20 Iout1 11 DI0 7 Iout12 DI1 6 DI2 5 Rfb 9 DI3 4 DI4 16 Vref 8 DI5 15 DI6 14 DI13 ILE 19 WR2 18 CS 1 WR1 2 Xfer 17 AGND 3 U2 DAC0832

49、 http:/ 0000H HA6S:MOV SP,#53H ;设置堆栈HA6S1:MOV R6,#00H ;数字量初值HA6S2:MOV DPTR,#7FFFH ;地址 MOV A,R6 ;数字量送A MOVX DPTR,A ;进行D/A转换 MOV R2,#0BH LCALL DELAY ;延时 INC R6 ;数字量加1 CJNE R6,#0FFH,HA6S2;数字量增加到0FFH?不是,则继续,是则开始减1HA6S3:MOV DPTR,#7FFFH ;0832地址 DEC R6 ;数字量减1 MOV A,R6 MOVX DPTR,A ;数字量送0832启动D/A转换 MOV R2,#0

50、BH LCALL DELAY ;延时 CJNE R6,#00H,HA6S3 ;数字量是否减到0,不是则继续减1,是则开始加1 SJMP HA6S1锯齿波形成参考程序 http:/ 02H ;入栈DELAY1:PUSH 02HDELAY2:PUSH 02HDELAY3:DJNZ R2,DELAY3 POP 02H DJNZ R2,DELAY2 POP 02H DJNZ R2,DELAY1 POP 02H DJNZ R2,DELAY RET END锯齿波形成参考程序 http:/ EA/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0

51、 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U1 8051 VCC 3 2 6 1 5 7 4 U3 741-12V+12V AGND 3 2 6 1 5 7 4 U5 741+12V-12V R1 5.1k R3 10k AGND+5V V

52、CC+5V R5 10k VCC 3 2 6 1 5 7 4 U4 741-12V+12V AGND 3 2 6 1 5 7 4 U6 741+12V-12V R2 5.1k R4 10k AGND+5V+5V R6 10k XFER XFER XFEP2.5 P2.5 VCC VCC WR WR WR P2.6 P2.6 VCC 20 Iout1 11 DI0 7 Iout2 12 DI1 6 DI2 5 Rfb 9 DI3 4 DI4 16 Vref 8 DI5 15 DI6 14 DI7 13 ILE 19 WR2 18 CS WR1 2 Xfer 17 AGND 3 U2 DAC083

53、2(1)20 Iout1 11 DI0 7 Iout2 12 DI1 6 DI2 5 Rfb 9 DI3 4 DI4 16 Vref 8 DI5 15 DI6 14 DI7 13 ILE 19 WR2 18 CS 1 WR1 2 Xfer 17 AGND 3 U7 DAC0832(2)http:/ DAC0832(1)输入寄存器地址为0BFFFH,DAC0832(2)输入寄存器地址为0DFFFH,0832(1)和0832(2)的DAC寄存器地址均为7FFFH。正弦波的产生由各采样点数据依次进行D/A转换得到。http:/ 00HSTART:MOV R1,#255 ;256个取样点 MOV R2

54、,#0 ;锯齿波初值LOOP:MOV DPTR,#0DFFFH ;DAC0832(2)输入寄存器地址 MOV A,R2 MOVX DPTR,A ;锯齿波送DAC0832(2)MOV DPTR,#DTAB ;取信号数据表首地址 MOVC A,A+DPTR ;查表取正弦波信号数据 MOV DPTR,#0BFFFH ;DAC0832(2)输入寄存器地址 MOVX DPTR,A ;输出正弦波信号到DAC0832(1)MOV DPTR,#7FFFH ;DAC0832(1)DAC0832(2)DAC寄存器地址 MOVX DPTR,A ;同时启动两个0832转换 INC R2 DJNZ R1,LOOP SJ

55、MP START双缓冲方式同步波形输出正弦波参考程序http:/ 80H,83H,86H,8DH,90H,96H,99H,9CH ;正弦数据表DB 9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5HDB 0C7H,0CAH,0CFH,0D1H,0D4H,0D6H,0D8HDB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9HDB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5HDB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0F

56、CH,0FDHDB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFHDB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDHDB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6HDB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EBHDB 0EAH,0E9H,0E7H,0E5H,0E3H,0E1H,0DFH,0DDHDB 0DAH,0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAHDB 0C7H,0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4

57、HDB 0B1H,0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CHDB 99H,96H,93H,90H,8DH,89H,86H,83HDB 80H,80H,7CH,79H,76H,72H,6FH,6CHDB 69H,66H,63H,60H,5DH,5AH,57H,55HDB 51H,4EH,4CH,48H,45H,43H,40H,3DHDB 3AH,38H,35H,33H,30H,2EH,2BH,29HDB 27H,25H,22H,20H,1EH,1CH,1AH,18HDB 16H,15H,13H,11H,10H,0EH,0DH,0BHDB 0AH,09H,08H,07H,06

58、H,04H,03H,02HDB 02H,01H,00,00,00,00,00,00DB 00,00,00,00,00,00,01H,02HDB 02H,03H,04H,05H,06H,07H,08H,09HDB 0AH,0BH,0DH,0EH,10H,11H,13H,15HDB 16H,18H,1AH,1CH,1EH,20H,22H,25HDB 27H,29H,2BH,2EH,30H,33H,35H,38HDB 3AH,3DH,40H,43H,45H,48H,4CH,4EHDB 51H,55H,57H,5AH,5DH,60H,63H,66HDB 69H,6CH,6FH,72H,76H,79H,

59、7CH,80HEND双缓冲方式同步波形输出正弦波参考程序http:/ 10.5.1 模模/数转换器概述数转换器概述 n10.5.2 10.5.2 逐次逼近型模逐次逼近型模/数转换芯片应用实例数转换芯片应用实例 http:/ ADC0809是典型的8位8通道逐次逼近式A/D转换器,CMOS工艺;片内有8路模拟开关,可对8路模拟电压量实现分时转换。ADC0809的引脚如下图所示,逻辑结构图如下图所示。1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 ADC0809 IN2 IN1 IN0 A B C

60、 ALE D7 D6 D5 D4 D0 VREF()D2 IN3 IN4 IN5 IN6 IN7 START EOC D3 OE CLK VCC VREF()GND D1 ADC0809的引脚如下图http:/ SB,D0为最高位LSB。lSTART:启动转换命令输入端。高电平有效。lEOC:转换结束指示脚。平时它为高电平,在转换开始后及转换过程中为低电平,转换结束,它又变回高电平。lOE:输出使能端。此脚为高电平,即打开输出缓冲器三态门,读出数据。lC、B和A:通道号选择输入端。其中A是LSB位,这三个引脚上所加电平的编码为000111时,分别对应于选通通道IN7IN0。lALE:通道号锁存

61、控制端。当它为高电平时,将C、B和A三个输入引脚上的通道号选择码锁存,也就是使相应通道的模拟开关处于闭合状态。实际使用时,常把ALE和START连在一起,在START端加上高电平启动信号的同时,将通道号锁存起来。lCLK:外部时钟输入。ADC809典型的时钟频率为640KHz,转换时间为100s。时钟信号一般由单片机ALE经分频得到;lVREF(+)、VREF(-):两个参考电压输入端。http:/ EA/VP 31 X1 19 X2 18 RESET 9 RD 17 WR 16 INT0 12 INT1 13 T0 14 T1 15 P10 1 P11 2 P12 3 P13 4 P14 5

62、 P15 6 P16 7 P17 8 P00 39 P01 38 P02 37 P03 36 P04 35 P05 34 P06 33 P07 32 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSEN 29 ALE/P 30 TXD 11 RXD 10 U3 8051 D0 3 Q0 2 D1 4 Q1 5 D2 7 Q2 6 D3 8 Q3 9 D4 13 Q4 12 D5 14 Q5 15 D6 17 Q6 16 D7 18 Q7 19 OE 1 LE 11 U4 74LS373 CLK 3 D 2 SD 4 CD 1

63、Q 5 Q 6 U2A 74LS74 8 9 10 U1C 74LS02 4 5 6 U1B 74LS02 1 2 3 U1A 74LS02+5V VCC P2.7 WR RD RD WR INT INT1 ALE ALE ALE Vcc Vcc GND P2.7 IN0 26 D7 21 D6 20 IN1 27 D5 19 D4 18 IN2 28 D3 8 D2 15 IN3 1 D1 14 D0 17 IN4 2 EOC 7 IN5 3 A 25 IN6 4 B 24 C 23 IN7 5 ALE 22 Vref(-)16 OE 9 START 6 Vref(+)12 CLK 10 U

64、5 ADC0809 http:/ A、B、C分别接地址锁存器提供的低三位地址,只要把三位地址写入ADC0809中的地址锁存器,就实现了模拟通道选择。图中使用的是线选法,口地址由P2.7确定,同时和相或取反后作为开始转换的选通信号。因此该ADC0809的通道地址确定如下:若无关位都取1,则8路通道IN0IN7的地址为7FF8H7FFFH。http:/ 从上图中可以看到,把ADC0809的ALE信号与START信号连接在一起了。这样使得在ALE信号的前沿写入地址信号,紧接着在其后沿就启动转换。启动图中的ADC0809进行转换只需要下面的指令(以通道0为例):MOV DPTR,#7FF8H ;选中通

65、道0 MOVX DPTR,A ;WR信号有效,启动转换http:/ A/D转换后得到的是数字量的数据,这些数据应传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换完成,因为只有确认数据转换完成后,才能进行传送。为此可采用下述三种方式。定时传送方式 对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如,若ADC0809转换时间为128s,相当于6MHz的MCS-51单片机的64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用这个延时子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。http:/ 查询方式 A/D转换芯片有表明转换完成的状态信

66、号,ADC0809的EOC端就是转换结束指示脚。因此可以用查询方式,软件测试EOC的状态,即可确知转换是否完成,然后进行数据传送。中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。在图中,EOC信号经过反相器后送到单片机的INT1,因此可以采用查询该引脚或中断的方式进行转换后数据的传送。http:/ 不管使用上述哪种方式,只要一旦确认转换完成,即可通过指令进行数据传送。首先送出口地址并以RD作选通信号,当RD信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接收,即:MOV DPTR,#7FF8H ;选中通道0 MOVX A,DPTR,;RD信号有效,输出转换后 的数据到A累加器http:/ 0809 IN0IN7的地址为7FF8H7FFFH,启动A/D转换的关键指令为“MOV DPTR,#地址”和“MOVX DPTR,A”。读入数据的关键指令为“MOV DPTR,#地址”和“MOVX A,DPTR”。用中断方式来完成转换后数据的传送的源程序如下,也可以用查询的方式实现,源程序如下。http:/ 0000H ;主程序入口地址AJMP MAI

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!