1、基于PROTUES仿真平臺(tái)設(shè)計(jì)一個(gè)數(shù)字電壓表,能夠測(cè)量-5V-5V間的直流電壓,通過(guò)數(shù)碼管顯示。
2、完成系統(tǒng)硬件資源選型(以51單片機(jī)和ADC0808為核心),繪制軟件流程圖。
3、基于C語(yǔ)言編程和測(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
//數(shù)碼管編碼
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0;//定時(shí)
float volt=0;//電壓
//延時(shí)
void delay(uint i)
{
while(i--);
}
//主函數(shù)
void main()
{
uchar i=0;
PD=0x80;//初始化8255
TMOD|=0X01;//初始化定時(shí)器
TH0=0X3C;//50ms
TL0=0XB0;
ET0=1;//打開(kāi)定時(shí)器0中斷允許
EA=1;//打開(kāi)總中斷
TR0=1;//打開(kāi)定時(shí)器
while(1)
{
//顯示
if(volt>0)//正數(shù)
{
i=volt*10;
/*PA=0;
PB=0xff;
PA=smgduan[set/100];
PB=0xfe;
delay(50);*/
PA=0;
PB=0xff;
PA=smgduan[i/10]+0x80;//小數(shù)點(diǎn)
PB=0xfd;
delay(50);
PA=0;
PB=0xff;
PA=smgduan[i%10];
PB=0xfb;
delay(50);
}
else//負(fù)數(shù)
{
i=-volt*10;
PA=0;
閱讀全文