M8做的简易电子节拍器

发布者:sjjawx831最新更新时间:2016-10-19 来源: eefocus关键字:电子节拍器 手机看文章 扫描二维码
随时随地手机看文章
$regfile = "m8def.dat"

$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40

Config Portd = Output                                       '0-6接LED A-G
Config Portb = Output                                       '0,1,2分别接LED共阳8,9,12    5接sound

Config Adc = Single , Prescaler = Auto , Reference = Avcc   '2接电位器

Config Timer1 = Timer , Prescale = 256                      '8-1us  64-8us 256-32us  1024-128us

'(
若要x拍 / 分钟,每拍的时间tp = 60 / X (秒) = 60000000 / X(微秒)
需要n个计数,n = Tp / 32
Counter1 = 65535 - N
')

On Timer1 Tim1_isr

Dim J As Integer
Dim V As Word , Oldv As Word , Count As Word
Dim S As Single
Dim Bpm As Byte , Idx As Byte
Dim Ss As String * 3 , Sled As String * 1

Osccal = &HB3

Start Adc
Enable Timer1
Enable Interrupts

Portb = 0
Portd = 0

Oldv = 0
Bpm = 30
Counter1 = 3035
Sound Portb.5 , 15 , 220

Do

   V = 0
   For J = 1 To 50
      V = V + Getadc(2)
   Next J
   S = V / 50
   V = Round(s)

   J = V - Oldv
   J = Abs(j)
   If J > 4 Then
      Oldv = V

      '计算节拍数  取值范围 30-230拍/分钟
      S = V / 1023
      S = S * 200
      S = S + 30
      Bpm = Round(s)

      '计算counter1
      S = 60000000 / Bpm
      S = S / 32
      V = Round(s)
      Count = 65535 - V
   End If

   '显示节拍数
   Ss = Str(bpm)
   Ss = Format(ss , "000")
   '显示个位
   Sled = Mid(ss , 3 , 1)
   Idx = Val(sled)
   Portd = Lookup(idx , Leddata )
   Portb.0 = 1
   Portb.1 = 0
   Portb.2 = 0
   Waitms 5

   '显示十位
   Sled = Mid(ss , 2 , 1)
   Idx = Val(sled)
   Portd = Lookup(idx , Leddata)
   Portb.0 = 0
   Portb.1 = 1
   Portb.2 = 0
   Waitms 5

   '显示百位
   Sled = Mid(ss , 1 , 1)
   Idx = Val(sled)
   If Idx = 0 Then
         Portb = 0
      Else
         Portd = Lookup(idx , Leddata)
         Portb.0 = 0
         Portb.1 = 0
         Portb.2 = 1
   End If

Loop

End

 

Tim1_isr:

   Counter1 = Count

   Sound Portb.5 , 20 , 220

Return


'LED数字 (0-9)
Leddata:
Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001
Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000

关键字:电子节拍器 引用地址:M8做的简易电子节拍器

上一篇:AVR控制4线触摸屏程序
下一篇:EEPROM的读写例子

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

Molex 推出具有 M8 全连通性的 IP67 DeviceNet I/O 模块
(新加坡 – 2017 年2月28日) Molex 推出市场上第一种 Brad® DeviceNet HarshIO M8 模块,该模块通过 ODVA 的完整合规测试并获得认证,针对电源、I/O 和 DeviceNet 现场总线提供 M8 级别的全连通性,是一种 IP67 等级的、独一无二的小形状系数解决方案,可实现高密度的机器上 I/O 连接,适合数控机床和机器人,以及材料加工和装瓶设备应用。 Molex 产品经理 Eric Gory 表示:“相对于当前的混合式 M12/M8 模块来说,IP67 等级的新型 HarshIO M8 模块是一种更加紧凑的解决方案,即使在最恶劣的环境下也可以直接安装到机器上。窄体外壳便于配置,使该
[工业控制]
M8单片机串口通讯监听(使用PROTEUS串口仿真GSM模块AT指令通讯)
实现监听(使用PROTEUS串口例子)V1.0 M8单片机仿真原理图如下 单片机源程序如下: //////////////////////////////////////////////////////////////////////////////// // ICC-AVR application builder : 6-25 下午 06:02:39 // Target : M8 // Crystal: 3.6864Mhz // Author: Anwarye // Title: Detcetaphone ///////////////////////////////////////////////////////////
[单片机]
<font color='red'>M8</font>单片机串口通讯监听(使用PROTEUS串口仿真GSM模块AT指令通讯)
M8,ICCAVR下的温度传感器18B20程序
本程序为采用mega8 和18b20的温度采集程序 选用mega8内部8M RC震荡,18b20 数据线接pd6,数据线和vcc间接一4.7k上拉电阻 感谢dfgeoff 嗜血蜗牛提供的资料*/ #include iom8v.h //和单片机类型相对应的头文件,选择Atmega8做实验; #include macros.h #define uchar unsigned char #define uint unsigned int void init_1820(); write_1820(uchar x); uchar read_1820(); void send_byte(uchar x); void del
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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