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

📄 打铃系统.txt

📁 基于留名诺瑞的ARM的打铃系统的设计
💻 TXT
📖 第 1 页 / 共 3 页
字号:
        case  13:
    
      	 LCD_WriteStr(1,1,"修改时间");
                    LCD_WriteStr(2,2,"请注意!!!");
      	 while(ZLG7290_GetKey()!=8)
      	 {    
               ZLG7290_SendCmd(Glitter_COM, 0x03);
               
                while(ZLG7290_GetKey()==0);
             if(ZLG7290_GetKey()==13)
            {
            delay(100);
            time1.date=time1.date+1;
            if(time1.date>31)
             time1.date=0;
        
            
             }
           
              ZLG7290_Download(0,0,0,time1.date%10);
           ZLG7290_Download(0,0,1,time1.date/10);
        }
      
       
              ZLG7290_SendCmd(Glitter_COM, 0x00);
         LCD_WriteStr(1,1,"修改完毕");
                    LCD_WriteStr(2,2,"确认修改时间");
                   delay(1000);
                           LCD_WriteStr(1,1,"大家好!");
                    LCD_WriteStr(2,2,"时钟运行中!");
           
               break;
               
               
          case  12:
    
      	 LCD_WriteStr(1,1,"修改时间");
                    LCD_WriteStr(2,2,"请注意!!!");
      	 while(ZLG7290_GetKey()!=8)
      	 {    
               ZLG7290_SendCmd(Glitter_COM, 0x0C);
               
                while(ZLG7290_GetKey()==0);
             if(ZLG7290_GetKey()==12)
            {
            delay(100);
            time1.month=time1.month+1;
            if(time1.month>12)
             time1.month=0;
            
             }
             ZLG7290_Download(0,0,2,time1.month%10);
           ZLG7290_Download(0,0,3,time1.month/10);
        }
     
        ZLG7290_Download(0,0,2,0x1f);
              ZLG7290_SendCmd(Glitter_COM, 0x00);
                LCD_WriteStr(1,1,"修改完毕");
                    LCD_WriteStr(2,2,"确认修改时间");
                     delay(1000);
                             LCD_WriteStr(1,1,"大家好!");
                    LCD_WriteStr(2,2,"时钟运行中!");
                
               break;
       case  11:
     LCD_WriteStr(1,1,"修改时间");
                    LCD_WriteStr(2,2,"请注意!!!");
      	
      	 while(ZLG7290_GetKey()!=8)
      	 {    
               ZLG7290_SendCmd(Glitter_COM, 0xF0);
               
                while(ZLG7290_GetKey()==0);
             if(ZLG7290_GetKey()==11)
            {
            delay(1000);
            time1.year=time1.year+1;
    
		
             }
             ZLG7290_Download(0,0,4,(time1.year%100)%10);
             ZLG7290_Download(0,0,5,(time1.year%100)/10);
             ZLG7290_Download(0,0,6,(time1.year%1000)/10);
             ZLG7290_Download(0,0,7,time1.year/1000);
             
             
             }
            
            ZLG7290_Download(0,0,5,0x1f);
            ZLG7290_SendCmd(Glitter_COM, 0x00);
              LCD_WriteStr(1,1,"修改完毕");
                    LCD_WriteStr(2,2,"确认修改时间");
                     delay(1000);
                         LCD_WriteStr(1,1,"大家好!");
                    LCD_WriteStr(2,2,"时钟运行中!");
                   
                     
               break;
               
        case  10:
                    LCD_WriteStr(1,1,"修改时间");
                    LCD_WriteStr(2,2,"请注意!!!");
      	
      	 while(ZLG7290_GetKey()!=8)
      	 {    
               ZLG7290_SendCmd(Glitter_COM, 0xF0);
               
                while(ZLG7290_GetKey()==0);
             if(ZLG7290_GetKey()==10)
            {
              delay(100);
              time1.year=time1.year-1;
     
		
             }
             ZLG7290_Download(0,0,4,(time1.year%100)%10);
             ZLG7290_Download(0,0,5,(time1.year%100)/10);
             ZLG7290_Download(0,0,6,(time1.year%1000)/10);
             ZLG7290_Download(0,0,7,time1.year/1000);
             
             
             }
            
            ZLG7290_Download(0,0,5,0x1f);
       
              ZLG7290_SendCmd(Glitter_COM, 0x00);
                    LCD_WriteStr(1,1,"修改完毕");
                    LCD_WriteStr(2,2,"确认修改时间");
                     delay(1000);
                       LCD_WriteStr(1,1,"大家好!");
                    LCD_WriteStr(2,2,"时钟运行中!");
                   
               break;
               
               
        case  9:
    
      	
      	 while(ZLG7290_GetKey()!=8)
      	 {    
               ZLG7290_SendCmd(Glitter_COM, 0xF0);
               
                while(ZLG7290_GetKey()==0);
             if(ZLG7290_GetKey()==9)
            {
                     time1.year=time1.year-1;
                     year3=time1.year/1000;
                     year2=(time1.year%1000)/100;
		     year1=(time1.year%100)/10;
		     year0=(time1.year%100)%10;
		
             }
             ZLG7290_Download(0,0,4,year0);
             ZLG7290_Download(0,0,5,year1);
             ZLG7290_Download(0,0,6,year2);
             ZLG7290_Download(0,0,7,year3);
        }
       
              ZLG7290_Download(0,0,5,0x1f);
              ZLG7290_SendCmd(Glitter_COM, 0x00);
               break;

  default: 
               break;
       
  }
 }

 void Timer0A_ISR(void)
{
	TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);    	                // 清除定时器0中断
	//GPIOPinWrite(GPIO_PORTD_BASE, LED1,GPIOPinRead(GPIO_PORTD_BASE, LED1) ^ LED1);
	//TimerLoadSet(TIMER1_BASE, TIMER_A, 1);
	TimerEnable(TIMER0_BASE, TIMER_A);	
	time1.second++;
        if(time1.second>59)
        {
          time1.minute++;
          time1.second=0;
        }
        if(time1.minute>59)
        {
          time1.minute=0;
          time1.hour++;
        }
        if(time1.hour>23)
        {
          time1.hour=0;
          time1.date++;
        }
	if( time1.month==2&&(time1.year%4)==0&&time1.date>28)
        {
             time1.date=0;
             time1.month++;
        }
        if( time1.month==2&&(time1.year%4)!=0&&time1.date>29)
        {
           time1.date=0;
           time1.month++;
        }
        if((time1.month==1|time1.month==3|time1.month==5|time1.month==7|time1.month==8|time1.month==10|time1.month==12)&&time1.date>31)
        {
           time1.date=0;
           time1.month++;
        }
        if((time1.month==4|time1.month==6|time1.month==9|time1.month==11)&&time1.date>30)
        {
            time1.date=0;
            time1.month++;
        }
        if(time1.month>12)
        {
            time1.year++;
        }
         SSIDataPut(SSI_BASE, time1.second%10);
         delay(20);	      // 输出后延时一段时间
   
}
void judg(unsigned int jjj)
 { 
   
 	
 	if((jjj<tim[0].value)||(jjj>tim[num].value))
   {    p=tim;
     ALHOUR=(tim[0].value)/100;
 	  ALMIN=(tim[0].value)%100; 
 	  ALSEC=0;
   	
   }
if((jjj>(tim[0].value))&&(jjj<(tim[num].value)))
 {    p=tim;
 	for(p;p<(&tim[200]);p++)
 	{    
 	if(((p->value)<jjj)&&(jjj<((p+1)->value)))
 	{
 	p=p+1;
 	ALHOUR=(p->value)/100;
 	ALMIN=(p->value)%100;
 	ALSEC=0; 
 	
 	break;
 	}
 	}
 	
 }
 	
 }
void  IRQ_RTC(void)
{ 
if((time1.hour==ALHOUR)&&(time1.minute==ALMIN)&&(time1.second==ALSEC))
  { GPIODirModeSet(GPIO_PORTA_BASE, beepcon, GPIO_DIR_MODE_OUT); 
    GPIOPinWrite(GPIO_PORTA_BASE,beepcon, 0); 
   /* if(time1.minute%20==0)
    {
    LCD_WriteStr(1,1,"打铃啦!");
    LCD_WriteStr(2,2,"下课!!!!");
     delay(1000);
       LCD_WriteStr(1,1,"大家好!");
                    LCD_WriteStr(2,2,"时钟运行中!");
    }
        else
        {   
         LCD_WriteStr(1,1,"打铃啦!");
         LCD_WriteStr(2,1,"请注意:上课!");
         delay(1000);
           LCD_WriteStr(1,1,"大家好!");
                    LCD_WriteStr(2,2,"时钟运行中!");
                 
        }*/
    p++;
   if((p>&tim[199])||(p->value==0))
        {
          p=tim;
        }
         ALSEC =0;
  	 ALMIN = (p->value)%100;
  	 ALHOUR = (p->value)/100;

   }
  
} 
void ADCInit(void)  //assumed that LM3S811 rev C was used
{
   SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC);   // 使能ADC时钟

   // 配置ADC的采样速率为500kps   
   SysCtlADCSpeedSet(SYSCTL_ADCSPEED_500KSPS );  

   ADCSequenceDisable(ADC_BASE, 0);	          // 禁止采样序列发生器

   // 配置采样序列的触发源和优先级
   ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 1);

   // 配置采样序列发生器的步进
   ADCSequenceStepConfigure(ADC_BASE, 0, 0, ADC_CTL_TS);
   ADCSequenceStepConfigure(ADC_BASE, 0, 1, ADC_CTL_TS | ADC_CTL_END);
   
   ADCSequenceEnable(ADC_BASE, 0);	         //使能采样序列中断
}
 int main(void)
{       unsigned char key;
       
        SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_6MHZ);                                   // 设置晶振为时钟源。
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);  
        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
        SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 );                     // 使能定时器0外设
        IntRegister(INT_TIMER0A,Timer0A_ISR);
        IntMasterEnable();
        SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI); 
        SSIConfig(SSI_BASE, SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, BitRate, DataWidth);
        SSIEnable(SSI_BASE);
        GPIODirModeSet(GPIO_PORTA_BASE, (GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 |
                 GPIO_PIN_5), GPIO_DIR_MODE_HW);
          // 配置相关引脚,以进行I2C操作,初始化LED指示灯。
        GPIODirModeSet(GPIO_PORTD_BASE, SDA | SCL | CS , GPIO_DIR_MODE_OUT);
        TimerConfigure(TIMER0_BASE,TIMER_CFG_32_BIT_PER);                  // 设置定时器0为单次触发模式
        TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet());             // 设置定时器装载值:定时1/2秒
        TimerIntEnable(TIMER0_BASE,TIMER_TIMA_TIMEOUT);                    // 设置定时器为溢出中断
        TimerEnable(TIMER0_BASE, TIMER_A);                                  // 使能定时器0
        IntEnable(INT_TIMER0A);                                             // 使能定时器0外设
        GPIODirModeSet(GPIO_PORTD_BASE,LED1,GPIO_DIR_MODE_OUT);
        IntPrioritySet(INT_TIMER1A,0x00);
        IntPrioritySet(INT_I2C,0x10);
        I2CInit(100000, 1); // 初始化I2C驱动
        ADCInit();
	time1.year = 2007;
	time1.month = 4;
	time1.date = 13;
	time1.hour=8;
	time1.minute=19;
	time1.second=58;
        p=tim;
        ALSEC =0;
  	ALMIN = (p->value)%100;
  	ALHOUR = (p->value)/100; 
        GPIOPinWrite(GPIO_PORTA_BASE,beepcon, beepcon); 
           //开始送数据
        lcdInit();
        delayss(5);
        LCD_WriteStr(1,1,"大家好!");
        delay(2);
  	while(1)
  	{         
		 ZLG7290_Download(0,0,0,(time1.second%10));
                 ZLG7290_Download(0,0,1,(time1.second/10)); 
                 ZLG7290_Download(0,0,3,(time1.minute%10));
                 ZLG7290_Download(0,0,4,(time1.minute/10));
                 ZLG7290_Download(0,0,6,(time1.hour%10));
                 ZLG7290_Download(0,0,7,(time1.hour/10));
                 ZLG7290_SegOnOff(22,1);
                 ZLG7290_SegOnOff(46,1);
                 key=ZLG7290_GetKey();
                 keyvalue(key);
                 IRQ_RTC();
	         if(time1.second==2)
                 {
                 GPIODirModeSet(GPIO_PORTA_BASE, beepcon, GPIO_DIR_MODE_OUT);
                 GPIOPinWrite(GPIO_PORTA_BASE,beepcon, beepcon); 
                 GPIODirModeSet(GPIO_PORTA_BASE, (GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 |
                 GPIO_PIN_5), GPIO_DIR_MODE_HW);
                 }
        
  	}
}

⌨️ 快捷键说明

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