//#include<STC12C5A60S2.H> //头文件
#include <intrins.h>
#include "DA.h"
#include "7705.h"
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define Vref 2.048 //TLV5616比较电压
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^7;
sbit LCD_EN = P2^4; //LCD使能信号
sbit LCD_RS = P2^3; //LCD寄存器选择H=data; L=command;
double V11,R=1.2,DAA;
uint DA,AD=0,V=20,I=0;
uchar digit[16]={"0123456789ABCDEF"};
uchar wan,qian,bai,shi,ge;
//延时函数
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=123;y>0;y--);
}
void command(uchar command)
{
LCD_RS=0;
P0=command;
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
void dat(uchar dat)
{
delay(5);
LCD_RS = 1;
P0=dat;
delay(5);
LCD_EN=1;
delay(5);
LCD_EN=0;
}
void init1602()
{
LCD_EN=0;
command(0x38);
delay(5);
command(0x0c);
delay(5);
command(0x06);
delay(5);
command(0x01);
delay(5);
}
void display(uint Y,uint X)
{
uint temp;
uchar address;
temp=X;
wan=temp/10000;
qian=temp/1000%10;
bai=temp/100%10 ;
shi=temp/10%10; //十位
ge=temp%10; //个位
if(Y==1)
{
address=0x80; //0<=x<8;
}
else if(Y==2)
{
address=0x80+0x40;
}
else if(Y==3)
{
address=0x80+0x40+7;
}
command(address);
dat('I');
dat('=');
dat(digit[wan]);
dat(digit[qian]);
dat(digit[bai]);
dat(digit[shi]);
dat(digit[ge]);
}
/*********************************************************************************************
函数名:主函数
调 用:无
参 数:无
返回值:无
结 果:程序开始处,无限循环
备 注:/**********************************************************************************************/
void main (void)
{
unsigned int DAA=0;
init1602();
Adc7705Init();
while(1)
{
if(key1==0)
{
delay(10);
if(key1==0)
{
V--;
}
while(!key1);
}
if(key2==0)
{
delay(10);
if(key2==0)
{
V++;
}
while(!key2);
}
if(key3==0)
{
delay(10);
if(key3==0)
{
V=V-50;
}
while(!key3);
}
if(key4==0)
{
delay(10);
if(key4==0)
{
V=V+50;
}
while(!key4);
}
display(1,V);
delay(10);
//*************************DA输出******************************************** //
DAA=(V/1000)/Vref*2048 ;
DA=(uint)DAA;
// DA=V;
tlv5616_da(DA);
_nop_();
_nop_();
//*************************AD检测******************************************** //
AD=AverAdc7705();
V11=(double)(AD*Vref/65536.0*1000);
I=(uint)(V11);
display(2,I); //位数是否正确需检验
display(3,AD);
delay(10);
/*
if(I==V)
{
DAA=DAA;
}
else if(I>V)
{
DAA--;
}
else if(I<V)
{
DAA++;
}
*/
}
}
/**********************************************************************************************/
dianliuyuan.zip_current source_generation
版权申诉
33 浏览量
2022-09-21
18:11:38
上传
评论
收藏 64KB ZIP 举报
周楷雯
- 粉丝: 80
- 资源: 1万+
最新资源
- las格式点云数据使用详解(附VS编译好的LAStools工具)
- KRPano插件一键解密大师1.4.0 (解压密码1234)
- 《C++沉思录》是一本由 Scoot Meyers 所著的经典 C++ 编程书籍 该书深入探讨了 C++ 的一些高级概念和技术
- 海信刷机数据 LED42K310X3D(0000)BOM1-C006软件数据与LED42K310NX3D(0000)BOM1通用
- 送货单打印软件单机版直接单机运行不需要网络
- pycdc工具,Python3.9及以上可用的反编译工具(exe转py)
- 计算机网络基础练习题.pdf
- SDIO接口远距离无线图传WIFI6模块TT-S6D2TR-105HP
- 海信智能电视刷机数据 LED42K280J3D(1000) 生产用软件数据 务必确认机编一致 强制刷机 整机USB升级程序
- 步进电机控制实验-原理图-软件代码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0