AVR单片机频率计设计 频率输入源STM32口

发布者:Yuexin888最新更新时间:2015-06-23 来源: 51hei关键字:AVR单片机  频率计  STM32 手机看文章 扫描二维码
随时随地手机看文章
//---------------------STM32   3.3V转5V输出电路------------------------




完整的程序源码下载:http://www.51hei.com/f/avrplj.rar
//---------------------AVR代码-----------------------

 
//芯片用ATMEG16     
#include

 
#define uchar unsigned char
#define uint unsigned int

 
__flash uchar seg[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,  //数码管码表
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80};

 
__flash uchar tab[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管位选
[page]
 
uint i;    //定时器1秒到时变量
uint tt;   //计数频率
uchar start=1;  //定时器启动变量 

 
void port_init()
{
PORTA=0xff;
DDRA=0xff;
PORTB=0xff;
DDRB=0xff;
PORTC=0xff;
DDRC=0xff;
PORTD=0xff;
DDRD=0xff;
}

 
void delay(uint k)
{
 while(k--); 
}

 

 

 
void time0_init()       //定时器0初始化
{
  TCCR0=0x00;  //关闭定时器
  TIMSK|=0x01;  //定时器0溢出中断
  TCNT0=0x83;   //定时1ms
  SREG=0x80;  //关闭总中断 
}

 
#pragma vector = 0x24        //定时器0中断
__interrupt void tim0_ovr()
{
  i++;
  TCNT0=0x83;
  if(i==1000)            //1秒时间到
  {
    i=0;
    TCCR1B=0x00;  //停止计数
    TCCR0=0x00;   //停止定时
    tt=TCNT1;//频率值给变量
    TCNT1H=0x00;
    TCNT1L=0x00;  //计数清零
    TCNT0=0x83;  //定时器初值 
    start=1;     //开启定时器启动变量  
  } 
}

 

 

 
void time1_init()
{
  TCCR1A=0x00;
  TCCR1B=0x00; //停止计数
  TCNT1H=0x00;
  TCNT1L=0x00; 
}

 
void show(uint dat) //频率值显示
{
  PORTA=seg[dat/1000];
  PORTC=tab[3];
  delay(100);
  PORTA=seg[dat%1000/100];
  PORTC=tab[2];
  delay(100);
  PORTA=seg[dat%100/10];
  PORTC=tab[1];
  delay(100);
  PORTA=seg[dat%10];
  PORTC=tab[0];
  delay(100); 
}

 
void main()
{
  port_init();
  time0_init();
  time1_init();
  while(1)
  {
    if(start==1)
    {
      TCCR0=0x03;    //定时器开启
      TCCR1B=0x06;   //计数器开启
      start=0;    //保证定时1秒是否开启变量  
    }
    show(tt);
  } 
}

 
//-------------------STM32代码-------------------------

 
#include
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"

 
int main()
   Stm32_Clock_Init(9);
   delay_init(72);
   led_init();
   while(1)
   {
    LED=1;
delay_ms(2);
LED=0;
delay_ms(2);
   }
}

 
//--------------------------led.c--------------
#include
#include "led.h"

 
void led_init(void)
{
 RCC->APB2ENR|=1<<4; //使能PC时钟
 GPIOC->CRH&=0xffffff0f;
 GPIOC->CRH|=0x00000030;
 GPIOC->ODR|=1<<9;    
}

 
//----------------------led.h-------------------------
#ifndef led_h
#define led_h
#include "sys.h"

 
#define LED PCout(9)

 
void led_init(void);
#endif

关键字:AVR单片机  频率计  STM32 引用地址:AVR单片机频率计设计 频率输入源STM32口

上一篇:AVR单片机PCF8591AD-DA实验
下一篇:AVR单片机IIC实验

推荐阅读最新更新时间:2024-03-16 14:04

解决STM32 I2C接口死锁在BUSY状态的方法讨论
关于STM32的I2C接口死锁在BUSY状态无法恢复的现象,网上已有很多讨论,看早几年比较老的贴子,有人提到复位MCU也无法恢复、只有断电才行的状况,那可是相当严重的问题。类似复位也无法恢复的情况是存在的,技术支持矢口否认问题存在,并不是正确面对问题的态度。比如我用这款F439芯片的SDRAM控制器,在错误操作后进入HardFault状态,复位无法恢复,JTAG也无法联机,只能断电重来,官方的Erratasheet里也提到了。 如果I2C接口无法可靠工作,那么所做的设计将存在严重隐患,不可能要求用户用断电的方法恢复系统。如果像某些网友提到弃用硬件I2C,转为GPIO模拟I2C时序,那么首先I2C时钟频率不易确定,因为STM32的时
[单片机]
再造STM32---第十部分:GPIO输入—按键检测
本章参考资料:《STM32F4xx 参考手册》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。 按键检测使用到 GPIO 外设的基本输入功能,本章中不再赘述 GPIO 外设的概念,如您忘记了,可重读前面“GPIO 框图剖析”小节, STM32 标准库中 GPIO 初始化结构体GPIO_TypeDef 的定义与“定义引脚模式的枚举类型”小节中讲解的相同。 10.1 硬件设计: 按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,使用按键时会产生图 10-1 中的带波纹信号,需要用软件消抖处理滤波,不方便输入检测。本实验板连接的按键带硬件消
[单片机]
再造STM32---第十部分:GPIO输入—按键检测
基于TMS320F2812的数字频率计的设计
引言 频率是指某周期现象在单位时间内所重复的次数,它与时间在数学上互为倒数。时间频率的精确测量促进了科学的发展,而科学的发展又反过来把时间频率的测量提高到新的高度。特别在最近的几十年里,频率和时间的测量精度已达到非常高的水平,即已远远超过其他所有物理量的测量精度。它主要的应用领域有导航和通信两大类,以及空间技术、工业生产、交通、科学研究及天文学与计量学方面。 为了适应现代技术发展的要求,新型的频率计中都使用了单片机进行数据处理,这样,由软件代替了复杂的硬件电路,使仪器的结构简化,功能增强。本文给出一种基于TMS320F2812(简称F2812)DSP的一种简易测频方法。该方法有效利用F2812的片内外设事件管理器的捕获功能,在被
[测试测量]
基于TMS320F2812的数字<font color='red'>频率计</font>的设计
基于STM32单片机的车牌识别
系统介绍    使用STM32F103RCT6作为主控,摄像头使用OV7670(带FIFO)。STM32进行了16倍频。识别过程分别为:图像采集,二值化,识别车牌区域,字符分割,字符匹配。 识别过程分析 1.图像采集:    通过OV7670摄像头进行图像采集,采集的图像大小为320*240像素,像素格式为RGB565。每个像素由两字节组成,第一字节的高五位是Red,第一字节的低三位和第二字节的高三位组成Green,第二字节的低五位是Blue。 2.二值化:    二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色),让整个图片呈现出只有黑色和白色的效果。二值化后的图像中灰度值范围是0或者255。   
[单片机]
STM32单片机常用库函数
1.GPIO初始化函数 用法: voidGPIO_Configuration(void) { GPIO_InitTypeDefGPIO_InitStructure;//GPIO状态恢复默认参数 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_标号|GPIO_Pin_标号; //管脚位置定义,标号可以是NONE、ALL、0至15。 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//最高输出速度为50MHz GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出 GPIO_Init(GPIOC,&GPIO_I
[单片机]
STM32学习——矩阵键盘
在之前的学习中就学过了IO口的操作,矩阵键盘就是对IO口的操作,还有一个就是扫描模式。 方法一: 逐行扫描:通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。 方法二: 行列扫描:通过高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。 在这里用到了中断的方法,行输出高电平,列做模拟输入口。当有按键按
[单片机]
<font color='red'>STM32</font>学习——矩阵键盘
STM32开发笔记53:STM32F4+DP83848以太网通信指南系列(七)
本章为系列指南的第七章,讲述如何在之前的基础上,编写程序在STM32上发送一个网络包,并使用WireShark进行验证。 先回顾一下之前的章节我们做好的准备工作,在《STM32F4+DP83848以太网通信指南第五章:MAC+DMA配置》结束时我们封装了一个DP83848的初始化函数,该函数完成了PHY的配置,MAC层的配置,DMA的配置,并且启用了以太网中断,函数命名为DP83848Init(),那么今天,我们要做的主要任务就是编写一个类似的DP83848Send(u8* data, u16 length)函数。 可以在本章的一开始跟大家剧透一个好消息,有了《STM32F4+DP83848以太网通信指南第四章:PHY配置》 和
[单片机]
<font color='red'>STM32</font>开发笔记53:STM32F4+DP83848以太网通信指南系列(七)
STM32触摸按键原理和电路设计
01触摸按键原理 触摸使用RC充放电原理: RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用的电路。 充电过程: 电源通过电阻给电容充电,由于一开始电容两端的电压为0,所以电压的电压都在电阻上,这时电流大,充电速度快。随着电容两端电压的上升,电阻两端的电压下降,电流也随之减小,充电速度小。充电的速度与电阻和电容的大小有关。电阻R越大,充电越慢,电容C越大,充电越慢。衡量充电速度的常数t(tao)=RC。 放电过程: 电容C通过电阻R放电,由于电容刚开始放电时电压为E,放电电流I=E/R,该电流很大,所以放电速度很快。随着电容不断的放电,电容的电压也随着下降。电流也很快减小。电容的放电速度与RC有关,R的阻值
[单片机]
<font color='red'>STM32</font>触摸按键原理和电路设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved