⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm_sound.c

📁 用pic单片机做的一个温度计 实现实时时钟显示和存储
💻 C
字号:
#include<p18f452.h>	/* PIC18系列的头文件 */


void sounddelay0(int mf   )
{
  int i=mf;
  int j;               //定义循环变量
 for(j=i;j>0;j--);                 //根据频率决定延时时间
} 

void pwm_initial(void)
{
	TRISC=TRISC&0xfb;	/* 设置CCP1(RC2),CCP2(RC1)引脚为输出方式 */		
	PR2=0XFF;			/* 设置PWM工作周期=((PR2)+1)*4*Tosc*(TMR2前分频值)*/		
	CCPR1L=0X00;		
	CCP1CON=0X3C;		/* CCP1模块为PWM工作方式,高电平值低2位为00*/

	T2CON=0X06;			/* 打开TMR2,且使其前后分频为1,同时开始输出PWM波形 */
	PIE1&=0xFB;			/* CCP1中断禁止 */
}


void pwm_set(float x)				
{
   CCPR1L=x/50*256;
}

void sound(void )
{
   int j;
   TRISBbits.TRISB4=0;  
    for(j=100;j>0;j--)    
       {
                PORTBbits.RB4=1;                       //输出声音
                sounddelay0(0x55);      //延长一段时间
                PORTBbits.RB4=0;                       //关闭声音
                sounddelay0(0x55);           //延长一段时间
        }
    for(j=10000;j>0;j--) ;
    for(j=10000;j>0;j--) ;
    for(j=10000;j>0;j--) ;
    for(j=10000;j>0;j--) ;
    for(j=10000;j>0;j--) ;

  for(j=100;j>0;j--)           //每个声音循环4次
     {

                PORTBbits.RB4=1;                       //输出声音
                sounddelay0(0x120);      //延长一段时间
                PORTBbits.RB4=0;                       //关闭声音
                sounddelay0(0x120);           //延长一段时间

     }

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

  for(j=100;j>0;j--)           //每个声音循环4次
     {

                PORTBbits.RB4=1;                       //输出声音
                sounddelay0(0x55);      //延长一段时间
                PORTBbits.RB4=0;                       //关闭声音
                sounddelay0(0x55);           //延长一段时间

     }
    for(j=10000;j>0;j--) ;
    for(j=10000;j>0;j--) ;
    for(j=10000;j>0;j--) ;
    for(j=10000;j>0;j--) ;
    for(j=10000;j>0;j--) ;

  for(j=100;j>0;j--)           //每个声音循环4次
     {

                PORTBbits.RB4=1;                       //输出声音
                sounddelay0(0x120);      //延长一段时间
                PORTBbits.RB4=0;                       //关闭声音
                sounddelay0(0x120);           //延长一段时间

     }   
 TRISBbits.TRISB4=1;  


}


void uplight(void)
{
  

  PORTAbits.RA2=~PORTAbits.RA2;
  PORTAbits.RA3=~PORTAbits.RA3;
  if(PORTAbits.RA2==PORTAbits.RA3) PORTAbits.RA2=~PORTAbits.RA2;
  TRISAbits.TRISA2=0;
  TRISAbits.TRISA3=0; 
  

}
void dowmlight(void)
{
 

  PORTAbits.RA5=~PORTAbits.RA5;
  
  PORTAbits.RA1=~PORTAbits.RA1;
  if(PORTAbits.RA1==PORTAbits.RA5) PORTAbits.RA1=~PORTAbits.RA1;
  TRISAbits.TRISA5=0; 
  TRISAbits.TRISA1=0;
}
























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -