本帖最后由 xiashan 于 2015-4-5 18:30 编辑

看着笔记本待机的时候,电源灯变成忽明忽暗,手就不自在了。

研究了一番,写出了代码,加到自己做的“玩具”上。

可能会觉得这个东西没有什么实在意义,只不过看起来没闪烁那么单调而已。

如果觉得有用,也可以加到自己的作品上,据说某mp3用呼吸频率来表示系统电量得多少,咱觉得还是蛮创意的。

如果你的系统有空余的定时器,或者已经使用了定时器,那不妨试试,唯一就是要占用两个字节的ram,和几十微秒的时间。

unsigned char t1=0,t2=0,c1=1;

bit c=1;

void timer_1() interrupt 3 using 3   //呼吸灯程序

{

TL1 = 0x3C;    //200us

TH1 = 0xFF;

t1++; t2++;

if(t1 <= cl) led = 0;   //这三行通过t1与cl比较,控制led亮灭,也就是PWM调光。

if(t1 > cl) led = 1;    //

if(t1 == 40) t1 = 0;    //

if(t2 == 250)           //250次中断以后,进入以下语句,更改cl值,改变亮度。改变比较的值(250)

{                   //可以调整闪烁速度。

t2=0;

if(c)

{

cl++;

if(cl == 41) c=0;    //由亮变暗标识

}

if(!c)

{

cl--;

if(cl == 3) c=1;    //由暗变亮标识

}

}

}

下面以我的开发板为例作个具体的程序:

#include

#define uchar unsigned char

#define uint unsigned int

sbit led=P1^0; //位定义;定义led灯是接到P1^0;

unsigned char t1=0,t2=0,c1=1;

bit c=1;

sbit wela=P2^6;

uchar code table[]={0x06,0x5b,0x4f};

uchar temp,num;

delay(uchar);

display(uchar);

void main()

{

TMOD=0x01;

TH0=0x3C;

TL0=0xFF;

EA=1;

ET0=1;

TR0=1;

while(1)

{

P3=0x7f;

temp=P3;

temp=temp&0x7f;

if(temp!=0x7f)

{

delay(50);

if(temp!=0x7f)

{

switch(temp)

{

case 0x6f: num=0;

break;

case 0x5f: num=1;

break;

case 0x3f: num=2;

break;

}

}

}

display(num);

}

}

delay(uchar x)

{

uchar a,b;

for(a=x;a>0;a--)

for(b=200;b>0;b--);

}

display(uchar num1)

{

P0=table[num1];

wela=0;

}

void timer_0() interrupt 1 //呼吸灯程序

{

TL1 = 0x3C;    //200us

TH1 = 0xFF;

t1++; t2++;

if(t1 <= c1) led = 0;   //这三行通过t1与cl比较,控制led亮灭,也就是PWM调光。

if(t1 > c1) led = 1;    //

if(t1 == 40) t1 = 0;    //

if(t2 == 100)           //250次中断以后,进入以下语句,更改cl值,改变亮度。改变比较的值(250)

{                   //可以调整闪烁速度。

t2=0;

if(c)

{

c1++;

if(c1 == 41) c=0;    //由亮变暗标识

}

if(!c)

{

c1++;

if(c1 == 41) c=1;    //由暗变亮标识

}

}

}

51单片机c语言呼吸灯程序,给你的51单片机作品加个呼吸灯(程序)相关推荐

  1. 单片机c语言访问片外存储器,教你给51单片机扩展片外RAM

    原标题:教你给51单片机扩展片外RAM 上一文中扩展了单片机的程序存储器,4KB存储空间提升到64KB.其实,4K的代码空间还凑合,但是51自带的256B数据存储空间使用起来还真紧张,其中留给用户的连 ...

  2. 郭惠,吴迅.单片机c语言程序设计完全自学手册出版时间,基于单片机的多路温度采集器设计...

    时永宝 摘 要:伴随着时代的快速发展,智能将会成为今后的主流方向,按照设定好的思路,在特定的环境里自主工作,不需要人为的操控.在本次研究中,以STC89C51单片机作为核心控制器,用DS18B20温度 ...

  3. 单片机c语言程序设计中可以不分大小写,论单片机课程教学中C语言编程的规范性...

    摘 要 文章针对"单片机C语言程序设计"教学中存在的编程困扰,提出在教学实践中重视引导学生进行模块化.规范性程序设计,强调规范化编程对学生理解程序的结构与功能的重要作用,并贯穿于课 ...

  4. 单片机c语言1ms 2ms 4ms方波,定时器使用:利用单片机内部定时器0通过P1.0端口输出一定周期的方波信号。 - 试题答案网问答...

    相关题目与解析 使用定时/计数器0以工作方式2实现定时,在P1.0输出周期为200s的连续方波.已知晶振频率fosc=6MHz. 已知单片机的晶振频率为6MHz,下面程序用单片机内部定时器T0工作在方 ...

  5. 单片机c语言报错_asm啥意思,SPMC75系列单片机地C和ASM( - 控制/MCU - 电子发烧友网...

    SPMC75系列单片机地C和ASM(汇编)混合编程的应用 本文主要介绍凌阳16位变频控制单片机SPMC75系列单片机地C和ASM(汇编)混合编程的应用. 关键词:SPMC75 嵌入式汇编 1 引言 支 ...

  6. 单片机c语言24小时的计时程序框图,电子时钟单片机课程设计(WIT)要点解析.doc

    电气信息学院 单片机原理及应用课程设计报告 课题名称 电子时钟的设计 专业班级 电气自动化 学 号 学生姓名 指导教师 评 分 2014年12月22日至12月28日答辩记录 1.例举设计过程中遇到的问 ...

  7. 单片机 c语言 按键长按短按,求助:单片机一键长按与短按按键实现的c程序有问题...

    单片机一键长按与短按按键实现的c程序有问题,实在不知道是哪里有问题,请帮助修改一下,谢谢! 功能如下:长按2秒灯全亮(我用的开发板),短按实现流水灯. 程序如下: #include #include ...

  8. 单片机c语言北航,【下载资料】《51单片机学习笔记》北航版

    原标题:[下载资料]<51单片机学习笔记>北航版 如果手机下载有问题,请移步至电脑端,链接:https://forum.mianbaoban.cn/t/topic/36906 内容简介 本 ...

  9. 单片机c语言慧尾灯编码,(参考)基于单片机的智能尾灯开发文档.doc

    基于单片机的智能尾灯的设计 摘要 本设计是基于单片机的自行车智能尾灯控制器,该设计为STC89S52单片机做为主控芯片的自行车尾灯控制电路的设计方法,用发光二极管模拟自行车尾灯,按键开关作为转弯等控制 ...

  10. 单片机c语言实训例子基于mega16,基于AVR单片机的mega16内部EEPROM操作C语言程序设计...

    原标题:基于AVR单片机的mega16内部EEPROM操作C语言程序设计 #include #include #include #define uchar unsigned char #define ...

最新文章

  1. java 取数组的前90位,LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面
  2. 为什么倒排索引不采用zlib这样的字典压缩算法——因为没法直接使用啊
  3. ListView setOnItemClickListener无效原因分析
  4. [今日干货]短视频获得种子用户的途径
  5. Nexys4DDR+OV7670实现sobel算子边缘检测系统
  6. Apache中的Order Allow,Deny用法详解
  7. “ddl”有一个无效 SelectedValue,因为它不在项目列表中。
  8. Replace Parameter with Methods(以函数取代参数)
  9. 【云栖大会】与马云一起开启“飞天·进化”之旅
  10. ThirdServiceManager SDK
  11. flutter 一直loading_开源 | FLUI : Flutter 的组件扩展集
  12. (八)用于人脸识别的Web API
  13. C++ 遍历 iterator has no member named
  14. BZOJ4311:向量——题解
  15. 今晚折腾了好久,win7极限精简版239M在虚拟机未成功?
  16. 佐治亚理工计算机科学,Gatech的CS「佐治亚理工学院计算机科学系」
  17. 终极版Python打包exe文件,并修改图标,这将是你见过最详细的教程~
  18. Bert预训练新法则
  19. 【重磅来袭】这绝对是全网最全的Springboot面试题
  20. PyG搭建GAT实现节点分类

热门文章

  1. BW型模拟带通滤波器设计的Matlab仿真
  2. ​FMEA失效模式分析中风险评估「SOD」标准
  3. gcc下载地址(Linux/windows安装)
  4. 2011年浙江计算机二级vfp是什么,2011年计算机二级VFP考试基础教程(21)
  5. 计算机组成原理 透明性,计算机组成原理试题
  6. 防止phpddos攻击
  7. 股票历史数据-股票历史交易数据下载成Excel,股票历史交易数据查询
  8. Android移动应用开发大作业——日程管理+邮件反馈
  9. Web前端可视化绘图软件编辑器-汇总
  10. 如何批量将 Word 文档转为 TXT 文本文档格式