标题:
数字电压表设计proteus仿真及单片机源代码
[打印本页]
作者:
c^2
时间:
2017-4-21 19:42
标题:
数字电压表设计proteus仿真及单片机源代码
数字电压表设计proteus仿真原理图:
0.png
(28.51 KB, 下载次数: 90)
下载附件
2017-4-22 01:30 上传
单片机源程序:
#include <reg52.h>
#include <intrins.h>
sbit EOC=P2^6;
sbit START=P2^5;
sbit OE=P2^7;
sbit CLK=P2^4;
long int a;
int b,c,d,e,f,g; //定义长度为7的字符串
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};
void delay_display(unsigned int z) //延时子程序
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void ADC0808()
{
if(!EOC) //如果EOC为低电屏,则产生一个脉冲,这个脉冲的下降沿用于启动AD转换
{
START=0;
START=1;
START=0;
}
while(!EOC); //等待AD转换结束
START=1; //转换结束后,再产生一个脉冲,这个脉冲的下降沿用于将EOC置为低电屏,为下一次转换作准备
START=0;
while(EOC);
}
void bianma()
{
START=0;
ADC0808();
a=P1*100;
a=a/51;
}
void yima()
{
//定义整形局域变量
b=a/1000; //取出千位
c=a-b*1000; //取出百位、十位、个位
d=c/100; //取出百位
e=c-d*100; //取出十位、个位
f=e/10; //取出十位
g=e-f*10; //取出个位
}
void display() //显示子程序
{
P2 = 0xfe;
P0 = table[b];
delay_display(1);
P2 = 0xfd;
P0 = table[d];
delay_display(1);
P2 = 0xfd;
P0 = table[10];
delay_display(1);
P2 = 0xfb;
P0 = table[f];
delay_display(1);
P2 = 0xf7;
P0 = table[g];
delay_display(1);
}
void main()
{
EA=1;
TMOD=0X02;
TH0=216;
TL0=216;
TR0=1;
ET0=1;
while(1)
{
bianma();
yima();
display();
}
}
void t0() interrupt 1 using 0
{
CLK=~CLK;
}
复制代码
0.png
(49.63 KB, 下载次数: 102)
下载附件
2017-4-22 01:29 上传
仿真工程文件和源码下载:
第1章 数字电压表设计.rar
(46.59 KB, 下载次数: 54)
2017-4-21 19:41 上传
点击文件名下载附件
数字电压表
下载积分: 黑币 -5
作者:
15895149620
时间:
2017-5-13 10:21
看样子很不错
作者:
榆林上校
时间:
2017-5-18 18:32
增加人气,顶!
作者:
a601046990
时间:
2017-6-2 18:21
感谢楼主分享!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1