历史上的今天

今天是:2024年10月14日(星期一)

正在发生

2019年10月14日 | ATMEGA16单片机实现的数控频率计原理图及程序

发布者:MagicGarden 来源: eefocus关键字:ATMEGA16  单片机  数控频率计 手机看文章 扫描二维码
随时随地手机看文章

//包含所需头文件

#include

#include

#include



/*------宏定义------*/

#define uchar        unsigned char

#define uint        unsigned int

#define ulong   unsigned long


//数码管字型表,对应0, 1, 2,  3,  4,  5,  6,  7,  8,   9//

uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar Data[4]={0,0,0,0};       //显示初始值:0 0 0 0 

uint data=0;

uint CNT=0;

uchar fanwei=1;

unsigned long Load;


//延时函数

void delay_us( int t)     //us

{

do

t--;

while(t>1);

}

void delay_ms(unsigned int t)   //ms

{

while(t!=0)

{

  delay_us(1142);

  t--;

}

}


//动态显示函数

void Display(uchar *p)         //参数p为待显示的数组名

{uchar i,sel=0x01;           

for(i=0;i<4;i++)

  {

   PORTA=Table[p[i]];          //送字型码

   PORTD=~sel;

   delay_us(500);              //显示延时    

   sel=sel<<1;                 //移位以显示前一位

  }

}


//计数值处理函数

void Process(unsigned long i,uchar *p) 

{

if(fanwei==2)

   i=i/1000;

if(fanwei==1)

{

   if(i>9999)

    i=9999;

}          

p[0]=i/1000;

i=i%1000;

p[1]=i/100;

i=i%100;

p[2]=i/10;

p[3]=i%10;

}


void xuanze (void)

{

  if((PINB&0X10)==0)

    fanwei=1;       //单位为1Hz

          

  if((PINB&0X20)==0)

    fanwei=2;       //单位为1KHz

  if(fanwei==1)

    PORTC=0X01;

  if(fanwei==2)

    PORTC=0X02;                

}

//端口初始化

void port_init(void)

{

PORTA = 0xFF;

DDRA  = 0xFF;

PORTB = 0xFF;

DDRB  = 0x00;

PORTC = 0xFF;

DDRC  = 0xFF;

PORTD = 0xFF;

DDRD  = 0xFF;

}



//定时T1初始化

void timer1_init(void)

{

TCCR1B = 0x00;//停止定时器

TIMSK |= 0x04;//中断允许


TCNT1H = 0x00;

TCNT1L = 0x00;//初始值

OCR1AH = 0xFF;

OCR1AL = 0xFF;//匹配A值

OCR1BH = 0xFF;

OCR1BL = 0xFF;//匹配B值

ICR1H  = 0xFF;

ICR1L  = 0xFF;//输入捕捉匹配值

TCCR1A = 0x00;

TCCR1B = 0x07;//启动定时器

}


//定时器T1溢出中断服务程序

#pragma interrupt_handler timer1_ovf_isr:9

void timer1_ovf_isr(void)

{

CNT++;

TCNT1H = 0x00; //重装值高位

TCNT1L = 0x00; //重装值低位

}


//定时器T2初始化

void timer2_init(void)

{

PORTC =0X01;

TCCR2  = 0x00;//停止定时器

ASSR   = 0x08;//异步时钟模式  AS2=1

TCNT2  = 0xFF;//初始值

OCR2   = 0xFE;//匹配值

TIMSK |= 0x40;//中断允许

TCCR2  = 0x05;//启动定时器    PCK/128

}



//T2溢出中断服务程序

#pragma interrupt_handler timer2_ovf_isr:5

void timer2_ovf_isr(void)

{

PORTC=0X02;

TCCR1B = 0x00;                  //关闭计数 

//读取计数值

Load=CNT*65536+TCNT1;           //计算频率值

TCNT1 = 0X00;                   //清除计数值

CNT=0;


TCCR1B = 0x07;                  //开始计数

}



void init_devices(void)

{

cli(); //禁止所有中断

MCUCR  = 0x00;

MCUCSR = 0x80;//禁止JTAG

GICR   = 0x00;

port_init();

timer1_init();

timer2_init();

sei();//开全局中断

}

//主函数

void main(void)

{

init_devices();

while(1)

{

  xuanze();

  Process(Load,Data);    //计数值处理

  Display(Data);        //动态扫描显示

}


}

IMG_20190725_090858.jpg

关键字:ATMEGA16  单片机  数控频率计 引用地址:ATMEGA16单片机实现的数控频率计原理图及程序

上一篇:st7735彩色液晶仿真(Proteus 8 +bascom avr单片机)
下一篇:AVR单片机nrf24l01驱动程序

推荐阅读

据报道,近日,UBTECH Robotics推出了一款可编程独角兽机器人UnicornBot,售价120美元,主要面向8岁以上的儿童,尤其是女孩,旨在激发她们对科学,科技,工程学,数学和编程的兴趣。UBTECH Robotics是一家总部位于中国深圳的公司,在洛杉矶设有办事处。报道指出,这款新推出的UnicornBot独角兽机器人需要孩子自行组装,从而锻炼他们的动手能力,还需要与...
自从新四化(电动化、智能化、网联化、共享化)的号角吹响以后,各车企已不同程度地从概念转入实际应用。而在这几年的发展中,汽车电动化成为了新四化中公认的“龙头”,不仅对传统内燃机汽车形成了挑战,更是智能化、网联化与共享化的基本前提条件。在电气化发展迅猛的趋势下,不少车企也加快了转型的脚步,若失去电气化转型的优势地位,意味着丢掉了通向...
专注于引入新品的全球电子元器件授权分销商贸泽电子 (Mouser Electronics) 宣布与Molex旗下BittWare达成全球分销协议。签署此项协议后,贸泽将开售采用英特尔®和Xilinx® FPGA技术的BittWare高端板卡级解决方案。 贸泽电子供应商管理副总裁Andy Kerr说道:“能够将BittWare的FPGA加速卡产品系列提供给贸泽全球客户,这让我们倍感荣幸。在贸泽的帮助...
针对上篇文章对于程序可移植性不强的问题进行优化,基本思路是首先搭建好IIC底层驱动程序,该程序可用于任何IIC通讯设备,然后针对不同的IIC设备单独编写应用程序,本篇文章仍以SHT30为例。一、IIC底层驱动之myiic.h#ifndef __MYIIC_H#define __MYIIC_H#include "sys.h" //IO方向设置#define SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC-...

史海拾趣

问答坊 | AI 解惑

Linear Power Control Of GSM Amplifier Power (2)

Once the slope and the intercept are known, the required code for any transmit power level can be calculated using the formula: The RF power-detection method suffers only ? dB error for an output-power range spanning +5 t ...…

查看全部问答∨

论文 源码公开的mcs-51单片机的宏汇编器中文版

论文 源码公开的mcs-51单片机的宏汇编器中文版…

查看全部问答∨

中兴_嵌入式系统讲义

一、嵌入式系统的基本概念 IEEE 对嵌入式系统的定义:用于控制、监视或者辅助操作机器和设备的装置(Devices used to control or Assist the Opetation of Equipment,Machinery or Plants)。 目前国内比较公认的定义:以应用为中心、以计算机技 ...…

查看全部问答∨

LM2575系列开关稳压集成电路及其应用

很好的东东,中文解释很全面,还有实际应用电路!…

查看全部问答∨

Linux下烧写镜像

小弟刚刚接触ARM,跟着开发板的说明移植内核,发现自己的Linux系统下不会烧写镜像,可以说是啥也不会,望有经验的同志告之 PS:小弟用惯了Linux,不想回到Windows下去,望能有详细的方法(小白一个)…

查看全部问答∨

寻一块钱以下的单片机(带一个AD )

做个项目,需要一块钱以下的单片机,带一个AD 请大家推荐…

查看全部问答∨

嵌入式人才的会集地-中国嵌入式ARM超级群

中国嵌入式ARM超级群109739525 为嵌入式从业者提供交流平台,旨在推动嵌入式ARM在中国的普及和发展,欢迎各位高手们加入互通有无,互相学习!…

查看全部问答∨

急了,100分求助,按键音怎么改成别的声音啊?

其他提示音都可以改,就这个按键音不知道怎么改?可是用户就要改别的提示音,向各位大侠求助!…

查看全部问答∨

wince5.0纸牌游戏屏幕显示不下,有法调吗?

找到了solitare.res、solitare.lib、solitare.pdb却怎么也找不到源码 不知源代码是否开放?在哪里? 没有的话就只能去调它了吧…

查看全部问答∨

求WINCE5.0下JAVA语言的开发软件~~

RT 求 用JAVA语言的做WINCE5.0下应用程序 的软件 感激不尽~~ …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved