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

📄 main.c

📁 STM8s
💻 C
字号:
/*
通过头文件 "lcd162a.h",实现lcd162的字符显示!
*/

#include "stm8s.h"
#include "stm8s_tim2.h"
#include "stm8s_clk.h"
#include "stm8s_uart2.h"
#include "stm8s_tim3.h"
#include "stm8s_gpio.h"
#include "stm8s_adc1.h"
#include "stm8s_tim1.h"
#include "stm8s_beep.h"

#include "lcd162a.h"

#define BUTTON_PORT (GPIOE|GPIOD|GPIOC|GPIOA)
#define BUTTON_PIN1 (GPIO_PIN_0)
#define BUTTON_PIN2 (GPIO_PIN_2)
#define BUTTON_PIN3 (GPIO_PIN_6)
#define BUTTON_PIN4 (GPIO_PIN_6)


void xwDelay(void)
{
	int i=20;
	int j=10000;
	while(i--)while(j--);
}

u32 nian=2012,time;
u8 yue=12,ri=12,shi=12,fen=12,miao,hour=12,min=13;
u8 i,j;
 
 @far @interrupt void Time2YiChu (void)
{
	 
		miao++;
	 if(miao==60)
	    {miao=0;
			fen++;
			}
		if(fen==60)
	    {fen=0;
			 shi++;
			}
		if(shi==24)
	    {shi=0;
			 ri++;
			}
		if(yue==0||yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)
		     {if(ri==32)
				   {ri=1;
					  yue++;
					 }
					if(yue==13)
				    {yue=1;
						nian++;
						}
				  }
			
		if(yue==4||yue==6||yue==9||yue==11)
			  {if(ri==31)
				   {ri=1;
					  yue++;
					 }
					if(yue==13)
				    {yue=1;
						nian++;
					  }
				}
		if(nian%4==0&&nian%100!=0||nian%400==0) 
	    {if(yue==2&&ri==30)
		      {
					    ri=1;
						  yue++;
						 
					}
			}
		else if(yue==2&&ri==29)
				  { 
					    ri=1;
						  yue++;
						 
				  }
		

			time=nian;//年
			lcd162a_DispOneChar(1,1,'2');
	    lcd162a_DispOneChar(1,2,'0');
			if(i==1)
			{
	    lcd162a_DispOneChar(1,3,32);
	    lcd162a_DispOneChar(1,4,32);
			delay_ms(200);
			lcd162a_DispOneChar(1,3,48+(u8)(((time%1000)%100)/10));
	    lcd162a_DispOneChar(1,4,48+(u8)(((time%1000)%100)%10));
			//delay_ms(500);
		  }
			else
		  {
			lcd162a_DispOneChar(1,3,48+(u8)(((time%1000)%100)/10));
	    lcd162a_DispOneChar(1,4,48+(u8)(((time%1000)%100)%10));
			}
			lcd162a_DispOneChar(1,5,45);   //"-"
	
			time =yue;//月
			if(i==2)
			{
			lcd162a_DispOneChar(1,6,32);
	    lcd162a_DispOneChar(1,7,32);
			delay_ms(200);
			lcd162a_DispOneChar(1,6,48+(u8)(time/10));
			lcd162a_DispOneChar(1,7,48+(u8)(time%10));
		  }
			else
		  {
			lcd162a_DispOneChar(1,6,48+(u8)(((time%1000)%100)/10));
	    lcd162a_DispOneChar(1,7,48+(u8)(((time%1000)%100)%10));
			}
			lcd162a_DispOneChar(1,8,45);   //"-"

      time =ri;//日
			if(i==3)
		{
			lcd162a_DispOneChar(1,9,32);
	    lcd162a_DispOneChar(1,10,32);
			delay_ms(200);
			lcd162a_DispOneChar(1,9,48+(u8)(time/10));
			lcd162a_DispOneChar(1,10,48+(u8)(time%10));
		}
		else
		{
			lcd162a_DispOneChar(1,9,48+(u8)(time/10));
		  lcd162a_DispOneChar(1,10,48+(u8)(time%10));
		}
  
      time =shi;	//时
			if(i==4)
		{
			lcd162a_DispOneChar(2,1,32);
	    lcd162a_DispOneChar(2,2,32);
			delay_ms(200);
			lcd162a_DispOneChar(2,1,48+(u8)(time/10));
			lcd162a_DispOneChar(2,2,48+(u8)(time%10));
			
		}
		else
	 {
	    lcd162a_DispOneChar(2,1,48+(u8)(time/10));
		  lcd162a_DispOneChar(2,2,48+(u8)(time%10));
		}
			lcd162a_DispOneChar(2,3,58);   //":"
		
  
	    time =fen;//分
			if(i==5)
		{
		 lcd162a_DispOneChar(2,4,32);
	    lcd162a_DispOneChar(2,5,32);
			delay_ms(200);
			lcd162a_DispOneChar(2,4,48+(u8)(time/10));
			lcd162a_DispOneChar(2,5,48+(u8)(time%10));
		}
		else
		{
	    lcd162a_DispOneChar(2,4,48+(u8)(time/10));
			lcd162a_DispOneChar(2,5,48+(u8)(time%10));
		}
			lcd162a_DispOneChar(2,6,58);   //":"
					
      time =miao;//秒
	    lcd162a_DispOneChar(2,7,48+(u8)(time/10));
		  lcd162a_DispOneChar(2,8,48+(u8)(time%10));
		  
			time=hour;			//时
			if(i==6)
		{
			lcd162a_DispOneChar(2,11,32);
	    lcd162a_DispOneChar(2,12,32);
			delay_ms(200);
			lcd162a_DispOneChar(2,11,48+(u8)(time/10));
			lcd162a_DispOneChar(2,12,48+(u8)(time%10));
			
		}
		else
		{
			lcd162a_DispOneChar(2,11,48+(u8)(time/10));
			lcd162a_DispOneChar(2,12,48+(u8)(time%10));
		}
			lcd162a_DispOneChar(2,13,58);  											 //":"
			
			time =min;//分
			if(i==7)
		{
			lcd162a_DispOneChar(2,14,32);
	    lcd162a_DispOneChar(2,15,32);
			delay_ms(200);
			lcd162a_DispOneChar(2,14,48+(u8)(time/10));
			lcd162a_DispOneChar(2,15,48+(u8)(time%10));
		}
		else
		{
			lcd162a_DispOneChar(2,14,48+(u8)(time/10));
			lcd162a_DispOneChar(2,15,48+(u8)(time%10));
		}
											  
    delay_ms(1000);
			if(hour==shi&&min==fen)
      {
				
	      BEEP_DeInit();                   //反初始化BEEP
	
	      BEEP_Init(BEEP_FREQUENCY_1KHZ);               //初始化BEEP
	
	      BEEP_LSICalibrationConfig(2000000);     //配置蜂鸣器振时钟
	      //开始响
	      BEEP_Cmd(ENABLE);
	      //反初始化时钟
	      CLK_DeInit();
	      //开启晶体振荡器
	      CLK_HSECmd(ENABLE);
		    CLK_HSICmd(ENABLE);
		    CLK_LSICmd(ENABLE);
				
		 }
		else
		    {
				 BEEP_Cmd(DISABLE);
					
				}
		
			
}
       @far @interrupt void GPIOE0(void)
	    { 
		     delay_ms(500);
			    i++;
					if(i==8)
				    {
							i=1;
						}
			   
		  }
		    @far @interrupt void GPIOD2(void)
	      { 
				  delay_ms(500);
					if((i>0)&&(i<8))
				     {
							 i=0;
						 }                                  //  确认
				 
						
				}
		
		@far @interrupt void GPIOC6(void)           //加
	       {
			    delay_ms(500);
					if(i==1)
				  {
		      nian++;
		      }
					if(i==2)
				  {
		      yue++;
					if(yue==13)
				     {
							 yue=1;
						 }
		      }
					if(i==3)
				  {
		      ri++;
					if(ri==32)
				     {
							 ri=0;
						 }
		      }
					if(i==4)
				  {
		      shi++;
					if(shi==24)
				     {
							 shi=0;
						 }
		      }
					if(i==5)
				  {
		      fen++;
					if(fen==60)
				     {
							 fen=0;
						 }
		      }
					if(i==6)
				   {
					   hour++;
						 if(hour==24)
				        {
							    hour=0;
						    }
					 }
					 
					if(i==7)
					   {
							 min++;
							          
							 if(min==60)
				       {
							    min=0;
						   }
						 }
					
					
				}
	
		@far @interrupt void GPIOA6(void)               //减
	  {
		   delay_ms(500);
					if(i==1)
				  {
		      nian--;
					
		      }
					if(i==2)
				  {
		      yue--;
					if(yue==0)
				     {
							 yue=12;
						 }
		      }
					if(i==3)
				  {
		      ri--;
					if(ri==0)
				     {
							 ri=31;
						 }
		      }
					if(i==4)
				  {
		      shi--;
					if(shi==0)
				     {
							 shi=23;
						 }
		      }
					if(i==5)
				  {
		      fen--;
					if(fen==0)
				     {
							 fen=59;
						 }
		      }
					if(i==6)
				   {
					   hour--;
						 if(hour==0)
				        {
							    hour=23;
						    }
					
					 }
					  if(i==7)
					   {
						   min--;
							 if(min==0)
				       {
							   min=59;
						   }
							
						 }
						  
		}

void main(void)

{ 
	 GPIO_Init(GPIOE, GPIO_PIN_0, GPIO_MODE_IN_FL_IT );
	 GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_IN_FL_IT );
	 GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_FL_IT );
	 GPIO_Init(GPIOA, GPIO_PIN_6, GPIO_MODE_IN_FL_IT );
   GPIO_Init(GPIOC, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST );
   GPIO_Init(GPIOB, (GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6 |GPIO_PIN_7 |   GPIO_PIN_0), GPIO_MODE_OUT_PP_LOW_FAST );

 lcd162a_Reset();
  TIM2_DeInit();	//定时器2反初始化//  主时钟默认为2M HZ
	TIM2_TimeBaseInit(0, 200000);//定时器2初始化,每100个毫秒中断一次
   TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);
	 TIM2_Cmd(ENABLE);//启动定时器2
	  
		enableInterrupts(); // 允许CPU全局中断  
	  
  	 
 while(1)
 {
	 
	 
  
	
	}



}

⌨️ 快捷键说明

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