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

📄 ad0808.c

📁 与单片机连接的AD八位逐次逼近式0808采样C语言设计程序
💻 C
字号:
#include<stdio.h>
#include<reg52.h>
#include<absacc.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
  uchar xdata *ad_0808;
#define IN0 XBYTE[0x7ff8]//0808的0通道地址
#define PA_8255 XBYTE[0x8000]//8255A口
#define PB_8255 XBYTE[0x8001]//8255B
//#define PC_8255 XBYTE[0x8002]//8255C
#define control_8255 XBYTE[0X8003]//8255 control
sbit EOC=P1^2;
uchar code display[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0,1,2,3,4,5,6,7,8,9 
uchar code displaydian[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//0.,1.,2.,3.,4.,5.,6.,7.,8.,9. 
uchar idata CH_data;

void delay(uint N)// 函数功能:延时子程序,实现(16*N+24)us的延时 
{					// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
	uint i;
	for(i=0;i<N;i++)
	;
}

void jisuanxianshi(uchar b)       //将采集的数据转换成实际的十进制数字(小数),并显示
{
	uint gewei,xiaoshu1,xiaoshu2,xiaoshu3,xiaoshu4,xiaoshu5,xiaoshu6,xiaoshu7,xiaoshu8;
	float a;
    uint m;
	a=(b/255.0)*5;
	gewei=a;
 	xiaoshu1=(a-gewei)*10;
 	xiaoshu2=(a-gewei-xiaoshu1/10.00)*100;
 	xiaoshu3=(a-gewei-xiaoshu1/10.00-xiaoshu2/100.00)*1000;
	xiaoshu4=(a-gewei-xiaoshu1/10.00-xiaoshu2/100.00-xiaoshu3/1000.00)*10000;
	xiaoshu5=(a-gewei-xiaoshu1/10.00-xiaoshu2/100.00-xiaoshu3/1000.00-xiaoshu4/10000.00)*100000;
	xiaoshu6=(a-gewei-xiaoshu1/10.00-xiaoshu2/100.00-xiaoshu3/1000.00-xiaoshu4/10000.00-xiaoshu5/100000.00)*1000000;
	xiaoshu7=(a-gewei-xiaoshu1/10.00-xiaoshu2/100.00-xiaoshu3/1000.00-xiaoshu4/10000.00-xiaoshu5/100000.00-xiaoshu6/1000000.00)*10000000;
	xiaoshu8=(a-gewei-xiaoshu1/10.00-xiaoshu2/100.00-xiaoshu3/1000.00-xiaoshu4/10000.00-xiaoshu5/100000.00-xiaoshu6/1000000.00-xiaoshu7/10000000.00)*100000000; 
	 if(xiaoshu8>4)
	 { 
	 	xiaoshu7+=1;
		if(xiaoshu7==10)
		{
			xiaoshu6+=1;
			xiaoshu7=0;
		    if(xiaoshu6==10)
			{
				xiaoshu5+=1;
				xiaoshu6=0;
				if(xiaoshu5==10)
				{
					xiaoshu4+=1;
					xiaoshu5=0;
					if(xiaoshu4==10)
					{
					   xiaoshu3+=1;
					   xiaoshu4==0;
					   if(xiaoshu3==10)
					   {
					     xiaoshu2+=1;
						 xiaoshu3==0;
						 if(xiaoshu2==10)
						 {  
						    xiaoshu1+=1;
							xiaoshu2==0;
							if(xiaoshu1==10)
							{
							   gewei+=1;
							   xiaoshu1==0;
							   }
							}
						}
					}
				}
			 }
		 }
	 }
	 for(m=0;m<1000;m++)
	 {
		PB_8255=0x80;
		PA_8255=display[xiaoshu7];
		delay(20);
		PB_8255=0x40;
		PA_8255=display[xiaoshu6];
		delay(20);
		PB_8255=0x20;
		PA_8255=display[xiaoshu5];
		delay(20);
		PB_8255=0x10;
		PA_8255=display[xiaoshu4];
		delay(20);
		PB_8255=0x08;
		PA_8255=display[xiaoshu3];
		delay(20);
		PB_8255=0x04;
		PA_8255=display[xiaoshu2];
		delay(20);
		PB_8255=0x02;
		PA_8255=display[xiaoshu1];
		delay(20);
		PB_8255=0x01;
		PA_8255=displaydian[gewei];
		delay(20);
		}
	}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

void main()
{  
   control_8255=0x80;/*8255,方式0,ABC口输出*/
     ad_0808=&IN0;
	 *ad_0808=0;
  	while(EOC==0)
	CH_data=*ad_0808;	
	jisuanxianshi(CH_data);
}

⌨️ 快捷键说明

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