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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

普中的板子,DS1302時鐘數(shù)值在12864液晶上顯示,1602上顯示正常,12864上就不顯示了

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:494791 發(fā)表于 2019-4-13 16:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
程序如下:
說明:Ds1302Init();為1302初始化函數(shù)
Ds1302ReadTime();為讀取時間數(shù)據(jù)的函數(shù)
#include<reg52.h>                         
#include<ds1302.h>
#include<stdlib.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char       
char num=0;
uchar DisplayData[8];
sbit rs=P2^6;        
sbit rw=P2^5;        
sbit en=P2^7;
sbit psb=P3^2;
sbit DSIO=P3^4;
sbit RST=P3^5;
sbit SCLK=P3^6;
//---DS1302寫入和讀取時分秒的地址命令---//
//---秒分時日月周年 最低位讀寫位;-------//
uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};

//---DS1302時鐘初始化2016年5月7日星期六12點00分00秒。---//
//---存儲順序是秒分時日月周年,存儲格式是用BCD碼---//
uchar TIME[7] = {0, 0, 0x12, 0x07, 0x05, 0x06, 0x16};        
void delayxms(uint n)                     
{
    uint x,y;  
    for(x=n;x>0;x--)
        for(y=110;y>0;y--);
}
void lcd_wcom(uchar com)                 
{
    rs=0;
        rw=0;
        en=0;
        P0=com;
        delayxms(5);
        en=1;
        delayxms(5);
        en=0;
}
void lcd_wdat(uchar dat)            
{
   rs=1;
   rw=0;                                                                                 
   en=0;
   P0=dat;
   en=1;
   delayxms(5);
   en=0;
}
void lcd_init()               
{
    lcd_wcom(0x30);   
        delayxms(5);                                                                
    lcd_wcom(0x0c);          
        delayxms(5);   
    lcd_wcom(0x01);   
        delayxms(5);
}
//void datapros()          
//{
//  Ds1302ReadTime();
//        DisplayData[0] =                                 //時
//        DisplayData[1] = TIME[2]%16;                                 
//        //DisplayData[2] = 0x40;
//        DisplayData[3] = TIME[1]/16;                                //分
//        DisplayData[4] = TIME[1]%16;       
//        //DisplayData[5] = 0x40;
//        DisplayData[6] = TIME[0]/16;                                //秒
//        DisplayData[7] = TIME[0]%16;
//}
//void DigDisplay()
//{
//           lcd_wcom(0x80);
//        lcd_wdat(DisplayData[0]+0x30);
//        lcd_wdat(DisplayData[1]+0x30);
//        lcd_wdat(0x3a);
//        lcd_wdat(DisplayData[3]+0x30);
//        lcd_wdat(DisplayData[4]+0x30);
//        lcd_wdat(0x3a);
//        lcd_wdat(DisplayData[6]+0x30);                  
//        lcd_wdat(DisplayData[7]+0x30);
//}
void Ds1302Write(uchar addr, uchar dat)
{
        uchar n;
        RST = 0;
        _nop_();

        SCLK = 0;//先將SCLK置低電平。
        _nop_();
        RST = 1; //然后將RST(CE)置高電平。
        _nop_();

        for (n=0; n<8; n++)//開始傳送八位地址命令
        {
                DSIO = addr & 0x01;//數(shù)據(jù)從低位開始傳送
                addr >>= 1;
                SCLK = 1;//數(shù)據(jù)在上升沿時,DS1302讀取數(shù)據(jù)
                _nop_();
                SCLK = 0;
                _nop_();
        }
        for (n=0; n<8; n++)//寫入8位數(shù)據(jù)
        {
                DSIO = dat & 0x01;
                dat >>= 1;
                SCLK = 1;//數(shù)據(jù)在上升沿時,DS1302讀取數(shù)據(jù)
                _nop_();
                SCLK = 0;
                _nop_();       
        }       
                 
        RST = 0;//傳送數(shù)據(jù)結(jié)束
        _nop_();
}

uchar Ds1302Read(uchar addr)
{
        uchar n,dat,dat1;
        RST = 0;
        _nop_();

        SCLK = 0;//先將SCLK置低電平。
        _nop_();
        RST = 1;//然后將RST(CE)置高電平。
        _nop_();

        for(n=0; n<8; n++)//開始傳送八位地址命令
        {
                DSIO = addr & 0x01;//數(shù)據(jù)從低位開始傳送
                addr >>= 1;
                SCLK = 1;//數(shù)據(jù)在上升沿時,DS1302讀取數(shù)據(jù)
                _nop_();
                SCLK = 0;//DS1302下降沿時,放置數(shù)據(jù)
                _nop_();
        }
        _nop_();
        for(n=0; n<8; n++)//讀取8位數(shù)據(jù)
        {
                dat1 = DSIO;//從最低位開始接收
                dat = (dat>>1) | (dat1<<7);
                SCLK = 1;
                _nop_();
                SCLK = 0;//DS1302下降沿時,放置數(shù)據(jù)
                _nop_();
        }

        RST = 0;
        _nop_();        //以下為DS1302復(fù)位的穩(wěn)定時間,必須的。
        SCLK = 1;
        _nop_();
        DSIO = 0;
        _nop_();
        DSIO = 1;
        _nop_();
        return dat;       
}
void Ds1302Init()
{
        uchar n;
        Ds1302Write(0x8E,0X00);                 //禁止寫保護,就是關(guān)閉寫保護功能
        for (n=0; n<7; n++)//寫入7個字節(jié)的時鐘信號:分秒時日月周年
        {
                Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);       
        }
        Ds1302Write(0x8E,0x80);                 //打開寫保護功能
}
void Ds1302ReadTime()
{
        uchar n;
        for (n=0; n<7; n++)//讀取7個字節(jié)的時鐘信號:分秒時日月周年
        {
                TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
        }
               
}

void main()
{       
        //uchar n;
        psb=1;
        lcd_init();               
        lcd_wcom(0x80);          //這四行是我為了測試程序加上去的,當(dāng)Ds1302Init(); 函數(shù)和Ds1302ReadTime();函數(shù)都被注釋時,該部分正常顯示,
        lcd_wdat(1+0x30);      //當(dāng)Ds1302Init();和 Ds1302ReadTime();只要有一個不被注釋時這四行就不顯示了,奇了怪了,沒有循環(huán),后邊的程序還能對前邊的程序造成影響
        lcd_wcom(0x90);          //
        lcd_wdat(1+0x30);           //
        Ds1302Init();                                             
        while(1)
        {  
          Ds1302ReadTime();
//          datapros();       
//    DigDisplay();   
      lcd_wcom(0x98);
          lcd_wdat(TIME[2]/16+0x30);               
          lcd_wdat(TIME[2]%16+0x30);
          lcd_wdat(0x3a);
          lcd_wdat(TIME[1]/16+0x30);
          lcd_wdat(TIME[1]%16+0x30);
          lcd_wdat(0x3a);
          lcd_wdat(TIME[0]/16+0x30);
          lcd_wdat(TIME[0]%16+0x30);                                       
        }               
}

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

使用道具 舉報

沙發(fā)
ID:494791 發(fā)表于 2019-4-13 16:49 | 只看該作者
求救
回復(fù)

使用道具 舉報

板凳
ID:96682 發(fā)表于 2019-4-13 18:10 | 只看該作者
有相應(yīng)出現(xiàn)不用,亂套程序能正常顯示么
回復(fù)

使用道具 舉報

地板
ID:164602 發(fā)表于 2019-4-14 09:49 | 只看該作者
沒從程序中看到你用了12864啊
1602與12864是兩種可以說是完全不同的器件吧,沒有新的程序,當(dāng)然沒有相應(yīng)的功能。
另外,你的12864會接嗎?那也是和1602不同的哦

評分

參與人數(shù) 1黑幣 +1 收起 理由
嘉立創(chuàng)AAA + 1 普中是越來越缺德了!

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:494791 發(fā)表于 2019-4-14 14:54 | 只看該作者
HC6800-ES-V2.0 發(fā)表于 2019-4-14 09:49
沒從程序中看到你用了12864啊
1602與12864是兩種可以說是完全不同的器件吧,沒有新的程序,當(dāng)然沒有相應(yīng)的 ...

有12864的顯示程序啊,三個以lcd開頭命名的不就是嗎?在主函數(shù)里調(diào)用寫命令函數(shù)和寫數(shù)據(jù)函數(shù)不就行了嗎?那個選擇是串行還是并行的程序里也有,主函數(shù)里面滴四行那里請幫忙看一下
回復(fù)

使用道具 舉報

6#
ID:456780 發(fā)表于 2019-4-14 16:26 | 只看該作者
我這有1286451的程序,直接調(diào)用就行,我51都是調(diào)用那個,也不需要改
回復(fù)

使用道具 舉報

7#
ID:456780 發(fā)表于 2019-4-14 16:28 | 只看該作者

我的是串行通訊的程序
回復(fù)

使用道具 舉報

8#
ID:337069 發(fā)表于 2019-4-14 21:40 | 只看該作者
好好看看12864手冊,帶不帶字庫?
回復(fù)

使用道具 舉報

9#
ID:497670 發(fā)表于 2019-4-14 22:55 | 只看該作者
你好!
1、程序提供的不全
2、問題現(xiàn)象沒有截圖
3、給你一個類似的實物你看看








回復(fù)

使用道具 舉報

10#
ID:386381 發(fā)表于 2019-4-15 00:34 來自觸屏版 | 只看該作者
前有字庫,后無字庫
回復(fù)

使用道具 舉報

11#
ID:164602 發(fā)表于 2019-4-15 09:06 | 只看該作者
單片機小白一個 發(fā)表于 2019-4-14 14:54
有12864的顯示程序啊,三個以lcd開頭命名的不就是嗎?在主函數(shù)里調(diào)用寫命令函數(shù)和寫數(shù)據(jù)函數(shù)不就行了嗎? ...

你的程序,我是認真看了的,沒有12864的驅(qū)動顯示程序,只有1602的程序,這兩個器件是不同時的,程序不能共用!
回復(fù)

使用道具 舉報

12#
ID:269090 發(fā)表于 2019-4-15 10:22 | 只看該作者
驅(qū)動芯片不同,引腳定義不同吧,你試試修改引腳定義。(看著手冊和原理圖)
回復(fù)

使用道具 舉報

13#
ID:528325 發(fā)表于 2019-5-10 13:30 | 只看該作者
有沒有源文件啊
回復(fù)

使用道具 舉報

14#
ID:682755 發(fā)表于 2020-6-13 10:59 來自觸屏版 | 只看該作者
帶字庫的lcd12864和不帶字庫的肯定是不一樣的啦,因為你想調(diào)用的ds1302里面的時間等都是變量,帶字庫的lcd12864沒有添加變量函數(shù)所以你就調(diào)用不了
回復(fù)

使用道具 舉報

15#
ID:744327 發(fā)表于 2020-6-13 13:11 | 只看該作者
帶字庫的lcd12864需要添加一個變量和函數(shù)
回復(fù)

使用道具 舉報

16#
無效樓層,該帖已經(jīng)被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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