导航:首页 > 编程知识 > Adc0809如何编程

Adc0809如何编程

发布时间:2023-07-18 16:18:04

1. 运用adc0809和8255a完成对一路数据的采集和显示,使用中断方式编程。

#include<at89X52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define adress XBYTE[0x7ff8+chnn]
void Disp(uint disp_value);
void Bcd(uint bcd_value);
void Delay_ms(uint delay);
void System_Init();
uchar adc_0809(uchar chn);
uchar code LED_Val[]={0xc0,0xf9,0xa4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x98};//0-9
uchar code LEDdp_Val[]={0xc0-0x80,0xf9-0x80,0xa4-0x80,0x0b0-0x80,0x99-0x80,0x92-0x80,0x82-0x80,0x0f8-0x80,0x80-0x80,0x98-0x80};//0-9
uchar data num[4];
uchar data led_point[4]={0xfe,0xfd,0xfb,0xf7};//三极管控制数码管的信号
float adc_data;
sbit eoc=P3^2;
uchar chnn;
uchar count;
////////////////////////////////////
void System_Init()
{
EA=1;
EX1=1;
IT1=1;
}
void Init1_Srv(void) interrupt 2 using 1
{
count++;
if(count==8)
{count=0;}
}
//////////////////////////////
uchar adc_0809(uchar chn)
{
uchar numdata;
chnn=chn;
adress=1;
while(eoc==0);
numdata=adress;
return numdata;
}

////////////////////////
void main()
{
uint temp;
uchar key;
System_Init();
while(1)
{
switch (count)
{
case 0:key=adc_0809(0);break;
case 1:key=adc_0809(1);break;
case 2:key=adc_0809(2);break;
case 3:key=adc_0809(3);break;
case 4:key=adc_0809(4);break;
case 5:key=adc_0809(5);break;
case 6:key=adc_0809(6);break;
case 7:key=adc_0809(7);break;
default:key=adc_0809(0);break;
}
adc_data=(key/255.0)*5.0;
temp=(uint)(adc_data*100);
Disp(temp);
}
}

////////////////

//////////////////////////动态
void Disp(uint disp_value)
{
uchar i;
Bcd(disp_value);
for(i=0;i<4;i++)
{
P1=0;
P2=LED_Val[num[i]];
P1=led_point[i];
Delay_ms(2);
}
}
////////////
void Delay_ms(uint delay)
{
uchar j;
while(delay--)
{
for(j=125;j>0;j--)
{;}
}

}
void Bcd(uint bcd_value) //把四位数分离成4个元素由数组NUM保存
{
num[0]=count;
num[1]=bcd_value/100;
num[2]=(bcd_value%100)/10;
num[3]=(bcd_value%100)%10;
}

////////////////////////

2. 基于msp430单片机的ADC0809模数转换的c语言程序

ADC0809这个入门级AD转换驱动程序一搜一大把,真是浪费你的积分啊!51平台上的程序稍加修改不就能在430上跑了么!自己研究研究,有百益而无一害!

3. ADC0809与51单片机编程怎么实现

我自己做的最小系统板 自己写的代码 所以有得地方不会和其他电路板兼容但是ad0809是兼容的,你看一下#include <reg52.h>
#include <intrins.h>#define uchar unsigned char
#define uint unsigned intuchar table[16] = {0x81,0xB7,0xC2,0x92,0xB4,0x98,0x88,0xB3,0x80,0x90,0xA0,0x8C,0xCE,0x86,0xC8,0xE8};sbit CLK = P3^2; // 时钟输入端,最大为500KHz
sbit OE = P3^3; // 输出允许端 等于1时有效
sbit EOC = P3^4; // 转化完成标志 高电平表示转化结束.
sbit ST = P3^5; // 地址锁存信号.// 控制每位数码管显示
sbit L0 = P0^0;
sbit L1 = P0^1;
sbit L2 = P0^2;
sbit L3 = P0^3;
sbit L4 = P0^4;
sbit L5 = P0^5;
sbit K1 = P0^6;uchar a;
bit flag; // 输出方式的标志位void Delay(uint m)
{
uint i,j;

for (i=0; i<m; i++)
for (j=0; j<150; j++);
}//初始化串口,设置成工作方式0
void InitPort(void)
{
//; 不用设置,初始即为工作方式0
}// 发送一个数据
void SendByte(uchar dat)
{
SBUF = dat;
while (!TI);
TI = 0;
}void InitLed(void)
{
L0 = 0;
L1 = 0;
L2 = 0;
L3 = 0;
L4 = 0;
L5 = 0;
}void DisplayLed(void)
{
uint value; //unsigned long value;
//value = (a*500)/256; if (a < 132)
value = (a*500)/256;
else
{
value = (a*500)/256;
value = value + 256;
} if (!flag)
{
L0 = 0; L1 = 0; L2 = 1;
SendByte(table[value/100]&0x7F);
Delay(5);

L0 = 0; L1 = 1; L2 = 0;
SendByte(table[(value/10)%10]);
Delay(5);

L0 = 1; L1 = 0; L2 = 0;
SendByte(table[value%10]);
Delay(5);
}
else
{
L0 = 0; L1 = 0; L2 = 1;
SendByte(table[a/100]);
Delay(5);

L0 = 0; L1 = 1; L2 = 0;
SendByte(table[(a/10)%10]);
Delay(5);

L0 = 1; L1 = 0; L2 = 0;
SendByte(table[a%10]);
Delay(5);
}
}void ScanKey(void)
{
if (K1 == 0)
{
flag = !flag;
while (!K1);
K1 = 1;
}
}// 初始化AD0809
void InitAD0809(void)
{
ST = 0;
OE = 0;
}// 读AD0809中的数据
uchar ReadAD0809(void)
{
//EOC = 0;
OE = 0;
ST = 0;
//_nop_();
ST = 1; // 上升沿AD0809内部的寄存器清零
//_nop_();
ST = 0; // 产生一个至少100ns的脉冲,在转换期间ST为低 while (!EOC)
{
DisplayLed();
ScanKey();
}
OE = 1;
return P1;
}main()
{
//uint i;
TMOD = 0x01;
EA = 1;
TR0 = 1;
ET0 = 1;
flag = 0;
K1 = 1; InitLed();
InitPort();
InitAD0809(); /*for (i=0; i<16; i++)
{
SendByte(table[i]);
Delay(100);
}*/
while (1)
{
a = ReadAD0809();
}
}
void timer0(void) interrupt 1 using 1
{
TH0 = 0xFF;
TL0 = 0x80; CLK = !CLK;
}

阅读全文

与Adc0809如何编程相关的资料

热点内容
微信打码赚钱安卓软件 浏览:608
苹果官换机买什么版本 浏览:979
visio数据模型怎么用 浏览:179
关于驾驶的app 浏览:92
多线程编程有什么特点 浏览:453
iso文件系统 浏览:116
苹果932拦截骚扰电话 浏览:765
盲盒开箱app有哪些 浏览:422
win10激活脚本之家 浏览:191
魔鬼作坊工具包 浏览:185
ae源文件下载 浏览:520
如何将照片内容转换成pdf文件 浏览:137
浙里办app如何更换手机号码 浏览:244
电子资料文件有哪些 浏览:241
猥琐猫表情教程 浏览:599
android音频文件格式 浏览:458
漫画脸app哪里可以下载 浏览:959
购买欢乐升级欢乐豆 浏览:282
学习智能机器人用什么编程最好 浏览:655
苹果手机如何管控app 浏览:633

友情链接