微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 简易数字直流电压表电路及程序设计

简易数字直流电压表电路及程序设计

时间:09-14 来源:互联网 点击:

图3-19数字电压表的主程序流程图

(4)设计系统软件调试方案、硬件调试方案及软硬件联合调试方案
软件调试方案:伟福软件中,在“文件新建文件”中,新建C语言源程序文件,编写相应的程序。在“文件新建项目”的菜单中,新建项目并将C语言源程序文件包括在项目文件中。
在 “项目编译”菜单中将C源文件编译,检查语法错误及逻辑错误。在编译成功后,产生以 “*.hex”和“*.bin” 后缀的目标文件。
硬件调试方案:在设计平台中,将单片机的P1.0接TLC549的CLK管脚,P1.1接TLC549的DOUT管脚,P1.2接TLC549的CS管脚。
在伟福中将程序文件编译成目标文件后,将下载线安装在实验平台上,运行“MCU下载程序”,选择相应的flash 数据文件,点击“编程”按钮,将程序文件下载到单片机的Flash中。
然后,上电重新启动单片机,检查所编写的程序是否达到题目的要求,是否全面完整地完成试题的内容。

3.6.2 模块2 程序设计
//晶振:11.0592MHz,定时器T0每50ms中断一次,每隔0.1秒读ADC一次
/* AD转换器使用 TLC549
p1.0-Clock
p1.1-Data out
p1.2-CS
*/
#include reg51.h
#include intrins.h
#include math.h
sbit ad_clk=P1^0;
sbit ad_dout=P1^1;
sbit ad_cs=P1^2;
unsigned char data re_data;
unsigned int data T_cnt;
double volt,xishu;
char code led_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//led_seg_code[0-9]代表0-9的7段码
//---------------
void delay(unsigned int i)//延时
{ while(--i); }
//---------------
void led_show(double f)
{ unsigned char i,s;
unsigned int k,*j;
if (f2)
{ k=f;//取整数 部分
i=k;
P0=led_seg_code[i] | 0x80;
P2=0xfb;
delay(50);
i=f*10;
i=i%10;
P0=led_seg_code[i];
P2=0xfd;
delay(50);
i=f*100; //取小数后1位
i=i%10;
P0=led_seg_code[i];
P2=0xfe;
delay(50);
else //超限报警,显示“---”
{ P0=0x40;
P2=0xfb;
delay(50);
//---------
P2=0xfd;
delay(50);
//-----------
P2=0xfe;
delay(50);
}
}
//----读取ADC转换器TLC549的数据----
unsigned char receive_data()
{unsigned char i,d;
d=0;
ad_cs=1; // /CS置高,片选无效
ad_clk=0;
ad_cs=0;
_nop_();
for(i0;i8;i++)
{ ad_clk=1;
d=d1;
if (ad_dout)
{ d++;}
ad_clk=0;
}
ad_cs=1;
for(i=0;i10;i++) // 适当延时超过17us
_nop_();
return d;
}
//-------------
main()
{T_cnt=0;
TMOD=0x01; //定时器设置T0
TH0=0x4c; //50000us=(65536-0x4c00)*12/11.0592
TL0=00;
EA=0;
TR0=1;
re_data=0x00;
volt=0;
xishu=2.5/255.0;
//-----------------------------
while(1)
{ if(TF0==1)
{ TF0=0;
TH0=0x4c; //50000us=(65536-0x4c00)*12/11.0592
TL0=0x0;
if (T_cnt2) //T0为50毫秒溢出一次,每100ms读取一次AD转换器数据
{T_cnt++;}
else
{ T_cnt=0;//计时到100ms了
re_data=receive_data();
//转换为电压值
volt=re_data;
volt=volt*xishu;
}
}
led_show(volt);
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top