历史上的今天
返回首页

历史上的今天

今天是:2025年08月12日(星期二)

正在发生

2021年08月12日 | 51单片机心形灯实现旋转呼吸灯流水编程

2021-08-12 来源:eefocus

在这里插入图片描述
心形灯原理图
在这里插入图片描述

编译软件:Keil uVision5

(如有需要可点此链接下载:https://download.csdn.net/download/qq_36931762/11343174)

单片机程序下载软件:STC-ISP

(如有需要可点此链接下载:https://download.csdn.net/download/qq_36931762/11343157)


程序代码:

灯状态处于0亮1灭

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit led0 =P3^6;

sbit led1 = P2^2;

uint num, timenum=100, leddirction=0, ledpwm=0, ledpwm_temp, pwm_max=100, pwm_min=0;

unsigned char code table[]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};

unsigned char code table1[]={0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe};

uint flag0=0;


void init(){

TMOD=0x01; //定时器1模式

TH0 = (65536-10)/256;

TL0 = (65536-10)%256; 

ET0=1; //开定时器0中断

EA=1; //开总中断

TR0=1; //启动定时器0

}


void Delay(unsigned int i){

unsigned char j;

for(;i>0;i--){

for(j=110;j>0;j--);

}

}


void main(){

//init();

uint i=0;

while(1){

while(flag0==0){ //先让心形灯做底部D17号灯呼吸闪烁,在这里利用flag来控制当前接口内灯的循环闪烁

if((timenum++)>=100){

timenum=0;

if(leddirction==0){

ledpwm++;

if(ledpwm>=pwm_max){

ledpwm=pwm_max;

leddirction=1;

}

}

if(leddirction==1){

ledpwm--;

if(ledpwm<=pwm_min){

ledpwm=pwm_min;

flag0=1;

leddirction=0;

}

}

ledpwm_temp=ledpwm;

}

if(ledpwm_temp>0){

led0 = 0;

ledpwm_temp--;

}else{

led0 = 1;

}

}

P3=0xff; //D17号灯闪烁结束,让其位置变为1让其熄灭

flag0=0;

for(i=0;i<8;i++){ //让心形灯右半部分呼吸闪烁

while(flag0==0){

if((timenum++)>=100){

timenum=0;

if(leddirction==0){

ledpwm++;

if(ledpwm>=pwm_max){

ledpwm=pwm_max;

leddirction=1;

}

}

if(leddirction==1){

ledpwm--;

if(ledpwm<=pwm_min){

ledpwm=pwm_min;

flag0=1;

leddirction=0;

}

}

ledpwm_temp=ledpwm;

}

if(ledpwm_temp>0){

P0 = table[i];

ledpwm_temp--;

}else{

P0 = 0xff;

}

}

P0=0xff;

flag0=0;

}

for(i=0;i<8;i++){ //左半部分

P2 = table1[i];

while(flag0==0){

if((timenum++)>=100){

timenum=0;

if(leddirction==0){

ledpwm++;

if(ledpwm>=pwm_max){

ledpwm=pwm_max;

leddirction=1;

}

}

if(leddirction==1){

ledpwm--;

if(ledpwm<=pwm_min){

ledpwm=pwm_min;

flag0=1;

leddirction=0;

}

}

ledpwm_temp=ledpwm;

}

if(ledpwm_temp>0){

P2 = table1[i];

ledpwm_temp--;

}else{

P2 = 0xff;

}

}

P2=0xff;

flag0=0;

}

}

}

推荐阅读

史海拾趣

台湾肯尼威(CANNYWELL)公司的发展小趣事

在品质保障的基础上,肯尼威开始积极拓展市场。公司不仅在台湾本地建立了完善的销售网络,还成功进军国际市场。通过与多家国际知名企业的合作,肯尼威的产品逐渐打入电子、机械、医疗器械等多个领域。同时,公司还积极参加国际展会,展示最新的技术和产品,吸引了众多海外客户的关注。

Anadigm公司的发展小趣事

台湾肯尼威公司成立于1986年,其创始人李明(化名)是一位对电子技术充满热情的工程师。在当时的台湾,电子制造业正处于蓬勃发展的阶段。李明看到电源滤波器在电子设备中的重要性,于是决定专注于这一领域的研发和生产。他带领一支小团队,经过无数次的试验和改进,终于成功研发出CW系列单相电源滤波器,为公司的发展奠定了坚实的技术基础。

American Micro Products Inc公司的发展小趣事

为了保持技术的领先地位,AMP高度重视研发团队的建设和人才培养。公司投入大量资源用于引进和培养高端人才,为研发团队提供了一流的工作环境和研发设备。这些人才为AMP的技术创新和产品升级提供了强有力的支持。

Blue Creation公司的发展小趣事

随着国内市场的饱和,Blue Creation公司决定将目光投向海外市场。公司制定了一系列国际化战略,包括设立海外研发中心、拓展销售渠道、加强品牌推广等。经过几年的努力,Blue Creation的产品逐渐打入国际市场,赢得了众多海外客户的认可。同时,公司也积极吸收国际先进技术和管理经验,不断提升自身的竞争力。

FCI [First Components International]公司的发展小趣事

Blue Creation公司深知人才是企业发展的核心。因此,公司高度重视人才队伍建设,通过校园招聘、社会招聘等多种渠道吸引优秀人才加入。同时,公司还建立了完善的培训体系,为员工提供持续的学习和发展机会。这些举措使得Blue Creation拥有一支高素质、专业化的人才队伍,为公司的快速发展提供了有力保障。

Analogix Semiconductor公司的发展小趣事

在市场竞争日益激烈的背景下,Blue Creation公司意识到单打独斗难以立足。于是,公司积极寻求与其他企业建立合作关系。通过与一家知名芯片制造商的深度合作,Blue Creation成功将其电源管理技术集成到对方的芯片产品中,双方共同开拓市场,实现了互利共赢。这一举措不仅提升了Blue Creation的知名度,也为其带来了稳定的收入来源。

问答坊 | AI 解惑

mcc6402是PIC的MCU吗?

请问各位大侠mcc6402是PIC的MCU吗?是那个型号?谢谢…

查看全部问答>

精密半波整流电路

请问附近中的这个半波精密整流电路,当输入正弦波时输出可以实现半波整流,但是输出幅度为什么没有变为输入的2倍啊, 当正弦波的正半周到来时,此时电路不是同向比例放大电路吗,请高手指点一下,为什么啊…

查看全部问答>

【求教】基于ARM和DSP双核的程序结构问题

我有一个图片压缩算法,想要移植到DSP+ARM(674x核+cortex a8)的平台上。ARM主要用来控制,DSP用来做 图片压缩处理。ARM上跑的是linux系统,DSP上是SYS/BIOS,开发环境是CCS。按我的想法,程序结构是: (1)DSP和ARM的程序是在同一个main函数里 ...…

查看全部问答>

手写绘图板

本帖最后由 paulhyde 于 2014-9-15 03:11 编辑 平面铜板电阻  …

查看全部问答>

交流电压、电流信号采样原理图

交流电压、电流信号采样原理图…

查看全部问答>

按键扫描程序分享【装载】

新型的按键扫描程序 不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的 ...…

查看全部问答>

用F091RC开发板测光强

拿到ST Nucelo F091RC开发板有几天了,一直没有时间,今天先发个特别的东西给大家参考。利用普通LED实现LED显示和测光强。这个程序在其它Nucleo开发板上也可以运行。 程序很简单,如下所示,直接在mbed中创建一个项目,然后就可以改变光强(比如用 ...…

查看全部问答>

【LPC54100】双核的引导

本帖最后由 freebsder 于 2015-3-8 02:32 编辑 freebsder发于www.eeworld.com.cn,如需转载或转发请保留此行声明。 板子还没有拿到,以下文字是基于人肉计算机虚拟跑出来的,所以很可能会在板子拿到之后进行修正。 本来只想看看lpc54xxx的低功 ...…

查看全部问答>