• 注册
  • 天文知识 天文知识 关注:1433 内容:761

    太阳日照规律

  • 查看作者
  • 打赏作者
  • 当前位置: 博科园 > 天文学 > 天文知识 > 正文
    • 11
    • Lv.22噬菌体
      博科园VIP5
      莱布尼茨
    • 博科园AI人工智能助手 图灵
      [ AI在线 ]
      __
    • 1. 太阳直射北半球时,除极昼极夜的地区,全球其他地方太阳都是东北升西北落。(极昼地区太阳正北升正北落,正午太阳总在正南)

      太阳日照规律

      2.太阳直射南半球时,除极昼极夜的地区,全球其他地方太阳都是东南升西南落。(极昼地区太阳正南升正南落,正午太阳总在正北)。

      太阳日照规律

      3.太阳直射赤道时:晨线和经线重合,纬线和太阳线平行,太阳在晨线正东方,在昏线的正西方,故太阳正东升,正西落。太阳日照规律

      在北半球,昼越长,日出越早,日落越晚,日出日落的位置越偏北,太阳视运动的弧度越大;反之,在北半球昼越短,日出越晚,日落越早,日出日落位置越偏南,太阳视运动的弧度越小。

      正午太阳方位

      1.太阳直射点位于观测者以南时,该地正午太阳位于正南方向。太阳日照规律

      2.太阳直射点位于观测者以北时,该地正午太阳位于正北方向。太阳日照规律

       

    • 生成海报
    • Lv.8仄米空洞
      靓号:1956
      9周年🎂
      攻城不怕坚,攻书莫畏难;科学有险阻,苦战能过关——叶剑英
      回复
      Lv.44猫眼星云
      飞越太阳系
      南北回归线赤道~ [s-70]
      回复
      Lv.44猫眼星云
      飞越太阳系
      打赏了2金币
      回复
      Lv.37卡普坦星
      博科园VIP7
      飞越地球
      打赏了2金币
      回复
      Lv.37卡普坦星
      博科园VIP7
      飞越地球
      赠送了礼物[棒棒糖]#include <reg51.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <intrins.h>
#include <absacc.h>

sbit LED = P1^0;
sbit BUZZ = P1^1;

#define FREQ_MAX 2000  // 最大频率
#define FREQ_MIN 200   // 最小频率
#define SAMPLE_SIZE 128  // 采样点数
#define SAMPLE_RATE 8000  // 采样率

unsigned char code frequenceTable[7][7] = {
    {0x8e,0x8a,0x8c,0x8d,0x87,0x89,0x8B},  // 1
    {0x0e,0x0a,0x0c,0x0d,0x07,0x09,0x0B},  // 2
    {0x26,0x22,0x24,0x25,0x1f,0x21,0x23},  // 3
    {0x46,0x42,0x44,0x45,0x3f,0x41,0x43},  // 4
    {0x66,0x62,0x64,0x65,0x5f,0x61,0x63},  // 5
    {0x86,0x82,0x84,0x85,0x7f,0x81,0x83},  // 6
    {0xa6,0xa2,0xa4,0xa5,0x9f,0xa1,0xa3}  // 7
};

unsigned char sampleBuffer[SAMPLE_SIZE];  // 存储采样数据的缓冲区

void delay(unsigned int n)
{
    unsigned int i, j;
    for(i=0;i<n;i++)
        for(j=0;j<60;j++);
}

void initTimer()
{
    T2CON = 0x00;  // 关闭定时器2
    AUXR = AUXR & 0x7F;  // 定时器2时钟由Fosc/12提升为Fosc/4
    TH2 = 0xFF;  // 计数器重载值
    TL2 = 0xDC;
    IE2 = IE2 & 0xFB;  // 关闭定时器2中断
    T2CON = T2CON | 0x04;  // 打开定时器2
}

void startADC()
{
    P2 = 0xff;
    ADC_CONTR = ADC_POWER | ADC_SPEED(7) | ADC_FLAG;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    ADC_CONTR = ADC_CONTR | ADC_START;
}

void stopADC()
{
    ADC_CONTR = ADC_POWER;
}

void ADCConvert()
{
    if(ADC_CONTR & ADC_FLAG)
    {
        ADC_CONTR = ADC_CONTR & 0x1f;
        ADC_CONTR = ADC_CONTR | ADC_START;
        sampleBuffer[sampleIndex++] = ADC_RES;
    }
}

void FFT(unsigned char *x, unsigned int N)
{
    unsigned int i, j, k, n1, n2, a;
    unsigned char xt_r, xt_i, yt_r, yt_i;
    double c, s;
    
    j = 0;
    for(i=0; i<N-1; i++)
    {
        if(i < j)
        {
            xt_r = x[2*i];
            xt_i = x[2*i+1];
            x[2*i] = x[2*j];
            x[2*i+1] = x[2*j+1];
            x[2*j] = xt_r;
            x[2*j+1] = xt_i;
        }
        k = N / 2;
        while(k <= j)
        {
            j = j - k;
            k = k / 2;
        }
        j = j + k;
    }
    
    n1 = 2;
    for (i=0; i<N; i+=2)
    {
        n2 = n1;
        n1 = n1 << 1;
        c = 1.0;
        s = 0.0;
        a = 0;
        for(j=0; j<n2; j+=2)
        {
            for(k=i+j; k<N; k+=n1)
            {
                xt_r = x[2*(k+n2)];
                xt_i = x[2*(k+n2)+1];
                yt_r = (unsigned char)(c * xt_r - s * xt_i);
                yt_i = (unsigned char)(c * xt_i + s * xt_r);
                x[2*(k+n2)] = x[2*k] - yt_r;
                x[2*(k+n2)+1] = x[2*k+1] - yt_i;
                x[2*k] = x[2*k] + yt_r;
                x[2*k+1] = x[2*k+1] + yt_i;
            }
            a += (N/2);
            c = cos(2 * M_PI * a / N);
            s = 0 - sin(2 * M_PI * a / N);
        }
    }
}

unsigned char getMaxFrequency(unsigned char *x, unsigned int N, unsigned int sampleRate)
{
    unsigned int i, maxIndex;
    unsigned char maxValue;
    unsigned int freq;
    
    FFT(x, N);
    
    maxIndex = 0;
    maxValue = x[0];
    
    for(i=1; i<N/2; i++)
    {
        if(x[2*i] > maxValue)
        {
            maxIndex = i;
            maxValue = x[2*i];
        }
    }
    
    freq = maxIndex * sampleRate / N;
    
    return freq;
}

void displayFrequency(unsigned int freq)
{
    unsigned char code dispNumber[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
    unsigned char digit1, digit2;
    
    digit1 = freq / 10;
    digit2 = freq % 10;
    
    P0 = ~(0x01);
    P2 = dispNumber[digit1];
    delay(2);
    
    P0 = ~(0x02);
    P2 = dispNumber[digit2];
    delay(2);
    
    P0 = 0xff;
}

void main()
{
    unsigned int sampleIndex = 0;
    
    BUZZ = 0;
    initTimer();
    startADC();
    
    while(1)
    {
        ADCConvert();
        
        if(sampleIndex >= SAMPLE_SIZE)
        {
            stopADC();
            
            unsigned int freq = getMaxFrequency(sampleBuffer, SAMPLE_SIZE, SAMPLE_RATE);
            
            displayFrequency(freq);
            
            sampleIndex = 0;
            
            startADC();
        }
    }
}
给我在每一条代码后加上明确的注释,每一条代码都需要
      回复
      Lv.6十幺米空洞
      麦克斯韦
      [s-7]
      回复
      Lv.35火星
      博科园VIP6
      9周年🎂
      初中地理 [s-20]
    • 神依是的呢虽然我早已不是初中生
      拉黑 1年前 手机端回复
    • 回复
      Lv.30恐龙
      飞越地球
      [s-70]
      回复
      Lv.2普朗克长度
      加油
      回复
      Lv.2普朗克长度
      因为天文学,让世人见识了星空的美丽;因为天文学,让世人了解了宇宙的神秘;因为天文学,让世人脱离了迷信的束缚。
      回复

      请登录之后再进行评论

      登录
      神依莱布尼茨
      个人认证:星空与自然爱好者
      关注101 粉丝49 喜欢1907内容81

      赞助商

    • 相互支持,合作共赢 Win-Win Cooperation

      邀请好友加入【博科园】有奖励啦♪

    • 任务
    • 偏好设置(换皮肤)
    • ★基于全球领先的AI4.0大语言模型 知识问答 内容创作 AI绘画 代码编程 生活办公 对话聊天 样样精通 超强大的AI助手★
      博科园AI
      有疑惑?万能AI为你解答
    • 到底部
    • 帖子间隔 侧栏位置:
      关闭窗口
      下载海报