找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1613|回复: 1
收起左侧

关于60S2单片机的定时频率冲突问题求助

[复制链接]
ID:826942 发表于 2020-11-4 17:40 | 显示全部楼层 |阅读模式
本帖最后由 0711zhao 于 2020-11-5 11:29 编辑

我在做一个气象站实验的时候,最后风速测量时风速一有脉冲就12864显示白屏,是用定时器0计数,定时器1定时,找不到具体原因,有没有大佬能指点一下。具体的源码见附件。

11月5号   问题已经解决啦,是我12864的开发版上17脚是3.4脚,所以一有变化就冲突12864的显示问题,把12864跟开发版的那根线拔了就好啦。源码我删了,另开个贴,把整个气象站的都发出来,源码在哪里发。
回复

使用道具 举报

ID:826942 发表于 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计数  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;//一秒的脉冲数,如果转一圈是60个脉冲那么:转速=一秒计数*60/60刚刚等于一秒计数值
    flag=1;      //转换结束
                TH0=0;TL0=0; //清0重新计数
          TR0=1;TR1=1;       
                        //TF1=0;
         }
}

void Time0_IRQ() interrupt 1                using 1               
        {
                TH0=0;TL0=0;                       
   // js_cnt++;               
        }
/******************************************************/
//主函数
//用于观看显示效果
/******************************************************/
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++;
               
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表