⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lesson.c

📁 在51系统中对AD0804的操作的C代码.可用于数据采集.
💻 C
字号:
/* 51hei单片机实验板演示程序                                */
/*  网站:http://www.51hei.com                              */
//通过控制A/D转换程序我们可以直观的通过调节电位器让改变的电压用LED或者是数码管表现出来

#include"AT89x52.h"
#include"intrins.h"
#include"math.h"
	
#define uint unsigned int
#define uchar unsigned char

sbit ADC0804_SC=P3^5;
sbit ADC0804_RD=P3^7;
sbit ADC0804_WR=P3^6;

sbit DUAN=P2^0;     //74HC573的LE端    LED的段选端
sbit WEI=P2^1;      //74HC573的LE端    LED的位选端
sbit SJ=P1^4;       //LED的使能端

uchar Temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //共阴显示字库

void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}

void adc0804_start()           //AD0804的启动函数
{
	ADC0804_WR=1;
	ADC0804_WR=0;
	ADC0804_WR=1;
}

void wei_1(uchar wei)
{
	WEI=1;
	P0=wei;
	WEI=0;
}

void duan_1(uchar duan)
{
	DUAN=1;
	P0=Temp[duan];
	DUAN=0;
}

void jishuan(uchar DATA)
{
	uchar i;
	uchar ge,shi,bai,qian;
	ge=DATA%1000%100%10;
	shi=DATA%1000%100/10;
	bai=DATA%1000/100;
	qian=DATA/1000;
	if(DATA<10)
	{
		duan_1(ge);
		wei_1(0xfe);
	}
	if(DATA>=10&&DATA<100)
	{
		duan_1(ge);
		wei_1(0xfd);
		for(i=0;i<100;i++);
		duan_1(shi);
		wei_1(0xfe);
	}
	if(DATA>=100&&DATA<1000)
	{
		duan_1(ge);
		wei_1(0xfb);
		for(i=0;i<100;i++);
		duan_1(shi);
		wei_1(0xfd);
		for(i=0;i<100;i++);
		duan_1(bai);
		wei_1(0xfe);
	}
	for(i=0;i<100;i++);	
}

main()
{
	uchar ADC0804_data;
	ADC0804_SC=0;                 //让SC一直为低
	SJ=0;                         
	while(1)
	{
		adc0804_start();          //启动ADC0804
		delay(1);                 //延时  
		ADC0804_RD=0;             //RD为低
		ADC0804_data=P1;          //将ADC0804的数据传出
		ADC0804_RD=1;             //RD为高
//		P0=ADC0804_data;          //将数据附给P0口让LED显示出来
		jishuan(ADC0804_data);    //或者把数据让数码管显示出来,
   }                            //这个函数在原来的动态扫描中直接调用就行了
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -