0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于51單片機(jī)的LCD1602液晶顯示時(shí)鐘

電子開(kāi)發(fā)圈 ? 來(lái)源:電子開(kāi)發(fā)圈 ? 2023-01-13 09:57 ? 次閱讀

51單片機(jī)結(jié)構(gòu)簡(jiǎn)單,架構(gòu)體系完備,學(xué)習(xí)資料豐富,應(yīng)用領(lǐng)域廣泛。通過(guò)對(duì)51單片機(jī)的學(xué)習(xí),可幫助小白實(shí)現(xiàn)快速入門(mén)電子設(shè)計(jì),理解電路系統(tǒng)工作原理,為高級(jí)嵌入式芯片的學(xué)習(xí)及開(kāi)發(fā)打下堅(jiān)實(shí)基礎(chǔ)。

本篇描述

1、51+Proteus8.10;

2、學(xué)習(xí)1302時(shí)鐘芯片、1602液晶驅(qū)動(dòng);

仿真設(shè)計(jì)

采用Proteus作為仿真設(shè)計(jì)工具。Proteus是一款著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。

軟件設(shè)計(jì)

采用Keil作為軟件設(shè)計(jì)工具。Keil提供了包括C編譯器、宏匯編、鏈接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(μVision)將這些部分組合在一起。

#include 
#include 
#include 
#define uint unsigned int
#define uchar unsigned char


sbit DS1302_IO = P1^7;
sbit DS1302_SCLK = P1^6;
sbit DS1302_RST = P1^5;
sbit LCD1602_RS = P2^0;
sbit LCD1602_RW = P2^1;
sbit LCD1602_EN = P2^2;


uchar LCD_1[]={"DATE: 00-00-00  "};
uchar LCD_2[]={"TIME: 0000  "};
uchar DateTime[7];


void DelayMS(uint ms)
{
   uchar i;
  while(ms--)
  {
     for(i=0;i<120;i++);
  }
}


uchar Get_A_Byte_FROM_DS1302()
{
   uchar i,b=0x00;
  for(i=0;i<8;i++)
  {
     b |= _crol_((uchar)DS1302_IO,i);
    DS1302_SCLK=1;
    DS1302_SCLK=0;
  }
  return b/16*10+b%16;
}


void Write_A_Byte_TO_DS1302(uchar x)
{
   uchar i;
  for(i=0;i<8;i++)
  {
     DS1302_IO=x&0x01;
    DS1302_SCLK=1;
    DS1302_SCLK=0;
    x>>=1;
  }
}


uchar Read_Data(uchar addr)
{
   uchar dat;
  DS1302_RST = 0;
  DS1302_SCLK=0;
  DS1302_RST=1;
  Write_A_Byte_TO_DS1302(addr);
  dat = Get_A_Byte_FROM_DS1302();
  DS1302_SCLK=1;
  DS1302_RST=0;
  return dat;
}


uchar Read_LCD_State()
{
   uchar state;
  LCD1602_RS=0;
  LCD1602_RW=1;
  LCD1602_EN=1;
  DelayMS(1);
  state=P0;
  LCD1602_EN = 0;
  DelayMS(1);
  return state;
}


void LCD_Busy_Wait()
{
   while((Read_LCD_State()&0x80)==0x80);
  DelayMS(5);
}


void Write_LCD_Data(uchar dat)
{
   LCD_Busy_Wait();
  LCD1602_RS=1;
  LCD1602_RW=0;
  LCD1602_EN=0;
  P0=dat;
  LCD1602_EN=1;
  DelayMS(1);
  LCD1602_EN=0;  
}


void Write_LCD_Command(uchar cmd)
{
   LCD_Busy_Wait();
  LCD1602_RS=0;
  LCD1602_RW=0;
  LCD1602_EN=0;
  P0=cmd;
  LCD1602_EN=1;
  DelayMS(1);
  LCD1602_EN=0;  
}


void Set_LCD_POS(uchar p)
{
   Write_LCD_Command(p|0x80);  
}


void Display_LCD_String(uchar p,uchar *s)
{
   uchar i;
  Set_LCD_POS(p);
  for(i=0;i<16;i++)
  {
    Write_LCD_Data(s[i]);
    DelayMS(1);   
  }
}


void Format_DateTime(uchar d,uchar *a)
{
   a[0]=d/10+'0';
  a[1]=d%10+'0';
}


void Init_LCD()
{
   Write_LCD_Command(0x38);
  DelayMS(1);  
  Write_LCD_Command(0x01);
  DelayMS(1);  
  Write_LCD_Command(0x06);
  DelayMS(1);  
  Write_LCD_Command(0x0c);
  DelayMS(1);  
}


void GetTime()
{
   uchar i,addr = 0x81;
  for(i=0;i<7;i++)
  {
     DateTime[i]=Read_Data(addr);addr+=2;
  }
}


void main()
{
   Init_LCD();
  while(1)
  {
     GetTime();


    Format_DateTime(DateTime[6],LCD_1+6);
    Format_DateTime(DateTime[4],LCD_1+9);
    Format_DateTime(DateTime[3],LCD_1+12);
    Format_DateTime(DateTime[2],LCD_2+6);
    Format_DateTime(DateTime[1],LCD_2+9);
    Format_DateTime(DateTime[0],LCD_2+12);


    Display_LCD_String(0x00,LCD_1);
    Display_LCD_String(0x40,LCD_2);
  }
}

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628369
  • 液晶顯示
    +關(guān)注

    關(guān)注

    6

    文章

    581

    瀏覽量

    40146
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    272

    文章

    5689

    瀏覽量

    122164
  • LCD1602
    +關(guān)注

    關(guān)注

    14

    文章

    606

    瀏覽量

    52376
  • 顯示時(shí)鐘
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    1622

原文標(biāo)題:5044-LCD1602液晶顯示時(shí)鐘

文章出處:【微信號(hào):電子開(kāi)發(fā)圈,微信公眾號(hào):電子開(kāi)發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    LCD1602液晶顯示模塊

    LCD1602內(nèi)部寫(xiě)入需要顯示的內(nèi)容。RS=0時(shí),選擇命令寄存區(qū),即向LCD1602內(nèi)部寫(xiě)入需要顯示內(nèi)容的顯示位置。R/W引腳:E引腳:D0
    發(fā)表于 07-20 06:48

    51單片機(jī)驅(qū)動(dòng) LCD1602液晶顯示系統(tǒng)

    51單片機(jī)驅(qū)動(dòng) LCD1602液晶顯示系統(tǒng),51單片機(jī)驅(qū)動(dòng)
    發(fā)表于 07-21 07:35

    lcd1602單片機(jī)連接圖,基于51單片機(jī)lcd1602液晶顯示屏連接電路圖

     LCD1602是一種工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。LCD1602液晶顯示原理 L
    發(fā)表于 10-20 11:33 ?14w次閱讀

    使用51單片機(jī)控制LCD1602液晶顯示屏的程序資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)控制LCD1602液晶顯示屏的程序資料免費(fèi)下載。
    發(fā)表于 01-08 08:00 ?33次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>控制<b class='flag-5'>LCD1602</b><b class='flag-5'>液晶顯示</b>屏的程序資料免費(fèi)下載

    使用51單片機(jī)實(shí)現(xiàn)LCD1602液晶顯示實(shí)驗(yàn)的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)實(shí)現(xiàn)LCD1602液晶顯示實(shí)驗(yàn)的程序免費(fèi)下載。
    發(fā)表于 09-18 17:20 ?16次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>LCD1602</b><b class='flag-5'>液晶顯示</b>實(shí)驗(yàn)的程序免費(fèi)下載

    LCD1602的引腳說(shuō)明和使用51單片機(jī)控制1602液晶顯示的代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是LCD1602的引腳說(shuō)明和使用51單片機(jī)控制1602液晶顯示的代碼免費(fèi)下載。
    發(fā)表于 07-31 17:35 ?9次下載
    <b class='flag-5'>LCD1602</b>的引腳說(shuō)明和使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>控制<b class='flag-5'>1602</b><b class='flag-5'>液晶顯示</b>的代碼免費(fèi)下載

    使用51單片機(jī)驅(qū)動(dòng)LCD1602液晶顯示的程序和電路圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)驅(qū)動(dòng)LCD1602液晶顯示的程序和電路圖免費(fèi)下載。
    發(fā)表于 07-10 17:40 ?11次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>驅(qū)動(dòng)<b class='flag-5'>LCD1602</b><b class='flag-5'>液晶顯示</b>的程序和電路圖免費(fèi)下載

    使用51單片機(jī)設(shè)計(jì)液晶顯示LCD1602顯示的計(jì)算器程序免費(fèi)下載

    本文的主要內(nèi)容是使用51單片機(jī)設(shè)計(jì)液晶顯示LCD1602顯示的計(jì)算器程序免費(fèi)下載。
    發(fā)表于 06-26 17:43 ?20次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>設(shè)計(jì)<b class='flag-5'>液晶顯示</b>屏<b class='flag-5'>LCD1602</b><b class='flag-5'>顯示</b>的計(jì)算器程序免費(fèi)下載

    使用51單片機(jī)進(jìn)行LCD1602液晶顯示的控制代碼程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)進(jìn)行LCD1602液晶顯示的控制代碼程序免費(fèi)下載。
    發(fā)表于 06-11 17:47 ?7次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>進(jìn)行<b class='flag-5'>LCD1602</b><b class='flag-5'>液晶顯示</b>的控制代碼程序免費(fèi)下載

    使用單片機(jī)實(shí)現(xiàn)LCD1602液晶顯示的DS12887實(shí)時(shí)時(shí)鐘的C語(yǔ)言程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)LCD1602液晶顯示的DS12887實(shí)時(shí)時(shí)鐘的C語(yǔ)言程序免費(fèi)下載.
    發(fā)表于 03-26 11:40 ?26次下載

    基于51單片機(jī)LCD1602顯示proteus實(shí)驗(yàn)

    基于51單片機(jī)LCD1602顯示proteus實(shí)驗(yàn)
    發(fā)表于 04-30 10:14 ?38次下載

    基于AT89C51單片機(jī)的電子鐘設(shè)計(jì)(LCD1602液晶顯示

    **基于51單片機(jī)的電子鐘設(shè)計(jì)(LCD1602液晶顯示)設(shè)計(jì)要求:設(shè)計(jì)一個(gè)用LCD1602液晶顯示
    發(fā)表于 11-04 14:51 ?35次下載
    基于AT89C<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的電子鐘設(shè)計(jì)(<b class='flag-5'>LCD1602</b><b class='flag-5'>液晶顯示</b>)

    51單片機(jī)驅(qū)動(dòng)LCD1602顯示原理及例程

    51單片機(jī)驅(qū)動(dòng)LCD1602顯示原理及例程1.LCD1602A介紹2.LCD1602A中文手冊(cè)
    發(fā)表于 11-10 19:51 ?149次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>驅(qū)動(dòng)<b class='flag-5'>LCD1602</b><b class='flag-5'>顯示</b>原理及例程

    基于51單片機(jī)智能溫控風(fēng)扇LCD1602液晶顯示紅外遙控設(shè)計(jì)

    基于51單片機(jī)智能溫控風(fēng)扇LCD1602液晶顯示紅外遙控設(shè)計(jì)
    發(fā)表于 11-13 10:51 ?41次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>智能溫控風(fēng)扇<b class='flag-5'>LCD1602</b><b class='flag-5'>液晶顯示</b>紅外遙控設(shè)計(jì)

    51單片機(jī)怎么顯示當(dāng)前時(shí)間_(記錄)51單片機(jī)——LCD1602液晶顯示模塊

    51單片機(jī)怎么顯示當(dāng)前時(shí)間_(記錄)51單片機(jī)——LCD1602
    發(fā)表于 11-16 15:06 ?29次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>怎么<b class='flag-5'>顯示</b>當(dāng)前時(shí)間_(記錄)<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>LCD1602</b><b class='flag-5'>液晶顯示</b>模塊