毕业设计
{
case 0x7f: if (add==0) if(odata>57)
odata=odata-2; //电压加0.1V break;
case 0xbf: if (add==0) if(odata<255) odata=odata+2; break;
case 0xdf: if(add==0)
{ //三角波
f=0x100; //1时为频率最高,最大允许256 odata=155; add=1;
}
else if(add==1) { //方波
//f=f*200; //频率跟随 f=0x100;
odata=55; add=200;
} else if(add==-1) {
//f=f*200;
f=0x100; odata=55; add=200;
} else if(add==200)
{ //直流电压 add=0;
odata=temp; //电压记忆恢复 } else {
add=0; odata=temp; }
break; case 0xef: if(add!=0) {
f=f/2; //频率频率加 if (f==1) if(add==1)
26
毕业设计
f=0x100; else f=0x3200; } break; } }
if(odata==255) add=-add;
odata=odata+add; if(odata==55) add=-add;
P0=odata; //送数据 }
ledout(odata,add,j); //送显示 j=-j; }
}
void ledout(unsigned char ATA,char add,char j) {
unsigned char DH,DL,temp; switch(add) {
case 0: {
temp=((ATA-55)/2)-1; //十进制转换 DH=temp/10; DL=temp; }break; case 1: {
DH=11; DL=12; }break; case -1: {
DH=11; DL=12; }break; case 200: {
DH=13; DL=14; }break; case -200: {
DH=13;
27
毕业设计
DL=14; }break; }
switch(j) {
case 1: {
P1=led[DH]; //送数码管高位显示 P1_7=1; //动态显示 }break; case -1:
P1=led[DL]; //送数码管低位显示 break; } }
void delays(unsigned char t) {
unsigned char s; for(;t>0;t--)
for(s=0;s<255;s++); }
28