📄 main.c
字号:
#include<reg51.h>
#include<LCD12864.h>
#include<wave.h>
#define uchar unsigned char
#define uint unsigned int
#define WAVE1 1
#define WAVE2 2
#define WAVE3 3
#define WAVE4 4
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7;
uchar add=0;
uint DLY;
uchar ValueHZ[4]={0,0,0,0};
void IntKey()interrupt 0 using 1 //外部中断服务程序
{
EA=0;
if(k1==0)WaveSelect=WAVE1;
if(k2==0)WaveSelect=WAVE2;
if(k3==0)WaveSelect=WAVE3;
if(k4==0)WaveSelect=WAVE4;
if(k5==0){
if(ValueHZ[add]==0)ValueHZ[add]=0;
else ValueHZ[add]--;
SetHZ=!SetHZ;
}
if(k6==0)StartOut=!StartOut;
if(k7==0){
if(ValueHZ[add]==9)ValueHZ[add]=9;
else ValueHZ[add]++;
SetHZ=!SetHZ;
}
if(k8==0){
if(add!=3)add++;
else add=0;
}
EA=1;
}
void HZ_to_DLY(void){ //计算延时常量函数
float value;
if((ValueHZ[0]!=0)||(ValueHZ[1]!=0)||(ValueHZ[2]!=0)){
value=ValueHZ[0]*100+ValueHZ[1]*10+ValueHZ[2]*1;
value=1000000/value;
value/=3;
if(WaveSelect==WAVE1)DLY=(unsigned int)value/2;
if(WaveSelect==WAVE2)DLY=(unsigned int)value/250;
if(WaveSelect==WAVE3)DLY=(unsigned int)value/500;
if(WaveSelect==WAVE4)DLY=(unsigned int)value/170;
}
else DLY=0;
}
main(){
uint i;
EA=1;
EX0=1;
IT0=1; //开中断
Init_12864();
for(i=500;i>0;i--){
delay2us(100);
}
DisControl();
while(1){
if(WaveSelect==WAVE1)Wave1();
if(WaveSelect==WAVE2)Wave2();
if(WaveSelect==WAVE3)Wave3();
if(WaveSelect==WAVE4)Wave4();
maths(ValueHZ[0],5,0x04);
maths(ValueHZ[1],13,0x04);
maths(ValueHZ[2],21,0x04);
Pagefirst(0x05);
Linefirst(29);
Wdata(0x04);
maths(ValueHZ[3],31,0x04);
old_WaveSelect=WaveSelect;
old_SetHZ=SetHZ;
HZ_to_DLY(); //得到延时常量
while(1){
if(old_WaveSelect!=WaveSelect){
StartOut=0;
Direction=0;
break;
}
if(old_SetHZ!=SetHZ)break;
if(StartOut==1){
if(WaveSelect==WAVE1)WaveOut1(DLY); //0HZ-1MHZ
if(WaveSelect==WAVE2)WaveOut2(DLY); //0HZ-1MHZ
if(WaveSelect==WAVE3)WaveOut3(DLY); //0HZ-666HZ
if(WaveSelect==WAVE4)WaveOut4(DLY); //0HZ-588HZ
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -