adc8080的ad转换单片机程序

adc8080的ad转换单片机程序,第1张

#include "reg51.h"

#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=0i<125i++)

}

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=1ALE=0

START=1START=0

while(EOC==0)

OE=1

d=data_point

OE=0

TR1=1

return d

}

void covert(unsigned char x)

{

sum=x*0.0201378

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

}

AD0809的采集程序

//---A/D转换---

//-----头文件引用------

#include <Reg51.h>

#include <absacc.h>

#include <intrins.h>

typedef unsigned char BYTE/*自定义字节类型*/

#define Set_Bit(BIT) (BIT = 1) /*定义置1函数*/

#define Clear_Bit(BIT) (BIT = 0) /*定义清0函数*/

/************************************************************************************/

void Write_Hd7279(BYTE,BYTE)/*定义HD7279写函数*/

BYTE Read_Hd7279(BYTE)/*定义HD7279读函数*/

void Send_Byte(BYTE)/*定义HD7279发送字节函数*/

BYTE Receive_Byte(void)/清冲*定义HD7279接收字节函数*/

void Short_Delay(void)/*定义短延时函数*/

void Long_Delay(void)/*定义长延时函数*/

void Mcu_Init(void)/*定义MCU初始化函数*/

void Delay_200_mS(void)/*定义200ms延时函数*/

sbit Hd7279_Clk=P1^6/*定义HD7279时钟硬件连接*/

sbit Hd7279_Data=P1^5/*定义HD7279数据硬件连接携则*/

sbit cs=P1^7

void Short_Delay(void) /*短延时函数*/

{

BYTE i

for(i=0i<0x08i++)

}

/************************************************************************************/辩正棚

void Long_Delay(void) /*长延时函数*/

{

BYTE i

for(i=0i<0x30i++)

}

/************************************************************************************/

void Write_Hd7279(BYTE Command,BYTE Data) /*HD7279写函数*/

{

Send_Byte(Command)

Send_Byte(Data)

}

/************************************************************************************/

void Send_Byte(BYTE Data_Out) /*HD7279发送字节函数*/

{

BYTE i

cs=0

Long_Delay()

for(i=0i<8i++)

{

if(Data_Out&0x80) Set_Bit(Hd7279_Data)

else Clear_Bit(Hd7279_Data)

Set_Bit(Hd7279_Clk)

Short_Delay()

Clear_Bit(Hd7279_Clk)

Short_Delay()

Data_Out=Data_Out<<1

}

Clear_Bit(Hd7279_Data)

}

//-----宏声明-----

#define A_DPORT XBYTE[0xFef3]//0809通道0地址

#define uchar unsigned char

//-----变量定义-----

bit bdata bz=0//定义标志

uchar val

//-----初始化-----

void first(void)

{

P1=0xff

P2=0xff

P3=0xff

P0=0xff

Send_Byte(0xa4)

IT1=1

EX1=1

EA=1//INT0 允许

}

//-----中断-----

void int_0(void) interrupt 2

{

val=A_DPORT//读 A_D 数据

bz=1//置读数标志

}

//-----主程序-----

main()

{

first()//初始化

while(1)

{

A_DPORT=val//启动 A_D

while(bz==0)//等待 A_D 转换结束

// val=~A_DPORT

//P1=val//数据输出

Write_Hd7279(0xc8,val&0x0f)

Write_Hd7279(0xc9,val>>4)

Write_Hd7279(0x92,0x00)

Write_Hd7279(0x93,0x00)

Write_Hd7279(0x94,0x00)

Write_Hd7279(0x95,0x00)

Write_Hd7279(0xce,0x0d)

Write_Hd7279(0xcf,0x0a)

bz=0//清读数标志

}

}

这就是C的程序

http://hi.baidu.com/dzkfw/blog/item/4a188216fd986b12c83d6d05.html

不平凡的单片机学习资料,很好的单片机教程,超好用,一个不占内存的教程,有案例。

1、最新版单片机编程宝典下载地址,学习单片机编程必备手册

2、单片机c语言运用例子

3、十天学会单片机c语言和单片机制作,最好的单片机资料


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

原文地址: https://outofmemory.cn/yw/12354596.html

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

发表评论

登录后才能评论

评论列表(0条)

保存