资源描述:
《波形发生器程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、附录2程序清单#include#include#defineSEND_INITXBYTE[0xf400]//液晶写指令#defineSEND_DATAXBYTE[0xf500]//液晶写数据#defineREAD_BUSYXBYTE[0xf600]//液晶读忙地址#defineREAD_DATAXBYTE[0xfF00]#defineDAC0832adr1XBYTE[0xafff]#defineDAC0832adr2XBYTE[0xcfff]#defineucharunsignedcha
2、r#defineuintunsignedint#defineulongunsignedlong#definecomm0#definedat1sbitA_4052=P1^6;sbitB_4052=P1^7;sbitA0_38=P3^4;sbitA1_38=P3^5;bitbusy;//定义LCD忙标志位voidwr_lcd(uchardat_comm,ucharcontent);//写控制字与数据voidwr_str(unsignedcharaddr,unsignedcharcounts,constunsignedchar*p
3、s);//写字符voidchk_busy(void);//忙检测函数voidinit_lcd();voidclrram(void);voidtiaobo();uchari,tz,s,fd,tb,m,tf;ulongCF,tp,g;ucharcodeTAB1[]={"Fangbo:"};ucharcodeTAB2[]={"Zhengxuanbo:"};ucharcodeTAB3[]={"Sanjiaobo:"};ucharcodeTAB4[]={"实时电压值:"};ucharcodeTAB5[]={"实时频率"};ucharc
4、odeTAB6[]={"频段:100K~20kHZ"};ucharcodeTAB7[]={"当前电压值:"};//外部中断0服务函数//功能:按键判断,确认,返回,幅度,频率//-----------------------------voidext0()interrupt0{ucharJP,temp;m++;temp=P1;JP=temp
5、0xe0;while(JP!=0xff){switch(JP)//按键检测{case(0xfe):if((s==2)&&(tz%2==1))//K0键{fd++;if(fd%3==1){
6、tp=500;g=10;wr_str(0x90,16,TAB4);}if(fd%3==2){tp=5000;g=100;wr_str(0x90,16,TAB5);}if(fd%3==0){tp=50000;g=1000;wr_str(0x90,16,TAB6);}/*if(fd%4==3){tp=50;g=1;wr_str(0x90,16,TAB8);}*/}break;case(0xfd):if(s==0)//K1键{tb++;}if(s==1){tz++;}if(s==2){if(tz%2){if(tp<100000){
7、if((tp==1000)
8、
9、(tp==10000))g*=10;/*if((tp==100)
10、
11、(tp==1000)
12、
13、(tp==10000))g*=10;*/tp+=g;}}/*else{if(tf<50)tf++;}*/}break;case(0xfb):if(s==0)//K2键{tb--;}if(s==1){tz++;}if(s==2){if(tz%2){if(tp>=100){if((tp==1000)
14、
15、(tp==10000))g=g/10;/*if((tp==100)
16、
17、(tp==1000)
18、
19、(tp==10
20、000))g*=10;*/tp-=g;}}/*else{if(tf>0)tf--;}*/}break;case(0xf7):if(s<2)//K3键{s++;}break;case(0xef):if(s>0)//K4键{s--;}break;default:break;}while(JP!=0xff)//松手检测{temp=P1;JP=temp
21、0xe0;}}}//:延时函数voiddelay(uintus){while(us--);}//:延时函数1msvoiddelay1(uintms)//调用延时函数delay1();
22、{uinti,j;for(i=0;i