資源簡介
大海橡樹LCD12864程序包,包括了PROTUES仿真,帶字庫和不帶字庫LCD程序,包含了畫點,畫線,畫圖介紹
代碼片段和文件信息
/*****http://hi.baidu.com/echoas********
程序:MCS-51驅動LCD12864液晶
內容:LCD12864顯示正弦曲線
編譯器:keil?uVision3
開發板:Proteus仿真圖
作者:大海橡樹
整理日期:2011-01-28
修改:無?
備注:有什么錯誤的地方,歡迎網友們到空間留言
O(∩_∩)O~
******http://hi.baidu.com/echoas*********/?
#include?
#include?
#include
#include“ZB.h“
#define?uchar?unsigned?char
#define?uint??unsigned?int
#define?LCD_databus?P0?//LCD12864的8位數據口
sbit?RS=P2^2;? //RS為0---命令;1----數據?
sbit?RW=P2^1;? //RW為1---寫;0---讀?
sbit?EN=P2^0;? //使能端?
sbit?CS1=P2^4;? //片選1低電平有效,控制左半屏?
sbit?CS2=P2^3;? //片選1低電平有效,控制右半屏?
void?Read_busy()//讀“忙”函數-----數據線的最高位DB71則busy
{
P0=0x00;
??? RS=0;??
??? RW=1;?
EN=1;
while(P0?&?0x80);
EN=0;
}
void?write_LCD_command(uchar?value) //寫命令函數?
{
???Read_busy(); //對LCD的每次讀寫都要讀忙?
???RS=0; ? //選擇命令?
???RW=0;? //讀操作?
???LCD_databus=value;
???EN=1; //EN由1----0鎖存有效數據?
???_nop_();
???_nop_();?
???EN=0;
}
void?write_LCD_data(uchar?value)//寫數據函數
{
???Read_busy();
???RS=1;? //選擇數據?
???RW=0;
???LCD_databus=value;
???EN=1; //EN由1----0鎖存有效數據?
???_nop_();
???_nop_();
???EN=0;
}
uchar?Read_LCD(void) //讀數據函數?
{
uchar?value;
Read_busy();
LCD_databus=0xFF; //先進行一次空讀操作?
RS=1;
RW=1;
EN=1;
_nop_();
_nop_();
EN=0;
LCD_databus=0xFF; //讀取真正的數據?
RS=1;
RW=1;
EN=1;
value=LCD_databus;
_nop_();
_nop_();
EN=0;
return?value;?
}
void?Set_page(uchar?page) //設置“頁”LCD12864共8頁,一頁是8行點陣點
{
??page=0xb8|page;? //頁的首地址為0xB8
??write_LCD_command(page);
}
void?Set_line(uchar?startline)??//設置顯示的起始行 ???
{
??startline=0xC0|startline;?????//起始行地址為0xC0?
??write_LCD_command(startline);?//設置從哪行開始:共0--63;一般從0?行開始顯示
}
void?Set_column(uchar?column) //設置顯示的列
{
??column=column?&0x3f;? //列的最大值為64
??column=?0x40|column;? //列的首地址為0x40?
??write_LCD_command(column); //規定顯示的列的位置?
}
void?SetOnOff(uchar?onoff) //顯示開關函數:0x3E是關顯示,0x3F是開顯示???
{
onoff=0x3e|onoff;? //onoff:1---開顯示;0---關顯示
write_LCD_command(onoff);
}
void?SelectScreen(uchar?screen) //選擇屏幕?
{? ?
???switch(screen)
???{?
??? ?case?0:?CS1=0;CS2=0;break;?//全屏?????
?????case?1:?CS1=0;CS2=1;break;//左半屏????????
?????case?2:?CS1=1;CS2=0;break;//右半屏???????
?????default:break;?
???}
}
void?ClearScreen(uchar?screen) //清屏函數??
{?
?????uchar?ij;
?????SelectScreen(screen); //0--全屏;1---左半屏;2---右半屏?
?for(i=0;i<8;i++) ? //控制頁數0-7,共8頁
?{
????????Set_page(i);
Set_column(0);
?????? for(j=0;j<64;j++) ???//控制列數0-63,共64列
?? {
??????????write_LCD_data(0x00);?//寫入0,地址指針自加1?
?????? }
?????} ?
}
void?InitLCD()? //LCD的初始化??
{?
SetOnOff(1);? //開顯示
SelectScreen(0);
ClearScreen(0); //清屏
Set_line(0);? //開始行:0
}
void?Draw_dots(uchar?xuchar?yuchar?color)
{
uchar?x_byte;
uchar?x_bit;?
uchar?Temp_data; //暫時存放從LCD讀出的數據?
x_byte=(y>>3);?? //計算出該點屬于哪個字節?
x_bit=y-(x_byte<<3); //屬于字節的哪一位?
if(x>63) //x>63則顯示在右半屏?
{
SelectScree
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1024027??2010-12-08?13:21??LCD12864程序包\12864點陣型液晶顯示屏的基本原理與使用方法(很詳細).pdf
?????文件????8902610??2011-04-09?23:50??LCD12864程序包\LCD12864液晶的使用_大海橡樹.pdf
?????文件????1085090??2010-12-11?10:20??LCD12864程序包\Proteus_12864程序包\KS0108LCD控制器說明.pdf
?????文件????????830??2011-01-28?13:18??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\12848坐標.BMP
?????文件??????17654??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864
?????文件???????9340??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864.hex
?????文件?????????44??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864.lnp
?????文件??????19529??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864.M51
?????文件???????1115??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864.Opt
?????文件???????1626??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864.plg
?????文件???????2105??2011-01-28?14:48??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864.Uv2
?????文件???????1126??2012-05-08?23:33??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864_Opt.Bak
?????文件??????????0??2011-01-28?12:26??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\LCD12864_Uv2.Bak
?????文件???????5297??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\main.c
?????文件??????12174??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\main.LST
?????文件??????18037??2012-05-08?23:39??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\main.OBJ
?????文件???????6295??2011-01-28?13:45??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\code\ZB.h
?????文件??????87459??2011-01-28?19:44??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\Last?Loaded?LCD12864_正弦曲線.DBK
?????文件??????87459??2011-01-28?19:44??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\LCD12864_正弦曲線.DSN
?????文件???????1054??2012-05-08?23:37??LCD12864程序包\Proteus_12864程序包\LCD12864正弦波形\LCD12864_正弦曲線.PWI
?????文件??????26789??2012-05-08?23:40??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864
?????文件??????13254??2012-05-08?23:40??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864.hex
?????文件?????????44??2012-05-08?23:40??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864.lnp
?????文件??????27502??2012-05-08?23:40??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864.M51
?????文件???????1320??2012-05-08?23:57??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864.Opt
?????文件????????190??2012-05-08?23:57??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864.plg
?????文件???????2105??2011-01-28?19:19??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864.Uv2
?????文件???????1318??2012-05-08?23:40??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864_Opt.Bak
?????文件??????????0??2011-01-28?15:37??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\LCD12864_Uv2.Bak
?????文件???????8114??2012-05-08?23:40??LCD12864程序包\Proteus_12864程序包\LCD12864綜合顯示\code\main.c
............此處省略215個文件信息
評論
共有 條評論