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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2345|回復: 9
打印 上一主題 下一主題
收起左側

數碼管顯示 從AT24C02中存取數據的程序問題 求大佬幫助

[復制鏈接]
回帖獎勵 30 黑幣 回復本帖可獲得 30 黑幣獎勵! 每人限 1 次(中獎概率 60%)
跳轉到指定樓層
樓主
本帖最后由 千年約定 于 2021-3-2 20:35 編輯

就用一個地址存 秒鐘就沒問題用兩個分別存讀分鐘和秒鐘就只能存進去一個   
求大佬幫助。  

單片機源程序如下:
#include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器
#include "i2c.h"

#define key_S 15                                   
#define key_L key_S*33                        
#define key_I key_S*25

sbit k1=P3^0;
sbit k2=P3^1;
sbit k4=P3^3;
sbit k8=P3^7;
bit flag=0;
bit flash=0;
char sec=0,min=0;
unsigned char sec_s=0,min_s=0;
unsigned int Cnt10ms=0;      
unsigned char num=0;         
unsigned char shu=0;         
unsigned char KeyValue=0;     
unsigned char DisplayData[8];
unsigned char code dongtai[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void delay(unsigned int i)
{
        while(--i);
}

void Timer0Init()
{
        TMOD |= 0x01;        
        TH0 = 0xD8;               
        TL0 = 0xF0;               
        TF0 = 0;                 
        TR0 = 1;               
        ET0=1;                        
        EA=1;                           
}


void keyscan()
{
        static unsigned int time=0;
        if(!k1||!k2||!k4||!k8)
        {
                time++;
                if(time>key_L)
                        time=key_I;

                if(time==key_S)
                {
                        if(!k1 && KeyValue==0)
                        {
                                if(shu>=0)
                                {
                                        flag=1;                        
                                       
                                //        min_s=At24c02Read(1);
                                        sec_s= At24c02Read(2);
                                        min=min_s;
                                        sec=sec_s;
                                }                                                         
                        }
                        if(k2!=0xFF)
                           delay(30000);
                           if(k2!=0xFF)
                                KeyValue=++KeyValue%4;
                }
                if(time==key_S||time==key_L)
                {
                        if(!k4 && KeyValue>0)
                        {
                                switch(KeyValue)
                                {
                                        case 3: if(shu<99)shu++; break;
                                        case 1: if(min_s<99)min_s++; break;
                                        case 2: if(sec_s<59)sec_s++; break;
                                }
                       

                        }
                        if(!k8 && KeyValue>0)
                        {
                                switch(KeyValue)
                                {
                                        case 3: if(shu>0)shu--; break;
                                        case 1: if(min_s>0)min_s--; break;
                                        case 2: if(sec_s>0)sec_s--; break;
                                }
                        }
               
                        //        At24c02Write(1,min_s);
                                At24c02Write(2,sec_s);
                        
                }
        }
        else time=0;
}

void BufferMemory()
{
        if(KeyValue==0)
        {
           

                DisplayData[0]=dongtai[shu/10];
                DisplayData[1]=dongtai[shu%10];
                DisplayData[4]=dongtai[min/10];
                DisplayData[5]=dongtai[min%10]+0x80;
                DisplayData[6]=dongtai[sec/10];
                DisplayData[7]=dongtai[sec%10];
        }
        else  
        {
                if(KeyValue==3&&flash==1)
                {
                        DisplayData[0]=0;
                        DisplayData[1]=0;
                }
                else
                {
                        DisplayData[0]=dongtai[shu/10];
                        DisplayData[1]=dongtai[shu%10];
                }
                if(KeyValue==1&&flash==1)
                {
                        DisplayData[4]=0;
                        DisplayData[5]=0x80;
                }
                else
                {
                        DisplayData[4]=dongtai[min_s/10];
                        DisplayData[5]=dongtai[min_s%10]+0x80;
                }
                if(KeyValue==2&&flash==1)
                {
                        DisplayData[6]=0;
                        DisplayData[7]=0;
                }
                else
                {
                        DisplayData[6]=dongtai[sec_s/10];
                        DisplayData[7]=dongtai[sec_s%10];
                }
        }
}

void display()
{   
        static unsigned char t=0;
        P0=0x00;        
        P2&=0xe3;        
        P2|=(t<<2);
        P0=DisplayData[t];
        t=++t%8;        
}

void  main()
{
        Timer0Init();
        DisplayData[2]=0x80;
        DisplayData[3]=0x80;
        
        while(1)
        {  

                keyscan();
               
                BufferMemory();
                display();
                delay(125);
        }
}         

void Timer0() interrupt 1
{
        TH0 = 0xD8;               
        TL0 = 0xF0;               
        if(flag)               
        {            
                if(min|sec!=0)
                {
                        Cnt10ms++;
                        if(Cnt10ms>=100)  
                        {
                                Cnt10ms=0;
                                sec--;        
                                if(min==0&&sec==0)
                                {
                                        flag=0;                        
                                        shu++;
                                        if(shu>=9)
                                        shu=1;               
                                }
                                else if(sec<0)        
                                {
                                        min--;
                                        sec=59;
                                }
                        }
                }
                else flag=0;
        }
        if(++num==20)  
        {
                num=0;
                flash=~flash;
        }
        
}

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

使用道具 舉報

沙發
ID:884325 發表于 2021-3-2 18:20 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-186332-1.html     I2C的部分和這個鏈接的一樣   
回復

使用道具 舉報

板凳
ID:743654 發表于 2021-3-3 08:47 | 只看該作者
試著用不連續的地址存儲,看結果怎么樣
回復

使用道具 舉報

地板
ID:373388 發表于 2021-3-3 08:58 | 只看該作者
兩個寫字節之間必須加等待時間,請看數據手冊參數 , 有些廠家是10ms,有些廠家是5ms
回復

使用道具 舉報

5#
ID:884325 發表于 2021-3-3 12:03 | 只看該作者
cheney03 發表于 2021-3-3 08:47
試著用不連續的地址存儲,看結果怎么樣

用連續的地址存取秒鐘沒有變化,使用不連續的地址存取數碼管顯示的是一個亂碼,不是調節后得到的數
回復

使用道具 舉報

6#
ID:487569 發表于 2021-3-3 14:32 | 只看該作者
一般來說寫完一個字節,需要等待一段時間才能寫入第二個,試試在 At24c02Write(1,min_s); 后     延時幾個ms再寫      At24c02Write(2,sec_s);
回復

使用道具 舉報

7#
ID:884325 發表于 2021-3-3 15:06 | 只看該作者
ZXWPL 發表于 2021-3-3 14:32
一般來說寫完一個字節,需要等待一段時間才能寫入第二個,試試在 At24c02Write(1,min_s); 后     延時幾個m ...

試了一下不行誒
回復

使用道具 舉報

8#
ID:883031 發表于 2021-3-3 16:03 | 只看該作者
在寫數據之前要先將存放地址所在的頁擦除,再寫入,應該沒問題。看看你有沒有擦除的操作。
回復

使用道具 舉報

9#
ID:884325 發表于 2021-3-3 16:04 | 只看該作者
cn_zhx 發表于 2021-3-3 16:03
在寫數據之前要先將存放地址所在的頁擦除,再寫入,應該沒問題。看看你有沒有擦除的操作。

AT24C02應該不需要擦除操作的吧    我是新手不太懂啊
回復

使用道具 舉報

10#
ID:884325 發表于 2021-3-3 16:19 | 只看該作者

終于成功了好像我延時加的少了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美啪啪| 一区二区免费看 | 视频一区二区中文字幕日韩 | 亚洲成人精品在线 | 天天干天天插 | 欧美激情在线精品一区二区三区 | 中文字幕一区二区三区精彩视频 | 一区二区不卡视频 | 天天视频一区二区三区 | 99爱国产 | 91社区在线高清 | 美女一区| 天天曰夜夜操 | 欧美在线观看一区二区 | 九色porny自拍视频 | 日日操夜夜操天天操 | 久久久www成人免费精品张筱雨 | 欧洲亚洲精品久久久久 | 精品免费国产一区二区三区四区 | 水蜜桃亚洲一二三四在线 | 国产精品theporn | 国产目拍亚洲精品99久久精品 | 蜜桃视频在线观看免费视频网站www | 狠狠干影院 | 国产一级免费视频 | 日韩精品一区二区三区老鸭窝 | 成人午夜精品 | 久久久久久久一区二区三区 | 伊人天堂网 | 一区二区三区四区电影 | 国产精久久久 | 日本a视频 | 中文字幕在线观看第一页 | 国产精品不卡视频 | 久久精品久久久久久 | 久艹网站| 国产福利在线播放 | 亚洲精品www.| 欧美成人精品一区 | 欧美亚洲国产一区二区三区 | 日韩毛片网 |