m0_74062664 2022-11-21 19:48 采纳率: 80%
浏览 6
已结题

关于##include#的问题,如何解决?(语言-c语言)

铁汁们,我星期那形参太多了,该怎么删几个?我是初学者,不会删,请铁汁们讲细一点点,谢谢
顺道问一下那个ACC是做什么的?我在原理图上没找到



//#include <REGX52.H>
#include "LCD1602.h"
#include "DS1302.h"
#include "Key.h"
#include "Timer0.h"
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char

//sbit ACC0=ACC^0;
//sbit ACC7=ACC^7;

unsigned char Keys,MODE,TimeSetSelect,TimeSetFlashFlag;
void LCD_WriteCommand(unsigned char Command);
void LCD_WriteData(unsigned char Data);




void TimeShow(void)//时间显示功能
{
    DS1302_ReadTime();//读取时间
    LCD_ShowNum(1,1,DS1302_Time[0],2);//显示年
    LCD_ShowNum(1,4,DS1302_Time[1],2);//显示月
    LCD_ShowNum(1,7,DS1302_Time[2],2);//显示日
    LCD_ShowNum(2,1,DS1302_Time[3],2);//显示时
    LCD_ShowNum(2,4,DS1302_Time[4],2);//显示分
    LCD_ShowNum(2,7,DS1302_Time[5],2);//显示秒
    LCD_ShowNum(1,14,DS1302_Time[6],3);//显示星期
    
}

void TimeSet(void)//时间设置功能
{
    if(Keys==2)//按键2按下
    {
        TimeSetSelect++;//设置选择位加1
        TimeSetSelect%=6;//越界清零
    }
    if(Keys==3)//按键3按下
    {
        DS1302_Time[TimeSetSelect]++;//时间设置位数值加1
        if(DS1302_Time[0]>99){DS1302_Time[0]=0;}//年越界判断
        if(DS1302_Time[1]>12){DS1302_Time[1]=1;}//月越界判断
        if( DS1302_Time[1]==1 || DS1302_Time[1]==3 || DS1302_Time[1]==5 || DS1302_Time[1]==7 || 
            DS1302_Time[1]==8 || DS1302_Time[1]==10 || DS1302_Time[1]==12)//日越界判断
        {
            if(DS1302_Time[2]>31){DS1302_Time[2]=1;}//大月
        }
        else if(DS1302_Time[1]==4 || DS1302_Time[1]==6 || DS1302_Time[1]==9 || DS1302_Time[1]==11)
        {
            if(DS1302_Time[2]>30){DS1302_Time[2]=1;}//小月
        }
        else if(DS1302_Time[1]==2)
        {
            if(DS1302_Time[0]%4==0)
            {
                if(DS1302_Time[2]>29){DS1302_Time[2]=1;}//闰年2月
            }
            else
            {
                if(DS1302_Time[2]>28){DS1302_Time[2]=1;}//平年2月
            }
        }
        
        DS1302_Time[6](0x80+0x0d);
        switch()
            {
            case 1:DS1302_Time[6]('M');//delay(5);
                   DS1302_Time[6]('O');//delay(5);
                   DS1302_Time[6]('N');
                   break;
           
            case 2:DS1302_Time[6]('T');//delay(5);
                   DS1302_Time[6]('U');//delay(5);
                   DS1302_Time[6]('E');
                   break;
            
            case 3:DS1302_Time[6]('W');//delay(5);
                   DS1302_Time[6]('E');//delay(5);
                   DS1302_Time[6]('D');
                   break;
            
            case 4:DS1302_Time[6]('T');//delay(5);
                   DS1302_Time[6]('H');//delay(5);
                   DS1302_Time[6]('U');
                   break;
            
            case 5:DS1302_Time[6]('F');//delay(5);
                   DS1302_Time[6]('R');//delay(5);
                   DS1302_Time[6]('I');
                   break;
            
            case 6:DS1302_Time[6]('S');//delay(5);
                   DS1302_Time[6]('T');//delay(5);
                   DS1302_Time[6]('A');
                   break;
            
            case 7:DS1302_Time[6]('S');//delay(5);
                   DS1302_Time[6]('U');//delay(5);
                   DS1302_Time[6]('N');
                   break;


            }
        
        
        
        if(DS1302_Time[3]>23){DS1302_Time[3]=0;}//时越界判断
        if(DS1302_Time[4]>59){DS1302_Time[4]=0;}//分越界判断
        if(DS1302_Time[5]>59){DS1302_Time[5]=0;}//秒越界判断
    }
    if(Keys==4)//按键3按下
    {
        DS1302_Time[TimeSetSelect]--;//时间设置位数值减1
        if(DS1302_Time[0]<0){DS1302_Time[0]=99;}//年越界判断
        if(DS1302_Time[1]<1){DS1302_Time[1]=12;}//月越界判断
        if( DS1302_Time[1]==1 || DS1302_Time[1]==3 || DS1302_Time[1]==5 || DS1302_Time[1]==7 || 
            DS1302_Time[1]==8 || DS1302_Time[1]==10 || DS1302_Time[1]==12)//日越界判断
        {
            if(DS1302_Time[2]<1){DS1302_Time[2]=31;}//大月
            if(DS1302_Time[2]>31){DS1302_Time[2]=1;}
        }
        else if(DS1302_Time[1]==4 || DS1302_Time[1]==6 || DS1302_Time[1]==9 || DS1302_Time[1]==11)
        {
            if(DS1302_Time[2]<1){DS1302_Time[2]=30;}//小月
            if(DS1302_Time[2]>30){DS1302_Time[2]=1;}
        }
        else if(DS1302_Time[1]==2)
        {
            if(DS1302_Time[0]%4==0)
            {
                if(DS1302_Time[2]<1){DS1302_Time[2]=29;}//闰年2if(DS1302_Time[2]>29){DS1302_Time[2]=1;}
            }
            else
            {
                if(DS1302_Time[2]<1){DS1302_Time[2]=28;}//平年2if(DS1302_Time[2]>28){DS1302_Time[2]=1;}
            }
        }
        if(DS1302_Time[3]<0){DS1302_Time[3]=23;}//时越界判断
        if(DS1302_Time[4]<0){DS1302_Time[4]=59;}//分越界判断
        if(DS1302_Time[5]<0){DS1302_Time[5]=59;}//秒越界判断
    }
    //更新显示,根据TimeSetSelect和TimeSetFlashFlag判断可完成闪烁功能
    if(TimeSetSelect==0 && TimeSetFlashFlag==1){LCD_ShowString(1,1,"  ");}
    else {LCD_ShowNum(1,1,DS1302_Time[0],2);}
    if(TimeSetSelect==1 && TimeSetFlashFlag==1){LCD_ShowString(1,4,"  ");}
    else {LCD_ShowNum(1,4,DS1302_Time[1],2);}
    if(TimeSetSelect==2 && TimeSetFlashFlag==1){LCD_ShowString(1,7,"  ");}
    else {LCD_ShowNum(1,7,DS1302_Time[2],2);}
    if(TimeSetSelect==3 && TimeSetFlashFlag==1){LCD_ShowString(2,1,"  ");}
    else {LCD_ShowNum(2,1,DS1302_Time[3],2);}
    if(TimeSetSelect==4 && TimeSetFlashFlag==1){LCD_ShowString(2,4,"  ");}
    else {LCD_ShowNum(2,4,DS1302_Time[4],2);}
    if(TimeSetSelect==5 && TimeSetFlashFlag==1){LCD_ShowString(2,7,"  ");}
    else {LCD_ShowNum(2,7,DS1302_Time[5],2);}
    if(TimeSetSelect==6 && TimeSetFlashFlag==1){LCD_ShowString(1,14,"     ");}
    else {LCD_ShowNum(2,7,DS1302_Time[6],3);}
    
    
}

void main()
{
    LCD_Init();
    DS1302_Init();
    Timer0Init();
    LCD_ShowString(1,1,"  -  -  ");//静态字符初始化显示
    LCD_ShowString(2,1,"  :  :  ");
    
    DS1302_SetTime();//设置时间
    
    while(1)
    {
        Keys=Key();//读取键码
        if(Keys==1)//按键1按下
        {
            if(MODE==0){MODE=1;TimeSetSelect=0;}//功能切换
            else if(MODE==1){MODE=0;DS1302_SetTime();}
        }
        switch(MODE)//根据不同的功能执行不同的函数
        {
            case 0:TimeShow();break;
            case 1:TimeSet();break;
        }
    }
}

void Timer0_Routine() interrupt 1
{
    static unsigned int T0Count;
    TL0 = 0x18;        //设置定时初值
    TH0 = 0xFC;        //设置定时初值
    T0Count++;
    if(T0Count>=500)//500ms进入一次
    {
        T0Count=0;
        TimeSetFlashFlag=!TimeSetFlashFlag;//闪烁标志位取反
    }
}



  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-21 22:14
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月10日
  • 已采纳回答 12月2日
  • 修改了问题 11月21日
  • 创建了问题 11月21日

悬赏问题

  • ¥50 MATLAB APP 制作出现问题
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)
  • ¥15 DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI[/untitled30_war_e
  • ¥15 使用deepspeed训练,发现想要训练的参数没有梯度
  • ¥15 寻找一块做为智能割草机的驱动板(标签-stm32|关键词-m3)
  • ¥15 信息管理系统的查找和排序
  • ¥15 基于STM32,电机驱动模块为L298N,四路运放电磁传感器,三轮智能小车电磁组电磁循迹(两个电机,一个万向轮),怎么用读取的电磁传感器信号表示小车所在的位置
  • ¥15 如何解决y_true和y_predict数据类型不匹配的问题(相关搜索:机器学习)
  • ¥15 PB中矩阵文本型数据的总计问题。