久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
驅動內核為LGM12641BS1R和AMPIRE128X64顯示程序
[打印本頁]
作者:
51黑ff
時間:
2016-9-11 23:45
標題:
驅動內核為LGM12641BS1R和AMPIRE128X64顯示程序
0.png
(68.02 KB, 下載次數: 65)
下載附件
2016-9-11 23:44 上傳
LGM12641BS1R.rar
(2.5 KB, 下載次數: 53)
2016-9-11 23:44 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
/*
文件:LCD12864顯示
作者:孫濤
備注:驅動內核為LGM12641BS1R和AMPIRE128X64
*/
#include "LGM12641BS1R.h"
#include <string.h>
#include "DB.h"
//函數:LCD_Delay()
//描述:液晶延時
//參數:T延時系數
static void LCD_Delay(unsigned int T)
{
while(T--);
}
//函數:LCD_Check_Busy()
//描述:忙檢
//參數:無
static void LCD_Check_Busy(void)
{
unsigned char LCB_Busy_Flag = 0, i = 0;
for(i=250; i>0; i--)
{
LCD_E_0; _nop_();_nop_();
LCD_DI_0; _nop_();_nop_();
LCD_RW_1; _nop_();_nop_();
LCD_DB = 0xFF;
LCD_E_1; _nop_();_nop_();
LCD_Delay(LCD_Wait_Data);
LCB_Busy_Flag = LCD_DB;
LCD_E_0; _nop_();_nop_();
if((LCB_Busy_Flag & 0x80) == 0) break; //BIT7:BUSY BIT5:ON/OFF BIT4:RESET
}
}
//函數:LCD_Write()
//描述:寫數據,寫命令
//參數:Write_CorD 命令數據
// L 左屏
// R 右屏
// Data 寫入值
static void LCD_Write(unsigned char Write_CorD, unsigned char L, unsigned char R, unsigned char Data)
{
LCD_Check_Busy();
LCD_CS1 = R;LCD_CS2 = L;
LCD_E_0;
if(Write_CorD == 1) LCD_DI_1;
else LCD_DI_0;
LCD_RW_0; _nop_();_nop_();
LCD_DB = Data; _nop_();_nop_();
LCD_E_1; _nop_();_nop_();
LCD_Delay(LCD_Wait_Data);
LCD_E_0; _nop_();_nop_();
}
//函數:LCD_Setpage()
//描述:設置頁
//參數:Page 頁
static void LCD_Setpage(unsigned char Page)
{
LCD_Write(LCD_Write_CMD,1,1,Page & 0x07 | Set_Page_CMD);
}
//函數:LCD_Setcolumn()
//描述:設置行
//參數:Column 列
static void LCD_Setcolumn(unsigned char Column)
{
LCD_Write(LCD_Write_CMD,1,1,Column & 0x3F | Set_Column_CMD);
}
//函數:Set_Coordinate()
//描述:設定顯示坐標
//參數:Page 頁
// Colunm 列
static void Set_Coordinate(unsigned char Page, unsigned char Column)
{
LCD_Setpage(Page); LCD_Setcolumn(Column);
}
//函數:LCD_Row()
//描述:設置行
//參數:Row 行
void LCD_Setrow(unsigned char Row)
{
LCD_Write(LCD_Write_CMD, 1, 1, Row & 0x3f | Set_Start_Row_CMD);
}
//函數:Display_ON()
//描述:顯示器開關
//參數:OpenorDown 開關命令
void Display_ON(unsigned char OpenorDown)
{
LCD_Write(LCD_Write_CMD,1,1,OpenorDown & 0x01 | Set_Display_ON_Down_CMD);
}
//函數:LCD_Reset()
//描述:液晶復位
//參數:無
void LCD_Reset(void)
{
Reset = 0; LCD_Delay(20); Reset = 1; LCD_Delay(20);
}
//函數:LCD_Clear_Screen()
//描述:液晶清屏
//參數:無
void LCD_Clear_Screen(void)
{
unsigned char page_temp, column_temp;
for(page_temp = 0xb8; page_temp < 0xc0; page_temp++)
{
LCD_Write(LCD_Write_CMD,1,1,page_temp);
LCD_Write(LCD_Write_CMD,1,1,0x40);
for(column_temp = 0; column_temp < 64; column_temp++)
{
LCD_Write(LCD_Write_Data,1,1,0x00);
}
}
}
//函數:Disp_Half_Char()
//描述:寫半個字符
//參數:Page 頁
// Column 列
// Data 數據
void Display_Half_Char(unsigned char Page, unsigned char Column, unsigned char Date)
{
if(Column<64)
{
Set_Coordinate(Page, Column);LCD_Write(LCD_Write_Data,0,1,Date);
}
else
{
Set_Coordinate(Page, Column-64);LCD_Write(LCD_Write_Data,1,0,Date);
}
}
//函數:Display_Char()
//描述:寫半個字符
//參數:Invert_Flag 黑白反選標志
// Page 頁
// Column 列
// Data 數據
void Display_Char(unsigned char Invert_Flag, unsigned char Page,
unsigned char Column, unsigned char Num)
{
unsigned char num_temp,date_temp;
for(num_temp = 0; num_temp < 8; num_temp++)
{
date_temp = LGM_AMP_char[Num][2*num_temp];
if(Invert_Flag)
date_temp = 255 - date_temp;
Display_Half_Char(Page * 2, Column * 8 + num_temp, date_temp);
date_temp = LGM_AMP_char[Num][2*num_temp+1];
if(Invert_Flag)
date_temp = 255 - date_temp;
Display_Half_Char(Page * 2 + 1, Column * 8 + num_temp, date_temp);
}
}
//函數:Display_Ascii_Chinese()
//描述:寫半個字符
//參數:Invert_Flag 黑白反選標志
// Page 頁
// Column 列
// p 數據
unsigned char Display_Ascii_Chinese(unsigned char Invert_Flag, unsigned char Page,
unsigned char Column, char *p)
{
unsigned char i = 0, j, z;
unsigned char HZ_ku_length,CHAR_ku_length,display_length;
char data_temp_0,data_temp_1;
unsigned char display_data_buf = 0;
HZ_ku_length = sizeof(HZ_16_16)/sizeof(HZ_16_16[0]);
CHAR_ku_length = sizeof(CHAR_8_16)/sizeof(CHAR_8_16[0]);
display_length = strlen(p);
while(i < display_length)
{
data_temp_0 = p[i]; data_temp_1 = p[i+1];
if(data_temp_0 >= 0)
{
for(j=0;j<CHAR_ku_length;j++)
{
if( (data_temp_0 == CHAR_8_16[j].Index)) break;
}
for(z = 0; z < 8; z++)
{
display_data_buf = CHAR_8_16[j].CHAR_Code[2*z];
if(Invert_Flag) display_data_buf = 255 - display_data_buf;
Display_Half_Char(Page * 2, Column*8 + z, display_data_buf);
display_data_buf = CHAR_8_16[j].CHAR_Code[2*z+1];
if(Invert_Flag) display_data_buf = 255 - display_data_buf;
Display_Half_Char(Page * 2 + 1, Column*8 + z, display_data_buf);
}
Column+=1;
}
else
{
for(j=0;j<HZ_ku_length;j++)
{
if( (data_temp_0 == HZ_16_16[j].Index[0]) && (data_temp_1 == HZ_16_16[j].Index[1]) ) break;
}
for(z = 0; z < 16; z++)
{
display_data_buf = HZ_16_16[j].HZ_Code[2*z];
if(Invert_Flag) display_data_buf = 255 - display_data_buf;
Display_Half_Char(Page*2, Column*8 + z, display_data_buf);
display_data_buf = HZ_16_16[j].HZ_Code[2*z+1];
if(Invert_Flag) display_data_buf = 255 - display_data_buf;
Display_Half_Char(Page*2+1, Column*8 + z, display_data_buf);
}
Column+=2; i++;
}
i++;
}
return display_length;
}
//函數:Disp_Picture()
//描述:寫半個字符
//參數:Invert_Flag 黑白反選標志
// Page 頁
// Column 列
// Data 數據
void Disp_Picture(unsigned char Invert_Flag)
{
unsigned int i;
unsigned char date_temp;
for(i=0;i<512;i++)
{
date_temp = tupian[2*i];
if(Invert_Flag) date_temp = 255 - date_temp;
Display_Half_Char(i%4*2, i/4, date_temp);
date_temp = tupian[2*i + 1];
if(Invert_Flag) date_temp = 255 - date_temp;
Display_Half_Char(i%4*2+1, i/4, date_temp);
}
}
//函數:LCD_Init()
//描述:液晶初始化
//參數:無
void LCD_Init(void)
{
unsigned char column_temp, page_temp;
LCD_Reset();
Display_ON(0);
for(page_temp=0; page_temp<8; page_temp++)
{
for(column_temp=0; column_temp<128; column_temp++)
Display_Half_Char(column_temp, page_temp, 0);
}
Display_ON(1);
LCD_Clear_Screen();
}
復制代碼
#include <at89x52.h>
#include <intrins.h>
#ifndef _LGM12641BS1R_H_
#define _LGM12641BS1R_H_
sbit LCD_DI = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_E = P2^2;
sbit LCD_CS1 = P2^3;
sbit LCD_CS2 = P2^4;
sbit Reset = P3^2;
#define LCD_DI_1 LCD_DI = 1
#define LCD_DI_0 LCD_DI = 0
#define LCD_RW_1 LCD_RW = 1
#define LCD_RW_0 LCD_RW = 0
#define LCD_E_1 LCD_E = 1
#define LCD_E_0 LCD_E = 0
#define LCD_LED_1 LCD_LED = 1
#define LCD_LED_0 LCD_LED = 0
#define LCD_DB P0
//數據建立延時
#define LCD_Wait_Data 6
//命令、數據
#define LCD_Write_CMD 0
#define LCD_Write_Data 1
void LCD_Setrow(unsigned char Row);
void Display_ON(unsigned char OpenorDown);
void LCD_Reset(void);
void LCD_Clear_Screen(void);
void Display_Half_Char(unsigned char DHC_Page, unsigned char Column, unsigned char Date);
void Disp_Picture(unsigned char Invert_Flag);
void Display_Char(unsigned char Invert_Flag, unsigned char Page,
unsigned char Column, unsigned char Num);
unsigned char Display_Ascii_Chinese(unsigned char Invert_Flag, unsigned char Page,
unsigned char Column, char *p);
void LCD_Init(void);
// 顯示開關
#define Set_Display_ON_Down_CMD 0x3E
// 起始行
#define Set_Start_Row_CMD 0xC0
// 頁設置
#define Set_Page_CMD 0xB8
// 列設置
#define Set_Column_CMD 0x40
#endif
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
伊人青青久久
|
a精品视频
|
福利一区视频
|
国产精品一区二区不卡
|
免费中文字幕
|
欧美日本在线
|
99re视频
|
国产精品毛片
|
久久久久久亚洲精品
|
日韩成人免费中文字幕
|
九九亚洲
|
91偷拍精品一区二区三区
|
欧美片网站免费
|
亚洲av一级毛片
|
久久久久久久综合
|
午夜成人免费视频
|
五月天天色
|
一级毛片观看
|
国产高清精品一区二区三区
|
亚洲国产精品一区二区久久
|
亚洲天天
|
国产精品无码专区在线观看
|
91av国产在线视频
|
久久91精品久久久久久9鸭
|
免费观看www7722午夜电影
|
看羞羞视频免费
|
国产精品永久
|
黄色大片免费播放
|
亚洲视频免费在线观看
|
精品无码久久久久久国产
|
国产亚洲一区在线
|
国产成人精品一区二区三区四区
|
麻豆国产一区二区三区四区
|
91精品国产欧美一区二区
|
99精品99久久久久久宅男
|
久久亚洲精品视频
|
欧美亚洲第一区
|
日本 欧美 国产
|
国产视频精品免费
|
国产一区二区中文字幕
|
狠狠涩
|