如何用C语言编写一个LED灯渐变的程序

如何用C语言编写一个LED灯渐变的程序,第1张

#include<reg51h>

//设CPU是时钟12MHz的8051系列

data unsigned char ms;

sbit K1=P0^0;

void SetupTimer0()

{

    TMOD &= 0XF0; //仅保留T1信息

    TMOD |= 0X02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器

    TH0 = 256-250;//定时每025ms中断一次

    TL0 = 256-250;

    TR0 = 1;      //开启定时器

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

}

void Timer0_ISR() interrupt 1 //中断服务程序

{

    static data unsigned char us250;

    if (++us250>=4) {++ms; us250=0;}

}

void main()

{

    data unsigned char p1,p2;

    ms=0;

    SetupTimer0();

    EA = 1;               //全局中断打开

    K1 = 1;

    while(1)

    {

        if (K1) {P1=p1=0XFF; P2=p2=0x00; ms=0; continue;}

        if (ms<150) continue;

        ms=0;

        p1<<=1;        P1=p1;

        p2<<=1; p2|=1; P2=p2;

    }

}

//! 没有硬件方案,以下只包含逻辑

int push_count = 0;//记录按钮按下次数

//! 处理亮灯

void light(int led_num)

{

    switch(led_num)

    {

    case 1: 

        {

            ;// 点亮 灯1            

        } break;

    case 2: 

        {

            ;// 点亮 灯1            

        } break;

    default:

        ; //灭 所有 灯

        break;

    }

}

//! 处理按键中断

void push_interrupt()

{

    //判断按键是否有效

   push_count ++;

   if(1 == push_count)    

   {

       light(1);

   }

   else if(2 == push_count)

   {

       light(2);

   }

   else if(8 == push_count)

   {

       light(0);

       push_count = 0;

   }    

}

// 请依照你的硬件输入相对值

#define KEY_ACTIVE_LEVEL (请输入)

#define KEY1_PIN (请输入)

#define KEY2_PIN (请输入)

#define LED_ON_LEVEL (请输入)

#define LED_LOW_LEVEL (请输入)

#define LED_PIN (请输入)

unsigned char is_key1_press(void)

{

    reutrn (KEY1_PIN == KEY_ACTIVE_LEVEL)l

}

unsigned char is_key2_press(void)

{

    reutrn (KEY2_PIN == KEY_ACTIVE_LEVEL)l

}

void set_led_to(unsigned char value)

{

    LED_PIN = value;

}

void main(void)

{

    while(1)

    {

        if( is_key1_press() && is_key2_press())

        {

            set_led_to(LED_ON_LEVEL );

        }

        else

        {

            set_led_to(LED_OFF_LEVEL );

        }

    }

}

# include<reg52h>

sbit led1=P1^0;

int main(void)

{

led1 = 0;

return 0;

}

大概是这样吧

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。[2]

当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机 *** 作系统中都能够得到适用,且效率显著。[3]

冯诺依曼在1945年提出了现代计算机的若干思想,被后人称为冯诺依曼思想,这是计算机发展史上的里程碑。自1945 年至今大多采用其结构,因此冯诺依曼被称为计算机之父。他的体系结构计算机由运算器、控制器、存储器、输入设备、输出设备五大部件构成。 C语言拥有一套完整的理论体系经过了漫长的发展历史,在编程语言中具有举足轻重的地位。[4]

发展历史

C语言诞生于美国的贝尔实验室,由DMRitchie以B语言为基础发展而来,在它的主体设计完成后,Thompson和Ritchie用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI c”,截至2020年,最新的C语言标准为2017年发布的 “C17”。[5]

C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。

如果是PC机需要配置一块MOXA的TTL板卡来实现高低电瓶输出:

1、先设定LED灯是低电平亮还是高电瓶亮,这里假设低电平;

2、设置一个定时器,在定时器里面写代码,分别发送高、低电瓶值可实现交替闪耀;

例程:

#include <reg51h>

sbit led1 = P0^0;

sbit led2 = P0^1;

 

void delayms(unsigned int nMS)

{

    unsigned char i,j;

    while (nMS--)

    {

        for (i = 12; i>0; i--)

        {

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

        }

    }

}

 

void main()

{

    while(1)

    {

        led1 = 0;

        led2 = 1;//一亮一灭

        delayms(100);

        led1 = 1;

        led2 = 0;//交换亮灭

        delayms(100);

    }

}

以上就是关于如何用C语言编写一个LED灯渐变的程序全部的内容,包括:如何用C语言编写一个LED灯渐变的程序、C语言控制LED灯、用2个按键控制1个led,当2个按键都按下时led才亮,请用c语言程序,按键肖斗,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9674248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存