標題:
關于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