1. 实现开关,开关2次后,LED闪烁4次 
2. 实现驱动共阳极数码关显示 3.1
3. 驱动喇叭播放 ,dao,re,mi,fa,sao,la,xi

C代码:

/**
* 8051 DEMO 2
* 1. 实现开关,开关2次后,LED闪烁4次
* 2. 实现驱动共阳极数码关显示 3.1
* 3. 驱动喇叭播放 ,dao,re,mi,fa,sao,la,xi
* 8051 规定中断号如下
* INT0  中断号  0
* INT1  中断号  2
* T0    中断号  1
* T1    中断号  3
* 串口  中断号   4
*/#include "REG52.H"
#include "intrins.h"//LED
sbit led  = P2^0;
//控制数码管
sbit ls1 = P2^1;
sbit ls2 = P2^2;
//输出脉冲信号让蜂鸣器工作
sbit sound = P2^3;//类型定义
typedef unsigned char U8;
typedef unsigned int I8;//声明全局计数变量 count
I8 count;//使用定时器,给端口上输出一个脉冲,从而形成声音进行播放//定义频率
#define DAO 262 //低音"1"的频率262Hz
#define RE 286  //低音"2"的频率286Hz
#define MI 311  //低音"3"的频率311Hz
#define FA 349  //低音"4"的频率349Hz
#define SAO 392 //低音"5"的频率392Hz
#define LA 440  //低音"6"的频率440Hz
#define XI 494  //低音"7"的频率494Hz//定义节拍
#define B4_1 2000   // 4/1拍,2000ms
#define B3_1 1500   // 3/1拍,1500ms
#define B2_1 1000   // 2/1拍,1000ms
#define B3_2 750    // 3/2拍,750ms
#define B1_1 500    // 1拍,500ms
#define B3_4 313    // 3/4拍,313ms
#define B1_2 250    // 1/2拍,250ms
#define B1_3 125    // 1/3拍,125ms
#define B1_4 63     // 1/4拍,63ms//音乐延迟ms
void delay_ms(I8 ms)   //误差 -0.651041666667us
{unsigned char a,b;I8 z;for(z=0;z<ms;z++){for(b=102;b>0;b--)for(a=3;a>0;a--);}
}//音乐,dao,re,mi,fa,sao,la,xi
int code music[] = {DAO,RE,MI,FA,SAO,LA,XI
};//声明中断
void int0_init()
{IT0 = 1; //低电平触发EX0 = 1; //打开外部中断0EA = 1; //打开全局中断
}//中断处理
void int0_start() interrupt 0
{EX0 = 0;//停止中断,进行业务逻辑处理count = count+1; //统计开关闭合的次数EX0 = 1 ;//处理完毕,打开中断
}//数码管显示 3.1 , 由于人体的视觉暂留想象,对于刷新频率<20ms ,则看到的是一起显示的
void display31()
{ls1 = 0; //打开第1个数字通到P1 = 0xF9; //显示数字:1delay_ms(10);P1 = 0xFF; //消隐ls1 = 1; //关闭第1个数字通到ls2 = 0; //打开第2个数字通到P1 = 0xB0; //显示数字:3delay_ms(10);P1 = 0x7F; //显示数字:.delay_ms(10);P1 = 0xFF; //消隐ls2 = 1; //关闭第2个数字通到
}//初始化定时中断
void timer_init()
{TMOD = 0X00;ET0 = 1; //打开定时器0 的中断EA = 1; //打开总中断TR0 = 1; //打开定时器0
}int pv;  //频率切换
I8 ii; //计频率切换
void timer_start() interrupt 1
{   pv = music[ii];TH0 = (65536 - pv*1000) / 256;//(65536-X)为定时器初值,如定时1msTL0 = (65536 - pv*1000) % 256;sound = !sound;
}
//播放音乐 一遍后继续下面操作
void play_music(){while(1){//使用2拍if(ii>7){ii= 0;break;}delay_ms(B2_1);ii = ii + 1;}
}void main()
{I8 i;count = 0;led = 1;ls1 = 1;ls2 = 1;sound = 1;ii = 0;//中断int0_init();//定时器timer_init();//播放play_music();while (1){   if(count == 2 ){ //次数超过2次后for(i=0;i<4;i++){led = 0;delay_ms(1000);led = 1;delay_ms(1000);}//执行完毕,则把count赋值为0count = 0;}display31();}
}

感谢您的支持,写的文章如对您有所帮助,开源不易,请您打赏,谢谢啦~

8051/2单片机基础 实现开关,驱动2位的共阳极数码管显示小数,驱动喇叭播放音乐相关推荐

  1. FPGA课程设计——数字电子时钟VERILOG(基于正点原子新起点开发板,支持8位或6位共阳极数码管显示时分秒毫秒,可校时,可设闹钟,闹钟开关,led指示)

    2019级电子科学与技术专业FPGA课程设计 报   告 2022  年 5 月 20 日 多功能数字电子钟的设计 摘要 电子设计自动化(EDA)是一种实现电子系统或电子产品自动化设计的技术,使用ED ...

  2. 四位共阳极数码管显示函数_74LS164驱动4位共阳数码管代码

    #include "reg52.h" #define u16 unsigned int #define u8 unsigned char sbit CLK=P2^0; sbit D ...

  3. FPGA基础知识极简教程(9)七段数码管显示的Verilog简单设计

    博文目录 写在前面 正文 七段数码管原理 七段数码管译码表 单个七段数码管显示verilog设计 多个数码管动态扫描显示 参考资料 交个朋友 写在前面 作为FPGA的基础知识教程怎么能少得了这个简单的 ...

  4. 【Multisim仿真】74LS47译码器驱动共阳数码管显示(0-8)数字显示

    [Multisim仿真]74LS47译码器驱动共阳数码管显示(0-8)数字显示 Multisim仿真演示 74ls47引脚功能 LT: 试灯输入,是为了检查数码管各段是否能正常发光而设置的.当LT=0 ...

  5. 51单片机汽车胎压大气气压测量仪仿真设计_数码管显示

    51单片机汽车胎压大气气压测量仪仿真设计_数码管显示 (仿真+程序) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0018 目录标题 51 ...

  6. C51单片机-共阳极数码管循环显示数字0至9,共阴极数码管循环显示5201314(动态)

    keil uVision4界面: #include<reg51.h> //包含8051单片机寄存器定义的头文件 //共阳极数码管0到9 unsigned char seg1[]={0xc0 ...

  7. 51单片机实现数码管显示小数

    51单片机实现数码管显示小数 要求 1 Proteus 面向编程的模型搭建 2 代码实现 2.1. 实现数码管刷新 2.2 对小数进行分解的函数 3 测试用例 4 仿真结果 要求 要求1:根据整数部分 ...

  8. void函数调用时显示不允许使用不完整的_4位数码管显示模块驱动

    TM1637四位数码管模块是一个带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,驱动方式为IIC,因此只需2根信号线即可使单片机控制4位8段数码管(数码管8级亮度可调). ...

  9. c语言编写闹钟主程序流程图,基于STC15W4K58S4单片机的电子万年历设计源码与报告(数码管显示)...

    基于STC15W4K58S4单片机的电子万年历(数码管显示)该压缩包包含源码TXT文件 源工程文件(Keil uVision4文件)和课程设计报告 电子时钟的设计 -单片机综合设计报告 目录 1  任 ...

最新文章

  1. 图像浏览软件_FastStone Image Viewer5.5版
  2. springboot实战 获取spring上下文的4种方式
  3. Nacos服务发现控制台预览
  4. 设计模式之—访问者模式VisitorPattern
  5. table中动态删除当前行
  6. python网络爬虫学习笔记(五):urllib.parse库
  7. Android--Activity中使用Intent传值
  8. 在input标签里只能输入数字
  9. 云计算的三大挑战:安全性、合规性和成本控制
  10. 二进制部署Kubernetes-v1.14.1集群
  11. Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
  12. 熊猫烧香病毒分析报告
  13. 眼镜店计算机信息管理情况介绍,眼镜店家,你了解消费者吗?——M市眼镜市场调查报告...
  14. 【安全热点】阿里巴巴月饼门,观点两极化,孰对孰错?
  15. idm integration module(idm) Chrome插件 安装
  16. 【YOLOV5-5.x 源码解读】datasets.py
  17. 259-数据明文传输的安全问题
  18. 互联网装修O2O模式是否可行?
  19. re的剩余模块和subprocess模块
  20. 服务器远程注销,命令行注销windows远程登录账户

热门文章

  1. 已知三角形三个顶点求内切圆和外接圆半径 以及面积 C语言模板
  2. HDFS的DN退役以及如何加快DN退役速度
  3. linux双拼输入法,百度输入法Linux版下载:支持在Ubuntu下用全拼、双拼、五笔
  4. EmWin学习课堂_小白EmWin_EmWin快速入门_EmWin动态内存,显示和触摸屏_EmWin基础配置
  5. 新概念英语第三册第一课
  6. 教程:利用Cheat Engine简单实现无限期体验百度云盘会员提速.
  7. 物理教师资格证备考经验
  8. vip结尾的域名到期查询,多久会被删除?
  9. 【Unity Shader入门精要】普通纹理和高级纹理
  10. Surf描述子形成步骤