实验7(AD转换实验)
一、实验目的和要求
1、掌握单片机与ADC0809的接口
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
方法 。
2、掌握Proteus软件与Keil软件的
使用方法
消防栓的使用方法指针万用表的使用方法84消毒液使用方法消防灭火器使用方法铁材计算器使用方法
。 二、实验内容或原理
1、设计一个简单的单片机数据采集系统,利用
ADC0809转换器,轮流采集模拟量输入电压
信号,并将模拟量转换成数字量,通过数码管
显示器显示 。
三、设计要求
1、用Proteus软件画出
电路
模拟电路李宁答案12数字电路仿真实验电路与电子学第1章单片机复位电路图组合逻辑电路课后答案
原理图,在单片机的外部
扩展片外三总线,并通过片外三总线与0809接口。
2、在0809的某一模拟量输入通道上接外部模拟量。
3、在单片机的外部扩展数码管显示器。
4、分别采用延时和查询的方法编写A/D转换程序。
5、启动A/D转换,将输入模拟量的转换结果在显示
器上显示。
四、实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
要求
1、实验目的和要求。
2、设计要求。
3、电路原理图。
4、实验程序流程框图和程序清单。
5、实验结果(波形图)。
6、实验总结。
7、思考
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
。
五、思考题
1、采用中断的方法编写A/D转换程序,完成实验要求。
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN: MOV DPTR,#0000H
MOVX @DPTR,A
LCALL DELAY
MOVX A,@DPTR
MOV B,#51
DIV AB
MOV R0,A
MOV A,B
MOV B,#5
DIV AB
MOV R1,A
MOV R2,B
MOV DPTR,#TAB 开始
MOV A,R0
MOVC A,@A+DPTR 通道首地址
MOV P2,#04H 启动A/D转换 MOV P1,A
LCALL DELAY 调用延时子程序 MOV A,R1
MOVC A,@A+DPTR 读通道数据
MOV P2,#08H
整数位转换 MOV P1,A
LCALL DELAY
小数位转换 MOV A,R2
MOVC A,@A+DPTR 表格首地址 MOV P2,#10H
MOV P1,A 查个位送入LED2
LCALL DELAY
SJMP MAIN 查小数点后第一位送LED1
DELAY: MOV R6,#01H
DL0 : MOV R5,#3EH 查小数点后第二位送LED0
DJNZ R5,$
DJNZ R6,DL0
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
#include
#include
#define unchar unsigned char
#define uint unsigned int
sbit CLK=P2^4;
sbit START=P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
unchar disp[3];
uint temp,result;
unchar Code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay1ms()
{int i;
for(i=0;i<=120;i++){}
}
void delay256us()
{int j;
for(j=0;j<=32;j++){}
}
void dispplay()
{ P2=0xfd;
P0=Code[disp[0]]|0x80;
delay1ms();
P2=0xfb;
P0=Code[disp[1]];
delay1ms();
P2=0xf7;
P0=Code[disp[2]];
delay1ms();
}
void main()
{ START=0;
while(1)
{ START=1;
START=0;
delay256us();
OE=1;
temp=P1;
result=temp*1.0/250*500;
disp[0]=result/100%10;
disp[1]=result/10%10;
disp[2]=result%10;
dispplay();
}}
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:MOV DPTR,#0000H
MOVX @DPTR,A
JNB P3.3 , $
MOVX A,@DPTR
MOV B,#51 ;个位转换
DIV AB
MOV R0,A
MOV A,B
MOV B,#5 ;小数转换
DIV AB
MOV R1,A
MOV R2,B
MOV DPTR,#TAB
MOV A,R0
MOVC A,@A+DPTR
MOV P2,#04H
MOV P1,A
LCALL DELAY
MOV A,R1
MOVC A,@A+DPTR
MOV P2,#08H
MOV P1,A
LCALL DELAY
MOV A,R2
MOVC A,@A+DPTR
MOV P2,#10H
MOV P1,A
LCALL DELAY
SJMP MAIN
DELAY:MOV R6,#01H ;130us
DL0:MOV R5,#3EH
DJNZ R5,$
DJNZ R6,DL0
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
#include
#include
#define unchar unsigned char
#define uint unsigned int
sbit CLK=P2^4;
sbit START=P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
unchar disp[3];
uint temp,result;
unchar Code[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
void delay()
{int i;
for(i=0;i<=120;i++)
{}
}
void dispplay()
{ P2=0xfd;
P0=Code[disp[0]]|0x80;
delay();
P2=0xfb;
P0=Code[disp[1]];
delay();
P2=0xf7; a
P0=Code[disp[2]];
delay();
}
void main()
{ START=0;
while(1)
{
START=1;
START=0;
while(EOC==0);
OE=1;
temp=P1;
result=temp*1.0/250*500;
disp[0]=result/100%10;
disp[1]=result/10%10;
disp[2]=result%10;
dispplay();
}
}
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:MOV DPTR,#0000H
MOVX @DPTR,A HERE: SJMP HERE LOOP: MOVX A,@DPTR
MOV B,#51 ;个位转换
DIV AB
MOV R0,A
MOV A,B
MOV B,#5 ;小数转换
DIV AB
MOV R1,A
MOV R2,B
MOV DPTR,#TAB
MOV A,R0
MOVC A,@A+DPTR
MOV P2,#04H ;LED2 个位
MOV P1,A
LCALL DELAY
MOV A,R1
MOVC A,@A+DPTR
MOV P2,#08H ;LED1小数点后第一个数
MOV P1,A
LCALL DELAY
MOV A,R2
MOVC A,@A+DPTR
MOV P2,#10H ;LED0小数点后第二个数
MOV P1,A
LCALL DELAY
MOV DPTR,#0000H
MOVX @DPTR,A
RETI
DELAY:MOV R6,#01H ;130us
DL0:MOV R5,#3EH
DJNZ R5,$
DJNZ R6,DL0
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
#include
#include
#define unchar unsigned char
#define uint unsigned int
sbit CLK=P2^4;
sbit START=P2^5;
sbit EOC=P3^2;
sbit OE=P2^7;
unchar disp[3];
uint temp,result;
unchar Code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay()
{int i;
for(i=0;i<=120;i++)
{}
}
void dispplay()
{ P2=0xfd;
P0=Code[disp[0]]|0x80;
delay();
P2=0xfb;
P0=Code[disp[1]];
delay();
P2=0xf7;
P0=Code[disp[2]];
delay();
}
void tachmeter() interrupt 0 using 0
{OE=1;
temp=P1;
result=temp*1.0/250*500;
disp[0]=result/100%10;
disp[1]=result/10%10;
disp[2]=result%10;
dispplay();
}
void main()
{ EA=1;
EX0=1;
START=0;
while(1)
{START=1;
START=0;
}}