1、基于PROTUES仿真平台设计一个数字电压表,能够测量-5V-5V间的直流电压,通过数码管显示。
2、完成系统硬件资源选型(以51单片机和ADC0808为核心),绘制软件流程图。
3、基于C语言编程和测试。
#include "reg51.h"
#include"absacc.h"
#define uchar unsigned char
#define uint unsigned int
#define PA XBYTE[0XFEF0]//8255
#define PB XBYTE[0XFEF1]
#define PC XBYTE[0XFEF2]
#define PD XBYTE[0XFEF3]
#define ADC XBYTE[0XFDFF]//ADC0808
//数码管编码
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0;//定时
float volt=0;//电压
//延时
void delay(uint i)
{
while(i--);
}
//主函数
void main()
{
uchar i=0;
PD=0x80;//初始化8255
TMOD|=0X01;//初始化定时器
TH0=0X3C;//50ms
TL0=0XB0;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
while(1)
{
//显示
if(volt>0)//正数
{
i=volt*10;
/*PA=0;
PB=0xff;
PA=smgduan[set/100];
PB=0xfe;
delay(50);*/
PA=0;
PB=0xff;
PA=smgduan[i/10]+0x80;//小数点
PB=0xfd;
delay(50);
PA=0;
PB=0xff;
PA=smgduan[i%10];
PB=0xfb;
delay(50);
}
else//负数
{
i=-volt*10;
PA=0;
阅读全文