?? dianzifuzai.txt
字號(hào):
fs_dzz=sj_dzz_fs;
uart0_tx(fs_dzz);
fs_dzz=sj_dzz_fs>>8;
uart0_tx(fs_dzz);
if(enactment>sj_dzz)
{
chazhi=enactment-sj_dzz;
return(2);
}
else if(enactment<sj_dzz)
{
chazhi=sj_dzz-enactment;
return(1);
}
else
return(3);
}
uchar hgl()
{
float dy,dl;
dy=sj_dyz,dl=sj_dlz;
sj_glz=(dy/100)*(dl/100);
uart0_tx(0x31);
uart0_tx(0x31);
uart0_tx(0x32);
uart0_tx(0x32);
uart0_tx(0x04);
sj_glz_fs=sj_glz;
fs_glz=sj_glz_fs;
uart0_tx(fs_glz);
fs_glz=sj_glz_fs>>8;
uart0_tx(fs_glz);
if(enactment>sj_glz)
{
chazhi=enactment-sj_glz;
return(1);
}
else if(enactment<sj_glz)
{
chazhi=sj_glz-enactment;
return(2);
}
else
return(3);
}
uchar hy()
{
if(enactment>sj_dyz)
return(2);
else if(enactment<sj_dyz)
return(1);
else
return(3);
}
/***************************************************
PWM調(diào)節(jié)子程序[把開(kāi)啟PWM功能放到啟動(dòng)按鍵判斷后吧,這里只是調(diào)節(jié)占空比]
**************************************************/
void tj_pwm(void)
{
static uint count_a=0x0200,count_b=0x0000;
uchar tj_flag;
if(work_fs==11)
tj_flag=hl();
if(work_fs==14)
tj_flag=hz();
if(work_fs==13)
tj_flag=hgl();
if(work_fs==12)
tj_flag=hy();
switch(tj_flag)
{
case 1:
if(count_a>0)
count_a--;
if(chazhi>=10)
count_a=count_a-8;
if(chazhi>=5)
count_a=count_a-4;
if(chazhi>=3)
count_a=count_a-2;
//if(count_b>0)
//count_b--;
break;
case 2:
if(count_a<0x3ff)
count_a++;
if(chazhi>=10)
count_a=count_a+8;
if(chazhi>=5)
count_a=count_a+4;
if(chazhi>=4)
count_a=count_a+2;
//if(count_b<0x3ff)
//count_b++;
break;
default:
break;
}
OCR3AH=count_a>>8;//0x000設(shè)置OC1Apwm波形占空比為100%;3ff時(shí),波形占空比是0%
OCR3AL=count_a;
//OCR3BH=count_b>>8;//設(shè)置OC1Bpwm波形占空比為25%
//OCR3BL=count_b;
}
/**********RS232通信子程序*************/
/*******RS232接受子程序**********/
void uart0_rx_isr(void)
{
data_js=UDR0;
data_js_bz=11;
//uart has received a character in UDR
}
/*******RS232發(fā)送子程序**********/
void uart0_tx(uchar x)
{
while(!(UCSR0A&0x20));//等待數(shù)據(jù)寄存器空
UDR0=x;//把被發(fā)送數(shù)X放入數(shù)據(jù)寄存器里
}
/********************************************************************/
/* 主函數(shù) */
void main(void)
{
uint pdata=0,dy;
uint temp2=0;
uint data[250];
uchar key,m; //鍵值
uchar ok=0;
keys=7;
fxjd=7;
work_fs=11;
init_devices();
//TCCR3A=0xf3;//10位pwm,oc1a,oc1b未打開(kāi)pwm
//TCCR3B=0x02;//時(shí)鐘8分頻,晶振如果選擇為8m,則PWM頻率為1m/2046=0.5k
//TCNT3H=0x00;//設(shè)置計(jì)數(shù)器初值
//TCNT3L=0x00;
TCCR3A=0xc3;//10位pwm,oc3a打開(kāi)pwm,oc3b、oc3c未打開(kāi)PWM
TCCR3B=0x02;
TCNT3H=0x00;//設(shè)置計(jì)數(shù)器初值
TCNT3L=0x00;
//OCR1AH=0X00;//設(shè)置OC1Apwm波形占空比為25%
//OCR1AL=0Xff;
//OCR1BH=0X00;//設(shè)置OC1Bpwm波形占空比為25%
//OCR1BL=0Xff;
OCR3AH=0x03ff;//0x000設(shè)置OC1Apwm波形占空比為100%;3ff時(shí),波形占空比是0%
OCR3AL=0x00;
//OCR3BH=0x02;//0x000設(shè)置OC1Bpwm波形占空比為100%;3ff時(shí),波形占空比是0%
//OCR3BL=0x00;
PORTA&=~(1<<1); //使繼電器LS2的線圈斷電
PORTA|=(1<<4); //使繼電器LS1的線圈得電
PORTA&=~(1<<2);
InitDisplay(); // MAX7219初始化
InitDisplay1();
InitDisplay2();
//dkcs(); //指示燈及蜂鳴器測(cè)試
//WriteWord(DisplayTest,TestMode); // 開(kāi)始顯示測(cè)試,點(diǎn)亮所有LED
//WriteWord1(DisplayTest,TestMode); // 開(kāi)始顯示測(cè)試,點(diǎn)亮所有LED
//WriteWord2(DisplayTest,TestMode); // 開(kāi)始顯示測(cè)試,點(diǎn)亮所有LED
//delay_ms(300); // 延時(shí)約3s
//gbcs(); //關(guān)閉測(cè)試指示燈及蜂鳴器
WriteWord (DisplayTest,TextEnd); // 退出顯示測(cè)試模式
WriteWord1 (DisplayTest,TextEnd); // 退出顯示測(cè)試模式
WriteWord2 (DisplayTest,TextEnd); // 退出顯示測(cè)試模式
csh(); // 數(shù)碼管掃描測(cè)試
while(1)
{
key=keyscan(); //調(diào)用鍵盤掃描函數(shù)
switch(key)
{
case 0xf2: //按鍵1
{
if(ok==0)
{
sd=1;
jzsd();
}
}
break;
case 0xea: //按鍵2
{
if(ok==0)
{
sd=2;
jzsd();
}
}
break;
case 0xda: //按鍵3
{
if(ok==0)
{
sd=3;
jzsd();
}
}
break;
case 0xba: //按鍵cc
{
sb[0]=0,sb[1]=0,sb[2]=0,sb[3]=0;
ok=0;
ajcc(); //調(diào)用按鍵CC子程序
}
break;
case 0x7a: //無(wú)按鍵 無(wú)顯示
WriteWord2 (Digit[7],DisBuffer[28]);
break;
case 0xf1: //按鍵4
{
if(ok==0)
{
sd=4;
jzsd();
}
}
break;
case 0xe9: //按鍵5
{
if(ok==0)
{
sd=5;
jzsd();
}
}
break;
case 0xd9: //按鍵6
{
if(ok==0)
{
sd=6;
jzsd();
}
}
break;
case 0xb9: //按鍵cu
{
sb[0]=0,sb[1]=0,sb[2]=0,sb[3]=0;
ajcu(); //調(diào)用按鍵CU子程序
ok=0;
}
break;
case 0x79: //按鍵左
{
if(ok==0)
{
fxj();
fxjd--;
}
}
break;
case 0x09: //按鍵7
{
if(ok==0)
{
sd=7;
jzsd();
}
}
break;
case 0x11: //按鍵8
{
if(ok==0)
{
sd=8;
jzsd();
}
}
break;
case 0x21: //按鍵9
{
if(ok==0)
{
sd=9;
jzsd();
}
}
break;
case 0x41: //按鍵cr
{
sb[0]=0,sb[1]=0,sb[2]=0,sb[3]=0;
ok=0;
ajcr(); //調(diào)用按鍵CR子程序
}
break;
case 0x81: //按鍵下
// WriteWord2 (Digit[7],DisBuffer[11]);
break;
case 0x0a: //按鍵0
{
if(ok==0)
{
if(ling==0)
{
sd=0;
jzsd();
}
}
ling++;
}
break;
case 0x12: //按鍵.
{
if(ok==0)
{
if(dian==0)
{
dian++;
sd=sd+18;
keys++;
jzsd();
ling=0;
}
}
//dian++;
}
break;
case 0x22: //按鍵cp
{
sb[0]=0,sb[1]=0,sb[2]=0,sb[3]=0;
ok=0;
ajcp(); //調(diào)用按鍵CP子程序
}
break;
case 0x42: //按鍵ok
{
uchar i;
PORTD&=~(1<<1);
for(i=0;i<4;i++ )
{
sb[i]=s[i];
if(sb[i]>=18)
sb[i]=sb[i]-18;
}
if(s[0]>=18)
enactment=sb[0]*100+sb[1]*10+sb[2];
if(s[1]>=18)
enactment=sb[0]*1000+sb[1]*100+sb[2]*10+sb[3];
if(s[2]>=18)
enactment=sb[0]*10000+sb[1]*1000+sb[2]*100+sb[3]*10;
if(s[0]==0)
{
enactment=sb[1]*10000+sb[2]*1000+sb[3]*100;
if(s[2]>=18)
enactment=sb[1]*1000+sb[2]*100+sb[3]*10;
if(s[1]>=18)
enactment=sb[1]*100+sb[2]*10+sb[3];
}
if(s[0]==0&s[1]==0)
{
enactment=sb[2]*1000+sb[3]*100;
if(s[2]>=18)
enactment=sb[2]*100+sb[3]*10;
}
if(s[0]==0&s[1]==0&s[2]==0)
enactment=sb[3]*100;
//enactment=sb[0]*1000+sb[1]*100+sb[2]*10+sb[3];
delay_ms(100);
ok=0x55;
PORTD|=(1<<1);
}
break;
case 0x82: //按鍵開(kāi)關(guān) 控制負(fù)載是否工作
kzfz();
break;
case 0x0c: //按鍵功能
WriteWord2 (Digit[7],DisBuffer[20]);
break;
case 0x14: //按鍵右
{
if(ok==0)
{
fxjd++;
fxj();
}
}
break;
case 0x24: //按鍵esc
ok=0;
break;
case 0x44: //按鍵上
// WriteWord2 (Digit[7],DisBuffer[15]);
break;
case 0x84: //按鍵無(wú) 顯示無(wú)
WriteWord2 (Digit[7],DisBuffer[28]);
break;
}
if(change<=0x03fe)
{
PORTA|=(1<<4); //使繼電器LS1的線圈得電
pdata=0;
for(m=0;m<5;m++)
{
temp2=GetAD(1);
pdata=pdata+temp2;
}
pdata=(pdata/5);
change=pdata;
}
if(change>0x03fe) //電壓高于5。24v后狀態(tài)切換一次
{
PORTA&=~(1<<4); //使繼電器LS1的線圈斷電
pdata=0;
for(m=0;m<5;m++)
{
temp2=GetAD(1);
pdata=pdata+temp2;
}
pdata=(pdata/5);
change=pdata*10;
pdata=change;
}
sjdy(pdata);
uart0_tx(0x31);
uart0_tx(0x31);
uart0_tx(0x32);
uart0_tx(0x32);
uart0_tx(0x01);
fs_dyz=sj_dyz;
uart0_tx(fs_dyz);
fs_dyz=sj_dyz>>8;
uart0_tx(fs_dyz);
if(work==1)
{
PORTA|=(1<<3);
pdata=0;
for(m=0;m<5;m++)
{
temp2=GetAD(0);
pdata=pdata+temp2;
}
pdata=(pdata/5);
sjdl(pdata);
uart0_tx(0x31);
uart0_tx(0x31);
uart0_tx(0x32);
uart0_tx(0x32);
uart0_tx(0x02);
fs_dlz=sj_dlz;
uart0_tx(fs_dlz);
fs_dlz=sj_dlz>>8;
uart0_tx(fs_dlz);
tj_pwm();
}
if(work_fs==11)//發(fā)送設(shè)定電流值
{
uart0_tx(0x31);
uart0_tx(0x31);
uart0_tx(0x32);
uart0_tx(0x32);
uart0_tx(0x05);
fs_enactment=enactment;
uart0_tx(fs_enactment);
fs_enactment=enactment>>8;
uart0_tx(fs_enactment);
}
if(work_fs==14)//發(fā)送設(shè)定電阻值
{
uart0_tx(0x31);
uart0_tx(0x31);
uart0_tx(0x32);
uart0_tx(0x32);
uart0_tx(0x06);
fs_enactment=enactment;
uart0_tx(fs_enactment);
fs_enactment=enactment>>8;
uart0_tx(fs_enactment);
}
if(work_fs==13)//發(fā)送設(shè)定電功率值
{
uart0_tx(0x31);
uart0_tx(0x31);
uart0_tx(0x32);
uart0_tx(0x32);
uart0_tx(0x07);
fs_enactment=enactment;
uart0_tx(fs_enactment);
fs_enactment=enactment>>8;
uart0_tx(fs_enactment);
}
//if(work_fs==12)
// tj_flag=hy()
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -