PIC单片机按键控制PWM输出LED灯亮度C语言程序

发布者:qin199099最新更新时间:2019-10-29 来源: 51hei关键字:PIC单片机  按键控制  PWM输出  LED灯亮度 手机看文章 扫描二维码
随时随地手机看文章

#include     //调用头文件,可以去PICC软件下去查找PIC16F87XA单片机的头文件

__CONFIG(0x3b31);  //定义配置字,晶振类型:XT,启动开门狗,禁止低电压编程

//************************************************************************

#define HC138_A RE2 //定义U6、U7、U8的A为RE2端口

#define HC138_B RE1 //定义U6、U7、U8的B为RE1端口

#define HC138_C RE0 //定义U6、U7、U8的C为RE0端口

//************************************************************************

#define U6_E RA2    //定义U6_E为RA2端口,U6E=1时,U6使能否则失能

#define U7_E RA3    //定义U7_E为RA3端口,U7E=1时,U7使能否则失能

#define U8_E RA1    //定义U8_E为RA1端口,U8E=1时,U8使能否则失能

#define LED PORTB   //定义RB 8 point为LED端口

//*********************************************************************

#define uchar unsigned char 

#define uint unsigned int

void init(void);    //系统初始化

void delay (uint x);

void didi(uchar z);

//***********************************************************************

void main(void)

{   

    init();         //调用系统初始化函数         

    asm("CLRWDT");      //看门狗喂狗指令

    LED=0x00; 

    while(1)

    {

        if(RC0==0)

        {

            delay (10);

            if(RC0==0)

            {

                didi(1);

                while(!RC0)

                {

                    LED=0x0f;

                }

            }

        }

        if(RC1==0)

        {

            delay (10);         

            if(RC1==0)

            {

                didi(1);

                while(!RC1)

                {

                    LED=0xff;

                }   

            }

        }

    }

}

//***************************************************************************

void init(void)//系统初始化

{

    ADCON1=0X06;    //所有IO均为数字口,模拟量输入禁止

    OPTION=0x80;    //关闭RB口电平变化功能

    TRISA=0xd1;     //RA1,RA2,RA3,RA5置为输出,其他未用设置为输入

    TRISB=0x00;     //RB4-RB7置为输出,其他RB0-RB3设置为输入

    TRISC=0xff;     //未用设置为输入

    TRISD=0xf3;     //未用设置为输入

    TRISE=0x00;     //RE0,RE1,RE2置为输出

    LED=0x00;        //RB口全部置低电平

    RD2=0;          //关闭蜂鸣器

    RD3=0;          //关闭继电器

    RA1=0;          //关掉数码管、发光二极管

    RA2=0;          //关掉LED点阵屏左8列

    RA3=0;          //关掉LED点阵屏右8列

    RBIE=1;         //RB口电平变化中断open

    HC138_A=0;      //使74HC138的Y0端为0,其他高阻

    HC138_B=0;      //使74HC138的Y0端为0,其他高阻

    HC138_C=0;      //使74HC138的Y0端为0,其他高阻

    U6_E=0;         //U6关闭

    U7_E=0;         //U7关闭

    U8_E=1;         //U8打开      

    asm("CLRWDT");  

}


//*********************************************************************************************

void didi(uchar z)

{

    uchar a;

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

    {

        RD2=1;

        delay(800);

        RD2=0;

        delay(500);

    }

}

//**********************************************************************************************

void delay (uint x)

{

    uint a,b;

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

    {

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

    }

}

//********************************************************


关键字:PIC单片机  按键控制  PWM输出  LED灯亮度 引用地址:PIC单片机按键控制PWM输出LED灯亮度C语言程序

上一篇:警报声原理图+pic单片机源程序
下一篇:PIC16F877单片机DS18B20数码管温度计仿真程序 可显示负温度

推荐阅读最新更新时间:2024-11-19 19:51

PIC单片机C语言程序设计(9)
3.pic07.C源程序的编译   在《PIC 单片机 C 语言程序(8)》一文中,我们已在MPLAB IDE7.40 集成开发环境中编辑了pic07.C 源程序(0~99 秒脉冲 发生器 )。对于PIC 单片机来说,所有的C 语言源程序,都要在进行编译并生成目标码。hex 文件后,方能烧写到PIC 单片机中运行,即每编辑一个C 程序都要进行一次编译,所以对C 程序(pic0.7c)的编译操作是十分重要的。下面详细介绍用PICC 编译器对pic07.C 源程序进行编译并生成目标码。hex文件的全过程。    (1)编辑源程序   根据《PIC 单片机C 语言程序(8)》一文介绍的方法,在MPLAB IDE7.40
[单片机]
<font color='red'>PIC单片机</font>C语言程序设计(9)
PIC单片机的中断讨论
******************** 中断服务代码 btfss INTCON,T0IE ; 判断是否为 T0中断 goto other_int btfss INTCON,T0IF ; it s the time of T0 int goto other_int bcf INTCON,T0IF ; 是T0中断,清除中断标 志 movlw 0x10 ; 微秒的高位字节加上定时时间 256x16分频=4096=0x1000的高位 (0x10) addwf us+1 goto end_int other_int ; 可 添加其他
[单片机]
PIC单片机的学习】在MAPLAB X IDE中加入printf函数
当调试单片机时,通过串口打印变量的值来调试代码是一种很好的调试方式,本文将讲述如何在PIC单片机使用printf函数。使用的开发环境是MAPLAB X IDE V5.20,单片机的型号为PIC24F32JGA002。 首先要调用stdio.h头文件,然后写入以下两个函数 void putch(unsigned char byte) { while(!TXIF) continue; TXREG = byte; } 目的是为了将串口跟 printf() 联系起来即重定向printf
[单片机]
Microchip推出用于单相多功能智能计量和电能监测应用的PIC单片机
Microchip Technology Inc.(美国微芯科技公司)宣布,推出用于单相多功能智能计量和电能监测应用的8位PIC18F87J72单片机(MCU)系列。这一全新MCU系列配备了双通道的高性能16位/24位模拟前端(AFE),为表具开发提供了精确、可靠、易用和兼具成本效益的解决方案,其性能超过了国际电工委员会(IEC)的0.5级。该系列具有64或128 KB的闪存程序存储器和4 KB RAM,以实现分时电价和复费率功能;高度集成了多种外设,包括LCD驱动器、硬件实时时钟/日历(RTCC)和采用电容式触摸用户界面的充电时间测量单元(CTMU)。还提供电能计算固件、一块开发板和参考设计,形成了一个完整的解决方案,从而
[单片机]
Microchip推出用于单相多功能智能计量和电能监测应用的<font color='red'>PIC单片机</font>
基于PIC单片机的热能表研制
摘要:随着我国福利制度的改革和热能计量的规范化,对热能的准确计量成为一个比较关键的环节。文中介绍了热能表的组成和工作原理,给出了一种基于PIC16C64单片机的热能表设计方案,同时对设计和使用中的一些问题进行了讨论并提出了解决办法。 关键词:热能表 单片机 温度传感器 PIC16C64 随着我国福利制度的改革,供暖制度也发生了相应的变化。原来的供暖收费存在着对使用的热能估算不准确、收费不合理等问题。为此,国家建设部在一些城市实施供暖制度改革试点,并对热能实行计量收费,这就要求对使用的热能进行准确的计量。本文给出了一种基于PIC16C64单片机的、针对热水供暖的热能表设计方案。 1 热能表的组成原理 一般热能表的原理框图如图
[单片机]
基于PIC单片机的CAN总线扩展技术
  引 言   CAN总线是一种串行多主站局域网总线,被广泛应用于汽车控制系统、自动控制、楼宇自动化、医学设备等各个领域。其传输距离远,最远可达10 km,传输速率高,最高可达1 Mb/s,容错性能好,可靠性能高。但是由于CAN驱动器的驱动能力有限,CAN总线能够驱动的节点数有限,一般在100个左右,同时会随着传输距离的增加,最高传输速率会下降,如果距离过长会引起信号丢失、反射等故障。在实验室条件下测得在5 Kb/s的通信速率下最远通信距离能达到10 km;在18 Kb/s的通信速率下最远通信距离只能达到2 km;而在42 b/s的通信速率下,最远通信距离只能达到1 km。测试条件:线缆采用线径为0.75 mm2的屏蔽双绞线,线缆为
[嵌入式]
STM32 自定义频率与占空比PWM输出的方法
图一 图二 PWM应用非常广泛,但是不同的项目对输出的PWM又有特殊要求,为满足这些要求我们需要更多的实验来验证。接下来讲述图一显示波形的输出方法步骤(图二为异常波形)。 一、本实例所使用资源: 1、TIM4_CH3(对应管脚PB8)用于输出PWM波形 2、TIM3用于产生中断 3、MDK 软件仿真方法 二、执行过程: 1、初始化配置TIM4_CH3对应管脚的PWM输出功能(频率与占空比可变)。 2、初始化配置使用TIM3定时器中断功能,中断时间的配置需要根据PWM输出波形配置(定时器中断时间可变)。 3、在main()函数中调用TIM4与TIM3的初始化函数。 三、具体代码: int main(void) //主函数
[单片机]
STM32L475使用PWM输出波形
本文描述了如何在搭载了 RT-Thread 操作系统的平台上使用 PWM 输出波形,包括 PWM 的应用、配置和驱动的添加等。并给出了在正点原子 STM32L475 pandora 开发板上验证的代码示例。 硬件平台简介 本文基于正点原子 STM32L475 pandora 开发板,给出了 PWM 的具体应用示例代码,由于 RT-Thread 上层应用 API 的通用性,因此这些代码不局限于具体的硬件平台,用户可以轻松将它移植到其它平台上。 STM32L475 pandora 是正点原子推出的一款基于 ARM Cortex-M4 内核的开发板,最高主频为 80Mhz,该开发板具有丰富的板载资源,可以充分发挥 STM32L475
[单片机]
STM32L475使用<font color='red'>PWM</font><font color='red'>输出</font>波形
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved