急求:ADC0809和AT89C51的AD转换汇编程序 模拟量从IN0进入 0809和单片机的P0口连接
把8031直接换成8951就行啦
管脚是一样的
电路如图
程序如下
#include
#define uint unsigned int
#define uchar unsigned char
uchar code LEDData[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
sbit OE = P1^0;
sbit EOC = P1^1;
sbit ST = P1^2;
sbit CLK = P1^3;
void DelayMS(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void Display_Result(uchar d)
{
P2 = 0xf7;
P0 = LEDData[d%10];
DelayMS(5);
P2 = 0xfb;
P0 = LEDData[d%100/10];
DelayMS(5);
P2 = 0xfd;
P0 = LEDData[d/100];
DelayMS(5);
}
void main()
{
TMOD = 0x02;
TH0 = 0x14;
TL0 = 0x00;
IE = 0x82;
TR0 = 1;
P1 = 0x3f;
while(1)
{
ST = 0;
ST = 1;
ST = 0;
while(EOC == 0);
OE = 1;
Display_Result(P3);
OE = 0;
}
}
void Timer0_INT() interrupt 1
{
CLK = !CLK;
}
ADC0809的函数声明要放在ADC0809的H文件里,MAIN.C包含ADC0809的头文件。
编写的源程序如下:ORG 0000H
LOOP: CLR P2.2
SETB P2.2
JNB P2.1,$ ;检测转换是否结束
CLR P2.0
MOV A,P0 ;读取转换结果
SETB P2.0
CLR C
SUBB A ,#2CH ;数值调整,此值是针对本任务,非通用,由表6-2得
MOV DPTR,#TEMPTAB ;查表获得温度值
MOVC A,@A+DPTR
SETB P3.1
SETB P3.2
MOV B,#10 ;将温度值转换为BCD码
DIV AB ;温度十位BCD码在A中,温度个位BCD码在B中
MOV R3,A ;温度十位BCD码暂存R3中
MOV R4,B ;温度个位BCD码暂存R4中
MOV DPTR,#DIGITTAB ;七段数码表首地址送DPTR
MOV A,R3
MOVC A,@A+DPTR ;查表取得温度十位数的七段码
MOV P1,A ;温度十位数送P1口
CLR P3.2 ;开十位显示
ACALL DELAY
MOV A,R4
MOVC A,@A+DPTR ;查表取得温度个位数的七段码
SETB P3.2 ;关闭十位显示;
MOV P1,A ;温度个位数送P1口
CLR P3.1 ;开个位显示
ACALL DELAY
AJMP LOOP
DELAY:MOV R6,#2
D1:MOV R7,#250
D2:NOP
NOP
DJNZ R7,D2
DJNZ R6,D1
RET
DIGITTAB: ;数字0~9的共阳七段显示码
DB 0C0H ;0
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 099H ;4
DB 092H ;5
DB 082H ;6
DB 0F8H ;7
DB 080H ;8
DB 090H ;9
DB 08EH ;F 错误显示
TEMPTAB: ;温度数据表
DB 90,89,88,87,100,86,85,84,83,100,82,81,100,80
DB 79,100,78,77,100,76,75,100,74,100,73,100,72,71
DB 100,70,100,69,100,68,100,67,100,66,100,65,100,64
DB 100,63,100,62,100,61,100,60,100,100,59,100,58,100
DB 57,100,100,56,100,55,100,54,100,100,53,100,52,100
DB 100,51,100,50,100,100,49,100,48,100,100,47,100,46
DB 100,100,45,100,100,44,100,43,100,100,42,100,100,41
DB 100,40,100,100,39,100,38,100,100,37,100,100,36,100
DB 35,100,100,34,100,100,33,100,32,100,100,31,100,30
DB 100,100,29,100,28,100,100,27,100,26,100,100,25,100
DB 24,100,100,23,100,22,100,21,100,20,100,100,19,100
DB 18,100,17,100,16,100,15,100,14,100,13,100,12,100
DB 11,100,10,9, 100,8, 100,7, 6, 100,5, 4, 100,3
DB 2, 1, 100,0
END
求高手分析单片机程序关于ADC0809的程序,CS是什么啊?AD那个函数实现什么...
这最好是看电路图,个人认为是ADC0809的OE引脚。你说AD 函数就是AD转换的函数,变量V就是读到的AD值,就是AD函数的输出结果。
求ADC0809中断工作方式电路
求ADC0809中断工作方式电路 如题... 如题 展开 我来答 1个回答 #热议# 孩子之间打架 父母要不要干预?可轩163 2015-01-29 · TA获得超过1.3万个赞 知道大有可为答主 回答量:4681 采纳率:88% 帮助的人:1408万 我也去答题访问个人页 关注 展开全部 本回答由提问者推荐 已赞过 已踩...
求ADC0809的地址
图上面的程序注释里面已经说了:IN0的地址是#00H。另外7个的地址应该是顺次递增的吧。汇编比较麻烦,我已经改用C语言了。
求基于AT89S52的ADC0809位AD转换芯片的程序
(1). 进行A\/D转换时,采用查询EOC的标志信号来检测A\/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。(2). 进行A\/D转换之前,要启动转换的方法:ABC=110选择第三通道 ST=0,ST=1,ST=0产生启动转换的正脉冲信号 .C语言源程序 include unsigned char code...
求,adc0809与51单片机通信,用12864显示的程序怎么整呀,网上那个程序根 ...
你好!这是0809AD采集的12864液晶显示
求助~adc0809和51单片机放一起工作不正常,程序错了?还是硬件接错了...
P0口实数据地址输出端,不能接AD的控制端A、B、C,单片机送数据的时候P0口的数值时变化的 相应的你AD的通路选择口A、B、C也是变化的 结果也就不正常了。把A、B、C接P1口或P2口就行 。接地就表示你AD只用了通道0,只要你模拟数据的输入只用通道0就可以。 图看完了,主要看你需要的测量的是几...
当cpu使用中断方式从adc0809读取数据时,adc0809向cpu发出中断请求的信号...
当她到这个CPU进行使用中断方式,从这个里面都是数据的时候,能把这个发出重大身体的信号的话,就在这边应该是可以间接理解的。
求ADC0809工作时序图
求ADC0809工作时序图 如题... 如题 展开 我来答 1个回答 #热议# 网文质量是不是下降了?可轩163 2015-01-30 · TA获得超过1.3万个赞 知道大有可为答主 回答量:4681 采纳率:88% 帮助的人:1293万 我也去答题访问个人页 关注 展开全部 本回答被提问者采纳 已赞过 已踩过< 你对...
求stc89c52单片机 接 ADC0809和DAC0832和的连接原理图和程序
下面是我自己写的一个AD0808的,你可以看看,没有人会给你骗一个现成合你要求的哈。理解,这分可要也可不要。没那么重要为你写上半个小时的程序,理解哈。这是我自己以前学的。希望对你有帮助哈。你看看。。。include <reg51.h> include <intrins.h> define uchar unsigned char define uint ...
求ADC0809内部结构图
求ADC0809内部结构图 如题... 如题 展开 我来答 1个回答 #热议# 为什么现在情景喜剧越来越少了?可轩163 2015-01-29 · TA获得超过1.3万个赞 知道大有可为答主 回答量:4681 采纳率:88% 帮助的人:1356万 我也去答题访问个人页 关注 展开全部 本回答被提问者采纳 已赞过 已踩过< ...
缪琬夫坦: 这要看你电压了,我用的电压是5V的,数据公式就是:输出值=输入值*5/256,也就是5V电压对应最大的255H,电压每增加0.02V数字数据就+1
朗县15717969193: 什么是ADC0809 - ?
缪琬夫坦: ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件.它是逐次逼近式A/D转换器,可以和单片机直接接口. (1)ADC0809的内部逻辑结构 ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转...
朗县15717969193: 单片机课程设计题目:模拟电压显示器急求高手解答老师让座课程设计给 ?
缪琬夫坦: 我这有个数字电压表啊1. 实验任务 利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,但要求使用的元器件数目最少...
朗县15717969193: 对ADC0809的8路输入信号进行采集,然后应用并口液晶对所采集的8路数据进行循环显示. - ?
缪琬夫坦: 用单片机AT89C51和ATC0809进行连接,然后编程,你可以试试protues软件和keil联合.
朗县15717969193: ADC0809是基于什么转换原理的A/D转换器? - ?
缪琬夫坦: 工作原理是这样的,ADC内部有DAC器件.AD转换开始先转换一个小数据,然后经过整个过程是一步步逐次的进行的. 逐次逼近式AD转换器与计数式A/D转换
朗县15717969193: 能不能将AD0809的数字量输出端口和8155的AD口同时接到51单片机啊?急求~~ - ?
缪琬夫坦: 可以 http://pdf.dzsc.com/88888/2008125112636327.pdf PDF中文资料,自己看 AD0809的启动方式为脉冲启动方式,启动信号START启动后开始转换,EOC 信号在的下降沿 后才变为无效的低电平.这要求查询程序待 无效后再开始查询,...
朗县15717969193: adc0809程序 求一个八路通道的分时转换汇编程序 !!!汇编语言编写的!! - ?
缪琬夫坦: 8086的,设ADC0809的8个端口地址为260H~267H,试编制采用延时等待的方式采集数据的程序段(包括数据段定义).要求对8路通道进行循环采集,各采集100个数据分别存入8个数据区中. 解:假设延时程序可调用DELAY,时间足以保证...
朗县15717969193: 求温度采集系统的c程序.采用AT89C51,模数转换ADC0809,温度传感器AD590. - ?
缪琬夫坦: AD590温度传感器出来的是什么信号 需要信号调制处理吧,然后变换成你需要的电压信号后,送给ADC0809,由单片机读取 作为一个采集系统,还需显示的 可以交流
朗县15717969193: 求一款用来转换声音信号的AD转换器.一开始我用的是AD0809但是最大速率1khz无法满足?
缪琬夫坦: 高精度AD采集芯片ADS7809 ADS7809具有以下特点:●具有16位带采样保持的基于电容的逐次逼近寄存器型模数转换器;●100kHz采样速率,20kHz输入时的信噪比达83dB;●+1/2LSB的积分非线性和差分非线性;●6种可选的输入范围,分别是0~10V,0~5V,0~4V,±10V,±5V和±3.3V;●片内带有+2.5V基准源,也可采用外部基准源;●片内自带时钟,采样数据通过串行输出.数据既可用内部时钟,也可由外部时钟同步后输出;●采用单5V电源供电,最大功耗小于100mW;●采用20脚塑料DIP封装或SIOC封装.工作温度范围为-25℃~+85℃
朗县15717969193: 汇编语言!!求救. 单片机内有设置初值 ,ADC0809会将转换完成的数字信号输入单片机,求汇编程序!!! - ?
缪琬夫坦: 用C语言比较容易处理转换的数据些,这里提供C语言程序 OE接P3.0 EOC接P3.1 START和ALE接P3.2 CLK直接接51的ALE 数据输入用P0 用四位数码管显示:p1位选,P2段选 #include sbit OE=P3^0; sbit EOC=P3^1; sbit SA=P3^2; char code ...