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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機顯示時間可調時間

[復制鏈接]
跳轉到指定樓層
樓主
ID:671942 發表于 2019-12-24 03:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#include <intrins.h>
#define lcd1602data P0

typedef unsigned char u8;
typedef unsigned int u16;

sbit E=P2^7;                 
sbit RW=P2^5;                  
sbit RS=P2^6;                  

sbit  key1=P3^1;
sbit  key2=P3^0;
sbit  key3=P3^2;


sbit SCLK=P3^6;               
sbit IO=P3^4;
sbit RST=P3^5;         

u16 read[]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};       
u16 write[]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};       
u8 time[]={0x30,0x30,0x22,0x08,0x02,0x05,0x19};               
u16 setmark,setplace;                                       

void delay_ms(u16 n);
void initConfiguration();
void lcdDisplay();
void lcdwrite_com(u8 datas);
void lcdwrite_datas(u8 datas);
void lcdinit();
void writebyte(u8 address,u8 datas);
u8 readbyte(u8 address);
void ds1302init();
void read_time();

void main()
{
         u16 i;
         initConfiguration();               
         lcdinit();
         ds1302init();
         while(1)
         {
                 if(setmark==0)                       
                 {
                         read_time();       
                 }
                 else                                       
                 {
                          if(key1==0)
                         {
                                 delay_ms(1);
                                if(key1==0)
                                {
                                          setplace++;                               
                                         setplace%=7;
                                }
                                while(i<50&&key1==0)                       
                                 {
                                        i++;
                                        delay_ms(10);
                                 }
                                 i=0;
                         }


                         if(key2==0)
                         {
                                  delay_ms(1);
                                 if(key2==0)                                                       
                                 {
                                          time[setplace]++;
                                        if((time[setplace]&0x0f)>9)                                       
                                        {
                                                time[setplace]=time[setplace]+6;
                                        }
                                        if((time[setplace]>=0x60)&&(setplace<2))               
                                        {
                                                time[setplace]=0;
                                        }
                                        if((time[setplace]>=0x24)&&(setplace==2))       
                                        {
                                                time[setplace]=0;
                                        }
                                        if((time[setplace]>=0x32)&&(setplace==3))               
                                        {
                                                time[setplace]=0;       
                                        }
                                        if((time[setplace]>=0x13)&&(setplace==4))               
                                        {
                                                time[setplace]=0;
                                        }       
                                        if((time[setplace]>=0x7)&&(setplace==5))       
                                        {
                                                time[setplace]=1;
                                        }
                                                                                                                                         
                                 }
                                 while((i<50)&&(0==key2))
                                 {
                                         i++;
                                        delay_ms(10);
                                 }
                                 i=0;
                         }

                 }
                 lcdDisplay();
         }
}

void delay_ms(u16 n)                         
{
        u16 a,b;
        for(;n>0;n--)
        {
                for(a=199;a>0;a--)
                {
                        for(b=1;b>0;b--)
                        {
                                 ;
                        }
                }
        }
}


void initConfiguration()       
{
        EA=1;
        IT0=1;
        EX0=1;       
}

void init0() interrupt 0               
{
         delay_ms(10);
         if(key3==0)
         {
                 setmark=~setmark;
                setplace=0;
                ds1302init();
         }
}

void lcdDisplay()                                 
{
       
        lcdwrite_com(0x80+0x00);                               
        lcdwrite_datas('2');
        lcdwrite_datas('0');
        lcdwrite_datas('0'+time[6]/16);                       
        lcdwrite_datas('0'+(time[6]&0x0f));               
        lcdwrite_datas('-');
        lcdwrite_datas('0'+time[4]/16);
        lcdwrite_datas('0'+(time[4]&0x0f));       
        lcdwrite_datas('-');               
        lcdwrite_datas('0'+time[3]/16);
        lcdwrite_datas('0'+(time[3]&0x0f));
         
        lcdwrite_com(0x8c);
        lcdwrite_datas('0'+(time[5]&0x07));

        lcdwrite_com(0xc0);                                                 
        lcdwrite_datas('0'+time[2]/16);
        lcdwrite_datas('0'+(time[2]&0x0f));
        lcdwrite_datas('-');
        lcdwrite_datas('0'+time[1]/16);
        lcdwrite_datas('0'+(time[1]&0x0f));
        lcdwrite_datas('-');
        lcdwrite_datas('0'+time[0]/16);                         
        lcdwrite_datas('0'+(time[0]&0x0f));
}

void lcdwrite_com(u8 datas)                       
{
        E=0;
        RW=0;
        RS=0;

        lcd1602data=datas;
        delay_ms(1);

        E=1;
        //delay_ms(1);
        E=0;
       
}

void lcdwrite_datas(u8 datas)               
{
        E=0;
        RW=0;
        RS=1;

        lcd1602data=datas;
        delay_ms(1);                                  

        E=1;
        //delay_ms(1);
        E=0;
       
}

void lcdinit()                                                 
{
        lcdwrite_com(0x38);                       
        lcdwrite_com(0x0c);                       
        lcdwrite_com(0x06);                               
        lcdwrite_com(0x01);                               
        lcdwrite_com(0x80);                               
}




void writebyte(u8 address,u8 datas)                         
{
        u8 i;
        RST=0;
        _nop_();

        SCLK=0;
        _nop_();
        RST=1;
        _nop_();
        for(i=0;i<8;i++)
        {
                IO=address&0x01;
                address>>=1;
                SCLK=1;
                _nop_();
                SCLK=0;
                _nop_();       
        }
        for(i=0;i<8;i++)
        {
                IO=datas&0x01;
                datas>>=1;
                SCLK=1;
                _nop_();
                SCLK=0;
                _nop_();       
        }
        RST=0;
}

u8 readbyte(u8 address)                         
{
        u8 i,datas,dat;
        RST=0;
        //_nop_();
        SCLK=0;
        //_nop_();
        RST=1;
        //_nop_();
        for(i=0;i<8;i++)
        {
                IO=address&0x01;
                address>>=1;
                SCLK=1;
                _nop_();
                SCLK=0;
                _nop_();       
        }
        //_nop_();
        for(i=0;i<8;i++)
        {
                dat=IO;
                datas=(datas>>1)|(dat<<7);
                SCLK=1;
                _nop_();
                SCLK=0;
                _nop_();
        }
        RST=0;
        //_nop_();
        SCLK=1;
        //_nop_();
        IO=0;
        //_nop_();
        IO=1;
        //_nop_();
        return datas;
}

void ds1302init()                                         
{
        u8 i;
        writebyte(0x8e,0x00);                       
        for(i=0;i<7;i++)
        {
                writebyte(write[i],time[i]);
        }
        writebyte(0x8e,0x80);                               
}

void read_time()                                         
{
        u8 i;
        for(i=0;i<7;i++)
        {
                time[i]=readbyte(read[i]);
        }
}


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄免费观看视频 | 九九九精品视频 | 国产精品国产亚洲精品看不卡15 | 欧美日韩视频一区二区 | 成人久久18免费网站麻豆 | 中文字幕在线一区二区三区 | 日韩精品一区二区三区视频播放 | 欧美日韩亚洲一区二区 | 国产一区二区三区久久久久久久久 | 久久精品 | 美女视频一区二区三区 | 国产精品一区二区三区在线 | 亚洲天堂精品久久 | 久久精品亚洲欧美日韩久久 | 免费的av | 蜜桃精品噜噜噜成人av | 色婷婷激情综合 | 狠狠做深爱婷婷综合一区 | 国产91丝袜在线播放 | 爱操影视| 天天曰天天曰 | 国产一区二区在线播放 | 精品乱子伦一区二区三区 | 国产伦精品一区二区三区视频金莲 | 国产农村妇女精品一区 | 91免费观看国产 | 久草福利| 青青久久av北条麻妃海外网 | 激情毛片 | av免费观看在线 | 一区二区三区在线 | 色五月激情五月 | 国产精品区二区三区日本 | 久久精品国产免费看久久精品 | 一区二区三区在线免费看 | 久草视频观看 | 国产精品日韩 | 日韩精品久久久久 | 一区二区精品 | 日韩国产精品一区二区三区 | 久久久www成人免费无遮挡大片 |