No.8031 作者:byb518 邮件:byb518@163.com ID:2084 登陆:1次 文章数:1篇 最后登陆IP: 最后登陆:2002/5/31 15:31:00 注册:2002/5/31 15:31:00 财富:6 发帖时间:2002/5/31 15:34:00 发贴者IP:202.102.8.101 标题:byb518:C51编程:sos!!大虾们请过来 摘要:No.8031C51编程:sos!!大虾们请过来 下面是我的vfd的相关程序清单,中断程序只要放上,不管开不开中断,都显示不正常,而 不加时正常,是我环境设置问题?该怎么设?或是什么其他问题? vfd.c如下: void send(uchar x) {uchar j; for (j=8;j>0;j--) {DIS_DT=(bit)(x&0x01); DIS_CLK=1; x=x>>1; DIS_CLK=0; } } void display2(p,n ) //updata specific address uchar *p,n; {uchar i,send0; DIS_STB=0; send0=0x40; //command2 send(send0); DIS_STB=1; for (i=0;i<3;i++) {DIS_STB=0; send0=0xc0+3*n+i; //command3 send(send0); send0=p[i]; send(send0); DIS_STB=1; } } void display1(p) uchar p[12][3]; { uchar commond[]={0x0b,0x40,0xc0,0x8f}; uchar i,j,send0; void send(uchar x); //send 36data to vfd DIS_STB=1; DIS_DT=1; DIS_CLK=1; for (i=0;i<2;i++) {DIS_STB=1; send0=commond[i]; DIS_STB=0; DIS_CLK=0; send(send0); DIS_STB=0; } for (i=0;i<12;i++) for (j=0;j<3;j++) {send0=p[i][j]; send(send0); } DIS_STB=1; send0=commond[3]; DIS_STB=0; send(send0); DIS_STB=1; } define.c如下: #include<reg51.h> typedef unsigned char uchar; /****define special bit for I/O*****/ sbit DIS_DT=P1^2; /**data**/ sbit DIS_CLK=P1^1; /**CLK**/ sbit DIS_STB=P1^0; sbit WB0=P3^2; uchar data *data mab; 主程序3008.c如下: #include<define.c> #include<vfd.c> uchar data *data mab; void main(void) { uchar code vfddis[12][3]={{00,00,00},{00,00,00},{00,00,00},{00,00,00}, {0x8c,0xc4,00},{0x20,0x10,00}, {0x0c,0x87,00},{0x0c,0xc3,00}, {0x88,0x43,00},{0x84,0xc3,00},{0x84,0xc7,00}, {0x0c,0x40,00}}; uchar p[3]; uchar i; display1(vfddis); EA=1; IT0=1; ET0=1; for(i=0;i<3;i++){p[i]=vfddis[4][i];} display2(p,4); //send 1data to vfd // if(mab[0]==mab[1]!=0) // if(mab[2]==~mab[3]) // switch(mab[2]) // {case(0x01): for(i=0;i<3;i++){p[i]=vfddis[4][i];} // display2(p,8); // break; // case(0x02): for(i=0;i<3;i++){p[i]=vfddis[4][i];} // display2(p,7); // break; // case(0x03): for(i=0;i<3;i++){p[i]=vfddis[4][i];} // display2(p,6); // break; // case(0x04): for(i=0;i<3;i++){p[i]=vfddis[4][i];} // display2(p,5); // break; // case(0x05): for(i=0;i<3;i++){p[i]=vfddis[4][i];}display2(p,6); // break; // case(0x06): for(i=0;i<3;i++){p[i]=vfddis[4][i];}display2(p,7); // break; // case(0x07): for(i=0;i<3;i++){p[i]=vfddis[4][i];}display2(p,8); // break; // case(0x08): for(i=0;i<3;i++){p[i]=vfddis[4][i];}display2(p,9); // break; // case(0x09): for(i=0;i<3;i++){p[i]=vfddis[4][i];}display2(p,10); // break; // case(0x0a): for(i=0;i<3;i++){p[i]=vfddis[4][i];}d ......
>>返回讨论的主题
|