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

📄 max197.c

📁 单片机对A/D的控制程序 ?テ訟/D的控制程序单片机对A/D的控制程序
💻 C
字号:
#include<reg51.h>
#include<absacc.h>
#define COM_8279 XBYTE[0X3FFF]    //8279 command port
#define DAT_8279 XBYTE[0X3FFE]    //8279 data port
#define CS_197 XBYTE[0X7fff]      //max197 address
#define uchar unsigned char
#define uint unsigned int

sbit clflag=ACC^7;                //flag of 8279 clearing
sbit choice_datlh=P1^6;           // the choice of max197 h/l data
sbit flag_ad=P1^7;                // the flag of max197's covert completed

uchar diss[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};  //显示数组
uchar display[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   //数字数组

void delay(unsigned int t)
{
	for(;t>0;t--)
		;
}

void disp()                   //显示函数
{
	uchar i,m=0;
    COM_8279=0x90;
	for(i=0;i<8;i++)          //写显示 8位 RAM
	{
		COM_8279=i+0x90;
		DAT_8279=diss[m];
		m++;
		if(m>7)
			m=0;
	}
}

void init_8279()
{
	//其他初始化待定
	//    EA=1;
	//    EX1=1;
	COM_8279=0xd1;             //总清除命令

	do
	{
		ACC=COM_8279;
	}while(clflag==1);    //等待清除

	COM_8279=0x00;    //显示方式:8 位,左入口;键盘方式:编码扫描键盘,双键锁定
	COM_8279=0x3f;       //分频次数31 ,8279工作频率在100KHz左右
	COM_8279=0xb0;       // 显示RAM 恢复显示
}

unsigned int max197(void)
{
	unsigned int value_ad=0,value=0;
	unsigned char datl=0,dath=0;
        float number=0;
	//MAX197 命令字:D7   D6   D5   D4  D3  D2 D1 D0
	//MAX197 命令字:PD1 PD0 ACQMOD RNG BIP A2 A1 A0
	//外部时钟模式 PD1=0, PD0=1; ACQMOD=0,内部控制采集
	// RNG=0,BIP=0,满量程范围0-->5V,A2 A1 A0 = 0 0 0,通道0采集
	CS_197=0x40;

	while( flag_ad != 0 )    //等待转换结束
		choice_datlh=0;

	datl=CS_197;
	choice_datlh=1;
	dath=CS_197;
	choice_datlh=0;
//  dath &= 0x0f;
//当为"单"极行输入时 choice_datlh=1,数据口读到的数据: 0,   0,  0,  0, B11,B10,B9,B8
//当为"双"极行输入时 choice_datlh=1,数据口读到的数据: B11,B11,B11,B11,B11,B10,B9,B8
        value_ad=dath;
	value_ad <<= 8;
        value=datl;
	value_ad |= value;           
        number=(float)value_ad/0.819;  //???????????????????????
        value_ad=(uint)number;
        value_ad=value_ad;
      	return value_ad;

}

void main()
{
	uint value_ad=0;
	uchar i,m;
	init_8279();
	choice_datlh=0;
	while(1)
	{
		value_ad=max197();
		for(i=0;i<8;i++)
		{
                        m=value_ad%10;
		        value_ad /= 10;
                        diss[i]=display[m];
		}
		disp();
                value_ad=0;
		delay(30000);
	}
}

⌨️ 快捷键说明

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