当前位置:首页 » 编程语言 » ad7366c语言程序
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

ad7366c语言程序

发布时间: 2022-08-25 04:49:14

1. 单片机c52 用c语言编写的 要实现ad转换程序

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS=P3^0;
sbit CLK=P3^1; //时钟
sbit DIO=P3^2; //ADC0832输出引脚
sbit din=P0^7;

uchar code tab1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E}; //共阳数码表
uchar code tab[4]={0xfe,0xfd,0xfb,0xf7}; //数码管位选表

void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<121;j++);

}

uint A_D() // A/D转换函数
{
unsigned char i,dat;

CS=0; //片选
CLK=0; //为第1个脉冲作准备
CLK=1; //第1个脉冲
DIO=1; // DI置1,规定的起始信号
_nop_();_nop_();

CLK=0; //第1个脉冲的下降沿
CLK=1; //第2个脉冲
DIO=1; // DI置1, 通道选择信号:1
_nop_();_nop_();

CLK=0; //第2个脉冲下降沿
CLK=0; //第3个脉冲
DIO=1; // DI置0,通道选择信号:0, 选通道0
_nop_();_nop_();

// CLK=0; //第3个脉冲下降沿,转换开始
// _nop_();_nop_();//第3个脉冲后,
// CLK=1;
for(i=0;i<8;i++) //高位在前
{

CLK=1; //第4个脉冲
if(DIO)
dat=(dat<<1)|0x80;//从高位至低位读取 "|"的优先级高于">>"
else
dat=(dat<<1)|0x00;
CLK=0;
}
for(i=0;i<8;i++) //高位在前
{

CLK=1; //第4个脉冲
if(DIO)
dat=(dat>>1)|0x80;//从高位至低位读取 "|"的优先级高于">>"
else
dat=(dat>>1)|0x00;
CLK=0;
}

CS=1;
CLK=1;
return dat;
}
void display(uint k)
{

P2=tab[1];
P0=tab1[k/100];
din=0;
delay(3);
P2=0xff;

P2=tab[2];
P0=tab1[k/10%10];
delay(3);
P2=0xff;

P2=tab[3];
P0=tab1[k%10];
delay(3);
P2=0xff;

}

void main(void) //主函数
{
uint temp;
while(1)
{
temp=A_D()*5.0/256*100; // 根据转换结果求出电压值
display(temp);
}
}

ADC0832程序 板子做出来 能用

2. 51单片机 C语言ADC程序怎么写

typedef unsigned char BYTE;
typedef unsigned int WORD;
#include "reg51.h"
#include "intrins.h"

/*Declare SFR associated with the ADC */
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;

/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60

//延时
void Delay(WORD n)
{
WORD x;

while (n--)
{
x = 5000;
while (x--);
}
}

//初始AD寄存器
void InitADC()
{
P1ASF = 0xff;
ADC_RES = 0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}

//AD转换
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));
ADC_CONTR &= ~ADC_FLAG;

return ADC_RES;
}

void main()
{ BYTE temp;
P2M1=0; P2M0=0x03; //P2.0和P2.1强推挽
InitADC();
while (1)
{
temp=GetADCResult(0);//转换P1.0
if(temp>1)
P2|=0x03; //P1.0有电压 P2.0和P2.1输出高
else
P2&=0xFC; //P1.0无电压 P2.0和P2.1输出低
}
}

3. c语言编程软件AD574的程序

你的函数声明,和函数原型的参数要一样才行,改了就错了。
调用时也要按照定义的参数个数来调用,类型也要正确,否则就错了。

4. 求简单C语言程序代码!

输入2个正整数m和n,求其最大公约数和最小公倍数

#include

#include

int main()

int m,n,p,q,s,r;

printf("请输入两个正整数;m,n ");

scanf("%d,%d",&m,&n);

#include<stdio.h>

main()

int a,b,t=0;

scanf("%d %d",&a,&b);

if (a<b)

printf("%d %d %d %d %d",(a+b),(a-b),(a/b),(a*b),(a%b));

}

主要特点

C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。

以上内容参考:网络-c语言

5. 51单片机ad转换的C语言程序怎么编写啊

芯片采样回来后,是一个AD值。需要转换成想要的一些内容的话,要做表格。
如温度转换。首先要制作一个温度对应的AD表格。多大的值是多少度。
查表可以采用顺序法进行。
从表格的第一个开始查起,比第一个大时,再比较第二个,依次类推。每比较一次,将计数器累加一次。
比上一个大,比下一个小时,就是上一个温度点,此时,把计数器的值拿出来就是对应的温度值。
图要看芯片资料连接了,应该很简单的。

6. AD 控制LED灯亮度 C语言程序怎么编写

/**52系列单片机,晶振12MHz,P1.0输出100Hz方波(即周期10ms),方波由T0定时器产生
P1.3接按键
K1,每按一次按键,方波占空比改变一次,依次为:1/10→2/10→……→9/10→1/10,如此循环**/
#include"reg52.h"
//包含52系列头文件
#define
uchar
unsigned
char
//定义
无符号字符型
#define
uint
unsigned
int
//定义
无符号整型
#define
TRUE
1
//定义
逻辑真
#define
FALSE
0
//定义
逻辑假
#define
th0
0xfc
//100Hz(10ms),占空比分母10,则其最小时间单位应该为10ms/10=1ms,故定时器T0定时时间为
1ms
#define
tl0
0x18
//1ms
at
12HMz
Fosc
#define
DutyDeno
10
//定义
占空比分母
为:10
sbit
WaveOut=P1^0;
//定义
方波输出
接口
sbit
Key1=P1^3;
//定义
按键Key1
接口
uchar
DutyNume=1;
//定义
占空比分子
变量,并初始化为
1(即
占空比
为:1/10)
void
Timer0()
interrupt
1
//定时器T0
中断
函数
{
static
uchar
ty_time=0;
//定义静态变量,作为
占空比
输出时间的参考值(1ms)
TL0=tl0;
TH0=th0;
//重赋定时器初值,1ms
ty_time=++ty_time%DutyDeno;
//该句等效于:ty_time++;ty_time%=DutyDeno;
if(ty_time<DutyDeno)
WaveOut=1;
//若计时时间小于
占空比分子,则输出应为
高电平
else
WaveOut=0;
//若计时时间大于
占空比分子,则输出应为
低电平
}
void
TimerInit()
//定时器初始化
函数
{
TMOD=0x01;
//T0
16位定时器
EA=1;
//允许系统中断
ET0=1;
//允许T0中断
TH0=th0;
TL0=tl0;
//1ms
初值
TR0=1;
//T0开始计时
}
void
KeyResp()
//按键响应
函数
{
static
bit
KeyDownFlag,KeyReadyFlag;
//定义
静态标志位,KeyDownFlag
按键按下标志,KeyReadyFlag
按键准备(响应)标志
if(!Key1)
//若按键Key1
被按下
{
KeyDownFlag=TRUE;
//按键按下标志
置位
KeyReadyFlag=TRUE;
//按键准备标志
置位
}
else
KeyDownFlag=FALSE;
//若按键Key1
无按下,则清空
按键按下标志
if(!KeyDownFlag
&&
KeyReadyFlag)
//若
按键已准备,且按键无按下(即
松手状态)
{
DutyNume++;
//占空比分子
加1
if(DutyNume==DutyDeno)
DutyNume=1;
//若
占空比分子=分母,则返回
1
KeyReadyFlag=FALSE;
//按键处理完毕,清
按键准备标志
}
}
void
main()
//主函数
{
TimerInit();
//调用
定时器初始化
函数
while(1)
//循环系统
{
KeyResp();
//调用
按键响应
函数
}
}
方波输出接口接灯;

7. 假定从AD7703中读出的数据中的高4位存于32H单元,中8位存于31H单元,低8位存于30H单元 用C语言怎么写啊

READ20()
{
P11 = 0;
P13 = 1;
while(P12 == 1);
P13 = 0;
h4 = EXTDD(4);
h8 = EXTDD(8);
l8 = EXTDD(8);
P13 = 1;
}

EXTDD(char x)
{
char y = 0;
P10 = 1;
for (; x > 0; x--) {
P11 = 0;
y <<= 1;
P11 = 1;
if (P10) y += 1;
}
return y;
}

8. ad测交流电压、交流电流、有功功率、无功功率的C语言程序

我也正在做这个,要不留个qq号。我们可以探讨探讨。我的qq372303445

9. 有没有人能帮我讲解一下这个C语言程序的执行过程

#include"stdio.h"

main()

{ char s[80];

int i,j;

gets(s);

for(i=j=0;s[i]!='';i++)//这里只有i++,j++在下面,j不随for循环自加1

if (s[i]!='c')

s[j++]=s[i];//每有一个不为'c'的单位出现,j自加1;并且该单位的值,重新赋值给数组s,从s[0]开始,因为j初值为0

else//这加个else便于理解,等价于源代码;该单位的值为'c',就向该单位赋予空值;

s[j]='';

puts(s);

}//例如输入abcdec,分别占据s[0]='a',s[1]='b',s[2]='c',s[3]='d',s[4]='e',s[5]='c';

//s[0](j==0),s[1](j==1)还是赋值在原位,

//s[2](这if不成立,j不自加1)s[2]='',

//s[3]不为'c'(j==2),所以'd'就赋给了s[2];

//s[4](j==3),'e'赋予s[3],

//s[5]='',赋空值;