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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3034|回復: 1
收起左側

時鐘+滾屏+lcd12864+stc12c5a60s2

[復制鏈接]
ID:86659 發表于 2015-7-23 20:31 | 顯示全部樓層 |閱讀模式
時鐘+滾屏+lcd12864+stc12c5a60s2
#include "AT89X52.H"
//#include <intrins.h>
//#include <stdio.h>
#define uchar unsigned char
#define Fisrt_Addr 0      //定義字符/漢字顯示起始位置
typedef   unsigned char uint8;
sbit LCD_RS=P1^0;
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2;
sbit PCB=P1^3;
uchar i,j;
uint8 AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,        //第一行漢字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,        //第二行漢字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,        //第三行漢字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,        //第四行漢字位置
};

void delay(int ms)
{
   while(ms--)
   {
     for(j=0;j<120;j++);
   }
}

bit lcd_busy()
{
    bit result;
    LCD_RS=0;  
    LCD_RW=1;
    LCD_E= 1;
    result=(bit)(P0&0x80);
    LCD_E=0;
    return result;
}
void lcd_wcmd(uchar cmd)
{
   while(lcd_busy());
   LCD_RS=0;
   LCD_RW=0;
   LCD_E=0;
   P0=cmd;
   LCD_E=1;
   LCD_E=0;
}
void lcd_wdata(uchar dat)
{
   while(lcd_busy());
   LCD_RS=1;
   LCD_RW=0;
   LCD_E=0;
   P0=dat ;
   LCD_E=1;
   LCD_E=0;
}
void lcd_initial()
{
   lcd_wcmd(0x30);
   delay(1);
   lcd_wcmd(0x0C); //開顯示,關光標,不閃爍
   delay(1);
   lcd_wcmd(0x06);//指定在資料寫入或讀取時,光標的移動方向
   delay(1);
   lcd_wcmd(0x01);
   delay(10); //這里要延時長一點,否側會影響下面的操作
}
           
/*------------------清屏命令--------------------------*/  
void Clr_Screen()
{
   lcd_wcmd(0x30);//考慮到前面出現0x34
   lcd_wcmd(0x01);
   delay(10);
}

/*------------------整屏寫入數據:全亮,或者豎條-----------------------------*/
//先寫0x34關繪圖,寫地址數據,0x360x繪圖
void Lcd_Fill(uchar disdata)
{
    uchar x,y; //參考PDF寫GDRAM的步驟,顯示坐標
    for(y=0;y<32;y++)
       for(x=0;x<16;x++)
       {  
        lcd_wcmd(0x34);
           lcd_wcmd(y+0x80);        //行地址
           lcd_wcmd(x+0x80);     //列地址
           lcd_wdata(disdata);
           lcd_wdata(disdata);           
           lcd_wcmd(0x36);
       }
       lcd_wcmd(0x30);//考慮到前面出現0x34

}

  /*------------------顯示字符串--------------------------*/
void Zi_FU(uchar code *s)
{  
  while(*s!=0)
   {
      lcd_wdata(*s);
      s++;
      delay(10);
   }
}
    //注意:中文顯示時空格符或數字ASCII碼必需兩個一起用,標點符號注意中英文
void intruction()
{     
   Clr_Screen() ;
   lcd_wcmd(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一個位置顯示)
   Zi_FU("我真的很愛你");
   lcd_wcmd(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一個位置顯示)
   Zi_FU("很在乎很在乎你 ");

   lcd_wcmd(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一個位置顯示)
   Zi_FU("我把我的心交給你");
   lcd_wcmd(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一個位置顯示)
   Zi_FU("想你啦");
   delay(1000);
  
}


void feeling1()
{  
   lcd_wcmd(0x30);
   Zi_FU("我真的很愛你");
   delay(300);
   lcd_wcmd(0x90+Fisrt_Addr);
   Zi_FU("很在乎很在乎你 ");
   delay(300);
   lcd_wcmd(0x88+Fisrt_Addr);
   Zi_FU("我把我的心交給你");
   delay(300);
   lcd_wcmd(0x98+Fisrt_Addr);
   delay(500);
   Zi_FU("想你哦");
}     
/*------------------顯示圖片---------------------------*/
void Disp_Img(uchar code *bmp)
{   
   uchar count=2,X=0x80;
   lcd_wcmd(0x34); //擴展指令
   lcd_wcmd(0x36); //打開繪圖
   for(;count>0;count--)
   {
     for(i=0;i<32;i++)
     {   
     lcd_wcmd(0x80|i);
        lcd_wcmd(X); //X地址坐標,自動加1.
        for(j=0;j<16;j++)  //16*8=128
        lcd_wdata(*bmp++);
     }
     X=0x88;//下半屏   
   }  
}
/*********************************************
函數名稱:去字摸函數 ,取模方式是橫向,順序
函數功能:
**********************************************/
void ZK(uchar *zk)
{
   uchar  i, j;
   for(j=0;j<16;j++)
   {  
      lcd_wcmd(0x34); //擴展指令
      lcd_wcmd(0x36); //打開繪圖
      lcd_wcmd(0x80|j);
      lcd_wcmd(0x80) ;//X地址坐標,自動加1.
      for(i=0;i<2;i++)
      {  
         lcd_wdata(*zk++);  
      }
    }
}

/*********************************************
函數名稱: 向某一行寫字符
函數功能:
**********************************************/
void Lcd_Write_Poss(uchar x,uchar y,uchar *ZiFu)
{
   uchar addr,i=0;
   if(x==1)addr=0x80;
   if(x==2)addr=0x90;
   if(x==3)addr=0x88;
   if(x==4)addr=0x98;
   addr=addr+y;
   lcd_wcmd(0x30);
   lcd_wcmd(addr);
   while(*ZiFu!='\0')
   {
      lcd_wdata(*ZiFu++);
   }
}
void  main()
{
   PCB=1;
   while(1)
   {   
     lcd_initial();
     delay(1000);
     Clr_Screen();
     feeling1();
     delay(3000);
     for(i=8;i>0;i--)  
     {
        lcd_wcmd(0x18);  //一二行與三四行調換了,液晶分為上下兩個半屏,
        delay(1000);   //有時會亂,與上面程序有關,要加lcd_wcmd(0x30), clrscreen();
     }
     Clr_Screen();                  //清屏
     feeling1();
     lcd_wcmd(0x34);        
     lcd_wcmd(0x04);    //0X04第一行和第三行反白顯示,
     delay(3000);     //0X05第二行和第四行反白顯示,與PDF不符
     lcd_wcmd(0x04);     //恢復正常
     delay(3000);  
     lcd_wcmd(0x34);   
     lcd_wcmd(0x03);  //允許輸入滾動地址   
     for(i=0x40;i<0x7f;i++)
     {   
       lcd_wcmd(i);  //垂直滾動屏幕的內容
       delay(500);
     }  
        
  }
  
}

評分

參與人數 1威望 +50 黑幣 +50 收起 理由
admin + 50 + 50 共享資料的積分獎勵!

查看全部評分

回復

使用道具 舉報

ID:1 發表于 2015-7-23 20:51 | 顯示全部樓層
好東東 能提供一下電路圖嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品视频在线播放 | 成人高清在线视频 | 国产乱码精品一区二区三区五月婷 | 视频1区| 毛片免费观看 | 中文字幕在线一区二区三区 | 午夜一区二区三区在线观看 | 国产亚洲一区二区在线观看 | 女人av| 天堂av在线影院 | 国产成人福利在线 | 国产日韩欧美另类 | 91久久久精品国产一区二区蜜臀 | 色毛片 | 在线播放中文字幕 | 亚洲欧美综合精品久久成人 | 97精品超碰一区二区三区 | www.黄色在线观看 | 99精品99 | 国产精品视频一 | 九七午夜剧场福利写真 | www.嫩草| 色吊丝2288sds中文字幕 | 精品一区二区三区中文字幕 | 国产欧美在线 | 久久国产日韩 | 国产一级视频在线观看 | 国产高清在线精品一区二区三区 | 插插插干干干 | 国产观看 | 久久久久中文字幕 | 国产精品日本一区二区在线播放 | 91精品国产综合久久精品 | 亚洲美女网站 | 97精品视频在线观看 | 欧美天堂 | 午夜精 | 性一爱一乱一交一视频 | 国产免费拔擦拔擦8x高清 | 亚洲免费久久久 | 亚洲福利网 |