ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:94.92KB ,
资源ID:10247374      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10247374.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机实验报告4.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机实验报告4.docx

1、单片机实验报告4大连理工大学实验报告实验时间: 2013 年 7 月 5 星期 五 时间 : 13 : 00 16 : 30实验室(房间号): 综 421 实验台号码: 班级: 电医 1001 姓名: 梅世宇 成绩: 实验四 ZLG7290B实验:键盘扫描实验 ZLG7290B实验:AD转换的十进制显示实验一、 实验仪器计算机系统、DP-51PROC单片机综合仿真实验台、TKSMonitor 51仿真器、软件KeilC51二、 实验目的和要求1.ZLG7290B实验:键盘扫描实验利用中断的方式获取按键操作的信息,并在中断服务程序中完成键值的读取、显示操作。数码管初始显示为:“data= “,当

2、有按键操作时,将所读取的键值显示在最右的两位数码管上(如:当按下S1键时,显示”data=-01 “).2.ZLG7290B实验:AD转换的十进制显示实验使用AD转换芯片TLC549CP对模拟电压进行数字转换,将转换的结果处理位3位的十进制数(000-255)并通过ZLG7290B进行显示。三、 实验算法1. ZLG7290B实验:键盘扫描实验DATA_1(30H-37H):变量缓冲区。DISDA(20H-27H): 显示缓冲区。28H-2BH:装在从ZLG7290B00H单元开始读出的连续4个字节数据,其中29H就是键值。当有按键操作时,利用ZLG7290B00H的/INT信号引发单片机的一

3、个中断,利用中断服务程序从ZLG7290B00H中连续读取4个字节的数据,其中第二个字节(ZLG7290B00H的01H寄存器)就是键值。将此值拆分、查表后送显示缓冲区的20H、21H单元。2.ZLG7290B实验:AD转换的十进制显示实验20H开始的单元:存放N个TLC549采集的数据;40H-47H显示缓冲区;4、实验电路图1. ZLG7290B实验:键盘扫描实验 图 8.16实验电路的连接 2.ZLG7290B实验:AD转换的十进制显示实验五.实验流程图1. ZLG7290B实验:键盘扫描实验图8.17主程序框图 图8.18子程序流程图2.ZLG7290B实验:AD转换的十进制显示实验图

4、8.20主程序框图 图8.21主函数流程图6、程序清单1. MCS-51与TLC的接口实验 sda bit p1.0 scl bit p1.1 wsla equ 70h rsla equ 71h disda equ 20h;源数据块首地址 discon equ 08h;写入数据个数 data_1 equ 30h;变量区首地址 org 8000h ljmp 8100h org 8003h ljmp int_7290 org 8100hstart: mov sp,#60h clr p1.7;7290复位 lcall delay setb p1.7 setb ea;开INT0中断 setb ex0

5、setb it0;触发极性位下降沿 mov data_1,#13h;变量缓冲区 mov data_1+1,#13h;注意 mov data_1+2,#13h;变量取值范围0-F mov data_1+3,#12h mov data_1+4,#10h mov data_1+5,#11h mov data_1+6,#10h mov data_1+7,#0dh mov dptr,#ledseg;开始对变量查表 mov r7,#discon;写入数据个数 mov r0,disda;源数据块首地址 mov r1,#data_1loop1: mov a,r1 movc a,a+dptr;查表得对应的字形码

6、 mov r0,a;送显示缓冲区 inc r1 inc r0 djnz r7,loop1loop: mov r7,#discon mov r2,#10h mov r3,#wsla mov r0,#disda lcall wrnbyt;调显示子程序 lcall delay;使显示稳定 sjmp loopledseg: db 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e4h;0-7的字形码 db 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh;8-F的字形码 db 0fah,1eh,12h,00h;a,t,=和熄灭码cf: push 02h;将A中的

7、数据拆分为两个思维16进制数并查表 push dph push dpl mov dptr,#ledseg mov r2,a anl a,#0fh movc a,a+dptr mov r3,a mov a,r2 swap a anl a,#0fh movc a,a+dptr mov r4,a pop dpl pop dph pop 02 retint_7290: push 00h push 02h push 03h push 04h push 07h push acc push psw mov r0,#28h;状态数据区首地址 mov r7,#01h;取状态数据个数 mov r2,#01h ;内

8、部数据首地址 mov r3,#wsla;取器件地址(写) mov r4,#rsla;取器件地址(读) lcall rdadd;读出7290的00H-03H数据存于28H-2BH nop;设定一个断点,以观察独处的4个数据 mov a,28h;取键值 lcall cf;拆分、查表 mov 20h,r3;送显示缓冲区(最低两位数码管) mov 21h,r4 pop psw pop acc pop 07h pop 04h pop 03h pop 02h pop 00h retidelay: push 00h push 01h mov r0,#00hdelay1: mov r1,#00h djnz r

9、1,$ djnz r0,delay1 pop 01h pop 00h ret WRNBYT: PUSH PSW PUSH ACC WRADD: MOV A,R3 ;取外围器件地地址(包含r/w=0) LCALL STA ;发送起始信号S LCALL WRBYT ;发送外围地址 LCALL CACK ;检测外围器件的应答信号 JB F0,WRADD ;如果应 MOV A,R2 LCALL WRBYT ;发送内部寄存器首地址 LCALL CACK ;检测外围器件的应答信号 JB F0,WRADD ;如果应答不正确返回重来 WRDA: MOV A,R0 LCALL WRBYT ;发送外围地址 LCA

10、LL CACK ;检测外围器件的应答信号 JB F0,WRADD ;如果应答不正确返回重来 INC R0 DJNZ R7,WRDA LCALL STOP POP ACC POP PSW RET RDADD: PUSH PSW ;从PCF8563的02H单元读入7个参数 PUSH ACC ;存放于20H-26H单元 RDADD1: LCALL STA MOV A,R3 ;取器件地址(写) LCALL WRBYT ;发送外围地址 LCALL CACK ;检测外围器件的应答信号 JB F0,RDADD1 ;如果应答不正确返回重来 MOV A,R2 ;取内部地址 LCALL WRBYT ;发送外围地址

11、 LCALL CACK ;检测外围器件的应答信号 JB F0,RDADD1 ;如果应答不正确返回重来 LCALL STA MOV A,R4 ;取器件地址(读) LCALL WRBYT ;发送外围地址 LCALL CACK ;检测外围器件的应答信号 JB F0,RDADD1 ;如果应答不正确返回重来RDN: LCALL RDBYT MOV R0,A DJNZ R7,ACK LCALL MNACK LCALL STOP POP ACC POP PSW RETACK: LCALL MACK INC R0 SJMP RDN STA: SETB SDA ;启动信号S SETB SCL NOP ;产生4.

12、7US延时 NOP NOP NOP NOP CLR SDA NOP ;产生4.7US延时 NOP NOP NOP NOP CLR SCL RET STOP: CLR SDA ;停止信号P SETB SCL NOP ;产生4.7US延时 NOP NOP NOP NOP SETB SDA RET MACK: CLR SDA ;发送应答信号ACK SETB SCL NOP ;产生4.7US延时 NOP NOP NOP NOP CLR SCL SETB SDA RETMNACK: SETB SDA ;发送非应答信号NACK SETB SCL NOP ;产生4.7US延时 NOP NOP NOP NOP

13、 CLR SCL CLR SDA RETCACK: SETB SDA ;应答位检测子程序 SETB SCL CLR F0 MOV C,SDA ;采样SDA JNC CEND ;应答正确时转CEND SETB F0 ;应答错误时F0置一CEND: CLR SCL RETWRBYT: PUSH 06HMOV R6,#08H ;发送一个字节子程序 WLP: RLC A ;(入口参数A) MOV SDA,C SETB SCL NOP ;产生4.7US延时 NOP NOP NOP NOP CLR SCL DJNZ R6,WLP POP 06H RETRDBYT: PUSH 06H MOV R6,#08H

14、 ;接收一个字节子程序RLP: SETB SDA SETB SCL NOP ;产生大于15微秒的延时 NOP ;注意这是专门为ZLG7290 NOP ;添加的20微秒延时部分 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP MOV C,SDA MOV A,R2 RLC A MOV R2,A CLR SCL DJNZ R6,RLP ;(出口参数R2) POP 06H RET end 2. ZLG7290B实验:数码显示实验SDA BIT P1.0;7290B的引脚定义SCL BIT P1.1WSLA EQU 070HRSLA EQU 071HDAT

15、 BIT P1.0;TLC549PC引脚定义CLK BIT P1.1CS BIT P1.4CUNT EQU 20H;每次ADC采集数据个数SHIFT EQU 05H;除数(与采集数据个数有关)ADDR EQU 20H;数据缓冲区首地址DISDA EQU 40H;显示缓冲区DISCUNT EQU 08H;显示缓冲区长度 ORG 8000H LJMP 8100H ORG 8100HSTART: MOV SP,#60H CLR P1.7;7290复位 LCALL DELAY SETB P1.7 MOV DISDA+7,#0EEH;a字形 MOV DISDA+6,#7AH;d字形 MOV DISDA+

16、5,#1AH;c字形 MOV DISDA+4,#00H;熄灭 MOV DISDA+3,#12H;“=”LOOP: LCALL TLC549;采集N个ADC数据(20H单元) LCALL ADJUST;数据滤波(屏蔽以观察滤波效果) LCALL BCD_CONT;转换为十进制数 MOV R7,#DISCUNT MOV R0,#DISDA MOV R2,#10H MOV R3,#WSLA LCALL WRNBYT;7290数字显示 LCALL DELAY SJMP LOOPTLC549: PUSH 00H;连续采集16次数据 PUSH 07H;存放于20H-2FH中 MOV R7,#CUNT MO

17、V R0,#ADDRLOOP2: LCALL TLC549_ADC MOV R0,A INC R0 DJNZ R7,LOOP2 POP 07H POP 00H RETADJUST: PUSH 00H;将20H开始的CUNT个数据 PUSH 02H;求平均值 PUSH 03H;结果于A中 PUSH 07H MOV R7,#CUNT MOV R0,#ADDR CLR A MOV R2,ALOOP3: CLR C;累加 ADDC A,R0 JNC LOOP4 INC R2LOOP4: INC R0 DJNZ R7,LOOP3 MOV R3,A MOV A,R2;除以数据个数CUNT MOV R7,#

18、SHIFTLOOP5: CLR C MOV A,R2 RRC A MOV R2,A MOV A,R3 RRC A MOV R3,A DJNZ R7,LOOP5 POP 07H POP 03H POP 02H POP 00H RETTLC549_ADC: PUSH 07H CLR A CLR CLK MOV R7,#08H CLR CSLOOP1: SETB CLK NOP NOP NOP NOP MOV C,DAT RLC A CLR CLK NOP NOP DJNZ R7,LOOP1 SETB CS SETB CLK POP 07H RETBCD_CONT: PUSH 07H PUSH 06

19、H PUSH 05H PUSH 02H MOV B,#64H DIV AB MOV R7,A;R7中得百位数 MOV R2,B;R2中得余数 MOV A,R2 MOV B,#0AH DIV AB MOV R6,A;R6中得十位数 MOV R5,B;R5中得个位数 MOV A,R7 LCALL CF;调拆分子程序(入口A出口R4,R3-字形码) MOV DISDA+2,R3;高位R4无用 MOV A,R6 LCALL CF;调拆分子程序(入口A出口R4,R3-字形码) MOV DISDA+1,R3 MOV A,R5 LCALL CF;调拆分子程序(入口A出口R4,R3-字形码) MOV DISD

20、A+0,R3 POP 02H POP 05H POP 06H POP 07H RETCF: PUSH 02H;将A中的数据拆分为两个独立的BCD码并查表 PUSH DPH PUSH DPL MOV DPTR,#LEDSEG MOV R2,A ANL A,#0FH MOVC A,A+DPTR MOV R3,A MOV A,R2 SWAP A ANL A,#0FH MOVC A,A+DPTR MOV R4,A POP DPL POP DPH POP 02H RETWRNBYT: PUSH PSW PUSH ACCWRADD: MOV A,R3 LCALL STA LCALL WRBYT LCALL

21、 CACK JB F0,WRADD MOV A,R2 LCALL WRBYT LCALL CACK JB F0,WRADDWRDA: MOV A,R0 LCALL WRBYT LCALL CACK JB F0,WRADD INC R0 DJNZ R7,WRDA LCALL STOP POP ACC POP PSW RETCACK: SETB SDA SETB SCL CLR F0 MOV C,SDA JNC CEND SETB F0CEND: CLR SCL RETWRBYT: MOV R6,#08HWLP: RLC A MOV SDA,C SETB SCL NOP NOP NOP NOP C

22、LR SCL DJNZ R6,WLP RETSTA: SETB SDA SETB SCL NOP NOP NOP NOP CLR SDA NOP NOP NOP NOP CLR SCL RETSTOP: CLR SDA SETB SCL NOP NOP NOP NOP SETB SDA NOP NOP NOP NOP RETDELAY: PUSH 00H PUSH 01H MOV R0,#00HDELAY1: MOV R1,#00H DJNZ R1,$ DJNZ R0,DELAY1 POP 01H POP 00H RETLEDSEG: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH END

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2