用中断法读取AD大数据Word格式文档下载.docx
- 文档编号:19537814
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:9
- 大小:212.36KB
用中断法读取AD大数据Word格式文档下载.docx
《用中断法读取AD大数据Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《用中断法读取AD大数据Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
2)中断优先级控制寄存器(IP)------设置各中断的优先级
3)定时器/计数器控制寄存器(TCON)----定时器和外部中断的控制
4)串行口控制寄存器(SCON)------串行中断的控制
中断类型分为三类:
1)T0、T1是2个定时器/计数器中断,由片定时器提供;
2)INT0、INT1是2个外部中断,由引脚P3.2和P3.2提供;
3)RX、TX为串行口中断所用,由片串口提供。
图251单片机的中断体系结构
1、(P3.2)/(P3.3)可由IT0(TCON.0)/IT1(TCON.2)选择其为低电平有效还是下降沿有效。
当CPU检测到P3.2/P3.3引脚上出现有效的中断信号时,中断标志IE0(TCON.1)/IE1(TCON.3)置1,向CPU申请中断。
3、TF0(TCON.5)/TF1(TCON.7),片定时/计数器T0/T1溢出中断请求标志。
当定时/计数器T0/T1发生溢出时,置位TF0/TF1,并向CPU申请中断。
5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。
当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。
上述只是向CPU申请中断,如果要得到CPU的相应,还要设置相应的中断允许IE和优先级IP,中断方能的到响应。
1)定时器中断的使用(以定时器0为例)
……
TMOD|=0x01|0x04;
//使用模式1,16位计数器,使用"
|"
符号可以在使用多个定时器时不受影响
TH0=0xFF;
//给定初值
TL0=245;
//从245计数到255
EA=1;
//总中断打开
ET0=1;
//定时器中断打开
TR0=1;
//定时器开关打开
voidTimer0_isr(void)interrupt1using1//中断服务程序
{
//重新给定初值
}
2)外部中断的使用(以外部中断0为例)
…………
//全局中断开
EX0=1;
//外部中断0开
IT0=0;
//电平触发
voidISR_Key(void)interrupt0using1//中断服务程序
…………
在这次作业中,我所采用的中断程序为外部中断0
1.2ADC0804转换的基本原理
1.工作原理:
所谓A/D转换器就是模拟/数字转换器(ADC),是将输入的模拟信号转换成数字信号。
信号输入端可以是传感器或转换器的输出,而ADC的数字信号也可能提供给微处理器,以便广泛地应用。
2.ADC0804引脚图如下:
8位COMS依次逼近型的A/D转换器.三态锁定输出
存取时间:
135US分辨率:
8位转换时间:
100US总误差:
正负1LSB工作温度:
ADC0804LCN---0~70度
图3ADC0804引脚图
3.引脚说明
/CS(引脚1)芯片选择信号,低电平有效
/RD(引脚2)外部读取转换结果的控制输出信号。
/RD为HI时,DB0~DB7处理高阻抗:
/RD为LO时,数字数据才会输出。
/WR(引脚3)用来启动转换的控制输入,相当于ADC的转换开始(/CS=0时),当/WR由HI变为LO时,转换器被清除:
当/WR回到HI时,转换正式开始。
CS、RD、WR(引脚1、2、3):
是数字控制输入端,满足标准TTL逻辑电平。
其中CS和WR用来控制A/D转换的启动信号。
CS、RD用来读A/D转换的结果,当它们同时为低电平时,输出数据锁存器DB0~DB7各端上出现8位并行二进制数码。
CLKI(引脚4)和CLKR(引脚19):
ADC0801~0805片有时钟电路,只要在外部“CLKI”和“CLKR”两端外接一对电阻电容即可产生A/D转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC。
其典型应用参数为:
R=10KΩ,C=150PF,fCLK≈640KHZ,转换速度为100μs。
若采用外部时钟,则外部fCLK可从CLKI端送入,此时不接R、C。
允许的时钟频率围为100KHZ~1460KHZ。
INTR(引脚5):
INTR是转换结束信号输出端,输出跳转为低电平表示本次转换已经完成,可作为微处理器的中断或查询信号。
如果将CS和WR端与INTR端相连,则ADC0804就处于自动循环转换状态。
CS=0时,允许进行A/D转换。
WR由低跳高时A/D转换开始,8位逐次比较需8×
8=64个时钟周期,再加上控制逻辑操作,一次转换需要66~73个时钟周期。
在典型应用fCLK=640KHZ时,转换时间约为103μs~114μs。
当fCLK超过640KHZ,转换精度下降,超过极限值1460KHZ时便不能正常工作。
Vin(+)(引脚6)和Vin(-)(引脚7):
被转换的电压信号从Vin(+)和Vin(-)输入,允许此信号是差动的或不共地的电压信号。
如果输入电压VIN的变化围从0V到Vmax,则芯片的Vin(-)端接地,输入电压加到Vin(+)引脚。
由于该芯片允许差动输入,在共模输入电压允许的情况下,输入电压围可以从非零伏开始,即Vmin至Vmas。
此时芯片的Vin(-)端应该接入等于Vmin的恒值电码坟上,而输入电压VIN仍然加到Vin(+)引脚上。
AGND(引脚8)和DGND(引脚10):
A/D转换器一般都有这两个引脚。
模拟地AGND和数字地DGND分别设置引入端,使数字电路的地电流不影响模拟信号回路,以防止寄生耦合造成的干扰。
Vref/2(引脚9):
参考电压Vref/2可以由外部电路供给从“Vref/2”端直接送入,Vref/2端电压值应是输入电压围的二分之一所以输入电压的围可以通过调整Vref/2引脚处的电压加以改变,转换器的零点无调整。
图4ADC0804转换器的工作时序图
5.AD转换器的设计接口电路图:
图中,ADC0804数据输出线与AT89C51的数据总线直接相连,AT89C51的RD、WR和INT1直接连到ADC0804,由于用P1.0线来产生片选信号,故无需外加地址译码器。
当AT89C51向ADC0804发WR(启动转换)、RD(读取结果)信号时,只要虚拟一个系统不占用的数据存储器地址即可。
图5ADC0804接法
2.源代码
#include<
reg51.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitwela=P2^7;
sbitdula=P2^6;
sbitadrd=P3^7;
sbitadwr=P3^6;
ucharadval;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelayms(uintxms)
uinti,j;
for(i=xms;
i>
0;
i--)
for(j=110;
j>
j--);
voiddisplay(ucharbai,ucharshi,ucharge)
wela=1;
P0=0x7e;
wela=0;
P0=0xff;
dula=1;
P0=table[bai];
dula=0;
delayms(5);
P0=0x7d;
P0=table[shi];
P0=0x7b;
P0=table[ge];
voidmain()
uchara,A1,A2,A3;
//开总中断
//开外部中断0
IT0=1;
//设置电平触发方式为下降沿
while
(1)
{
adwr=1;
_nop_();
adwr=0;
for(a=10;
a>
a--)
display(A1,A2,A3);
}
A1=adval/100;
A2=adval%100/10;
A3=adval%10;
voidinit0()interrupt0
P1=0xff;
adrd=1;
_nop_();
adrd=0;
adval=P1;
3.proteus仿真结果
图6仿真结果
4.结论
通过改写书中的程序加深了对中断以及ADC0804转换器的认识,同时理解了写外部中断的知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中断 读取 AD 数据
![提示](https://static.bdocx.com/images/bang_tan.gif)