我用ADC0809做温度采集,现在换了单片机STC12C2052,好像自带温度采集,采集函数不会啊,求指教。。。

作者&投稿:年阙 (若有异议请与网页底部的电邮联系)
单片机怎么从主函数跳到中断函数中~

为了把主程序全部放入(定时)中断中,必须把程序化分成一个个的模块,即任务,每个任务完成一个特定的功能,例如扫描键盘并检测按键。 设定一个合理的时基 (tick),例如 5, 10 或 20 ms, 每次定时中断,把所有任务执行一遍,为减少复杂性。
一般不做动态调度(最多使用固定数组以简化设计,做动态调度就接近 os 了),这实际上是一种无优先级时间片轮循的变种。

扩展资料
大多数中断系统都具有如下几方面的操作,这些操作是按照中断的执行先后次序排列的。
①接收中断请求。
②查看本级中断屏蔽位,若该位为1则本级中断源参加优先权排队。
③中断优先权选择。
④处理机执行完一条指令后或者这条指令已无法执行完,则立即中止现行程序。接着,中断部件根据中断级去指定相应的主存单元,并把被中断的指令地址和处理机当前的主要状态信息存放在此单元中。
⑤中断部件根据中断级又指定另外的主存单元,从这些单元中取出处理机新的状态信息和该级中断控制程序的起始地址。
⑥执行中断控制程序和相应的中断服务程序。
⑦执行完中断服务程序后,利用专用指令使处理机返回被中断的程序或转向其他程序。
参考资料来源:
百度百科——中断

stc12c5630

unsigned int AD_result(unsigned char channel)
{
unsigned int temp;
unsigned char AD_finished;

F_CY = 0;
ADC_DATA = 0x00; //清ADC_DATA
ADC_CONTR = channel; //选择通道
// P1_ADC_EN = 0x01; //设置A/D转换输入脚
delay(1);

ADC_CONTR |= 0x08; //令ADC_START = 1,启动A/D转换
AD_finished = 0;
while(AD_finished == 0) //测试ADC_FLAG = 1,等待A/D转换结束
{
AD_finished = (ADC_CONTR&0x10);
}
ADC_CONTR &= 0xf7; //令ADC_START = 0,关闭A/D转换
temp = ((0x00ff&ADC_DATA)<<2)|(ADC_LOW2&0x03);
return(temp);
}
可以参考一下,希望采纳

单片机STC12C2052数据手册的ad转换函数可以直接用的,


关于用51单片机和ADC0809做电压表的问题
我觉得是读回数据时出错,问题在这段:::ch0=0;Delay(128);while(E==0);v=ch0;问题:1:Delay(128);试试加长延时。12M晶振下(128)相当于128uS,0809转换时间为100uS,要是你用24M晶振就会出问题,为了保险加大到1000左右 2:不要用等待中断,(while(E==0); 用法不太对),加大延时...

我在用adc0809做protues仿真的时候总是出现错误 , 我只用0809中的一路...
将0809换成0808应该就没问题了,你可以试试。与程序好像没关。

单片机51和adc0809进行模数转换,还有显示(0---255)程序,同时用51产生...
的振荡频率=3MHZ,则ALE地址锁存信号的频率=500KHZ.如果单片机的振荡频率=6MHZ,则ALE地址锁存信号的频率=1MHZ. 要通过一个2分频器后,将频率变为500KHZ.再做adc0809的时钟使用。呵呵 靠单片机编程来提供500KHZ时钟信号很难做到。 显示电路就自己设计吧,其它的就没什么难度了。记着,别忘给俺加分...

做基于ADC0809的数字电压表,但没有数字信号。求教AD的转换程序怎么写...
} } void convert(){ P3=0x02;ALE = 1;_nop_();_nop_();ALE = 0;START = 1;_nop_();_nop_();START = 0;_nop_();_nop_();_nop_();_nop_();while(EOC == 0);OE = 1;vol=P1;OE = 0;a=vol*5.0\/255.0; \/\/读得电压值 V=a*10;} 课程设计做过的,呵呵 ...

adc0809输出端的电压是5V接到FPGA的IO引脚,需要加电平转换芯片吗?还 ...
fpga 的都是3.3v高电平,正规的设计肯定是需要加的(不加也可能能用,可是安全性就不能保证了)。简单的做法可以用三极管代替电平转换芯片,或者加两个电阻。

基于单片机和ADC0809做的数字电压表,误差分析表如下,老师说误差太大,要...
延时一段时间待电压稳定了再AD转换,多次读数求平均值

...里面测电流后要进行AD转换,求ADc0809与单片机连接图及程序C的程序...
0809电路简单。START和ALE接一起后接单片机IO,EOC接IO,OE接IO,要是只用一个通道的话ABC三脚接地,8位数据接单片机一个口。CLOCk要接500K-640K的时钟,可以从单片机的ALE脚去信号经过分频有提供。电路就这么简单

用adc0809制作电子秤精度能做到多少
我今年的毕业设计就是电子秤 用ADC0809不行 采集精度不够 有专门的电子秤AD转换器

用51单片机和adc0809做电压表。为什么测量100mv以下的电压时液晶要么就...
你测量电压和你的液晶初始化有什么关系啊?你看看是不是连线接错了。

逐次比较式数字电压表,采用ADC0809芯片,输入电压值0-5v,采用MCS-51系列...
有点简单了

黄岛区15055185182: 用ADC0809测量某环境温度,其温度范围为30~50℃,线性温度变送器输出0~5V,试求测量该温度环境的分辨率和 -
线蒋甘油: 20*1/256

黄岛区15055185182: 用ADC0809及89c51构成的温湿度采集器的转换公式 -
线蒋甘油: 给你举个例子吧,我用过一个流量传感器,它的输入是管路的流量,输出是频率信号,输入与输出满足 f=8Q-3,(其中1L/Min<Q 流量<30L/Min),这个被测的流量与输出的频率信号满足上面的线性关系式. 另外,还比如超声波液位传感器,...

黄岛区15055185182: ADC0809它转换过来的温度是什么样的数据,比如说采样的模拟量是20度,那过来的数据 -
线蒋甘油: 读出来的是16进制数值,数值大小可以换算成相应的电压,vi=Vref*(读出数值/2n-1);n是指数,n为ADC的位数,如果想知道对应的温度,还需要根据电路换算成温度值

黄岛区15055185182: adc0809采样后的疑惑 -
线蒋甘油: 这是因为,采集的信号要跟adc的开口对应,无形中你显示的东西跟采集adc得来的数据信号有一定的比例关系,你这些除以多少都是比例

黄岛区15055185182: 1.采用MCS51单片机作为主控芯片 实现温度测量 2.采用ADC0809 实现温度测量 3.实现显示三位温度值上下限报1.采用MCS51单片机作为主控芯片 实现温度... -
线蒋甘油:[答案] 你好: 一份详细的设计和代码已经发给你了,如果满意的话,记得加分哦:)

黄岛区15055185182: 1.采用MCS51单片机作为主控芯片 实现温度测量 2.采用ADC0809 实现温度测量 3.实现显示三位温度值,可实现 -
线蒋甘油: 用ADC0809那只有通过AD采样获得相应的电压,并通过换算来获得温度 PT-100是一种适合温度采样的铂电阻,有比较高的精度,什么显示的自己搞定吧 电路图可以百度下,一找一大把 pt100是铂热电阻,简称为:PT100铂电阻,它的阻值会随着温度的变化而改变.PT后的100即表示它在0℃时阻值为100欧姆,在100℃时它的阻值约为138.5欧姆.它的工业原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的的阻值会随着温度上升它的阻值是成匀速增涨的.

黄岛区15055185182: ADC0809在温度设计中的问题? -
线蒋甘油: PT100是铂热电阻,电阻值变化与温度成线性关系.如果你已经将阻值变成了采集信号,那最好的办法是标定了,选两个温度值与测量的电压作比较,这样产生两个坐标值,求出直线方程.把电压代入就能求出温度了.标定可以采用更高精度的测温仪表.补充:标定啊,跟室内室外没关系,y=kx+b,把K和B算出来就行了,你通的电是一定的,自身变化就是不变的了,在哪用就在哪里标定了.

黄岛区15055185182: 用ADC0809测量某环境温度,其温度范围为30~50℃,线性温度变送器输出0~5V -
线蒋甘油: 在0~5V的范围内,测量30~50℃的范围,线性温度变送器输出的分辨率就是 (50℃-30℃)/(5V-0V)= 4K/V.即,该环境下,温度变送器的分辨率为每伏4摄氏度.

黄岛区15055185182: adc0809数据采样后如何在51单片机上储存?请告诉我一个完整的程序,谢谢. -
线蒋甘油: 你可以做个扫描,用P0接受ADC0809数据采样(D0~D7);P1.0与P3.7接与非门接ADC0809的OE端,P1.0与P36接与非门接ADC0809的START、ALE端;P3.2经过非门接ADC0809的E0C 只要你P1.0=1时候,就选择ADC0809读取P0口数据,就可以了#include #define DATA DBYTE[0x80] //内部RAM的80H开始,存储地址可以自己改 unsigned char *p; main() { p=&DATA ; //把80H的地址给指针p *p=P0; //读P0口 //如果有多个数据,可以用循环与p++来在80H地址以后进行存储 }

黄岛区15055185182: 我要做一个 单片机数据采集与显示系统 有ADc0809 温度AD590 湿度HIH - 3610 燃气传感器TGS842 怎么弄
线蒋甘油: 数据采集就是对传感器的数据进行收集,然后显示即可,分清功能,分别处理即可

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网