蓝桥杯国信长天单片机实战--呼吸灯设计
利用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;}
}
蓝桥杯国信长天单片机实战--呼吸灯设计相关推荐
- 蓝桥杯国信长天单片机实战--交通灯设计
案例: L1 - 红灯 30s: L2 - 黄灯 3s: L3 - 绿灯 40s. 核心代码 #include "reg52.h" #define u8 unsigned char ...
- 蓝桥杯国信长天单片机实战--复习
1.LED 例1:LED1和LED3点亮 #include<stc15f2k60s2.h>void main(){P2=0xA0;P0=0X00;P2=0X80;P0=0XFF;while ...
- 蓝桥杯国信长天单片机实战--数码管的动态显示
一.原理分析 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管 ...
- 蓝桥杯国信长天单片机--LED灯模块(五)
LED等内部连接示意图 整体思路 通过74HC138芯片及74HC02芯片输入高低电平,来控制Y4C为1或0.当Y4C为1时,方可通过P0端口来控制LED灯的亮灭.当Y4C为0时,无法控制LED灯的亮 ...
- 蓝桥杯国信长天单片机--硬件环境(一)
CT107D 单片机由以下功能模块组成 1.功能模块 (1)单片机芯片 配置IAP15F2K61S2单片机 (2)显示模块 配置8路LED输出L1-L8 配置8位8段共阳极数码管DS1-DS2 配置L ...
- 蓝桥杯国信长天单片机--串口程序设计(十)
实验目的: 1.掌握51单片机串口工作模式及相关寄存器配置方法 2.了解51单片机波特率的计算方法 3.掌握单片机串口接收中断服务函数的设计方法 程序说明: 1.通过USB连接线连接PC机,在计算机硬 ...
- 蓝桥杯国信长天单片机--程序下载(三)
STC-ISP 程序下载 (1)打开下载界面:双击 stc-isp-15xx-v6.86.exe 运行程序,出现如图. (2)选择单片机型号:在左上方的"单片机型号"下拉列表中选择 ...
- 蓝桥杯国信长天单片机--软件环境(二)
Keil Vision5 集成开发环境建立工程 第一步: 单击"Project"菜单下的"New Vision Project-"菜单项启动新工程的建立,出现新 ...
- 蓝桥杯国信长天单片机--数码管模块(六)
数码管内部连接示意图 设备连接关系图 什么是位选,什么是段选? 假设我们有4个数码管,我想让某1个数码管显示对应的数字,我就需要先选中它,选中这个数码管的过程就叫位选:一般单个数码管都是8段(带小数点 ...
最新文章
- SpreadJS 类Excel表格控件 - V12 新特性详解
- 如何实现页面的响应式布局?
- Twisted入门教程(12)
- jquery eaayui 学习(三)tab
- 国内外知名工业交换机品牌有哪些?
- linux心跳包检测代码_OpenSSL心跳包越界读敏感信息泄漏漏洞
- 小程序的出现留给APP的时间还会久吗?
- iOS-状态栏字体颜色【白色】【Xcode9.1】
- 面试:C++实现访问者模式
- python cookbook 2字符串(2)
- H5文章分享给好友或朋友圈后如何生成自定义分享内容
- VIS2020 长论文摘要机翻
- 有什么软件可以连接到linux系统升级,linux系统和应用程序升级方法
- 华为奋力前行,以灵活多变的方式突围,成效显著
- 数据仓库分层 (ODS、DWD、DWS)
- 一键清除锁屏密码:苹果手机忘记锁屏密码的解决方案
- Qt Style Sheets指定自定义控件样式
- [论文学习]Mask R-CNN
- go vscode go mod win环境配置
- qldump 备份所有表_mysqldump 所有数据库