📄 main.c
字号:
/*
****************************************************
****************************************************
*/
#include <reg52.H>
#include "Typedef.H"
#include "UserDef.H"
#include "Disp.H"
#include "ADC0809.H"
#include "TLC0832.H"
#include "DAC0832.H"
/* 常数定义 */
#define T_ADDA 10 //ADDA周期:10ms
/*---------------------<<< 修改1 >>>---------------------------------*/
// 按照实际数值修改,可用电压探针查看相应IC的REF引脚电压
// 注:TLC0832使用5V的固定电压作为基准电压值
#define V_REF_AD0 5.0 //ADC0809的基准电压值
#define V_REF_AD1 5.0 //TLC0832的基准电压值
#define V_REF_DA 5.0 //DAC0832的基准电压值
/*--------------------------------------------------------------------*/
/* 全局变量 */
bit bDispRef = FALSE; //信号灯:显示更新时间到
bit bADDARef = FALSE; //信号灯:ADDA采样时间到
/***************************************
****************************************/
void main(void)
{
INT8U AD0,AD1,DA;
float Volt_AD0,Volt_AD1,Volt_DA;
//初始化
TMOD = 0x11;
TH0 = (INT8U)(KTDLY>>8);
TL0 = (INT8U)(KTDLY);
TR0 = 1;
ET0 = 1;
EA = 1;
DispInit(); //LCD初始化
AD0809_init(); //AD0809初始化
/* LCD清屏 */
DispCls();
/* 显示固定的文字 */
DispXYSet(0,20);
DispHZ(2);
DispHZ(3);
/*----------------------<<< 修改2 >>>--------------------------------*/
// 液晶屏幕上显示“数据采集”的汉字,现只有显示“数据”的程序。
// 请补充显示“采集”的相关程序及补充字库中的汉字字模
// 字模的获取通过工具软件实现
// 注:汉字字模在font.h中的FontHZ14x14数组
DispHZ(4);
DispHZ(5);
/*--------------------------------------------------------------------*/
DispFontSet(1);
DispXYSet(3,0);
DispStr("AD0=");
DispXYSet(5,0);
DispStr("AD1=");
DispXYSet(7,0);
DispStr("DA =");
while(TRUE)
{
/* 显示扫描刷新,输出可变的文字 */
if (bDispRef == TRUE)
{
bDispRef = FALSE;
// 显示当前的AD、DA数值
DispFontSet(1);
DispXYSet(3,35);
DispInt(AD0,3);
DispXYSet(5,35);
DispInt(AD1,3);
DispXYSet(7,35);
DispInt(DA,3);
// 显示当前的AD、DA所对应的实际电压值
DispFontSet(0);
DispXYSet(3,64);
DispFloat(Volt_AD0,6); DispChr('V');
DispXYSet(5,64);
DispFloat(Volt_AD1,6); DispChr('V');
DispXYSet(7,64);
DispFloat(Volt_DA,6); DispChr('V');
}
/* ADDA采样,进行AD、DA转换并计算AD、DA值对应的实际电压值 */
if (bADDARef == TRUE)
{
bADDARef = FALSE;
AD0 = AD0809(0);
AD1 = TLC0832();
DA = AD0-AD1;
Dac0832(DA);
/*----------------------<<< 修改3 >>>---------------------------------*/
// 根据公式计算AD,DA所对应的实际电压值
Volt_AD0 = AD0 / 256.0 * V_REF_AD0;
Volt_AD1 = AD1 / 256.0 * V_REF_AD1;
//根据DAC0832的外围硬件电路,选择下列2个公示中的一个
Volt_DA = (signed char)(DA - 128) / 128.0 * V_REF_DA; //双极性输出
// Volt_DA = -1.0 * DA / 256.0 * V_REF_DA; //单极性输出
/*--------------------------------------------------------------------*/
}
}
}
/*************************************
定时器中断程序
**************************************/
void int_t0(void) interrupt 1 using 1
{
static int cnt = 0;
TH0 = (unsigned char)(KTDLY>>8);
TL0 = (unsigned char)(KTDLY);
cnt ++;
/* 显示扫描信号灯 */
if ((cnt % T_DISPREF) == 0)
{
bDispRef = TRUE;
}
/* ADDA采样信号灯 */
if ((cnt % T_ADDA) == 0)
{
bADDARef = TRUE;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -