久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1770|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

對自己在使用LCD12864顯示1302時(shí)鐘過程的總結(jié) 附單片機(jī)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
單片機(jī):89c51Rc 晶振:11.0592MHZ

錯(cuò)誤記錄:
        1.誤把 &0x1f(11111)寫成 &11111 ,0x1f是二進(jìn)制,11111是十進(jìn)制
        2.再進(jìn)行顯示的時(shí)候,把小時(shí)寄存器中D5(AM/PM)標(biāo)志記反了,實(shí)際是(0-AM,1-PM)
        
實(shí)際記錄:
        1.對于1302在顯示屏上顯示,關(guān)于1302的數(shù)據(jù)顯示"?",而其它部分正常顯示,不用說,程序沒問題,1302壞了(我用到第三個(gè)1302才正常顯示,不是“?”)
        2.1302所具有的校準(zhǔn)功能在顯示AM/PM方面,必須小時(shí)位變化(類似22->23)才會(huì)發(fā)生,所以在初始化的時(shí)候必須對小時(shí)寄存器中D5(AM/PM)標(biāo)志位進(jìn)行設(shè)置(在顯示AM/PM的前提下)

方式:
   1.是對于12/24小時(shí)制的選擇以及AM/PM的設(shè)定,我選擇的是在數(shù)組中放置標(biāo)志位

uchar add_write[]={0x8c,0x8a,0x88,0x86,0x84,0x82,0x80};//寄存器地址
uchar add_read[]={0x8d,0x8b,0x89,0x87,0x85,0x83,0x81};
uchar tim0[]={22,7,2,11,11,59,55,1,1};//年、星期、月、日、時(shí)、分、秒、12/24、PM/AM
uchar tim_bcd[7];//保存讀出的時(shí)間日期
uchar tim[14];//保存分解開的十位、個(gè)位

前兩個(gè)是各個(gè)寄存器的讀寫地址,第三個(gè)是各寄存器的初始值設(shè)置,而第三個(gè)數(shù)組最后兩個(gè)元素就是12/24,AM/PM標(biāo)志位(1-12,0-24)(1-PM,0-AM)
  2.我對12/24小時(shí)制的選擇以及AM/PM的設(shè)定是在初始化函數(shù)中對已經(jīng)轉(zhuǎn)化為BCD碼的tim0[4](也就是對小時(shí)寄存器初始化寫入)進(jìn)行操作的

            if(tim0[7]==1)//對12/24標(biāo)志位進(jìn)行判斷
                {
                        if(tim0[8]==1)
                                tim0[4]|=0xa0;//12小時(shí)PM
                        else
                                tim0[4]|=0x80;//12小時(shí)AM
                }
                else
                {
                        if(tim0[8]==1)//對AM/PM標(biāo)志位進(jìn)行判斷
                                tim0[4]|=0x20;//PM
                        else
                                tim0[4]|=0x00;//AM
                }
   3.對于AM/PM的顯示,我是在display_1302time顯示函數(shù)中寫的
主函數(shù)部分:
        initial_12864();
//        initial_1602();
        ds1302_initial();
        while(1)
        {        
                read_1302time();
                display_1302time();
        }

首先是在read_1302time()函數(shù)中把從小時(shí)寄存器讀出的數(shù)據(jù)(BCD碼)儲(chǔ)存在tim_bcd[14]中,然后只留下后五位數(shù)據(jù)用于轉(zhuǎn)化為十進(jìn)制(小時(shí)時(shí)間數(shù)據(jù)只用到了后五位)
               if(i==4)
                {
                        tim_bcd[14] = tim_bcd[4];
                        tim_bcd[4] = tim_bcd[4]& 0x1f;//11111
                }

之后在display_1302time顯示函數(shù)中對顯示AM/PM進(jìn)行判斷
         if(tim_bcd[14]&0x20==0x20)
                Putstring(" PM");
        else
                Putstring(" AM");        

學(xué)1302的時(shí)候,我是在B站上從零學(xué)電子的個(gè)人空間_嗶哩嗶哩_Bilibili這個(gè)UP主學(xué)的,我覺得講的很細(xì)。但是只有最基礎(chǔ)的24小時(shí)星期顯示,AM/Pm,12小時(shí)制需要自己加,而且硬件也很惡心,剛學(xué)的時(shí)候根本不知道是硬件還是軟件的問題,就尼瑪顯示"?",鬼知道為啥顯示“?”,折騰半天,三塊1302壞了兩塊,改顯示格式上下午的時(shí)間都沒在”?“上面卡的時(shí)間長



上圖.c和.h文件下載: 10.ds1302.zip (14.9 KB, 下載次數(shù): 19)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品福利在线 | 精品久久网 | 日本精品国产 | 国产免费一二三区 | 岛国午夜 | 大香网伊人 | 久久综合av | 欧美日韩在线高清 | 欧美日韩国产中文 | 成人午夜精品一区二区三区 | 亚洲一区二区精品视频 | 精产国产伦理一二三区 | 欧美激情黄色 | 欧美激情精品久久久久久变态 | 国产精品色哟哟网站 | 免费福利视频一区二区三区 | 婷婷在线视频 | 美女视频三区 | 国产精品99久久久久久动医院 | 99久久免费精品国产免费高清 | 中文字幕1区2区 | 狠狠色狠狠色综合系列 | 国产精品成人69xxx免费视频 | 久久中文字幕一区 | 国产精品视频久久久 | 国产激情视频在线 | 久久久久久久久综合 | 欧美日韩中文在线 | 91xxx在线观看| 在线成人一区 | 久热爱 | 国产精品高清在线 | 久久亚洲一区二区三区四区 | 欧美视频二区 | 男人的天堂中文字幕 | 亚洲第一区久久 | 中文字幕中文字幕 | 欧美一级欧美三级在线观看 | 九九热这里 | 日韩综合网 | 日韩国产在线 |