单片机 数字电压表设计 - 图文(4)

2019-05-17 12:57

0x00,0x00,0x00,0x1F,0x1F,0x07,0xFF,0xFF,0xFF,0xFF,0x9F,0xFF,0xF0,0x00,0x00,0x00, 0x00,0x00,0x00,0x1F,0xBF,0x87,0xFF,0xFC,0x77,0x7B,0x9F,0xFF,0xF0,0x00,0x00,0x00, 0x00,0x00,0x00,0x3F,0xFF,0x87,0xB3,0xC0,0x77,0xF8,0x1E,0x3C,0xF0,0x00,0x00,0x00, 0x00,0x00,0x00,0x3F,0x7F,0xC7,0x83,0xC0,0x73,0xF0,0x1E,0x3C,0xF0,0x00,0x00,0x00, void delay1(unsigned int z);//定义读书延时函数

void delay2(unsigned int t); void delayNOP();

void lcdpos(uchar X,uchar Y);

void writecmd(unsigned char cmd); //写命令

void writedat(unsigned char dat); 0x00,0x00,0x00,0x79,0xF9,0xE7,0xC0,0x00,0x73,0xFC,0x1E,0x3C,0xF0,0x00,0x00,0x00, 0x00,0x00,0x00,0x73,0xF1,0xFF,0xFF,0xFE,0x7F,0xFF,0xFE,0x3C,0xF0,0x00,0x00,0x00, 0x00,0x00,0x00,0x70,0xC0,0x6E,0xFF,0xFE,0x7F,0x0F,0xBC,0x3F,0xF0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x1C,0x3F,0xE0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

unsigned char num,temp;//定义键盘返回值,中间变量

unsigned char getkey();//键盘扫描函数 unsigned char adc0804(void); //读AD0804子程序 //读AD0804子程序

unsigned int datpro(void);//ADC0804读出的数据处理

//写数据

void init(); //初始化 bit busy();

void displayA(); void displayB(); void displayC(); void displayD();

void disphoto(unsigned char *photo); //图片显示

void display_jiemian();

void clear(); //清屏 void display1(); void display(); void main() {

delay2(100); init();

disphoto(photo1); delay1(2000); clear(); delay2(5);

display_jiemian(); num=6; while(1) {

if(num==1) {

getkey();//获得键盘输入值

if(num==2||num==3||num==5||num==6) {

num=1; }

switch(num) {

3

case 2:a1=0;b1=0; break; case 5:a1=1;b1=0; break; case 3:a1=0;b1=1; break; default:a1=1;b1=1; }; display1(); } if(num==4) { getkey();//获得键盘输入值 switch(num) { case 2:a1=0;b1=0; break; case 5:a1=1;b1=0; break; case 3:a1=0;b1=1; break; default:a1=1;b1=1; }; lcdpos(3,3); for(i=0;i<10;i++) { writedat(dis12[i]); delay1(1); } display_jiemian(); delay1(5); } if(num==2)//(条件选择语句)不同的档位不同的显示形式

{ getkey();//获得键盘输入值 switch(num) { case 2:a1=0;b1=0; break; case 5:a1=1;b1=0; break; case 3:a1=0;b1=1; break; default:a1=1;b1=1; }; lcdpos(2,6); writedat('A'); delay1(2); lcdpos(3,7); for(i=0;i<2;i++) { writedat(dis6[i]); delay1(1); } adc0804();//读取模数转换数据 aaa=datpro();//读电压 if(aaa>=40000) { display(); delay1(1); } else { displayA(); delay1(2); } } if(num==3)

4

{ getkey();//获得键盘输入值 switch(num) { case 2:a1=0;b1=0; break; case 5:a1=1;b1=0; break; case 3:a1=0;b1=1; break; default:a1=1;b1=1; }; lcdpos(2,6); writedat('B'); delay1(2); lcdpos(3,7); for(i=0;i<2;i++) { writedat(dis7[i]); delay1(1); } delay1(2); adc0804();//读取模数转换数 aaa=datpro();//读电压据 if(aaa>=40000) { display(); delay1(1); } else { displayB(); delay1(2); } }

if(num==5) { getkey();//获得键盘输入值 switch(num) { case 2:a1=0;b1=0; break; case 5:a1=1;b1=0; break; case 3:a1=0;b1=1; break; default:a1=1;b1=1; }; lcdpos(2,6); writedat('C'); delay1(2); lcdpos(3,7); for(i=0;i<2;i++) { writedat(dis6[i]); delay1(1); } delay1(2); adc0804();//读取模数转换数据 aaa=datpro();//读电压 if(aaa>=40000) { display(); delay1(1); } else { displayC(); delay1(2); }

5

} if(num==6) { getkey();//获得键盘输入值 switch(num) { case 2:a1=0;b1=0; break; case 5:a1=1;b1=0; break; case 3:a1=0;b1=1; break; default:a1=1;b1=1; }; lcdpos(2,6); writedat('D'); delay1(2); lcdpos(3,7); for(i=0;i<2;i++) { writedat(dis7[i]); delay1(1); } delay1(2); adc0804();//读取模数转换数据 aaa=datpro();//读电压 if(aaa>=40000) { display(); delay1(1); } else { displayD(); delay1(2); }

} } } unsigned char getkey(void) { P2=0xf7; temp=P2; temp=temp&0xe7; while(temp!=0xe7) { delay1(5); temp=P2; temp=temp&0xe7; while(temp!=0xe7) { switch(temp) { case 0xe3:num=3; break; case 0xe5:num=2;

break; case 0xe6:num=1; break; } while(temp!=0xe7) //松手检测 { temp=P2; temp=temp&0xe7; } } } P2=0xef; temp=P2; temp=temp&0xe7; while(temp!=0xe7) { delay1(5);

6

temp=P2;

temp=temp&0xe7; while(temp!=0xe7) {

switch(temp) {

case 0xe3:num=6;

break; case 0xe5:num=5;

break; case 0xe6:num=4;

break; }

while(temp!=0xe7) //松手检测

{

temp=P2; temp=temp&0xe7;

} } } return(num); }

unsigned char adc0804( void ) {

rd=1; wr=1; int1=1;

P1=0xff; cs=0; wr=0; wr=1;

while(int1==1); rd=0; delay1(1); addata=P1; rd=1; cs=1;

return(addata);

}

unsigned int datpro(void) {

unsigned char x;

for(x=0;x<10;x++) {

dianya=addata+dianya; }

dianya=dianya/10; dianya=addata;

dianyah=dianya&0xf0; dianyah=dianyah>>4; dianyal=dianya&0x0f;

dianya=dianyal+dianyah*16; aaa=dianya*195.3125; return(aaa); }

void delay1(unsigned int z) {

uint t1,y;

for(t1=z;t1>0;t1--) {

for(y=110;y>0;y--); } }

void delay2(unsigned int t) {

uchar i,j;

for(i=0;i

void delayNOP() {

_nop_(); _nop_(); _nop_(); _nop_(); }

bit busy() {

bit i; rs=0; rw=1; en=1;

7


单片机 数字电压表设计 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中高档养生膳食馆餐饮管理创业计划书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: