標題: 關于60S2單片機的定時頻率沖突問題求助 [打印本頁]

作者: 0711zhao    時間: 2020-11-4 17:40
標題: 關于60S2單片機的定時頻率沖突問題求助
本帖最后由 0711zhao 于 2020-11-5 11:29 編輯

[attach]253049[/attach][attach]253049[/attach]我在做一個氣象站實驗的時候,最后風速測量時風速一有脈沖就12864顯示白屏,是用定時器0計數(shù),定時器1定時,找不到具體原因,有沒有大佬能指點一下。具體的源碼見附件。

11月5號   問題已經(jīng)解決啦,是我12864的開發(fā)版上17腳是3.4腳,所以一有變化就沖突12864的顯示問題,把12864跟開發(fā)版的那根線拔了就好啦。源碼我刪了,另開個貼,把整個氣象站的都發(fā)出來,源碼在哪里發(fā)。

作者: 0711zhao    時間: 2020-11-4 19:34
#include "60s212864.h"
#include        "delay.h"
#include "ds18b20.h"
#include "adc.h"
#include "AtmAsdx015a.h"

sbit tq=P1^1;//天氣
sbit yl=P1^2;//雨量
//sbit fx1=P1^4;//風向
u8 cnt,flag;
u16 fs,speed;
/*********************************************************************/
void Init_T0_T1()                                                       
{       
                TMOD        =0x15;                                                                                        //T0計數(shù)  T1 定時  都是方式1
          TH0=0;TL0=0;
          TR0=1;TR1=1;
    TH1   =(65536-50000)/256;//50ms中斷一次
          TL1   =(65536-50000)%256;
         TF0=0; TF1=0;
         ET0=1;ET1=1;
         EA=1;
}
  
void T0_IRQ() interrupt  3        using 3                //定時
                //                                 關鍵字            中斷向量號               
{
                TH1   =(65536-50000)/256;//50ms中斷一次
          TL1   =(65536-50000)%256;
                cnt++;
                if(cnt>=20)
                {
                        cnt=0;
                TR0=0;TR1=0;//先關閉定時器
                speed=TH0;
                speed=speed<<8;
    speed+=        TL0;//一秒的脈沖數(shù),如果轉(zhuǎn)一圈是60個脈沖那么:轉(zhuǎn)速=一秒計數(shù)*60/60剛剛等于一秒計數(shù)值
    flag=1;      //轉(zhuǎn)換結束
                TH0=0;TL0=0; //清0重新計數(shù)
          TR0=1;TR1=1;       
                        //TF1=0;
         }
}

void Time0_IRQ() interrupt 1                using 1               
        {
                TH0=0;TL0=0;                       
   // js_cnt++;               
        }
/******************************************************/
//主函數(shù)
//用于觀看顯示效果
/******************************************************/
void main(void)
{
        u8 i,j;
        u16 k,wd,fx;
        float sd,qy;
        //Timer1_init();
        Init_T0_T1();
P1_init();
LCD_init();  
LCD_Setaddress(1,1);
print("溫度");  
LCD_Setaddress(1,5);
print("濕度");
LCD_Setaddress(2,1);
print("風速");
LCD_Setaddress(2,5);
print("風向");
LCD_Setaddress(3,1);
print("天氣");
LCD_Setaddress(3,5);
print("雨量");
LCD_Setaddress(4,1);
print("氣壓");
        TR0=1;TR1=1;
    while(1)
        {

                wd=read_temp_ds18b20();
                Show_Float(1,3,wd*0.1);//溫度
                sd = ADCResult(0);  //P1^0  
                sd=sd/256*5;
          sd=38.12*sd-39.36;
                if(sd>100)
                        sd=99.9;
                Show_Float(1,7,sd);//濕度  RH = 0.03812 Vout – 39.36
                fs=speed;
                Show_Float(2,3,fs*0.1);//風速   //0-70m/s  一圈1.2m/s
                fx = ADCResult(4);  //P1^4
                fx=fx*14;
                Show_Number(2,7,fx*0.1);//風向
                if(tq==1&&j==0)           //天氣
                {
                        LCD_Setaddress(3,3);
      print("晴");
                }
                if(tq==0||j>0)
                {
                        LCD_Setaddress(3,3);
      print("雨");
                }
                if(yl==0)           //雨量
                {
                j++;
                }
                if(k==60)           //雨量一分鐘清零
                {
                j=0;
                }
                Show_Number(3,7,j);//雨量
               
                qy= GetPressure();
                Show_Float(4,3,qy*0.1);//氣壓//P1^3
                i++;
                delay(1000);
                k++;
               
        }
}




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1