📄 max197.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 + -