欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
12864液晶驅動資料 顯示圖形、文字的單片機源程序
[打印本頁]
作者:
safferia
時間:
2018-1-24 22:19
標題:
12864液晶驅動資料 顯示圖形、文字的單片機源程序
如題,12864液晶驅動資料,包括軟件程序和資料
LCD12864顯示圖形、文字(請使用keil uvision3或以上版本打開)
0.png
(46.53 KB, 下載次數: 59)
下載附件
2018-1-25 00:30 上傳
單片機源程序如下:
#include <reg51.h>
#include <intrins.h>
//#include <at89x51.h>
sbit LCD_RS=P1^0;//定義引腳
sbit LCD_RW=P1^1;
sbit LCD_E=P1^2;
sbit PSB =P3^6; //PSB腳為12864-12系列的串、并通訊功能切換,我們使用8位并行接口,PSB=1
#define LCD_Data P2
#define Busy 0x80 //用于檢測LCD狀態字中的Busy標識
void WriteDataLCD(unsigned char WDLCD);
void WriteCommandLCD(unsigned char WCLCD,BuysC);
unsigned char ReadDataLCD(void);
unsigned char ReadStatusLCD(void);
void LCDInit(void);
void LCDClear(void);
void LCDFlash(void);
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
void DisplayImage (unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
code unsigned char uctech[] = {"大雄電子營業部"};
code unsigned char net[] = {"ic2012*taobao*co"};
code unsigned char mcu[] = {"專業元件供應商!"};
code unsigned char qq[] = {" QQ: 571630059 "};
code unsigned char tmp[]={//128*64點陣圖形數據
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
…………限于本文篇幅 余下代碼請從51黑下載附件…………
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,};
void main(void)
{
Delay400Ms(); //啟動等待,等LCD講入工作狀態
LCDInit(); //LCM初始化
Delay5Ms(); //延時片刻(可不要)
while(1){
LCDClear();
DisplayImage(tmp);//顯示圖形
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
LCDClear();
DisplayListChar(0,1,uctech); //顯示字庫中的中文數字
DisplayListChar(0,2,net); //顯示字庫中的中文數字
DisplayListChar(0,3,mcu); //顯示字庫中的中文
DisplayListChar(0,4,qq); //顯示字庫中的中文數字
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
LCDFlash(); //閃爍效果
//}
}
}
//寫數據
void WriteDataLCD(unsigned char WDLCD)
{
ReadStatusLCD(); //檢測忙
LCD_RS = 1;
LCD_RW = 0;
LCD_Data = WDLCD;
LCD_E = 1;
LCD_E = 1;
LCD_E = 1;
LCD_E = 0;
}
//寫指令
void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC為0時忽略忙檢測
{
if (BuysC) ReadStatusLCD(); //根據需要檢測忙
LCD_RS = 0;
LCD_RW = 0;
LCD_Data = WCLCD;
LCD_E = 1;
LCD_E = 1;
LCD_E = 1;
LCD_E = 0;
}
//讀數據
unsigned char ReadDataLCD(void)
{
LCD_RS = 1;
LCD_RW = 1;
LCD_E = 0;
LCD_E = 0;
LCD_E = 1;
return(LCD_Data);
}
//讀狀態
unsigned char ReadStatusLCD(void)
{
LCD_Data = 0xFF;
LCD_RS = 0;
LCD_RW = 1;
LCD_E = 1;
while (LCD_Data & Busy); //檢測忙信號
LCD_E = 0;
return(LCD_Data);
}
void LCDInit(void) //LCM初始化
{
WriteCommandLCD(0x30,1); //顯示模式設置,開始要求每次檢測忙信號
WriteCommandLCD(0x01,1); //顯示清屏
WriteCommandLCD(0x06,1); // 顯示光標移動設置
WriteCommandLCD(0x0C,1); // 顯示開及光標設置
}
void LCDClear(void) //清屏
{
WriteCommandLCD(0x01,1); //顯示清屏
WriteCommandLCD(0x34,1); // 顯示光標移動設置
WriteCommandLCD(0x30,1); // 顯示開及光標設置
}
void LCDFlash(void) //閃爍效果
{
WriteCommandLCD(0x08,1); //顯示清屏
Delay400Ms();
WriteCommandLCD(0x0c,1); // 顯示開及光標設置
Delay400Ms();
WriteCommandLCD(0x08,1); //顯示清屏
Delay400Ms();
WriteCommandLCD(0x0c,1); // 顯示開及光標設置
Delay400Ms();
WriteCommandLCD(0x08,1); //顯示清屏
Delay400Ms();
}
//按指定位置顯示一個字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
if(Y<1)
Y=1;
if(Y>4)
Y=4;
X &= 0x0F; //限制X不能大于16,Y不能大于1
switch(Y){
case 1:X|=0X80;break;
case 2:X|=0X90;break;
case 3:X|=0X88;break;
case 4:X|=0X98;break;
}
WriteCommandLCD(X, 0); //這里不檢測忙信號,發送地址碼
WriteDataLCD(DData);
}
//按指定位置顯示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned char ListLength,X2;
ListLength = 0;
X2=X;
if(Y<1)
Y=1;
if(Y>4)
Y=4;
X &= 0x0F; //限制X不能大于16,Y在1-4之內
switch(Y){
case 1:X2|=0X80;break; //根據行數來選擇相應地址
case 2:X2|=0X90;break;
case 3:X2|=0X88;break;
case 4:X2|=0X98;break;
}
WriteCommandLCD(X2, 1); //發送地址碼
while (DData[ListLength]>=0x20) //若到達字串尾則退出
{
if (X <= 0x0F) //X坐標應小于0xF
{
WriteDataLCD(DData[ListLength]); //
ListLength++;
X++;
Delay5Ms();
}
}
}
//圖形顯示122*32
void DisplayImage (unsigned char code *DData){
unsigned char x,y,i;
unsigned int tmp=0;
for(i=0;i<9;){ //分兩屏,上半屏和下半屏,因為起始地址不同,需要分開
for(x=0;x<32;x++){ //32行
WriteCommandLCD(0x34,1);
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
12864說明書+例子程序.rar
(608.94 KB, 下載次數: 22)
2018-1-24 22:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
蘇夏雨
時間:
2018-1-25 11:58
這個不是淘寶買12864時送的資料么?
http://pan.baidu.com/s/1c2FB2FY
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1