极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: Ansifa

Arduino学习笔记A13 - 最简单的Arduino频率计

  [复制链接]
发表于 2014-4-19 16:04:41 | 显示全部楼层
ISR(TIMER1_OVF_vect):是定时器1的中断入口?
回复 支持 反对

使用道具 举报

发表于 2014-7-23 23:52:09 | 显示全部楼层
不错,好好好
回复 支持 反对

使用道具 举报

发表于 2014-8-7 10:49:30 | 显示全部楼层
"将你的信号从D2和GND引脚输入。"请问这个信号是音频信号吗?具体要怎么输入啊?
回复 支持 反对

使用道具 举报

发表于 2014-8-28 18:08:41 | 显示全部楼层
楼主,你那里信号输入写着1,2 的是什么东西呀,新手看不懂额
回复 支持 反对

使用道具 举报

发表于 2014-9-11 13:43:58 | 显示全部楼层
请问怎样修改输入口,新手没看明白,谢谢
回复 支持 反对

使用道具 举报

发表于 2014-10-22 19:41:31 | 显示全部楼层
本帖最后由 504835618 于 2014-10-22 19:43 编辑

请问怎么改变输入口2(测量口),因为不是用的UNO板,那里可以设置测量口,谢谢!!
回复 支持 反对

使用道具 举报

发表于 2014-12-31 09:50:43 | 显示全部楼层
版主,新手学习中,能给发一个有全部注释的吗,谢谢啊,[email protected]
回复 支持 反对

使用道具 举报

发表于 2015-1-16 20:04:06 | 显示全部楼层
mark~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复 支持 反对

使用道具 举报

发表于 2015-5-23 23:38:35 | 显示全部楼层
pcduino 下编译 ISR那里报错呀,TCNT也有问题。
回复 支持 反对

使用道具 举报

发表于 2015-7-15 23:07:21 | 显示全部楼层
好贴,赞一个
回复 支持 反对

使用道具 举报

发表于 2015-11-10 13:29:08 | 显示全部楼层
请问这个引脚没有定义,为什么是从2号引脚出来???求解大神
回复 支持 反对

使用道具 举报

发表于 2015-11-25 20:36:14 | 显示全部楼层
本帖最后由 qhzbob 于 2015-11-25 20:49 编辑

请教版主,我在这个频率测量的程序里面添加了lcd12864的显示程序,结果就不能显示了,不知道是什么原因, 单独的12864显示程序测试是通过的,12864的引脚也没有占用D2口,12864的.cpp文件如下:
#include "LCD12864RSPI.h"


extern "C"
{
#include "Arduino.h"
#include <wiring.h>
#include <inttypes.h>
#include <stdio.h>  //not needed yet
#include <string.h> //needed for strlen()
#include <avr/pgmspace.h>
}



LCD12864RSPI:CD12864RSPI()
{
this->DEFAULTTIME = 80; // 80 ms default time
this->delaytime = DEFAULTTIME;
}

//*********************延时函数************************//
void LCD12864RSPI::delayns(void)
{   
delayMicroseconds(delaytime);
}


void LCD12864RSPI::WriteByte(int dat)
{
    digitalWrite(latchPin, HIGH);
    delayns();
    shiftOut(dataPin, clockPin, MSBFIRST, dat);
    digitalWrite(latchPin, LOW);
}


void LCD12864RSPI::WriteCommand(int CMD)
{
   int H_data,L_data;
   H_data = CMD;
   H_data &= 0xf0;           //屏蔽低4位的数据
   L_data = CMD;             //xxxx0000格式
   L_data &= 0x0f;           //屏蔽高4位的数据
   L_data <<= 4;             //xxxx0000格式
   WriteByte(0xf8);          //RS=0,写入的是指令;
   WriteByte(H_data);
   WriteByte(L_data);
}


void LCD12864RSPI::WriteData(int CMD)
{
   int H_data,L_data;
   H_data = CMD;
   H_data &= 0xf0;           //屏蔽低4位的数据
   L_data = CMD;             //xxxx0000格式
   L_data &= 0x0f;           //屏蔽高4位的数据
   L_data <<= 4;             //xxxx0000格式
   WriteByte(0xfa);          //RS=1,写入的是数据
   WriteByte(H_data);
   WriteByte(L_data);
}



void LCD12864RSPI::Initialise()
{
    pinMode(latchPin, OUTPUT);     
    pinMode(clockPin, OUTPUT);   
    pinMode(dataPin, OUTPUT);
    digitalWrite(latchPin, LOW);
    delayns();

    WriteCommand(0x30);        //功能设定控制字
    WriteCommand(0x0c);        //显示开关控制字
    WriteCommand(0x01);        //清除屏幕控制字
    WriteCommand(0x06);        //进入设定点控制字
}


void LCD12864RSPI::CLEAR(void)
{  
    WriteCommand(0x30);//
    WriteCommand(0x01);//清除显示
}


void LCD12864RSPI:isplayString(int X,int Y,uchar *ptr,int dat)
{
  int i;

  switch(X)
   {
     case 0:  Y|=0x80;break;

     case 1:  Y|=0x90;break;

     case 2:  Y|=0x88;break;

     case 3:  Y|=0x98;break;

     default: break;
   }
  WriteCommand(Y); // 定位显示起始地址

  for(i=0;i<dat;i++)
    {
      WriteData(ptr);//显示汉字时注意码值,连续两个码表示一个汉字
    }
}
lcd的三个引脚分别是D4,D8,D9。setup函数如下:
void setup()
{   
    Serial.begin(57600);
//    TIMSK1 = 0x01;
//    TCCR1A = 0x00;
//    attachInterrupt(0, interrupt, RISING);
    LCDA.Initialise(); // 屏幕初始化
    delay(100);
}
注释掉以上三行才会显示,到底怎么修改才可以兼容?
回复 支持 反对

使用道具 举报

发表于 2015-11-26 14:00:52 | 显示全部楼层
我找到原因了,计数器溢出中断那边的服务程序被我删了,因为我不需要分频因子,所以之前调频率的时候没注意,现在把TIMSK1=0x01这行注释掉就可以正常显示了
回复 支持 反对

使用道具 举报

发表于 2016-12-26 13:33:52 | 显示全部楼层
受益良多  谢谢
回复 支持 反对

使用道具 举报

发表于 2017-1-3 17:54:14 | 显示全部楼层
学习了,做个记号备查
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 07:44 , Processed in 0.045633 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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