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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5814|回復(fù): 1
收起左側(cè)

SPI通信協(xié)議下的LCD1602顯示DS1302程序及電路圖及時序

[復(fù)制鏈接]
ID:100029 發(fā)表于 2015-12-22 20:19 | 顯示全部樓層 |閱讀模式
#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
sbit rs=P2^0;
sbit rw=P2^1;
sbit en=P2^2;
sbit rst =P2^3;
sbit sclk=P2^4;
sbit DI  =P2^5;
sbit A7=ACC^7;
sbit A0=ACC^0;
sbit B0=B^0;
uchar tt0[]="Time:";
uchar tt1[]="Data:";
void delay(uchar us)
{  
while(us--);
}
void w1602(uchar dat,bit r)
{
         rs=r;
rw=0;
P3=dat;
en=0;
delay(2);
en=1;
delay(4);
en=0;
}
void init1602()
{
         w1602(0x38,0);
w1602(0x06,0);
w1602(0x0c,0);
w1602(0x01,0);
}
uchar r1302(uchar addr)
{
        uchar n;
rst=0;
sclk=0;
_nop_();
rst=1;
B=addr;
for(n=0;n<8;n++)
 {
                         sclk=0;
DI=B0;
sclk=1;
B=B>>1; 
    }
for(n=0;n<8;n++)
 { 
                         A7=DI;
sclk=1;
ACC=ACC>>1;
sclk=0;
    }
rst=0;
return(ACC);
}
void main()
{
  uchar i;
init1602();
while(1)
{
w1602(0x80,0);
for(i=0;i<5;i++)
w1602(tt0[i],1);
w1602(0x30+(r1302(0x85)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x85) & 0x0f),1);
w1602(0x2d,1);
w1602(0x30+(r1302(0x83)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x83) & 0x0f),1);
w1602(0x2d,1);
w1602(0x30+(r1302(0x81)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x81) & 0x0f),1);
w1602(0xc0,0);
for(i=0;i<5;i++)
w1602(tt1[i],1);
w1602(0x30+(r1302(0x87)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x87) & 0x0f),1);
w1602(0x2d,1);
w1602(0x30+(r1302(0x89)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x89) & 0x0f),1);
w1602(0x2d,1);
w1602(0x30+(r1302(0x8d)>>4 & 0x0f),1);
w1602(0x30+(r1302(0x8d) & 0x0f),1);
}
}
/////////////////////////////////////////////////////////////////////
#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
#define Wsec            0x80
#define Rsec            0x81
#define Wmom            0x82
#define Rmom            0x83
#define Whor            0x84
#define Rhor            0x85
#define Wday            0x86
#define Rday            0x87
#define Wmth            0x88
#define Rmth            0x89
#define Wyer            0x8c
#define Ryer            0x8d
#define Wwek            0x8a
#define Rwek            0x8b
void delay(uchar us)
{
  while(us--);
}
sbit RS=P3^0;
sbit RW=P3^1;
sbit EN=P3^2;
sbit RST=P3^3;
sbit SCLK=P3^4;
sbit DIO=P3^5;
sbit A0=ACC^0;
sbit A7=ACC^7;
sbit B0=B^0;
uchar tt[]="Time:";
uchar tt1[]="Data:";
uchar tt2[]="wek";
void w1602(uchar dat,bit RR)
{
RS=RR;
RW=0;
P2=dat;
EN=0;
_nop_();
EN=1;
delay(4);
EN=0;   
}
void LCDinit()
{
  w1602(0x38,0);
w1602(0x06,0);
w1602(0x0c,0);
w1602(0x01,0);
}
void w1302(uchar addr,dat)
{
    uchar i;
 RST=0;
 SCLK=0;
 _nop_();
 RST=1;
 B=addr;
 for(i=0;i<8;i++)
    {
SCLK=0;
DIO=B0;
_nop_();
SCLK=1;
B=B>>1;          
       }
ACC=dat;
 for(i=0;i<8;i++)
    {
SCLK=0;
DIO=A0;
_nop_();
SCLK=1;
ACC=ACC>>1;          
       }
RST=0;  
}
uchar r1302(unsigned char addr)
{
 char i;
 RST=0;
 _nop_();
 SCLK=0;
 RST=1;
 B =addr;
 for(i=0;i<8;i++)
        {     
 
SCLK=0;
              
DIO=B0;
SCLK=1;
B =B>>1;
_nop_();
        } 
for(i=0;i<8;i++)
           {
                 A7=DIO;
                 SCLK=1;
                 _nop_();
                 SCLK=0;
                 ACC=ACC>>1; 
             }
RST=0;
return(ACC);
}
void init1302()
{
        w1302(0x8e,0x00);
w1302(Wsec,0x56);
w1302(Wmom,0x34);
w1302(Whor,0x12);
w1302(0x8e,0x00);
}
void main()
{
  uchar i;
LCDinit();
while(1)
{
w1602(0x80,0);
         for(i=0;i<5;i++)
               w1602(tt[i],1);
w1602(((r1302(Rhor)>>4)& 0x03)+0x30,1);
w1602((0x0F & r1302(Rhor))+0x30,1);
w1602(0x2d,1);
w1602(((r1302(Rmom)>>4)& 0x0f)+0x30,1);
w1602((0x0F & r1302(Rmom))+0x30,1);
w1602(0x2d,1);
w1602(((r1302(Rsec)>>4)& 0x0f)+0x30,1);
w1602((0x0F & r1302(Rsec))+0x30,1);
for(i=0;i<5;i++)
                 w1602(tt2[i],1);
w1602(0xc0,0);
         for(i=0;i<5;i++)
              w1602(tt1[i],1);
w1602(((r1302(Ryer)>>4)& 0x0f)+0x30,1);
w1602((0x0F & r1302(Ryer))+0x30,1);
w1602(0x2d,1);
w1602(((r1302(Rmth)>>4)& 0x01)+0x30,1);
w1602((0x0F & r1302(Rmth))+0x30,1);
w1602(0x2d,1);
w1602(((r1302(Rday)>>4)& 0x03)+0x30,1);
w1602((0x0F & r1302(Rday))+0x30,1);
w1602(0x20,1);
w1602((0x07 & r1302(Rday))+0x2F,1); 
}
}

#include"reg52.h"

#include"intrins.h"

#define Wsec            0x80

#define Rsec             0x81

#define Wmom          0x82

#define Rmom           0x83

#define Whor             0x84

#define Rhor              0x85

#define Wday            0x86

#define Rday             0x87

#define Wmth            0x88

#define Rmth             0x89

#define Wyer             0x8c

#define Ryer              0x8d

#define Wwek            0x8a

#define Rwek             0x8b

sbit RS = P3^0;

sbit RW = P3^1;

sbit EN = P3^2;

sbit RST =P3^3;

sbit SCLK=P3^4;

sbit DIO =P3^5;

sbit ACC_7=ACC^7;

sbit ACC_0=ACC^0;

sbit B_0 =B^0;

unsigned char tt[]=" Time";

unsigned char tt1[]=" Data";

void delay(unsigned int us)

{

 while(us--);

}

void writedata(unsigned char dat)

{

  RS=1;

RW=0;

EN=0;

P2=dat;

delay(5);

EN=1;

delay(10);

EN=0;

}

void writecomd(unsigned char dat)

{

  RS=0;

RW=0;

EN=0;

P2=dat;

delay(5);

EN=1;

delay(10);

EN=0;

}

void LCDinit()

{

  writecomd(0x38);

writecomd(0x06);

writecomd(0x0c);

writecomd(0x01);

}

void W1302(unsigned char addr,unsigned char dat)

{

  char i;

RST=0;

SCLK=0;

_nop_();

RST=1;

ACC=addr;

for(i=0;i<8;i++)

 { 

SCLK=0;

DIO=ACC_0;

SCLK=1;

ACC=ACC>>1;

_nop_();

           }

ACC=dat;

for(i=0;i<8;i++)

 {

SCLK=0;

DIO=ACC_0;

ACC=ACC>>1;

SCLK=1;

ACC=ACC>>1;

_nop_();

          }

}

unsigned char R1302(unsigned char addr)

{

 char i;

RST=0;

_nop_();

SCLK=0;

RST=1;

B =addr;

for(i=0;i<8;i++)

          {                         SCLK=0;

                        DIO=B_0;

                        SCLK=1;

                        B =B>>1;

                        _nop_();

           } 

for(i=0;i<8;i++)

 {

                 ACC_7=DIO;

                 SCLK=1;     

                 _nop_();   

                SCLK=0;

                ACC=ACC>>1;  

             }

RST=0;

return(ACC);

}

void D1302init(void)

{

W1302(0x8E,0x00);

W1302(Wsec,0x56);

W1302(Wmom,0x34);

W1302(Whor,0x12);

W1302(0x8e,0x80);

}

void main(void)

{

unsigned char i;

LCDinit();

W1302(Wday,0x15);

while(1)

{

writecomd(0x80);

for(i=0;i<5;i++)

 writedata(tt[i]);

writedata(0x3A);

writedata(0x30+(0x0F & (R1302(Rhor)>>4)));

writedata(0x30+(0x0F & R1302(Rhor)));

writedata(0x2d);

writedata(0x30+(0x0F & (R1302(Rmom)>>4)));

writedata(0x30+(0x0F & R1302(Rmom)));

writedata(0x2d);

writedata(0x30+(0x0F & (R1302(Rsec)>>4)));

writedata(0x30+(0x0F & R1302(Rsec)));

writecomd(0xc0);

for(i=0;i<5;i++)

 writedata(tt1[i]);

writedata(0x3A);

writedata(0x30+(0x0F & (R1302(Rday)>>4)));

writedata(0x30+(0x0F & R1302(Rday)));

writedata(0x2d);

writedata(0x30+(0x0F & (R1302(Rmth)>>4)));

 writedata(0x30+(0x0F & R1302(Rmth)));

writedata(0x2d);

writedata(0x30+(0x0F & (R1302(Ryer)>>4)));

 writedata(0x30+(0x0F & R1302(Ryer)));

writedata(0x20);

writedata(0x30+ R1302(Rwek)-1);

   

  }

}













/*******************************************************************
                  DS1302ºÍLCD1602£¬C51µ¥Æ¬»úCÓïÑÔ

*****************************************************************/
#include<AT89x51.h>
#define uchar unsigned char
/**********DS1302******************/
#define write_second            0x80      
#define write_minute             0x82     
#define write_hour                 0x84     
#define read_second             0x81     
#define read_minute              0x83     
#define read_hour                  0x85     
#define write_day                   0x86
#define read_day                    0x87
#define write_month              0x88
#define read_month               0x89
#define write_week                0x8A
#define read_week                 0x8B
#define write_year                  0x8C
#define read_year                   0x8D
 
#define write_protect           0x8E

/******DS1302*************/
sbit ACC_7=ACC^7;
sbit SCLK =P1^2;
sbit DIO  =P1^3;
sbit CE   =P1^4;
sbit P3_add=P3^0;
sbit P3_OK =P3^1;
//////LCD1602//////////////
#define LCD_DB P0
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_E=P2^2;

/******¶¨Ò庯Êý****************/

#define uchar unsigned char
#define uint unsigned int
void  LCD_init(void);//ÉùÃ÷³õʼ»¯º¯Êý
void  LCD_write_command(uchar command);//дָÁÊý
void  LCD_write_data(uchar dat);//дÊý¾Ýº¯Êý

void  delay_n40us(uint n);//ÑÓʱº¯Êý
//*******³õʼ»¯º¯Êý***************

void  LCD_init(void)
{
LCD_write_command(0x38);//ÉèÖÃ8λ¸ñʽ£¬2ÐУ¬5x7
LCD_write_command(0x0c);//ÕûÌåÏÔʾ£¬¹Ø¹â±ê£¬²»ÉÁ˸
LCD_write_command(0x06);//É趨ÊäÈ뷽ʽ£¬ÔöÁ¿²»ÒÆÎ»--------------
LCD_write_command(0x01);//Çå³ýÆÁÄ»ÏÔʾ----------------
delay_n40us(100);//ʵ¼ùÖ¤Ã÷£¬ÎÒµÄLCD1602ÉÏ£¬ÓÃfor Ñ­»·200 ´Î¾ÍÄܿɿ¿Íê³ÉÇåÆÁÖ¸Áî¡£
}
//********дָÁÊý***********ÉèÖÃÏÈÏò1602дÈëµÄÊý¾ÝΪµØÖ·*
void   LCD_write_command(uchar dat)
{
LCD_DB=dat;
LCD_RS=0;//Ö¸Áî
LCD_RW=0;//дÈë
LCD_E=1;//ÔÊÐí
LCD_E=0;//²úÉúϽµÑØ
delay_n40us(1);//ʵ¼ùÖ¤Ã÷£¬ÎÒµÄLCD1602 ÉÏ£¬ÓÃfor Ñ­»·1 ´Î¾ÍÄÜÍê³ÉÆÕͨдָÁî¡£
}

//дÈë×Ö·û´®º¯Êý
void   writeDataLcd(unsigned char dat)// дÈëÊý¾Ý
  {
    LCD_RS=1; 
    LCD_RW=0;
    LCD_E=0; 
    LCD_DB =  dat; 
    LCD_E=1; 
    delay_n40us(10);
    LCD_E=0; 
  } 

//********ÑÓʱº¯Êý***************

void delay_n40us(uint n)
{  uint i;
   uchar j;
   for(i=n;i>0;i--)
      for(j=0;j<2;j++); //ÔÚÕâ¸öÑÓʱѭ»·º¯ÊýÖÐÎÒÖ»×öÁË2´ÎÑ­»·
//**********DS1302*************************//
void write1302(unsigned char addr,dat)
{
   unsigned char i,temp;
   CE=0;
   SCLK=0;
   CE=1;
   for(i=0;i<8;i++)  //????
      {
         SCLK=0;
         temp=addr;
         if(temp&0x01==0x01)
               DIO=1;
         else
               DIO=0;
        addr>>=1;
        SCLK=1;
     }
 
   for(i=0;i<8;i++)  //????
      {
        SCLK=0;
        temp=dat;
        if(temp&0x01==0x01)
             DIO=1;
        else
             DIO=0;
        dat>>=1;
        SCLK=1;
     }
 }

unsigned char read1302(unsigned char addr)
{
   unsigned char i,temp;
   CE=0;
   SCLK=0;
   CE=1;
   for(i=8;i>0;i--)//?????????
      {
       SCLK =0;
       temp =addr;
       if(temp&0x01==0x01)
            DIO=1;
       else
           DIO=0;
      addr>>=1;
      SCLK=1; 
     }
 
for(i=8;i>0;i--)//???
    {
       ACC_7=DIO;
       SCLK=1;
       ACC>>=1;
       SCLK=0;        //???????
     }
CE=0;
return(ACC);
}
/////////////////////////////////////
void Initial(void)
{
        write1302(write_protect,0x00);
        write1302(write_second,0x56);
        write1302(write_minute,0x34);
        write1302(write_hour,0x12);
        write1302(write_protect,0x80);
}
//*********Ö÷º¯Êý*****************
void main(void)
{
 uint i;
uchar sec,min,hour,week,year,month,day;
 EA=1;
 EX0=1;
 Initial();
 LCD_init();
 write1302(write_hour,0x23);     //23點
 write1302(write_minute,0x59); //59分
 write1302(write_year,0x15);     //15年
 write1302(write_month,0x11);  //11月
 write1302(write_day,0x30);       //30日
 write1302(write_week,1);          //周1
  while(1)
   {
sec=read1302(read_second); 
 min=read1302(read_minute);
 hour=read1302(read_hour);
 week= read1302(read_week);
 year =read1302(read_year);
 month= read1302(read_month);
 day=read1302(read_day); 
 LCD_write_command(0x80);
 writeDataLcd(0x00);
  if(hour<12)
            writeDataLcd(0x41);
   else
writeDataLcd(0x70);
writeDataLcd(0x6d);
writeDataLcd(0x3a);
writeDataLcd(0x30+(0x03 & (hour>>4)));
writeDataLcd(0x30+(0x0f & hour));
writeDataLcd(0x3a);
 writeDataLcd(0x30+(0x07 & (min>>4)));
writeDataLcd(0x30+(0x0f & min));
writeDataLcd(0x3a);
writeDataLcd(0x30+(0x07 & (sec>>4)));
writeDataLcd(0x30+(0x0f & sec));
writeDataLcd(0x00);
writeDataLcd(0x00);
writeDataLcd(0x30+week);
for(i=0;i<49;i++)
          writeDataLcd(0x00);   
writeDataLcd(0x00);
writeDataLcd(0x00);
writeDataLcd(0x00);
writeDataLcd(0x32);
writeDataLcd(0x30);
writeDataLcd(0x30+(0x0f & (year>>4)));
writeDataLcd(0x30+(0x0f & year));
writeDataLcd(0x2d);
writeDataLcd(0x30+(0x03 & (month>>4)));
writeDataLcd(0x30+(0x0f & month));
writeDataLcd(0x2d);
writeDataLcd(0x30+(0x03 & (day>>4)));
writeDataLcd(0x30+(0x0f & day));
   }
}
void intsvr0(void) interrupt 0 using 3
{
}













評分

參與人數(shù) 1黑幣 +1 收起 理由
LHT_Peter + 1

查看全部評分

回復(fù)

使用道具 舉報

ID:282995 發(fā)表于 2018-2-10 23:23 | 顯示全部樓層
請問可以發(fā)案例中的proteus文件嗎?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 网站黄色在线免费观看 | 国产免费又色又爽又黄在线观看 | 免费福利视频一区二区三区 | 欧美在线观看一区二区 | 91人人看| 中文字幕av中文字幕 | 免费午夜剧场 | 日日夜夜精品视频 | 日韩精品久久久久久 | 亚洲国产在 | 日韩欧美三级电影 | 97天天干| 欧美成人一级 | 日韩欧美国产精品 | 国产一级久久久久 | 99pao成人国产永久免费视频 | 国产精品美女在线观看 | 精品96久久久久久中文字幕无 | 日韩在线观看网站 | 久久久资源 | 欧美黄色性生活视频 | 一级视频在线免费观看 | 亚洲高清av在线 | 日本午夜免费福利视频 | 精品av| 狠狠av| 亚洲综合日韩精品欧美综合区 | av先锋资源| 国产成人免费网站 | 久久男人天堂 | 国产精品久久久久一区二区三区 | 亚洲欧美久久 | av中文字幕在线 | 91av精品 | 一区二区中文字幕 | xxxxx黄色片 欧美一区免费 | 人和拘一级毛片c | 欧美区日韩区 | 亚洲精品在线免费观看视频 | 欧美狠狠操| 中文字幕一区在线观看视频 |