标题:
TLC2543 protues仿真(含单片机源代码)
[打印本页]
作者:
zzy2892
时间:
2018-1-16 10:50
标题:
TLC2543 protues仿真(含单片机源代码)
TLC2543 protues仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(21.29 KB, 下载次数: 43)
下载附件
2018-1-17 03:47 上传
0.png
(55.52 KB, 下载次数: 32)
下载附件
2018-1-17 03:46 上传
单片机源程序如下:
#include <reg52.h>
#include <intrins.h>
#include "head.h"
#include "interrupt.h"
int Voltage;
double base_v=4095; //基准电压定义,仿真用
/*****************************************************
函数功能:延时1ms
***************************************************/
void delay1ms()
{
unchar i,j;
for(i=0;i<9;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
入口参数:n
***************************************************/
void delaynms(int n)
{
unchar i;
for(i=0;i<n;i++)
delay1ms();
}
/*****************************************************
函数功能:延时若干微秒
入口参数:n
***************************************************/
void delay(unchar n)
{
unchar i;
for(i=0;i<n;i++)
{
_nop_();
}
}
/*****************************************************
函数功能:数码管显示
入口参数:shu
**************************************************/
void display(int shu) //显示函数
{
P0=dispcode[shu%10/1];
delaynms(1);
gw=0;
delaynms(1);
gw=1;
delaynms(1);
P0=dispcode[shu%100/10];
delaynms(1);
sw=0;
delaynms(1);
sw=1;
P0=dispcode[shu%1000/100]|0x80; //加上小数点显示 //仿真用
// P0=dispcode[shu%1000/100]&0x7f; //加上小数点显示
delaynms(1);
bw=0;
delaynms(1);
bw=1;
P0=dispcode[shu/1000];
delaynms(1);
qw=0;
delaynms(1);
qw=1;
delaynms(1);
}
/*****************************************************
函数功能:AD转换
入口参数:port
***************************************************/
unint read2543(unchar port)
{
unint ad=0,i;
CLOCK=0;
_CS=1; /***可删***/
_CS=0;
port<<=4;
for(i=0;i<12;i++)
{
if(D_OUT) ad|=0x01;
D_IN=(bit)(port&0x80);
CLOCK=1;
delay(3); /***可删***/
CLOCK=0;
delay(3); /***可删***/
port<<=1;
ad<<=1;
}
_CS=1;
while(!D_EOC);
ad>>=1;
return(ad);
}
/*****************************************************
函数功能:测量电压
入口参数:
***************************************************/
int action(char port)
{
int ad;
unint i,j,max,min,sum,average;
unint a[10];
double b=4095;
double ad1;
for(j=0;j<10;j++)
{
a[j]=read2543(port);
delay(10);
}
sum=max=min=a[0];
for(i=0;i<10;i++)
{
if(max<a[i])
max=a[i];
}
for(i=0;i<10;i++)
{
if(min>a[i])
min=a[i];
}
for(i=1;i<10;i++)
{
sum+=a[i];
}
sum=sum-max-min;
average=sum>>3;
ad1=average;
ad1=(double)(base_v/b*average); //4.095V基准时可以去掉
ad=(int)ad1;
ad=ad/10;
return (ad);
}
/*****************************************************
函数功能:主函数
入口参数:
***************************************************/
void main()
{
time_init();
while(1)
{
TR0=1;
Voltage=action(0);
}
}
复制代码
所有资料51hei提供下载:
TLC2543 protues(含源代码)仿真.rar
(135.62 KB, 下载次数: 90)
2018-1-17 03:48 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
zzy2892
时间:
2018-1-16 10:59
用89c52单片机进行仿真,源代码、仿真图一应俱全,供大家参考学习。
作者:
单片机爱好者223
时间:
2022-3-6 16:15
很好,有价值~~~~~~
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1