DA转换-15~15v电压源设计
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
float num=51;
float temp;
uchar val;
uchar aa[4];
unsigned char code disp_code[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
【DA转换-15~15v电压源设计】0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0xff};//数码管显示
/**********************************************************
延时子函数
**********************************************************/
void delayms(uint ms)
{
uchar t;
while(ms--)
{
for(t = 0; t < 120; t++);
}
}
/******************************************************************
函数功能:显示计数次数的子程序
入口参数:x
********************************************************************/
void Display(void)
{ uchar i;
P2=0xfe ;
for(i=0;i<4;i++)
{ P1=disp_code[aa[i]];
if(P2==0xfb)
P1=disp_code[aa[i]]&0x7f;
delayms(5);
P2=_crol_(P2,1);
}
}
/*******************************************
函数功能:主函数
******************************************/
void main(void)
{
EA=1; //开放总中断
EX0=EX1=1; //允许使用外中断
IT0=IT1=1; //选择负跳变来触发外中断
temp=num/8.5;
val=(uchar)temp;
if(val<15)
{aa[0]=16;val=15-val;}
else {aa[0]=17;val=val-15;}
aa[1]=val/10;
if (aa[1]==0)
aa[1]=17;
aa[2]=val%10;
aa[3]=0;
P0=(uchar)num;
while(1)
Display();
}
void int0(void) interrupt 0 //外中断0的中断编号为0
{
if(num==0)
num=num+8.5;
num=num-8.5;
temp=num/8.5;
val=(uchar)temp;
if(val<15)
{aa[0]=16;val=15-val;}
else {aa[0]=17;val=val-15;}
aa[1]=val/10;
if (aa[1]==0)
aa[1]=17;
aa[2]=val%10;
aa[3]=0;
}
void int1(void) interrupt 2 //外中断1的中断编号为0
{
if(num==255)
num=num-8.5;
num=num+8.5;
temp=num/8.5;
val=(uchar)temp;
if(val<15)
{aa[0]=16;val=15-val;}
else {aa[0]=17;val=val-15;}
aa[1]=val/10;
if (aa[1]==0)
aa[1]=17;
aa[2]=val%10;
aa[3]=0;
P0=(uchar)num;
}
推荐阅读
- ADC0809A/D转换器基本应用技术
- 支持USB4接口扩展和DP视频输出 威锋VL830接口转换器开箱测评
- 基于TMS320C6711-150 DSK板对Flash存储器实现编程
- 值得学习的电感型升压DC/DC转换器的工作过程
- StarTech.com推两款转换器:1个USB转4个HDMI接口【网友:后悔没早点看】
- 福特因缺芯再次削减北美最畅销F-150皮卡生产
- 灵感缘于蝴蝶翅膀,科学家研究出经济高效的催化转换器
- ROG Strix 750W电源转换效率测评
- pic单片机实例篇,pic单片机AD转换实例
- 转换器是干嘛的?转换器是变压器吗?