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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+數碼管數值儲存問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:884325 發表于 2021-3-1 19:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 千年約定 于 2021-3-2 10:03 編輯

             8位數碼管左邊2位顯示倒計時次數,右邊四位顯示分鐘和秒鐘            第一次按k1啟動的時候,左邊顯示  1  ,右邊開始倒計時,  倒計時結束聲光警報,
          再次按k1能夠再次啟動 ,此時左邊顯示  2  ,右邊開始倒計時     
         按k2能夠調節次數   分鐘   秒鐘的數值            現在就是要將次數   分鐘   秒鐘   存儲到AT24C02里面        ,
       存儲我會但是如何將   
       次數   1  的時候 設置的  分鐘  秒鐘    ,次數   2的 時候設置的  分鐘  秒鐘  
     。。。。。。。。。。。。。。。。
       次數   8的時候設置的分鐘  秒鐘
       這些分別存儲   等到對應次數的時候調出相應設置的分鐘   秒鐘   
       應該怎么判斷   

#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;
                                       
                                         if(shu==1)
                                        {
                                          
                                                                        shu=At24c02Read(1);
                                                                                sec_s=At24c02Read(2);
                                                                                        min_s=At24c02Read(3);
                                        }
                                        if(shu==2)
                                        {
                                          
                                                                shu=At24c02Read(4);
                                                                                sec_s=At24c02Read(5);
                                                                                        min_s=At24c02Read(6);
                                        }
                                        if(shu==3)
                                        {
                                          
                                                                shu=At24c02Read(7);
                                                                                sec_s=At24c02Read(8);
                                                                                        min_s=At24c02Read(9);
                                        }
                                        if(shu==4)
                                        {
                                          
                                                                shu=At24c02Read(10);
                                                                                sec_s=At24c02Read(11);
                                                                                        min_s=At24c02Read(12);
                                        }
                                        if(shu==5)
                                        {
                                         
                                                                shu=At24c02Read(13);
                                                                                sec_s=At24c02Read(14);
                                                                                        min_s=At24c02Read(15);
                                        }
                                        if(shu==6)
                                          {
                                               
                                                                shu=At24c02Read(16);
                                                                                sec_s=At24c02Read(17);
                                                                                        min_s=At24c02Read(18);
                                                }
                                        if(shu==7)
                                        {
                                          
                                                                shu=At24c02Read(19);
                                                                                sec_s=At24c02Read(20);
                                                                                        min_s=At24c02Read(21);
                                        }
                                                if(shu==8)
                                        {
                                          
                                                                shu=At24c02Read(22);
                                                                                sec_s=At24c02Read(23);
                                                                                        min_s=At24c02Read(24);
                                        }               
                                        shu=shu;               
                                        sec=sec_s;  
                                        min=min_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;
                                }
                        }
                }
        }
        else time=0;
}

void BufferMemory()
{
        if(KeyValue==0)
        {
                  if(shu==1)
                                        {
                                                  At24c02Write(1,shu);
                                                        At24c02Write(2,sec_s);
                                                                At24c02Write(3,min_s);
                                                               
                                        }
                                        if(shu==2)
                                        {
                                          At24c02Write(4,shu);
                                                        At24c02Write(5,sec_s);
                                                                At24c02Write(6,min_s);
                                                               
                                        }
                                        if(shu==3)
                                        {
                                          At24c02Write(7,shu);
                                                        At24c02Write(8,sec_s);
                                                                At24c02Write(9,min_s);
                                                                 
                                        }
                                        if(shu==4)
                                        {
                                          At24c02Write(10,shu);
                                                        At24c02Write(11,sec_s);
                                                                At24c02Write(12,min_s);
                                                         
                                        }
                                        if(shu==5)
                                        {
                                          At24c02Write(13,shu);
                                                        At24c02Write(14,sec_s);
                                                                At24c02Write(15,min_s);
                                                               
                                        }
                                        if(shu==6)
                                          {
                                                At24c02Write(16,shu);
                                                        At24c02Write(17,sec_s);
                                                                At24c02Write(18,min_s);
                                                       
                                                }
                                        if(shu==7)
                                        {
                                          At24c02Write(19,shu);
                                                        At24c02Write(20,sec_s);
                                                                At24c02Write(21,min_s);
                                                               
                                        }
                                                if(shu==8)
                                        {
                                          At24c02Write(22,shu);
                                                        At24c02Write(23,sec_s);
                                                                At24c02Write(24,min_s);
                                                       
                                        }


                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:275826 發表于 2021-3-2 08:40 | 只看該作者
數組和結構體都可以存儲
回復

使用道具 舉報

板凳
ID:387856 發表于 2021-3-2 09:15 | 只看該作者
設一個8X3的二維數組就可以了。unsigned char num{time1,min1,sec1};{time2,min2,sec2};.......;{time8,min8,sec8}.time代表次數,min代表分,sec代表秒。對應的次數,對對應的時間。注意這個數組不要定義到code里。因為你這個數組要存 要取的
回復

使用道具 舉報

地板
ID:884325 發表于 2021-3-2 09:53 | 只看該作者
tyrl800 發表于 2021-3-2 08:40
數組和結構體都可以存儲

emm....
我是要將值存在AT24C02里面的
回復

使用道具 舉報

5#
ID:884325 發表于 2021-3-2 09:54 | 只看該作者
liuhailan5757 發表于 2021-3-2 09:15
設一個8X3的二維數組就可以了。unsigned char num{time1,min1,sec1};{time2,min2,sec2};.......;{time8,min ...

我是要將數據存進AT24C02里面的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品黄色 | 欧美福利一区 | 中文字幕 国产精品 | 免费在线观看av网站 | 亚洲精品乱码久久久久久按摩观 | 亚洲精品视频久久 | 老外黄色一级片 | 久久久www成人免费无遮挡大片 | 成在线人视频免费视频 | 日本精品裸体写真集在线观看 | 国产一级免费视频 | 日韩福利在线 | 欧美一区二区三区在线观看 | 久久一区精品 | 亚洲一区视频在线播放 | 一区二区久久 | www.一级毛片| 精品久久久久久久久久久 | 成人av免费看| 黄色网址在线免费观看 | 狠狠操狠狠干 | 国产色爽| 中文字幕视频在线看5 | 日本一道本 | 一区二区三区视频在线 | 久久精品国产一区二区电影 | 欧洲色综合 | 99亚洲综合| 久久狠狠| 国产不卡在线观看 | 亚洲精品一区二区三区四区高清 | 欧美99| 国产欧美一区二区三区久久 | 日韩精品视频中文字幕 | 91视频免费 | 自拍偷拍亚洲一区 | 久久91精品国产一区二区三区 | 国产精品久久久久久久久久久免费看 | 91热在线 | 亚洲夜夜爽 | 欧美成人免费 |