利用PWM实现呼吸灯

核心源码

#include "reg52.h"
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned longsbit PWMOUT = P0^0;u8 HighRH = 0;
u8 HighRL = 0;
u8 LowRH  = 0;
u8 LowRL  = 0;void ConfigPWM(u16 fr, u8 dc);//注意一个频率一个占空比,频率是u16
void ClosePWM();void CloseFucker();void main()
{u32 i;CloseFucker();P2 = (P2 & 0x1F) | 0x80;P0 = 0xFF;//务必先关闭,然后才能选通对应的!EA = 1;while (1)//注意占空比指的是高电平的持续时间,CT107D小灯是低电平点亮。{ConfigPWM(100, 10);    //频率100Hz,占空比10%for (i=0; i<100000; i++);ClosePWM();ConfigPWM(100, 40);    //频率100Hz,占空比40%for (i=0; i<100000; i++);ClosePWM();ConfigPWM(100, 90);    //频率100Hz,占空比90%for (i=0; i<100000; i++);ClosePWM();            //关闭PWM,相当于占空比100%for (i=0; i<100000; i++);}
}void CloseFucker()
{P2 = (P2 & 0x1F) | 0xA0; //关闭蜂鸣器和继电器P0 = P0 & 0xAF;P2 = 0x00;
}void ConfigPWM(u16 fr, u8 dc) //这一段配置非常有意思
{u32 tmp;//用来存临时总值u16 high, low; //用来存高电平低电平的总值tmp = (11059200/12)/fr;//算出对应频率的总值high = (tmp*dc)/100;//算出高电平总值low = tmp - high;//算出低电平总值high = 65536 - high;//对应该的计数开始值low = 65536 - low;HighRH = (u8)(high >> 8);//它们四个是个全局变量,在中断给P00口赋值。HighRL = (u8)high;LowRH = (u8)(low >> 8);LowRL = (u8)low;//AUXR &= 0x7F;//这里我没加AUXR寄存器的相关设置,15上电默认是12TTMOD &= 0xF0;TMOD |= 0x01;TH0 = HighRH;TL0 = HighRL;ET0 = 1;TR0 = 1;PWMOUT = 1;}void ClosePWM()
{TR0 = 0;ET0 = 0;PWMOUT = 1;
}void InterruptTimer() interrupt 1
{if(PWMOUT == 1){TH0 = LowRH;TL0 = LowRL;PWMOUT = 0;//注意,赋完值要记得把引脚的电平翻转啊!!!}else{TH0 = HighRH;TL0 = HighRL;PWMOUT = 1;}
}

蓝桥杯国信长天单片机实战--呼吸灯设计相关推荐

  1. 蓝桥杯国信长天单片机实战--交通灯设计

    案例: L1 - 红灯 30s: L2 - 黄灯 3s: L3 - 绿灯 40s. 核心代码 #include "reg52.h" #define u8 unsigned char ...

  2. 蓝桥杯国信长天单片机实战--复习

    1.LED 例1:LED1和LED3点亮 #include<stc15f2k60s2.h>void main(){P2=0xA0;P0=0X00;P2=0X80;P0=0XFF;while ...

  3. 蓝桥杯国信长天单片机实战--数码管的动态显示

    一.原理分析 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管 ...

  4. 蓝桥杯国信长天单片机--LED灯模块(五)

    LED等内部连接示意图 整体思路 通过74HC138芯片及74HC02芯片输入高低电平,来控制Y4C为1或0.当Y4C为1时,方可通过P0端口来控制LED灯的亮灭.当Y4C为0时,无法控制LED灯的亮 ...

  5. 蓝桥杯国信长天单片机--硬件环境(一)

    CT107D 单片机由以下功能模块组成 1.功能模块 (1)单片机芯片 配置IAP15F2K61S2单片机 (2)显示模块 配置8路LED输出L1-L8 配置8位8段共阳极数码管DS1-DS2 配置L ...

  6. 蓝桥杯国信长天单片机--串口程序设计(十)

    实验目的: 1.掌握51单片机串口工作模式及相关寄存器配置方法 2.了解51单片机波特率的计算方法 3.掌握单片机串口接收中断服务函数的设计方法 程序说明: 1.通过USB连接线连接PC机,在计算机硬 ...

  7. 蓝桥杯国信长天单片机--程序下载(三)

    STC-ISP 程序下载 (1)打开下载界面:双击 stc-isp-15xx-v6.86.exe 运行程序,出现如图. (2)选择单片机型号:在左上方的"单片机型号"下拉列表中选择 ...

  8. 蓝桥杯国信长天单片机--软件环境(二)

    Keil Vision5 集成开发环境建立工程 第一步: 单击"Project"菜单下的"New Vision Project-"菜单项启动新工程的建立,出现新 ...

  9. 蓝桥杯国信长天单片机--数码管模块(六)

    数码管内部连接示意图 设备连接关系图 什么是位选,什么是段选? 假设我们有4个数码管,我想让某1个数码管显示对应的数字,我就需要先选中它,选中这个数码管的过程就叫位选:一般单个数码管都是8段(带小数点 ...

最新文章

  1. SpreadJS 类Excel表格控件 - V12 新特性详解
  2. 如何实现页面的响应式布局?
  3. Twisted入门教程(12)
  4. jquery eaayui 学习(三)tab
  5. 国内外知名工业交换机品牌有哪些?
  6. linux心跳包检测代码_OpenSSL心跳包越界读敏感信息泄漏漏洞
  7. 小程序的出现留给APP的时间还会久吗?
  8. iOS-状态栏字体颜色【白色】【Xcode9.1】
  9. 面试:C++实现访问者模式
  10. python cookbook 2字符串(2)
  11. H5文章分享给好友或朋友圈后如何生成自定义分享内容
  12. VIS2020 长论文摘要机翻
  13. 有什么软件可以连接到linux系统升级,linux系统和应用程序升级方法
  14. 华为奋力前行,以灵活多变的方式突围,成效显著
  15. 数据仓库分层 (ODS、DWD、DWS)
  16. 一键清除锁屏密码:苹果手机忘记锁屏密码的解决方案
  17. Qt Style Sheets指定自定义控件样式
  18. [论文学习]Mask R-CNN
  19. go vscode go mod win环境配置
  20. qldump 备份所有表_mysqldump 所有数据库

热门文章

  1. Linux查看历史命令执行时间
  2. Excel汉语全拼函数,批量获得汉字的拼音
  3. Servlet缓存清理
  4. Qt6.2+QtDS的多功能串口助手(QML学习)
  5. 用Python Canvas绘制简笔画兔子
  6. (笔记)处理日期和时间的方法(chrono 库,time_t等)
  7. 20天精通linux shell脚本,shell编程技巧40式快速精通
  8. reference path
  9. ubuntu启动/禁用麦克风
  10. SpringBoot2x整合Mybatis(多数据源)