欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2009|回復(fù): 0
收起左側(cè)

單片機(jī)DS1302+LCD1602源程序

[復(fù)制鏈接]
ID:569701 發(fā)表于 2019-10-19 17:08 | 顯示全部樓層 |閱讀模式
/* 星期映射表 */
unsigned char * code p[7] = {"Sun.","Mon.","Tue.","Wed.","Thur.","Fri.","Sat."};
/* 定義標(biāo)志 0:年 1:月 2:日 3:周 4:時(shí) 5:分*/
unsigned char flag_adjust = 0;


/**                @brief        時(shí)間顯示函數(shù)
*                @param        無
*                @reval        無
*/

void Time_Display(void){
        DS1302_ReadTime();                                // 讀取實(shí)時(shí)時(shí)間
        lcd_w_cmd(0x82);
        lcd_w_nums(TIM[0],2);                        // 年
        lcd_w_cmd(0x85);
        lcd_w_nums(TIM[1],2);                        // 月
        lcd_w_cmd(0x88);
        lcd_w_nums(TIM[2],2);                        // 日
        lcd_w_cmd(0x8E);
        lcd_w_num(flag_adjust);                // 調(diào)整位
        
        lcd_w_cmd(0xC0);
        lcd_w_nums(TIM[4],2);                        // 時(shí)
        lcd_w_cmd(0xC3);
        lcd_w_nums(TIM[5],2);                        // 分
        lcd_w_cmd(0xC6);
        lcd_w_nums(TIM[6],2);                        // 秒
        lcd_w_cmd(0xCF);
        lcd_w_str(" ");
        lcd_w_cmd(0xCB);
        lcd_w_str(p[TIM[3]-1]);                // 星期英文縮寫
}
/**                @brief        時(shí)間列表調(diào)整函數(shù)
*                @param        char i 1 自加 -1 自減
*                @reval        無
*/

void time_adjust(char i){
        int temp = TIM[flag_adjust];
        if(i==1 || i==-1)temp+=i;
        switch(flag_adjust){
                case 0:                                                                        // 年
                        if(temp<0)
                                temp=99;
                  else if(temp>99)
                                temp=0;   
                        break;
                case 1:                                                                        // 月
                        if(temp<=0)
                                temp=12;
                  else if(temp>=13)
                                temp=1;   
                        break;
                case 2:                                                                        // 日
                        if(temp<=0)
                                temp=31;
                  else if(temp>31)
                                temp=1;   
                        break;
                case 3:                                                                        // 周
                        if(temp<1)
                                temp=7;
                  else if(temp>7)
                                temp=1;   
                        break;
                case 4:                                                                        // 時(shí)
                        if(temp<0)
                                temp=23;
                  else if(temp>=23)
                                temp=0;   
                        break;
                case 5:                                                                        // 分
                        if(temp<0)
                                temp=59;
                  else if(temp>=60)
                                temp=0;   
                        break;
        }
        temp = ((temp/10)<<4)|(temp%10);                        // 將數(shù)字轉(zhuǎn)化為BCD碼
        TIM[flag_adjust] = temp;                                                        // 將對應(yīng)的BCD碼填入表格中
}

/**                @brief        按鍵處理函數(shù)
*                @param        無
*                @reval        無
*/

void key_pro(void){
        unsigned char key = 0;        // 存儲(chǔ)按鍵值
        key = key_scanf(0);                        // 獲取按鍵值
        switch(key){
                case 1: flag_adjust++;if(flag_adjust>5)flag_adjust=0;break;
                case 2: time_adjust(1);break;
                case 3: time_adjust(-1);break;
                default:break;
        }                // 按鍵處理
        if(key==2||key==3){        
                DS1302_WriteData(0X8E,0x00);
                DS1302_WriteData(RTC_WRITE_ADDR[flag_adjust],TIM[flag_adjust]);
                DS1302_WriteData(0X8E,0x80);
        }                // 把按鍵更新的數(shù)據(jù)寫進(jìn)對應(yīng)寄存器里
}


/**                @brief        主函數(shù)
*                @param        無
*                @reval        無
*/

void main(void){
        lcd_int();                                                                // 液晶初始化
        DS1302_Init();                                                // DS302初始化
        lcd_w_str("2019-10-19");        
        lcd_w_cmd(0xC0);
        lcd_w_str("15:38:30");                // 顯示
        while(1){
                Time_Display();                                        // 刷新時(shí)間
                key_pro();                                                        // 按鍵處理
        }
}


DS1302.jpg

DS1302.rar (1.65 MB, 下載次數(shù): 19)


回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表