欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
基于AT89C51和12864的萬(wàn)年歷仿真+源代碼
[打印本頁(yè)]
作者:
章政
時(shí)間:
2016-11-16 16:18
標(biāo)題:
基于AT89C51和12864的萬(wàn)年歷仿真+源代碼
0.png
(25.88 KB, 下載次數(shù): 60)
下載附件
2016-11-16 21:02 上傳
本文件分四個(gè)部分 生成一個(gè)HEX文件
萬(wàn)年歷完整版.rar
(65.46 KB, 下載次數(shù): 124)
2016-11-16 16:17 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
//--------------------------LCD_12864.c-------------------------
// 名稱(chēng) :12864LCD顯示驅(qū)動(dòng)程序(不帶字庫(kù))
//-----------------------------------------------------------------
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_DB_PORT P0 // 液晶數(shù)據(jù)線端口DB0-DB7
#define LCD_START_ROW 0xc0 //起始行命令
#define LCD_PAGE 0xB8 // 頁(yè)指令
#define LCD_COL 0x40 // 列指令
bit Reverse_Display=0;//是否反相顯示(白底黑字/黑底白字)
//液晶引腳定義
sbit DI=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit CS1=P2^3;
sbit CS2=P2^4;
sbit RST=P2^5;
//---------------------------------------------------------------
// 檢查L(zhǎng)CD是否忙
//--------------------------------------------------------------
bit LCD_IS_BUSY()
{
LCD_DB_PORT=0xFF;
RW=1;
_nop_();
DI=0;
E=1;
_nop_();
E=0;
return (bit)(P0&0x80);
}
//---------------------------------------------------------------
// 向LCD寫(xiě)入一個(gè)字節(jié)(一般用于發(fā)送命令)
//--------------------------------------------------------------
void Write_Byte_To_LCD(uchar comand)
{
while(LCD_IS_BUSY());
LCD_DB_PORT=0xFF;
RW=0;
_nop_();
DI=0;
LCD_DB_PORT=comand;
E=1;
_nop_();
E=0;
}
//---------------------------------------------------------------
// 向LCD寫(xiě)入數(shù)據(jù)
//--------------------------------------------------------------
void Write_Data_To_LCD(uchar dat)
{
while(LCD_IS_BUSY());
LCD_DB_PORT=0xFF;
RW=0;
_nop_();
DI=1;
if(!Reverse_Display) //根據(jù)Reverse_Display決定是否反相顯示
LCD_DB_PORT=dat;
else
LCD_DB_PORT=~dat;
E=1;
_nop_();
E=0;
}
//---------------------------------------------------------------
// 初始化LCD
//--------------------------------------------------------------
void LCD12864_Initialization()
{
CS1=1;
CS2=1;
Write_Byte_To_LCD(0x38);
Write_Byte_To_LCD(0x0F);
Write_Byte_To_LCD(0x01);
Write_Byte_To_LCD(0x06);
Write_Byte_To_LCD(LCD_START_ROW);
}
//---------------------------------------------------------------
// 通用顯示函數(shù) 從第P頁(yè)第L列顯示W(wǎng)個(gè)字節(jié)數(shù)據(jù),具體顯示的數(shù)據(jù)在r所
//--------------------------------------------------------------
void LCD_Show(uchar P,uchar L,uchar W,uchar *r) reentrant
{
uchar i;
if(L<64)
{
CS1=1;
CS2=0;
Write_Byte_To_LCD(LCD_PAGE+P);
Write_Byte_To_LCD(LCD_COL+L);
if(L+W<64)
{
for(i=0;i<W;i++)
Write_Data_To_LCD(r[i]);
}
else
{
for(i=0;i<64-L;i++)
Write_Data_To_LCD(r[i]);
CS1=0;
CS2=1;
Write_Byte_To_LCD(LCD_PAGE+P);
Write_Byte_To_LCD(LCD_COL);
for(i=64-L;i<W;i++)
Write_Data_To_LCD(r[i]);
}
}
else
{
CS1=0;
CS2=1;
Write_Byte_To_LCD(LCD_PAGE+P);
Write_Byte_To_LCD(LCD_COL+L-64);
for(i=0;i<W;i++)
Write_Data_To_LCD(r[i]);
}
}
//---------------------------------------------------------------
// 顯示一個(gè)8×16點(diǎn)陣字符
//--------------------------------------------------------------
void Display_char(uchar P1,uchar L1,uchar *M) reentrant
{
LCD_Show(P1,L1,8,M);
LCD_Show(P1+1,L1,8,M+8);
}
//-------------------------------------------------------------------
// 顯示一個(gè)16×16點(diǎn)陣字符 (漢字上半部分與下半部分分別處在相鄰兩頁(yè)中)
//-------------------------------------------------------------------
void Display_Word(uchar P2,uchar L2,uchar *M) reentrant
{
LCD_Show(P2,L2,16,M);
LCD_Show(P2+1,L2,16,M+16);
}
復(fù)制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1