历史上的今天
返回首页

历史上的今天

今天是:2024年10月25日(星期五)

正在发生

2019年10月25日 | 带感应的小夜灯的PIC单片机源码(可手动控制or自动控制)

2019-10-25 来源:51hei

#include

#define u16 unsigned int

#define u8 unsigned char

u8 second,fen=0,miao=0,key=0,mode;

u16 adval;  //3v/5v*1024=614

u16 x1=512;

bit loop1,yy1;

int pwm;

__CONFIG(0xfd94);   //fdd5 RA4可以输出主频率的4分频

//const u8 table[]={160,130,101,90,80};

const u8 tab[]={150,100,60,30};


void init()

{//OSCTUNE=0x0f;      //修改主频率

  ADCON0=0x9d;

  ADCON1=0x20; 


  INTCON=0xd0;   //开启总中断 外部中断 外设中断 

  INTEDG=1;  // 设置触发中断的条件为电平从低到高触发

   PIE1=0x41;             //允许Time1中断

        TMR1L=(65536-1000)%256;

        TMR1H=(65536-1000)/256;

        T1CON=0x01;            //使能Time1

  

  PR2=160;               //周期计数

  CCP1CON=0x3c;     //0011 1100单输出 P1A被调制    1011 1100半桥输出 P1A P1B被调制 

  CCPR1L=40;       //脉冲宽度计数 

  

}


void delay500us(u16 x)

{

  u16 a,b;

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

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

}


void delayms(u16 x)

{

  u16 a,b;

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

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

}


void beep()

{  

   u8 i;


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

   {

     delay500us(8);

     

     RA1=!RA1;

   }

    RA1=0;

}


void ledstate()

{ u8 i;

  RC0=0;

  loop1=1;

   

  while(loop1)

  {

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

      {  beep();

        RC0=!RC0;

        delayms(1000); 

        }  

          loop1=0;

}


  }


void KEY_Scan(void)              //键值扫描

{        

          if((RC2==1) || (RC1=1) || (RA4==1) || (RA5==1))

          {

            delayms(50);//去抖动 

            if(RC2==1)        //A  led模式与开关

            {

              delayms(200);

          delayms(200);

          delayms(200);

          delayms(200);

          if(RC2==1) key=!key;   //0 on 1 off

          else mode=!mode;      //0 手动模式  1 自动模式

          while(RC2);                

            }

                  else if(RC1==1)   //B 音频开关

            {

              RC4=!RC4;

          while(RC1!=0);              

            }

                else if(RA4==1)   //C  亮度加

            {

                 if(mode==0)

                         {  

                   pwm++;

                  if(pwm>=3){pwm=3;beep();} 

                  while(RA4);

                         }                

            }

            else if(RA5==1)   //D 亮度减

            {

                  if(mode==0)

                         {

                    pwm--;

                  if(pwm<1){pwm=0;beep();} 

                  while(RA5);        

                         }       

            }

     }        

}


void pwm_out()

  T2CON=0x04;

  CCP1CON=0x3c;

  RC0=1;

  RA0=0;

  delayms(5); 

             

         CCPR1L=tab[pwm];

         delayms(4);        

}


void pwm_out1()

  T2CON=0x04;

  CCP1CON=0x3c;

  RC0=1;

  RA0=1;

  delayms(5); 

        if(yy1)

    {

      CCPR1L=tab[3];

             delayms(4);

    } 

    else

    {

      CCPR1L=tab[0];

             delayms(4);

    }   

                     

}


void stopstate()  //  pwm 停止输出

{

    T2CON=0x00;

          CCP1CON=0x00;

    RC0=0;

    RA0=0;

    RC5=1;

}


void interrupt time1(void)

{

          if(TMR1IE&&TMR1IF)          //定时器1用于产生秒信号  定时时间为25ms

                 {

                    TMR1IF=0;

                        TMR1L=(65536-50000)%256;

                        TMR1H=(65536-50000)/256;

                           second++;

                        if(second>=40)                  //40*25ms =1000ms

                        { second=0;

                 

                       if(miao++>=60)

                       {  miao=0; 

                           fen++;

                          if(fen>=60)

                           fen=0;

                        } 

                         }

                  }


      if(INTE&&INTF)         ////外部中断

           { 

             while(RA2==1)

             {

                  

               KEY_Scan();

           

             }

             INTF=0;

           }


     if(ADIE && ADIF)

  {

    ADIF=0; // A/D标志位清零

    adval=ADRESH;//00000000 00000011

        adval=adval<<8|ADRESL;//00000011 11111111 

    if(adval>x1) yy1=1;

       else yy1=0; 

    GODONE=1;

  }


}


void main()

{  

  TRISC=0x00;

  TRISC|=0x0e;

  TRISA=0x00;

  TRISA|=0x34;

  ANSEL=0x80; 

   RC0=0;  //电源指示

   RC4=0;  //继电器

   RC5=0;  //PWM

   RA0=0;  //手动自动指示

   RA1=0;  //警告音

         ledstate();

          init();

        GODONE=1; 

         delayms(100);  

          while(1)

          {  

             if(key==0)

          {

          switch(mode)

            {

              case 0:pwm_out();

                    break;

              case 1:pwm_out1();

                    break;

            }

          }  

         else stopstate();          

          }


}


推荐阅读

史海拾趣

Hitachi (Renesas )公司的发展小趣事

在电子行业中,Hitachi(日立)及其子公司如Renesas(瑞萨电子,原日立半导体部门独立后成立)的发展历史充满了技术创新、市场扩张与全球合作的精彩故事。以下是五个相关故事,每个故事均基于事实描述:

1. 从电机制造到半导体巨头的转型

日立公司成立于1910年,最初以生产电动机和矿山设备起家,旨在支持日本的工业化进程。随着技术的不断进步和市场需求的多样化,日立逐渐将业务扩展到电子领域。1960年代,日立开始涉足半导体技术,并在随后的几十年里,通过持续的研发投入和技术创新,逐步建立了在半导体行业的领先地位。1999年,日立半导体部门独立成为Renesas Technology Corporation(瑞萨科技),进一步专注于微控制器、模拟IC、电源管理IC等产品的研发与生产,为汽车电子、工业控制、消费电子等多个领域提供关键解决方案。

2. 全球化战略与市场拓展

进入21世纪,日立及Renesas积极实施全球化战略,通过在全球各地设立研发中心、生产基地和销售网络,加速其产品和技术的国际化进程。例如,Renesas在美国、欧洲和亚洲等地建立了多个研发中心,与当地企业和研究机构紧密合作,共同推动半导体技术的创新与发展。同时,通过并购和合作,Renesas不断扩展其产品线,提升在全球市场的竞争力。

3. 技术创新引领行业发展

日立及Renesas在半导体领域的技术创新是其持续发展的重要驱动力。多年来,公司投入大量资源进行研发,不断推出具有行业影响力的新产品和技术。例如,在汽车电子领域,Renesas的MCU(微控制器)和功率半导体产品广泛应用于发动机控制、车身控制、安全系统等关键系统,为汽车行业的智能化和电动化转型提供了重要支持。此外,Renesas还在物联网、工业4.0等新兴领域积极布局,推动相关技术的研发与应用。

4. 应对挑战与危机管理

在发展过程中,日立及Renesas也面临过诸多挑战和危机。例如,2011年日本东北太平洋地区地震和海啸对日立及Renesas的生产基地造成了严重影响。面对这一突如其来的灾难,公司迅速启动应急响应机制,调整生产计划,确保关键产品的供应不受影响。同时,公司还加强了供应链的多元化和风险管理,以应对未来可能发生的类似危机。

5. 可持续发展与社会责任

作为一家全球性的电子企业,日立及Renesas始终将可持续发展和社会责任视为企业发展的重要组成部分。公司致力于开发环保型产品和解决方案,推动绿色能源和节能减排技术的应用。同时,公司还积极参与社会公益活动,支持教育、环保和社区发展项目,展现了作为全球企业公民的责任感。例如,日立通过引入“光伏+储能”智慧能源体系,构建绿色生产基地,为实现“双碳”目标贡献力量。

以上五个故事展示了Hitachi(日立)及其子公司Renesas在电子行业中的发展历程和成就,体现了公司在技术创新、市场拓展、危机管理、可持续发展和社会责任等方面的努力和贡献。

C&D公司的发展小趣事

C&D公司深知品质是企业的生命线,因此始终坚守品质至上的原则。公司建立了严格的质量管理体系,从原材料采购到生产制造,再到产品出厂,每一个环节都严格把控,确保产品的品质达到最高标准。同时,C&D公司还注重品牌建设,通过广告宣传、社交媒体营销等方式,提升品牌知名度和美誉度。

EG & G Inc公司的发展小趣事

随着电子技术的不断发展,EG & G Inc公司不断进行技术创新和产品升级。公司投入大量资源进行研发,成功推出了一系列具有竞争力的电子产品。其中,某款高精度测量仪器在市场上获得了广泛认可,成为了公司的明星产品。此外,公司还积极开拓新的应用领域,将电子技术应用于医疗、环保等多个领域,为公司带来了新的增长点。

CINCH公司的发展小趣事

CINCH公司深知人才是企业发展的核心竞争力。因此,公司高度重视人才培养和团队建设。公司设立了完善的培训体系,为员工提供了广阔的晋升空间和发展机会。同时,公司还积极引进优秀人才,打造了一支高素质、专业化的团队。这支团队在公司的各项业务发展中发挥了重要作用,为公司的长远发展奠定了坚实基础。

Don Connex Electronics Co Ltd公司的发展小趣事

Don Connex Electronics Co Ltd成立于上世纪90年代初,当时电子行业正处于快速发展阶段。公司的创始人李明凭借其在半导体领域的深厚技术背景,带领团队研发出了一款高性能的电源管理芯片,这款芯片在业界引起了广泛关注。该芯片以其低功耗、高效率的特性,迅速在市场上打开了局面,为公司的初创阶段奠定了坚实的基础。

Deutron Electronics Corp公司的发展小趣事

Deutron Electronics Corp深知研发和创新对于公司发展的重要性。因此,公司始终保持着对研发的高投入,不断引进和培养人才。公司建立了完善的研发体系,鼓励员工参与创新活动,并为他们提供了充足的资源和支持。这些措施使得Deutron Electronics Corp在研发方面取得了显著成果,为公司的发展提供了源源不断的动力。

问答坊 | AI 解惑

我想去尚观培训嵌入式,寻人一起

本人打算毕业后去北京尚观培训,想寻两个人一起,可以打9折。有此意向的加qq群:57772872…

查看全部问答>

请教高手驱动自动安装问题

请教高手一个关于驱动自动安装的问题: 我的驱动程序以及inf文件利用系统的安装向导可以安装成功,但是现在我需要做一个驱动自动安装包,在插上我的usb设备的时候我的驱动可以安装成功,但是当我不插上设备的时候安装时,最后程序在调用UpdateDriv ...…

查看全部问答>

☼☼合作招募中:有基于数据采集器和无线网络系统集成经验的朋友,请进!☼☼

有基于RFID、条码和无线网络集成应用的成熟产品,比如仓储无线作业系统、MES采集系统,生产追溯系统等等,希望将产品推向市场的,请联系我,我们一起合作,最好是在深圳或者广东地区的朋友。QQ:151600588,请注明\"系统合作\"!Email:skyone_yao@163. ...…

查看全部问答>

hp笔机本备份问题

hp笔机本,windowxp 操作系统中,怎么用超级急救盘不能进行系统备份? 安装了超级急救盘 ,进入了超级急救盘 ,可总是进不了备份的界面? 那怎么备份hp笔机本操作系统呢? …

查看全部问答>

MSP-EXP430FR5739学习板编译器IAR支持吗?

我在IAR5.1里面option没有找到选项!求解答,谢谢…

查看全部问答>

新手求助!!!zigbee该怎么样入门呀?

毕业设计做基于zigbee的太阳能照明系统,但是现在完全不知道zigbee怎么入门    什么cc2430、协议、网络呀一头雾水    请教各位大大zigbee入门步骤(最好列一个顺序表如步骤一:……步骤二:……),本人只懂得单片机的C语言编 ...…

查看全部问答>

IAR环境,用C如何定义绝对地址?

项目很急,求教高手,IAR环境下,C语言怎么定义程序的起始地址,汇编是ORG指令,C该怎么写呢?…

查看全部问答>

fpga能配置出8个以上的端口吗?

fpga能配置出8个以上的串口(usart)吗? 有没有什么限制呢? 我对fpga不是很了解,所以希望大家帮帮忙。谢谢了。 [ 本帖最后由 j12211221 于 2012-11-15 14:29 编辑 ]…

查看全部问答>

MSP430F149内部资源(二)

五、定时器 定时器是MSP430应用系统中经常要用到的重要部分。 (一)、可以实现的功能有: 1、定时引起中断 2、延迟 3、提供串口比特率 4、信号产生 5、信号检测 (捕获模式下) 6、频率测量 7、脉宽测量 (二)、一般来说,MSP430所需要 ...…

查看全部问答>

launchpad + 1602a 动态显示

最近弄这个,发现网上的资料自己显示不出来,只好自己来了。 4位传输,p2.0 p2.1 接en rs 。 rw 接地。p1 高4位数据口。 动态显示。 [ 本帖最后由 sunnie 于 2013-2-8 13:29 编辑 ]…

查看全部问答>