具体实现功能

具体实现功能:

按下不同的按键分别发出不同的音阶,分别可以发出以下音阶:低3,低4,低5,低6 ,低7;中1,中2,中3;中4,中5,中6,中7;高1,高2,高3,高4。

设计介绍

单片机介绍

51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。

设计思路

文献研究法:搜集整理相关单片机智能手环系统相关研究资料,认真阅读文献,为研究做准备;

调查研究法:通过调查、分析、具体试用等方法,发现单片机智能手环系统的现状、存在问题和解决办法;

比较分析法:比较不同单片机智能手环系统的具体原理,以及同一类传感器性能的区别,分析单片机智能手环系统的研究现状与发展前景;

软硬件设计法:通过软硬件设计实现具体硬件实物,最后测试各项功能是否满足要求。

设计内容

仿真实现

本设计利用protues8.7软件实现仿真设计,具体如图。

Protues也是在单片机仿真设计中常用的设计软件之一,通过设计出硬件电路图,及写入驱动程序,就能在不实现硬件的情况进行电路调试。另外,protues还能实现PCB的设计,在仿真中也可以与KEIL实现联调,便于程序的调试,且支持多种平台,使用简单便捷。

汇编程序

本设计由汇编语言编写,主代码具体如下:

            KEYBUF EQU 30H          ;   KEYBUF定义为30H           STH0 EQU 31H             ;STH0 定义为,31H           STL0 EQU 32H             ;STL0 定义为,32H           TEMP EQU 33H             ;TEMP 定义为,33H           ORG 00H                            LJMP START                          ORG 0BH                             LJMP INT_T0              START:     MOV TMOD,#01H     ;设置定时器0的工作方式           SETB ET0                 ;设置定时器中断           SETB EA                 ; 开总中断WAIT:      MOV P3,#0FFH          ;设置P3口为输入模式           CLR P3.4          ;清0 P3.4,按键的第一行扫描           MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;            JZ NOKEY1          ;           LCALL DELY10MS          ;延时10ms           MOV A,P3          ;           ANL A,#0FH          ;            XRL A,#0FH          ;            JZ NOKEY1          ;           MOV A,P3          ;           ANL A,#0FH          ;           CJNE A,#0EH,NK1          ;           MOV KEYBUF,#0          ;           LJMP DK1          ;NK1:       CJNE A,#0DH,NK2          ; K1键按下           MOV KEYBUF,#1          ;           LJMP DK1          ;NK2:       CJNE A,#0BH,NK3          ;K2键按下           MOV KEYBUF,#2          ;           LJMP DK1          ;NK3:       CJNE A,#07H,NK4          ;K3键按下           MOV KEYBUF,#3          ;           LJMP DK1          ;NK4:       NOP                    ;K4键按下 DK1:       MOV A,KEYBUF           MOV B,#2       MUL AB          ;因为查表里都是字,所以乘2的查表数据           MOV TEMP,A          ;           MOV DPTR,#TABLE          ;  指向表头           MOVC A,@A+DPTR          ; 查表           MOV STH0,A          ;           MOV TH0,A          ;  将数据高位送TH0           INC TEMP          ;           MOV A,TEMP          ;           MOVC A,@A+DPTR          ;           MOV STL0,A          ;           MOV TL0,A          ;将数据低位送TH0           SETB TR0          ; 启动定时器T0DK1A:      MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JNZ DK1A          ;           CLR TR0          ;关闭定时器T0NOKEY1:    MOV P3,#0FFH          ;设置P3口为输入模式           CLR P3.5          ;清0 P3.5,按键的第二行扫描           MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JZ NOKEY2          ;           LCALL DELY10MS          ; 延时10ms           MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JZ NOKEY2          ;           MOV A,P3          ;           ANL A,#0FH          ;           CJNE A,#0EH,NK5          ;           MOV KEYBUF,#4          ;           LJMP DK2          ;NK5:       CJNE A,#0DH,NK6          ;K5键按下           MOV KEYBUF,#5          ;           LJMP DK2          ;NK6:       CJNE A,#0BH,NK7          ;K6键按下           MOV KEYBUF,#6          ;           LJMP DK2          ;NK7:       CJNE A,#07H,NK8          ;K7键按下           MOV KEYBUF,#7          ;           LJMP DK2          ;NK8:       NOP          ;     K8键按下DK2:       MOV A,KEYBUF          ;           MOV B,#2        ;       MUL AB    ;因为查表里都是字,所以乘2的查表数据           MOV TEMP,A          ;           MOV DPTR,#TABLE          ; 指向表头             MOVC A,@A+DPTR          ; 查表           MOV STH0,A          ;           MOV TH0,A          ;将数据高位送TH0           INC TEMP          ;           MOV A,TEMP          ;           MOVC A,@A+DPTR          ;           MOV STL0,A          ;           MOV TL0,A          ;将数据低位送TH0           SETB TR0          ;启动定时器T0DK2A:      MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JNZ DK2A          ;           CLR TR0          ;  关闭定时器T0NOKEY2:    MOV P3,#0FFH          ;设置P3口为输入模式            CLR P3.6          ; 清0 P3.6,按键的第三行扫描           MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JZ NOKEY3          ;           LCALL DELY10MS          ; 延时10ms           MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JZ NOKEY3          ;           MOV A,P3          ;           ANL A,#0FH          ;           CJNE A,#0EH,NK9          ;           MOV KEYBUF,#8          ;           LJMP DK3          ;NK9:       CJNE A,#0DH,NK10          ;K9键按下           MOV KEYBUF,#9          ;           LJMP DK3          ;NK10:      CJNE A,#0BH,NK11          ;K10键按下           MOV KEYBUF,#10          ;           LJMP DK3          ;NK11:      CJNE A,#07H,NK12          ;K11键按下           MOV KEYBUF,#11          ;           LJMP DK3          ;NK12:      NOP          ; K12键按下DK3:       MOV A,KEYBUF          ;           MOV B,#2  ;       MUL AB  ;因为查表里都是字,所以乘2的查表数据           MOV TEMP,A          ;           MOV DPTR,#TABLE          ;指向表头           MOVC A,@A+DPTR          ;查表           MOV STH0,A          ;           MOV TH0,A          ;将数据高位送TH0           INC TEMP          ;           MOV A,TEMP          ;           MOVC A,@A+DPTR          ;           MOV STL0,A          ;           MOV TL0,A          ;将数据低位送TH0           SETB TR0          ;启动定时器T0 DK3A:      MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JNZ DK3A          ;           CLR TR0          ;关闭定时器T0NOKEY3:    MOV P3,#0FFH          ;设置P3口为输入模式            CLR P3.7          ;清0 P3.7,按键的第四行扫描            MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JZ NOKEY4          ;           LCALL DELY10MS          ;延时10ms           MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JZ NOKEY4          ;           MOV A,P3          ;           ANL A,#0FH          ;           CJNE A,#0EH,NK13          ;           MOV KEYBUF,#12          ;           LJMP DK4          ;NK13:      CJNE A,#0DH,NK14          ; K13键按下           MOV KEYBUF,#13          ;           LJMP DK4          ;NK14:      CJNE A,#0BH,NK15          ;K14键按下           MOV KEYBUF,#14          ;           LJMP DK4          ;NK15:      CJNE A,#07H,NK16          ;K15键按下           MOV KEYBUF,#15          ;           LJMP DK4          ;NK16:      NOP          ; K16键按下DK4:       MOV A,KEYBUF          ;           MOV  B,#2   ;       MUL  AB ; 因为查表里都是字,所以乘2的查表数据           MOV TEMP,A          ;           MOV DPTR,#TABLE          ; 指向表头           MOVC A,@A+DPTR          ; 查表           MOV STH0,A          ;           MOV TH0,A          ;将数据高位送TH0           INC TEMP          ;           MOV A,TEMP          ;           MOVC A,@A+DPTR          ;           MOV STL0,A          ;           MOV TL0,A          ;将数据低位送TH0           SETB TR0          ;启动定时器T0DK4A:      MOV A,P3          ;           ANL A,#0FH          ;           XRL A,#0FH          ;           JNZ DK4A          ;           CLR TR0          ; 关闭定时器T0NOKEY4:    LJMP WAIT          ;DELY10MS:  MOV R6,#10          ; 10ms延时子程序D1:        MOV R7,#248          ;           DJNZ R7,$          ;           DJNZ R6,D1          ;           RET          ; INT_T0:    MOV TH0,STH0          ; T0中断服务程序           MOV TL0,STL0          ;           CPL P1.0          ; 输出方波           RETI          ;TABLE:     DW 64021,64103,64260,64400          ;低3,低4,低5,低6           DW 64524,64580,64684,64777          ;低7,中1,中2,中3           DW 64820,64898,64968,65030          ;中4,中5,中6,中7           DW 65058,65110,65157,65178          ; 高1,高2,高3,高4           END          ; 

设计分享|单片机多音阶电子琴(汇编)相关推荐

  1. 设计分享|单片机抢答器(汇编)

    具体实现功能 具体实现功能: 主持人按下抢答按键后,进入抢答模式,8位选手开始抢答,数码管显示抢答成功的选手号码,主持人按键再次按下后复位. 设计介绍 单片机介绍 51单片是一种低功耗.高性能CMOS ...

  2. 设计分享|单片机交通灯仿真(汇编)

    具体实现功能 具体功能: (1)东西红灯60S倒计时,南北绿灯40S倒计时,东西向人行道红灯,南北向人行道绿灯: (2)40S后,黄灯闪烁切换,东西右转绿灯20S,左转绿灯20S,南北80S倒计时,右 ...

  3. 设计分享|单片机8路抢答器

    具体实现功能 具体功能: (1)按下"开始"按键,进入20S倒计时,八位选手可以进行抢答: (2)选手按下抢答按键后,数码管显示对应的选手编号,表示抢答成功: (3)抢答成功后,点 ...

  4. 设计分享|单片机数字温度计

    具体实现功能 具体功能: 通过DS18B20测温,通过四位数码管实时显示温度值. 设计介绍 单片机介绍 51单片是一种低功耗.高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器.在 ...

  5. 设计分享|单片机电压表模拟

    具体实现功能 具体功能: 通过滑动变阻器和ADC0832模块对电压值进行采样,反馈电压值通过数码管进行显示,电压范围为0-5V,如图所示表示电压为3.92V. 设计介绍 单片机介绍 51单片是一种低功 ...

  6. 设计分享|单片机直流电机转速控制(汇编)

    目录 具体实现功能: 设计介绍 51单片简介 设计思路 设计内容 仿真图(protues8.7) 程序(KeilC51) 具体实现功能: 利用滑动变阻器实现对直流电机转速的控制,仿真实现,汇编语言编写 ...

  7. 设计分享|单片机花样流水灯

    目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 仿真图(protues8.7) 程序(Keil5) 具体实现功能 单片机控制两列16个LED实现彩灯展示.P0口控制的8个LED彩灯实 ...

  8. 设计分享|单片机4*4矩阵键盘控制LED灯

    目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 仿真图(protues8.7) 程序(Keil5) 具体实现功能 4*4矩阵键盘控制LED显示,第一个按键控制一个LED点亮,第二个按 ...

  9. 设计分享|单片机按键控制继电器实现灯亮灭

    具体实现功能 按键按下,控制继电器实现灯点亮:按键再次按下,控制继电器实现灯熄灭. 设计介绍 51单片机简介 51单片是一种低功耗.高性能CMOS-8位微控制器,具有8K可编程Flash存储器,使得其 ...

最新文章

  1. java类定义的顺序_Java类及对象的初始化顺序
  2. flutter_web 实战之文章列表与详情
  3. .NET Core 服务在 ARM64 服务器中的部署
  4. 编译报错+解决方法:错误: 找不到符号
  5. git小技巧之分支、关联远程仓库、回滚、解决.gitignore不生效等
  6. 客户组网服务案列_山西seo关键词排名优化案列
  7. 转I give the orders around here.
  8. android切换输入法工具类
  9. csf格式手机播放器(安卓csf格式播放器)
  10. web前端开发之微信小程序
  11. 怎样在nature上查文献?
  12. fanq15/FSOD-code 的环境配置及运行
  13. Python实现CRAPS赌博游戏
  14. 输入上下文句柄相关函数 linux,一起聊聊WSL的那些事儿(上)
  15. 5分钟自建数据库可视化平台,在线管理数据库也太方便了~
  16. 在Unity2018如何使用代码一键设置Icon
  17. 图解http(七)-web的攻击技术
  18. php aes加密 ctr,使用aes+ctr的加密问题
  19. 计算机工作无法更改,win10系统计算机工作组名称无法更改的操作方案
  20. centos7在net连接下ifcfg-ens33的配置

热门文章

  1. linux中lpr命令
  2. 318. 划分大理石
  3. 互联网高级测试工程师至少具备的能力
  4. 认知理论中的首因效应、刻板效应、近因效应、晕轮效应效应
  5. markdown基本语法.md
  6. CSDN知识库构建,我以我血荐轩辕
  7. 安装oracle 10g XE后的提示
  8. 基于ssm快递取件及上门服务微信小程序
  9. 人大金仓 创建表空间_Kingbase金仓更改表空间
  10. java的入口函数_java入口函数有几种