百思不得其解:ad1674转换的12位数据如何放到c51中呢,是分开来放置吗

百思不得其解:ad1674转换的12位数据如何放到c51中呢,是分开来放置吗,第1张

你可以吧AD1674输出的12位数据转换成两个8位数据,就像你写的这个程序一样,应该是可以的。计算机接收到的数据不是很直观了,如果你使用的是串口调试助手,只能这样了,如果你会上位机程序,那就在上位机程序中处理一下就OK拉;另外,不知你用的单片机晶振是多少,一般51/52是12M/或110592M,这样的话,你设置的波特率为12000,你使用串口调试助手看数据时,要将串口调试助手的波特率设置为12000

这个问题的出现比较普遍,主要有几个方面:

1病毒引起的,对电脑全盘杀毒。

2硬件上的原因,主要是内存条不兼容引起的,必要时更换内存。

3系统或其它软件引起的。

4打开或关闭IE、QQ、游戏等出现该内存不能为read或written,首先想到可能就是这款软件的问题,(一般来解决办法就是卸载重新安装、升级或更换其它版本,不行只有卸载该软件,问题才能解决)。

(1)系统本身有问题,及时安装官方发行的补丁,必要时重装系统。

(2)某个软件出现的问题,这里主要是看看开机时运行的软件,(用360等检查开机运行的软件,把不必要运行的软件都去掉),软件冲突,卸载有问题的软件。

★下面有两种处理方法可以试试:如果不行只有恢复或重装系统了

(1)试用命令排除

开始-运行- 输入cmd-- 回车,在命令提示符下输入下面命令

for %1 in (%windir%\system32\dll) do regsvr32exe /s %1

怕输入错误,可以复制这条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。

(2)运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks 下,应该只有一个正常的键值{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除

不一定,AD 转换器按照转换原理可分为直接AD 转换器和间接AD 转换器。所谓直接AD 转换器,是把模拟信号直接转换成数字信号,如逐次逼近型,并联比较型等。其中逐次逼近型AD 转换器,易于用集成工艺实现,且能达到较高的分辨率和速度,故目前集成化AD 芯片采用逐次逼近型者多;间接AD 转换器是先把模拟量转换成中间量,然后再转换成数字量,如电压/时间转换型(积分型)、电压/频率转换型、电压/脉宽转换型等。 其中积分型A/D 转换器电路简单,抗干扰能力强,切能作到高分辨率,但转换速度较慢。 有些转换器还将多路开关、基准电压源、时钟电路、译码器和转换电路集成在一个芯片内,已超出了单纯A/D 转换功能,使用十分方便。

PIC单片机在某一时间段内只能采集开启一个AD转换通道来进行采集,你可以通过模拟通道选择位来进行通道选择的先后顺序/

可以定义一个数组用来存放采集数据

先使能AD采样,进中断清标志位,配置通道(如AN0),把采样结果存入数组

轮流进行

采集时间一结束,即可启动 A/D 转

换。 可将采集时间编程设定在 GO/DONE位置1和实际

转换启动之间。

可参考pic的PDF资料

#include "reg51h"

#define data_point P0

sbit EOC=P2^0;

sbit ADDA=P2^1;

sbit ADDB=P2^2;

sbit ADDC=P2^3;

sbit OE=P2^5;

sbit START=P2^6;

sbit CLK=P2^7;

sbit ALE=P2^6;

unsigned char disp[3]={0,0,0};

char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char t0count=0;

unsigned int temp;

double sum;

unsigned char val_Integer; //整数

unsigned int val_Decimal; //小数

sbit k1 = P1^0;

sbit k2 = P1^1;

sbit k3 = P1^2;

sbit k4 = P1^3;

void delay(unsigned char ms)

{

unsigned char i;

while(ms--)

for(i=0;i<125;i++);

}

void display()

{

disp[0]=disp[0]&0x7f;

P3= disp[0];

k1 = 1;

delay(2);

k1 = 0;

P3= disp[1];

k2 = 1;

delay(2);

k2 = 0;

P3= disp[2];

k3 = 1;

delay(2);

k3 = 0;

P3= disp[3];

k4 = 1;

delay(2);

k4 = 0;

}

unsigned char ADC0808()

{

unsigned char d;

ADDC=0;

ADDB=0;

ADDA=0;

TR1=1;

ALE=1;ALE=0;

START=1;START=0;

while(EOC==0);

OE=1;

d=data_point;

OE=0;

TR1=1;

return d;

}

void covert(unsigned char x)

{

sum=x00201378;

val_Integer=(unsigned char)sum;

val_Decimal=(unsigned int)((sum-val_Integer)1000);

disp[3]=dispcode[val_Decimal%10];

disp[2]=dispcode[val_Decimal/10%10];

disp[1]=dispcode[val_Decimal/100];

disp[0]=dispcode[val_Integer];

}

void main()

{

TMOD=0x21;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=256-2;

ET0=1;

ET1=1;

EA=1;

TR0=1;

OE=0;

START=0;

EOC=1;

while(1)

{

display();

}

}

void time0() interrupt 1

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

t0count++;

if(t0count==100)

{

t0count=0;

covert(ADC0808());

}

}

void time1() interrupt 3

{

CLK=~CLK;

}

以上就是关于百思不得其解:ad1674转换的12位数据如何放到c51中呢,是分开来放置吗全部的内容,包括:百思不得其解:ad1674转换的12位数据如何放到c51中呢,是分开来放置吗、安装 sql server 2005 时出现"0x7814018e" 指令引用的"0x00000643"内存。该内存不能为"read" 怎么办、利用ad转换器时一定要用程序运行吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10108802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存