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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助stc89c52+ds1302+ds18B20+12864液晶屏 萬年歷(帶三路鬧鐘)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:334320 發(fā)表于 2018-6-20 21:40 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
18黑幣
求助stc89c52+ds1302+ds18B20+12864液晶屏   萬年歷(帶三路鬧鐘) 源 碼、原理圖
開發(fā)板原理圖已發(fā)附件

可以做可以私信  商量提升獎勵

LY51-L2C實驗板原理圖.png (123.85 KB, 下載次數(shù): 66)

LY51-L2C實驗板原理圖.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:303383 發(fā)表于 2018-6-20 23:15 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

板凳
ID:305599 發(fā)表于 2018-6-21 17:00 | 只看該作者
296369969@qq.com 可以做的
回復(fù)

使用道具 舉報

地板
ID:356329 發(fā)表于 2018-6-22 15:02 | 只看該作者
/*---------------------------------------------------------------------------
這個是main函數(shù)屏蔽的都可以用
                電子智能時鐘程序
                單 片 機:STC89C52RC
                晶    振:12MHz
                時鐘芯片:DS12887
                液 晶 屏:LCM-12864-ST7920
                時    間:2010年3月28日
                LCM12864使用并口連接方式,PSB、RST接高電平
頭文件----------------------------------------------------------------------*/
#include <reg52.h>
#include <intrins.h>
#include "LCD12864.h"
#include "DS12CR887.h"
#include "DS18B20.h"
#include "nongli.h"
#include "displaytime.h"
#define uint  unsigned int
#define uchar unsigned char

/*--------------------定義按鍵-----------------------------------------------*/
//sbit K1  = P2^7; //K1-設(shè)置
//sbit K2  = P2^6; //K2-確認(rèn)、返回
//sbit K3  = P2^5; //K3-加
//sbit K4  = P2^4; //K4-減
//
//void DelayM(uint);              
//
///*定義變量-------------------------------------------------------------------*/
//bit q=0, w=0;    //調(diào)時標(biāo)志位
//
///*延時函數(shù) 1MS/次------------------------------------------------------------*/
//void DelayM(uint a)              
//{
//        uchar i;
//        while( --a != 0) { for(i = 0; i < 125; i++); }                                     
//}
///*日期、時間設(shè)置函數(shù)---------------------------------------------------------*/
//void Set_time(uchar sel)  
//{
//        signed char address,item;
//        signed char max,min;
//        unsigned char yy,mo,moontemp1,moontemp2;
//        ds_write(0x0a,0x00);     //進入調(diào)時,關(guān)閉時鐘振蕩器
//        write_com(0x30); write_com(0x06);
//        write_com(0x98); lcm_w_word("設(shè)置");
//        if(sel==5)  {lcm_w_word("秒鐘");address=0; max=59;min=0;}  //秒鐘0  
//        if(sel==4)  {lcm_w_word("分鐘");address=2; max=59;min=0;}  //分鐘2
//        if(sel==3)  {lcm_w_word("小時");address=4; max=23;min=0;}  //小時4  
//        if(sel==2)  {lcm_w_word("日期");                                                                                //日期修改為按月份實際天數(shù)調(diào)整
//                                        address=7;                                                                                                        //日期7
//               mo = ds_read(0x08);//讀月
//                                        moontemp1=mo/16;
//                                        moontemp2=mo%16;
//                                        mo=moontemp1*10+moontemp2;//轉(zhuǎn)換成10進制月份數(shù)據(jù)
//
//               yy = ds_read(0x09);//讀年
//               moontemp1=yy/16;
//                                        moontemp2=yy%16;
//                                        yy=moontemp1*10+moontemp2;//轉(zhuǎn)換成10進制年份數(shù)據(jù)
//
//               if(mo==2&&yy%4!=0){max=28;min=1;}//平年2月28天
//                                        if(mo==2&&yy%4==0){max=29;min=1;}//閏年2月29天
//                                        if(mo==1||mo==3||mo==5||mo==7||mo==8||mo==10||mo==12){max=31;min=1;}//每月31天的月份
//                                        if(mo==4||mo==6||mo==9||mo==11){max=30;min=1;} //每月30天的月份
//                                        }                                                                                                                             
//        if(sel==1)  {lcm_w_word("月份");address=8; max=12;min=1;}  //月份8  
//        if(sel==0)  {lcm_w_word("年份");address=9; max=99;min=0;}  //年份9                  
//        item=ds_read(address);         //讀取DS12CR887某地址上的數(shù)值賦給item
//        if(K3 == 0) {item++;}    //K3-加數(shù):1
//        if(K4 == 0) {item--;}    //K4-減數(shù):1
//        if(item>max) item=min;  //限制數(shù)值最大有效范圍   
//        if(item<min) item=max;         //限制數(shù)值最小有效范圍           
//        ds_write(address,item);  //將調(diào)整好的item值寫入DS12CR887
//        displaydate();                          //顯示日期
//        displaytime();                                 //顯示時間
//        displaynl();                                  //顯示農(nóng)歷
//        displayxq();                                 //顯示星期
//}
/*主函數(shù)---------------------------------------------------------------------*/
void main()
{       

//        uchar e=0;
//        K1=1;K2=1;K3=1;K4=1;
//        ds_int();                        //時鐘芯片初始化
        lcm_init();                        //液晶初始化
                            //調(diào)用歡迎信息
//        DelayM(2000);                 //延時
//        lcm_clr();            //清屏
//        Clean_12864_GDRAM();         //清屏
//        ds_write(0,30);                         //miao
//        ds_write(2,59);                         //fen
//        ds_write(4,12);                         //shi
        while(1)
        {
                welcome();
//                if (w == 0)                  //正常走時
//                {
//                        displaydate();         //顯示日期
//                        displaynl();         //顯示農(nóng)歷
//                        displaytime();         //顯示時間
//                displayxq();
//                }       
//                else {}              //否則啟動調(diào)時
//
///*----------------------------設(shè)置時間--------------------------------------*/               
//                if (K1 == 0)         
//                {
//                        DelayM(20);                       //按鍵消抖
//                        if(K1 == 0 && w == 1)      //當(dāng)是調(diào)時狀態(tài) 本鍵用于調(diào)整下一項
//                        {
//                                e++;                                   //選擇調(diào)節(jié)的對象
//                                if (e >= 7 ) {e = 0;}
//                           while(! K1 );            //等待鍵松開
//                                Set_time(e);           //調(diào)整                               
//                        }                       
//                        if(K1 == 0 && w == 0)      //當(dāng)是正常狀態(tài)時就進入調(diào)時狀態(tài)
//                        {
//                                lcm_clr();            
//                                Clean_12864_GDRAM();   //清屏
//                                w=1;                       //進入調(diào)時
//                                Set_time(e);
//                        }
//                           while(K1 == 0);            //等待鍵松開
//                }
///*--------------------------------------------------------------------------*/               
//                if (K2 == 0)                   // 當(dāng)在調(diào)時狀態(tài)時就退出調(diào)時
//                {
//                        DelayM(20);
//                        if(K2 == 0 && w == 1)
//                        {                               
//                                w = 0;                       //退出調(diào)時
//                                e = 0;                           //"下一項"計數(shù)器清0                                                               
//                        }
//                        if(K2 == 0 && w == 0)
//                        {                               
//                                lcm_clr(); Clean_12864_GDRAM();
//                                write_com(0x30); write_com(0x06);
//                                welcome();                               
//                                while(K2 == 0);  
//                        }
//                        lcm_clr(); Clean_12864_GDRAM();
//                        ds_write(0x0a,0x20);       //調(diào)時完畢,開啟時鐘振蕩器                               
//                        displaydate();
//                        displaynl();
//                        displaytime();
//                        ds1820disp();
//                        while(K2 == 0);  
//                }
///*加調(diào)整--------------------------------------------------------------------*/               
//                if (K3 == 0 && w == 1)
//                {
//                        DelayM(20);
//                        if(K3 == 0 && w == 1) { Set_time(e); }
//                        while(! K3 );
//                }
///*減調(diào)整--------------------------------------------------------------------*/               
//                if (K4 == 0 && w == 1)
//                {              
//                        DelayM(20);
//                        if(K4 == 0 && w == 1) { Set_time(e); }
//                        while(! K4 );
//                }
        }
}
/*結(jié)束---------------------------------------------------
#ifndef __LCD12864_H__
#define __LCD12864_H__
#define uchar unsigned char
#define uint  unsigned int
/*定義12864液晶屏數(shù)據(jù)線--------------------------------------------------------------*/
sbit LCM_RS  = P2^7;   //模式位,為0輸入指令,為1輸入數(shù)據(jù)
sbit LCM_RW  = P2^6;   //讀寫位,為0讀,為1寫
sbit LCM_EN  = P2^5;   //使能位,高脈沖
sbit LCM_PSB = P2^4;  
#define Lcd_Bus P0     //LCM12864數(shù)據(jù)總線,P0.0--P0.7對應(yīng)連接DB0--DB7
/*液晶數(shù)字符號圖片,寬度x高度=16x32---------------------------------------------------*/
//PCtoLCD2002取模:順向,逐行式
uchar code num1632[11][64]={       

{//圖片數(shù)字0
0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,0x7F,0xFE,0x7C,0x3E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x78,0x3E,0x78,0x3E,0x78,0x5E,0x78,0x5E,0x78,0x9E,0x78,0x9E,
0x79,0x1E,0x79,0x1E,0x7A,0x1E,0x7A,0x1E,0x7C,0x1E,0x7C,0x1E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x7C,0x3E,0x7F,0xFE,0x3F,0xFC,0x1F,0xF8,0x0F,0xF0,0x00,0x00,},

{//圖片數(shù)字1
0x00,0x00,0x00,0x38,0x00,0x78,0x00,0xF8,0x01,0xF8,0x01,0xF8,0x00,0x78,0x00,0x78,
0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,
0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,
0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x00},

{//圖片數(shù)字2
0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,0x7F,0xFE,0x7C,0x3E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x3E,0x00,0x7E,0x00,0xFC,0x01,0xF8,
0x03,0xF0,0x07,0xE0,0x0F,0xC0,0x1F,0x80,0x3F,0x00,0x7E,0x00,0x7C,0x00,0x78,0x00,
0x78,0x00,0x78,0x00,0x78,0x1E,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x00,0x00},

{//圖片數(shù)字3
0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,0x7F,0xFE,0x7C,0x3E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x78,0x1E,0x00,0x1E,0x00,0x1E,0x00,0x3E,0x0F,0xFC,0x0F,0xF8,
0x0F,0xF8,0x0F,0xFC,0x00,0x3E,0x00,0x1E,0x00,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x7C,0x3E,0x7F,0xFE,0x3F,0xFC,0x1F,0xF8,0x0F,0xF0,0x00,0x00},

{//圖片數(shù)字4
0x00,0x00,0x00,0x1C,0x00,0x3C,0x00,0x7C,0x00,0x7C,0x00,0xFC,0x01,0xFC,0x01,0xFC,
0x03,0xFC,0x07,0xBC,0x07,0xBC,0x0F,0x3C,0x0F,0x3C,0x1E,0x3C,0x1E,0x3C,0x3C,0x3C,
0x3C,0x3C,0x78,0x3C,0x78,0x3C,0x78,0x3C,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,
0x00,0x3C,0x00,0x3C,0x00,0x3C,0x00,0x3C,0x00,0x3C,0x00,0x3C,0x00,0x3C,0x00,0x00},
//圖片數(shù)字5
0x00,0x00,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x78,0x00,0x78,0x00,0x78,0x00,
0x78,0x00,0x78,0x00,0x7B,0xF0,0x7F,0xF8,0x7F,0xFC,0x7F,0xFE,0x7E,0x3E,0x7C,0x1E,
0x7C,0x1E,0x00,0x1E,0x00,0x1E,0x00,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x7C,0x3E,0x7F,0xFE,0x3F,0xFC,0x1F,0xF8,0x0F,0xF0,0x00,0x00,

{//圖片數(shù)字6
0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,0x7F,0xFE,0x7C,0x3E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x00,0x78,0x00,0x78,0x00,0x7B,0xF0,0x7F,0xF8,0x7F,0xFC,0x7F,0xFE,
0x7C,0x3E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x7C,0x3E,0x7F,0xFE,0x3F,0xFC,0x1F,0xF8,0x0F,0xF0,0x00,0x00},

{//圖片數(shù)字7
0x00,0x00,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x78,0x1E,0x00,0x1E,0x00,0x3C,
0x00,0x3C,0x00,0x78,0x00,0x78,0x00,0xF0,0x00,0xF0,0x01,0xE0,0x01,0xE0,0x03,0xC0,
0x03,0xC0,0x07,0x80,0x07,0x80,0x07,0x80,0x07,0x80,0x07,0x80,0x07,0x80,0x07,0x80,
0x07,0x80,0x07,0x80,0x07,0x80,0x07,0x80,0x07,0x80,0x07,0x80,0x07,0x80,0x00,0x00},

{//圖片數(shù)字8
0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,0x7F,0xFE,0x7C,0x3E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x7C,0x3E,0x3F,0xFC,0x1F,0xF8,0x1F,0xF8,
0x3F,0xFC,0x7C,0x3E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x7C,0x3E,0x7F,0xFE,0x3F,0xFC,0x1F,0xF8,0x0F,0xF0,0x00,0x00},

{//圖片數(shù)字9
0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x3F,0xFC,0x7F,0xFE,0x7C,0x3E,0x78,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x78,0x1E,0x7C,0x3E,
0x7F,0xFE,0x3F,0xFE,0x1F,0xFE,0x0F,0xDE,0x00,0x1E,0x00,0x1E,0x00,0x1E,0x78,0x1E,
0x78,0x1E,0x78,0x1E,0x7C,0x3E,0x7F,0xFE,0x3F,0xFC,0x1F,0xF8,0x0F,0xF0,0x00,0x00},
       
{// 圖片":"        10
//6X6方點
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x07,0xE0,
0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,
0x07,0xE0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

};

uchar code bmp1616[4][32]={
        {0x00,0x00,0x00,0x00,0x3C,0x3C,0x2F,0xF4,0x3D,0x3C,0x39,0x1C,0x11,0x48,0x11,0x88,
        0x11,0x08,0x10,0x08,0x18,0x18,0x0C,0x30,0x1F,0xF8,0x18,0x18,0x00,0x00,0x00,0x00,},
        {0x01,0x00,0x01,0x00,0x01,0x00,0x7F,0xFC,0x42,0x04,0x82,0x08,0x05,0x00,0x05,0x08,
        0x08,0x90,0x18,0xA0,0x28,0x40,0x48,0x20,0x88,0x10,0x0A,0x08,0x0C,0x06,0x08,0x00},
        {0x00,0x00,0x3F,0xFE,0x20,0x00,0x20,0x80,0x20,0x80,0x20,0x80,0x2F,0xFC,0x20,0x84,
        0x20,0x84,0x21,0x04,0x21,0x04,0x22,0x04,0x22,0x04,0x44,0x04,0x48,0x28,0x90,0x10},
        {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00},
};
/*12864液晶顯示屏并口驅(qū)動程序--------------------------------------------------------*/
//檢查忙位
void chk_busy()
{
   LCM_RS=0; LCM_RW=1; LCM_EN=1;
   Lcd_Bus=0xff;
   while((Lcd_Bus&0x80)==0x80);
   LCM_EN=0;
}
/*寫指令到LCD------------------------------------------------------------------------*/
void write_com(uchar cmdcode)
{
        chk_busy();
        LCM_RS=0; LCM_RW=0; LCM_EN=1;
        Lcd_Bus=cmdcode;
        LCM_EN=0;
}
/*寫數(shù)據(jù)到LCD------------------------------------------------------------------------*/
void write_data(uchar Dispdata)
{         
        chk_busy();
        LCM_RS=1; LCM_RW=0; LCM_EN=1;
        Lcd_Bus=Dispdata;
        LCM_EN=0;
}
/*向LCM發(fā)送一個字符串,長度64字符之內(nèi)-------------------------------------------------*/
void lcm_w_word(uchar *s)
{
        while(*s>0) { write_data(*s); s++; }  //應(yīng)用:lcm_w_word("您好!");
}
/******************************************************************************/
void lcm_w_test(bit i,unsigned char word)        //寫指令或數(shù)據(jù)(被調(diào)用層)
{
        if(i == 0)        //寫指令(0,指令)
        {
                write_com(word);
        }
        else           //寫數(shù)據(jù)(1,數(shù)據(jù))
        {
                write_data(word);
        }
}
/*清屏函數(shù)--------------------------------------------------------------------------*/
void lcm_clr(void)
{       
        lcm_w_test(0,0x01);           //寫命令
}

/******************************************************************************/

void lcm_clr2(void)           //清屏上面3行(用空格填滿要清顯示的地方,因為液晶屏是靜態(tài)顯示的,所以這辦法常用)
{
        lcm_w_test(0,0x80);//第一行
        lcm_w_word("                ");
            //標(biāo)尺("1234567812345678"應(yīng)該能夠顯示滿一行)
   lcm_w_test(0,0x90);//第二行
        lcm_w_word("                ");
            //標(biāo)尺("1234567812345678"應(yīng)該能夠顯示滿一行)
   lcm_w_test(0,0x88);//第一行
        lcm_w_word("                ");
            //標(biāo)尺("1234567812345678"應(yīng)該能夠顯示滿一行)
}

/*初始化LCD屏------------------------------------------------------------------------*/
void lcm_init()
{  
    LCM_PSB=1;
        write_com(0x30);  //選擇8bit數(shù)據(jù)流
        write_com(0x0c);  //開顯示(無游標(biāo)、不反白)
        lcm_clr();        //清除顯示,并且設(shè)定地址DDRAM指針為00H
//    write_com(0x01);       //清除顯示,并且設(shè)定地址指針為00H
        lcm_clr2();
}
/*使用繪圖的方法讓一個16*16的漢字符反白----------------------------------------------*/
//形式參數(shù):uchar x,uchar y,uchar wide,uchar bkcor
//行參說明:坐標(biāo)水平位置,坐標(biāo)垂直位置,反白行數(shù),要反白還是清除(1:反白,0:清除)   
void write1616GDRAM(uchar x,uchar y,uchar sign,uchar *bmp)       
{
        uchar i,j,basex;
        write_com(0x36);      //擴展指令,繪圖模式命令,開顯示也可以繪.(關(guān)圖片顯示0x34)
        if(y==1||y==2)          //第一第二行
        {
                basex=0x80;           //上半屏
                y=(y-1)*16;          //垂直位址從0X80開始.
        }
        if(y==3||y==4)        //第三第四行
        {
                basex=0x88;         //下半屏
                y=(y-3)*16;         //垂直位址都是從0X80開始的,不管上下半屏。
        }
        for(i=0;i<16;i++)        //
        {                                                                                                                       
                write_com(0x80+y+i);  //寫入垂直位址。
                write_com(basex+x-1); //再寫入水平位址(上半屏第一字為0X80,……第七字為0X87)
                                                           //下半屏第一字為0X88,……第七字為0X8F;
                for(j=0;j<2;j++)   //再寫入兩個8位元的數(shù)據(jù),AC會自動增一,接著寫數(shù)據(jù)
                {
                        if(sign==1)  
                                write_data(~(*bmp++));
                        else  
                                write_data(*bmp++);
                }
        }       
        write_com(0x36);  //寫完數(shù)據(jù),開圖片顯示     
}

/**************************************************************************************
//函數(shù)功能:顯示16X16圖形,適用于st7920型液晶
//形式參數(shù):uchar x,uchar y,uchar *bmp
//行參說明:橫坐標(biāo)X列,縱坐標(biāo)Y行,sign=1反白、=0不反,tt是要顯示的圖形bmp1616中的第幾個
//************************************************************************************/
void set1616pic(uchar x,uchar y,uchar sign,uchar tt)
{
        uchar (*pp)[32];         //定義指針
        pp=bmp1616;          //二維數(shù)組首地址給指針,故指針指向下一個數(shù)組地址應(yīng)為加64
        write1616GDRAM(x,y,sign,pp[tt]); //寫入小時的十位          
}
/**************************************************************************************
//函數(shù)功能:顯示16X32圖形,適用于st7920型液晶
//形式參數(shù):uchar x,uchar y,uchar *bmp
//行參說明:橫坐標(biāo)X列,縱坐標(biāo)Y行,要顯示的圖形BMP
//************************************************************************************/           
void write1632GDRAM(uchar x,uchar y,uchar *bmp)       
{
        uchar i,j,basex,basey;
        switch(y)         //由y縱坐標(biāo)定是上半屏還是下半屏
        {
          case 1: basex=0x80; break;  //上半屏
          case 2: basex=0x80; break;  //先上半屏,下面再下半屏。
          case 3: basex=0x88; break;  //下半屏
          default:   return;   //別的則返回
        }
        basey=basex+x-1;
        write_com(0x36);  
        if(y==1||y==3)        //如為第一第三行,則直接是在同一半屏,直接繪完32行點陳數(shù)據(jù)。
        {
                  for(i=0;i<32;i++)         //寫入32行點陣
                  {                                                                                                               
                            write_com(0x80+i);  //先寫入垂直位址,選上下32行的哪一行,不管上下半屏,首行都為0X80
                            write_com(basey);     //再寫入水平位址(選上下半屏)
                            for(j=0;j<2;j++)           //2個8位元的數(shù)據(jù),即16BIT寬度
                                    write_data(*bmp++);   
                  }         
        }
        if(y==2)  //從第二行開始則畫圖將上下半屏都有,所以先畫完上半屏16行,再畫下半屏16行。
        {                                       
                  for(i=0;i<16;i++)         //寫入上半屏16行點陣
                  {                                                                                                               
                            write_com(0x90+i);  //先寫入垂直位址,選上下32行的哪一行,不管上下半屏,首行都為0X80,第二行為0X90。
                            write_com(basey);    //(選上半屏)再寫入水平位址
                            for(j=0;j<2;j++)           //2個8位元的數(shù)據(jù),即16BIT寬度
                                    write_data(*bmp++);   
                  }
                  for(i=0;i<16;i++)         //寫入下半屏16行點陣
                  {                                                                                                               
                            write_com(0x80+i);  //先寫入垂直位址,選上下32行的哪一行,不管上下半屏,首行都為0X80
                            write_com(basey+8);   //(選下半屏)再寫入水平位址
                            for(j=0;j<2;j++)           //2個8位元的數(shù)據(jù),即16BIT寬度
                                    write_data(*bmp++);   
                  }         
        }
        write_com(0x36);  //寫完數(shù)據(jù),開圖片顯示     
}
/**************************************************************************************        
** 函數(shù)名稱: init_12864_GDRAM()
** 功能描述: 在程寫GDRAM時序初始化12864
**************************************************************************************/
void init_12864_GDRAM()         
{
        write_com(0x30);     //基本指令操作
        write_com(0x0C);     //整體顯示開,游標(biāo)關(guān),游標(biāo)位置關(guān)
        write_com(0x06);           //光標(biāo)右移,DDRAM位址計數(shù)器(AC)加1,不整屏移動
        lcm_clr();           //清屏 (清DDRAM)
}

/**************************************************************************************
//函數(shù)名稱:Clean_12864_GDRAM(void)                                               
//函數(shù)功能:清屏函數(shù)
//使用說明:GDRAM填滿0
//************************************************************************************/
void Clean_12864_GDRAM(void)
{
    uchar x,y;
    write_com(0x36);
    init_12864_GDRAM();                //設(shè)置擴展指令集,按手冊說明,僅設(shè)置了繪圖位,
    write_com(0x36);        //需要兩次,本次設(shè)置擴展指令集。
    for (y=0;y<32;y++)
    {
        write_com(0x80+y);  //設(shè)置y=1000+00xx,y+1則往下一行
        write_com(0x80);        //設(shè)置x=1000 0000
        for (x=0;x<16;x++)
        {
            write_data(0x00);   //高字節(jié)數(shù)據(jù)
            write_data(0x00);        //低字節(jié)數(shù)據(jù)
        }
    }
}
/*-----------------------------------------------------------------------------------*/
#endif

我們用的是帶字庫的12864

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕av亚洲精品一部二部 | 国产一区二区三区久久久久久久久 | 91中文字幕在线观看 | 91国产视频在线观看 | 亚洲国产偷 | 天天干天天色 | 国产午夜精品一区二区三区在线观看 | 日韩一级 | 久久国产精品99久久久久久丝袜 | 成人免费视频网站在线看 | 日本精品免费 | 国产成人精品一区二 | 亚洲欧美在线一区 | 亚洲欧美日韩成人在线 | 91久久精品一区二区二区 | 午夜欧美| 综合久久av| 成人免费影院 | 亚洲色图综合网 | 国产精品99久久久久久动医院 | 99精品久久久久久久 | 在线看片国产精品 | 亚洲午夜精品 | 91精品在线观看入口 | 91精品国产91久久久久久最新 | 成人av一区 | 日韩在线一区二区三区 | 欧美日韩专区 | 日韩精品一区二区三区在线播放 | 国产成人精品免费视频大全最热 | 国产激情一区二区三区 | 亚洲人成一区二区三区性色 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 日韩精品在线看 | 欧美一区日韩一区 | 在线免费观看a级片 | 日本成人午夜影院 | 亚洲在线视频 | 国产日韩一区二区 | 伊人爽| 国产高潮好爽受不了了夜色 |