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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8660|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

基于51單片機的LCD12864B顯示時鐘源程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:585660 發(fā)表于 2019-7-19 16:38 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我自己有試過然后 看論壇里沒有關(guān)于12864的顯示時鐘的有關(guān)程序 就給大家說一下仿真圖沒有做 僅僅做了實物 ,板子是用的qingxiang的板子 顯示屏是12864B


單片機源程序如下:
#include <reg51.h>
#include <intrins.h>
        
#define uchar unsigned char
#define uint  unsigned int
/*12864端口定義*/
#define LCD_data  P0             //數(shù)據(jù)口
sbit LCD_RS  =  P3^5;            //寄存器選擇輸入
sbit LCD_RW  =  P3^6;            //液晶讀/寫控制
sbit LCD_EN  =  P3^4;            //液晶使能控制
sbit LCD_PSB =  P3^1;            //串/并方式控制
sbit wela    =  P2^6;
sbit dula    =  P2^7;
sbit K1=P3^0;
sbit K2=P3^3;
sbit K3=P3^2;
uchar code table[] =  " 2019-7-19 FIR ";
uchar code table1[] = "  00: 00: 00AM ";
uchar code table2[] = "濟南今日  晴天";
uchar code table3[] = "  無風(fēng)   34-29 ";

#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
uchar IRDIS[2];
uchar IRCOM[4];
int num=0,num1=0;
uchar i,t;
uchar K1num;
char s,f,m;
void key();
//unsigned char TIM[8]={0,0,':',0,0,':',0,0};
void  dataconv();
void lcd_pos(uchar X,uchar Y);  //確定顯示位置
/*******************************************************************/
/*                                                                 */
/*  延時函數(shù)                                                       */
/*                                                                 */
/*******************************************************************/
void delay(int ms)
{
    while(ms--)
        {
      uchar i;
          for(i=0;i<250;i++)  
           {
            _nop_();                           
                _nop_();
                _nop_();
                _nop_();
           }
        }
}               
/*******************************************************************/
/*                                                                 */
/*檢查LCD忙狀態(tài)                                                    */
/*lcd_busy為1時,忙,等待。lcd-busy為0時,閑,可寫指令與數(shù)據(jù)。      */
/*                                                                 */
/*******************************************************************/
bit lcd_busy()
{                          
    bit result;
    LCD_RS = 0;
    LCD_RW = 1;
    LCD_EN = 1;
    delayNOP();
    result = (bit)(P0&0x80);
    LCD_EN = 0;
    return(result);
}
/*******************************************************************/
/*                                                                 */
/*寫指令數(shù)據(jù)到LCD                                                  */
/*RS=L,RW=L,E=高脈沖,D0-D7=指令碼。                             */
/*                                                                 */
/*******************************************************************/
void write(uchar com)
{                          
   while(lcd_busy());
    LCD_RS = 0;
    LCD_RW = 0;
    LCD_EN = 0;
    _nop_();
    _nop_();
    P0 = com;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;  
}
/*******************************************************************/
/*                                                                 */
/*寫顯示數(shù)據(jù)到LCD                                                  */
/*RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。                               */
/*                                                                 */
/*******************************************************************/
void read(uchar date)
{                          
   while(lcd_busy());
    LCD_RS = 1;
    LCD_RW = 0;
    LCD_EN = 0;
    P0 = date;
    delayNOP();
    LCD_EN = 1;
    delayNOP();
    LCD_EN = 0;
}
/*******************************************************************/
/*                                                                 */
/*  LCD初始化設(shè)定                                                  */
/*                                                                 */
/*******************************************************************/
void lcd_init()
{

    LCD_PSB = 1;         //并口方式

    write(0x38);      //顯示設(shè)置模式
    delay(5);
    write(0x06);      //光標設(shè)置
    delay(5);
    write(0x0C);      //顯示開,關(guān)光標
    delay(5);
    write(0x01);      //清除LCD的顯示內(nèi)容
    delay(5);
          write(0x80);      //數(shù)據(jù)地址初始位
    delay(5);
        for(num=0;num<16;num++)
        {
         read(table[num]);
                delay(20);
        }
        write(0x90);
        for(num=0;num<16;num++)
        {
         read(table2[num]);
                delay(20);
        }
        write(0x98);
        for(num=0;num<16;num++)
        {
         read(table3[num]);
                delay(10);
        }
        write(0x88);
        for(num=0;num<16;num++)
        {
         read(table1[num]);
                delay(20);
        }         
}
void write_sfm(uchar add,uchar date        )
{
uchar shi,ge;
        shi=date/10;
        ge=date%10;
        write(0x83+add);
        read(0x30+shi);
        read(0x30+ge);
}
void key() //按鍵控制 光標的 左移右移加減
{
  if(K1==0)
        {
          delay(5);
                if(K1==0)
                {
                  K1num++;
                        while(!K1);
                        if(K1num==1)
                        {
                          TR0=0;
                                write(0x83+10);  
                                write(0x0f);
                        }
                }
                if(K1num==2)
                {
                  write(0x83+8);
                }
                  if(K1num==3)
                        {
                          write(0x83+6);
                        }
                          if(K1num==4)
                                {
                                  K1num==0;
                                        write(0x0c);
                                        TR0=1;
                                }
        

        }
        if(K1num!=0)
        {
          if(K2==0)
                  {
         delay(5);
                                if(K2==0)
                                  {
                                         while(!K2);
                                        }
                                        if(K1num==1)
                                         {
                                           m++;
                                                 if(m==60)
                                                         m=0;
                                                 write_sfm(10,m);
                                                 write(0x83+10);
                                         }
                                         if(K1num==2)
                                         {
                                           f++;
                                                 if(f==60)
                                                         f=0;
                                                 write_sfm(8,f);
                                                 write(0x83+8);
                                         }
                                         if(K1num==3)
                                         {
                                           s++;
                                                 if(s==23)
                                                         s=0;
                                                 write_sfm(6,s);
                                                 write(0x83+6);
                                                 K1num==0;
                                         }
                        }
        }
        if(K3==0)
        {
          delay(5);
                if(K3==0)
                {
                 while(!K3);
                        if(K1num==1)
                        {
                          m--;
                                if(m==-1)
                                        m=59;
                                write_sfm(10,m);
                                write(0x83+10);
                        }
                        if(K1num==2)
                        {
                          f--;
                                if(f==-1)
                                        f=59;
                                write_sfm(8,f);
                                write(0x83+8);
                        }
                        if(K1num==3)
                        {
                          s--;
                                if(s==-1)
                                        s=23;
                                write_sfm(6,s);
                                write(0x83+6);
                                K1num==0;
                        }
                }
        }
               
}
/*********************************************************/
/*                                                                                                                 */
/* 主程序                                                                                    */
/*                                                       */
/*********************************************************/
void main()
{                 //延時
     wela=0;
          dula=0;
         delay(10);
    lcd_init();
         TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=1;
        IE = 0x82; //1001 0000 EA=1; ES=1;
  while(1)
        {
          key();
        }

            }

void T_t0() interrupt 1 //外部中斷
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        num1++;
        if(num1==2)
        {
                num1=0;
                m++;
                if(m==60)
                {
                  m=0;
                        f++;
                        if(f==60)
                        {
                          f=0;
                                s++;
                                if(s==24)
                                {
                                   s=0;
                                }
                                write_sfm(6,s);
                        }
                        write_sfm(8,f);
                }                        
    write_sfm(10,m);
        }
        
全部資料51hei下載地址:
12864顯示時鐘.zip (30.84 KB, 下載次數(shù): 245)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:258542 發(fā)表于 2019-7-21 10:15 | 只看該作者
下載程序試一下
回復(fù)

使用道具 舉報

板凳
ID:247810 發(fā)表于 2019-7-28 10:02 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

地板
ID:586674 發(fā)表于 2019-8-8 18:16 | 只看該作者
下載程序試試,感謝分享
回復(fù)

使用道具 舉報

5#
ID:78901 發(fā)表于 2019-9-5 21:44 | 只看該作者
天氣是如何做的
回復(fù)

使用道具 舉報

6#
ID:950673 發(fā)表于 2021-7-30 09:37 | 只看該作者
用的是哪個芯片啊
回復(fù)

使用道具 舉報

7#
ID:354309 發(fā)表于 2022-8-23 09:14 | 只看該作者
用的時間芯片是什么
回復(fù)

使用道具 舉報

8#
ID:863362 發(fā)表于 2022-8-29 10:14 | 只看該作者
阿斯蘭 發(fā)表于 2022-8-23 09:14
用的時間芯片是什么

沒用到時間芯片,顯示的內(nèi)容可以在源程序里任意修改。

IMG_20220829_101222.jpg (2.77 MB, 下載次數(shù): 101)

IMG_20220829_101222.jpg
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美一区在线 | 亚洲欧美日韩久久 | 香蕉一区| 国产成人网 | 极品粉嫩国产48尤物在线播放 | 欧美成人精品激情在线观看 | 成人免费观看男女羞羞视频 | 久久亚洲天堂 | 日本成人在线观看网站 | 草久久久| 国产午夜精品视频 | 欧美一a | 亚洲a视频 | 国产一区二区观看 | 欧美成人一区二区三区片免费 | 精品视频一区二区三区 | 免费在线观看黄色av | 成人午夜影院 | 午夜a区 | 国产 日韩 欧美 中文 在线播放 | 日韩一区二区三区四区五区六区 | 欧美区在线 | 国产精品久久久久一区二区三区 | 在线视频一区二区 | 国产精品99久久久久久动医院 | 观看av | 国产剧情一区 | 97超碰在线免费 | avtt国产 | 亚洲一区二区视频 | 日韩一区二区黄色片 | 国产69久久精品成人看动漫 | 精品久久久久久亚洲精品 | 日本欧美国产在线观看 | 成人在线网址 | 高清一区二区视频 | 亚洲精品在线观看网站 | 蜜月va乱码一区二区三区 | 国产精品色 | 中文字幕av在线 | 国产高清免费视频 |