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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(并行8位ADC0809电压测量.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

并行8位ADC0809电压测量.docx

1、并行8位ADC0809电压测量 实验十三 并行A/D(电压测量)实验一、 实验目的:1、 了解ADC0809的转换性能及编程方法;2、 掌握ADC0809与8051单片机的接口方法;二、 实验内容:1、 为了方便观察,将实验例程中ADC0809采集到的数字量以十进制格式显示在右边三位数码管上;原理图:流程图: 开始 外中断0入口 数码管扫描子程序 开外中断0 (DPTR)-A R3-A、TAB-DPTR (A+DPTR)-A 0809通道0-DPTR 个十百-R1/R2/R3 PA-DPTR,A-(DPTR) 01H-P1,延时 启动A/D转换 数码管扫描 R2-A、TAB-DPTR 原地跳转

2、 启动A/D转换 (A+DPTR)-A PA-DPTR,A-(DPTR) 中断返回 02H-P1,延时 R2-A、TAB-DPTR (A+DPTR)-A PA-DPTR,A-(DPTR) 02H-P1,延时 返回汇编源程序:/* 中断字子程序中读取A/D转换结果,采用除法分别把对应十进制百十个位赋给R3、R2、R1 引用数码管扫描程序*/AD0809 EQU 0F000HCOM_ADD XDATA 0E003HPA_ADD XDATA 0E000HORG 0000HAJMP STARTORG 0003HAJMP EXINT0ORG 0030HSTART:MOV SP,#60HMOV DPTR,

3、#COM_ADDMOV A,#80H ;PA输出MOVX DPTR,ASETB IT0SETB EX0SETB EAMOV DPTR,#AD0809 ;启动A/D转换MOVX DPTR,AAJMP $EXINT0:MOVX A,DPTR ;读取A/D转换结果MOV B,#0AH ;R1,R2,R3 分别存低到高三位数DIV ABMOV R1,BMOV B,#0AHDIV ABMOV R2,BMOV R3,AACALL FLASH ;数码管扫描MOV DPTR,#AD0809 ;调用数码管扫描之后DPTR地址改后,必须重新赋值 MOVX DPTR,A ; 启动A/D转换RETIFLASH: MO

4、V P1,#01H ;最高位MOV A,R3MOV DPTR,#TABFLAMOVC A,A+DPTRMOV DPTR,#PA_ADDMOVX DPTR,AACALL DELAYMOV P1,#02H ;段码MOV A,R2 ;位码MOV DPTR,#TABFLAMOVC A,A+DPTRMOV DPTR,#PA_ADDMOVX DPTR,AACALL DELAY MOV P1,#04H ;低位MOV A,R1MOV DPTR,#TABFLAMOVC A,A+DPTRMOV DPTR,#PA_ADDMOVX DPTR,AACALL DELAYRETDELAY: MOV R6,#20DELAY1

5、:MOV R5,#250DJNZ R5,$DJNZ R6,DELAY1RETTABFLA:DB 0C0H,0F9H,0A4H,0B0H,99H ;04DB 92H,82H,0F8H,80H,90H,88H ;5ADB 83H,0C6H,0A1H,86H,8EH ;BFENDC语言源程序:#includexdata unsigned char ADDR_0809 _at_ 0xf000;xdata unsigned char COM_ADDR _at_ 0xe003;xdata unsigned char PA _at_ 0xe000;const unsigned char TAB=0xC0,0

6、xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90;void delay() /延时 unsigned int i; for(i=0;iDPTR 0809通道3地址-DPTR (DPTR)-A A-R0 启动A/D转换 个百十-R1/R2/R3 数码管扫描 原地跳转 启动A/D转换 0832 R0-A 0832-DPTR A=5B? 是 R0-A 否 A-(DPTR) A5B? 是 延时 否 R0+1-R0 返回 R0-1-R0 返回 汇编源程序:/* 中断字子程序中读取A/D转换结果,采用除法分别把对应十进制百十个位赋给R3、R2、R1 引用数码管扫描程

7、序 采用减法比较,0832传递值是否达到100*/AD0809 EQU 0F003HDA0832 XDATA 0E000H ;CS2COM_ADD XDATA 0D003H ;CS3PA_ADD XDATA 0D000HORG 0000HAJMP STARTORG 0003HAJMP EXINT0ORG 0030HSTART:MOV SP,#60HMOV DPTR,#COM_ADDMOV A,#80H ;PA输出MOVX DPTR,ASETB IT0SETB EX0SETB EAMOV DPTR,#AD0809 ;启动A/D转换MOVX DPTR,AAJMP $EXINT0:ACALL DAD

8、A0832MOV DPTR,#AD0809MOVX A,DPTR ;读取A/D转换结果MOV R0,AMOV B,#0AH ;R1,R2,R3 分别存低到高三位数DIV ABMOV R1,BMOV B,#0AHDIV ABMOV R2,BMOV R3,AACALL FLASH ;数码管扫描LOOP:MOV DPTR,#AD0809 ;启动A/D转换 MOVX DPTR,AMOV A,R0SUBB A,#5BH ;与91比较,本来是该与100比较的,调试的时候数据传递过程中会自动加9或10左右JZ OUT ;相等,不调整JC INCC ;小于,增加JNC DECC ;大于,减小INCC:INC

9、R0AJMP LOOP DECC:DEC R0AJMP LOOP OUT:RETIFLASH: MOV P1,#01H ;最高位MOV A,R3MOV DPTR,#TABFLAMOVC A,A+DPTRMOV DPTR,#PA_ADDMOVX DPTR,AACALL DELAYMOV P1,#02H ;段码MOV A,R2 ;位码MOV DPTR,#TABFLAMOVC A,A+DPTRMOV DPTR,#PA_ADDMOVX DPTR,AACALL DELAY MOV P1,#04H ;低位MOV A,R1MOV DPTR,#TABFLAMOVC A,A+DPTRMOV DPTR,#PA_A

10、DDMOVX DPTR,AACALL DELAYRETDADA0832:MOV DPTR,#DA0832 ;DAC0832MOV A,R0MOVX DPTR,AACALL DELAYRETDELAY: MOV R6,#20DELAY1:MOV R5,#250DJNZ R5,$DJNZ R6,DELAY1RETTABFLA:DB 0C0H,0F9H,0A4H,0B0H,99H ;04DB 92H,82H,0F8H,80H,90H,88H ;5ADB 83H,0C6H,0A1H,86H,8EH ;BFENDC语言源程序:#includexdata unsigned char ADDR_0809 _

11、at_ 0xf003;xdata unsigned char ADDR_0832 _at_ 0xe000;xdata unsigned char COM_ADDR _at_ 0xd003;xdata unsigned char PA _at_ 0xd000;unsigned char a0;const unsigned char TAB=0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90;void delay() /延时 unsigned int i; for(i=0;i0x5b) a0-; else if(a0R0,0-R7 通道0-DPTR

12、 通道3-DPTR (DPTR)-A (DPTR)-A 通道0-DPTR A-R4、A-R6 启动A/D转换 R4-A R7-A A-R7-A 原地跳转 是 A=0? 个百十-R1/R2/R3 否 A0 否 数码管扫描 是 R7-1-R70832-DPTR R6-1-R6 R6-A A-(DPTR) R7+1-R7 R6+1-R6 R0=0? 否 是 启动通道3 01-R0 启动通道0 返回 0-R0汇编源程序:/* 中断字子程序中读取A/D转换结果,采用除法分别把对应十进制百十个位赋给R3、R2、R1 引用数码管扫描程序 采用反馈值与校准值比较,调整0832的输入值 注意通道的不同*/AD0

13、809 EQU 0F000H ;IN0AD30809 EQU 0F003H ;IN3DA0832 XDATA 0E000H ;CS2COM_ADD XDATA 0D003H ;CS3PA_ADD XDATA 0D000HORG 0000HAJMP STARTORG 0003HAJMP EXINT0ORG 0030HSTART:MOV SP,#60HMOV DPTR,#COM_ADDMOV A,#80H ;PA输出MOVX DPTR,ASETB IT0SETB EX0SETB EA;用R0判断通道,R7用于数码管显示,R4存IN0的精确电压值,R6存调整后0832的精确输入值MOV R0,#00

14、HMOV R7,#00HMOV DPTR,#AD0809 ;启动IN0的A/D转换MOVX DPTR,AAJMP $EXINT0:CJNE R0,#00H,RUN3MOV DPTR,#AD0809 ;读取IN0的A/D转换结果MOVX A,DPTRMOV R4,AMOV R6,AAJMP OUTRUN3:MOV DPTR,#AD30809 ;读取IN3的A/D转换结果MOVX A,DPTRMOV R7,ALOOP1:MOV A,R4SUBB A,R7 ;校正调整0832的传递值JZ OUT ;相等,不调整JC DECC ;IN0小于,减小JNC INCC ;IN0大于,增加INCC:INC R7 ;调整R7,使之与精确值相等INC R6AJMP LOOP1 DECC:DEC R7DEC R6AJMP LOOP1 OUT:MOV A,R7 ;R7存储0832的传递值MOV B,#0AH ;R1,R2,R3 分别存

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1