专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
一个12864屏,不知如何辨认脚位,只有9根线。
2020-02-04 09:24
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
2385
24
24
一个12864屏,不知如何辨认脚位,只有9根线。
(原文件名:未命名12864.jpg)
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
nihao_x
1楼-- · 2020-02-07 01:42
我有一块 wgm-12864cog-41 ,点亮了.
/*===========================================================================
Filename: CP_LCD.C
Version : 2005-1-21
Note : WGM-12864COG-41 V3.0驱动程序
Hardware: XTAL=7.158MHz(3.579MHz倍频)
============================================================================*/
/*============================================================================
; WGM-12864COG-41 VER2.0 serial LCD dirver program
; author zhaofei,modification date 04-3-23
; copyright ningbo land communicatins equipment co.,ltd,2004-03
=============================================================================*/
#define LCD_GLOBAL
#include <stdarg.h>
#include "..incDotlib.h"
#include "..incconfig.h"
////0123456789012345
uint8 code EmptyTable[] = " ";
void Delay1us(uint8 n)
{
while(n--)
{
_nop_();
}
}
/*================================================================================
; func data serial out
; intern function
; call no
; called InitialLCD() InitialLCD1() ClearLCD() putHZ() PutASCII()
; modification author zhaofei modification date 04-03-11
=================================================================================*/
void lcd_wr(uint8 ComDatFlag,uint8 OutData)
{
uint8 j;
if(ComDatFlag)
{
LCDA0 = 1;
}
else
{
LCDA0 = 0;
}
for(j=0;j<8;j++)
{
LCDSCL = 0;
//Delay1us(1);
_nop_();
if((OutData&0x80)==0x80)
LCDSDA = 1;
else
LCDSDA = 0;
//Delay1us(1);
_nop_();
OutData<<=1;
LCDSCL = 1;
//Delay1us(2);
_nop_();
_nop_();
}
}
//void OpenLcdBackLight(void)
//{
// //Clr_Pin_X(PIN1,LEDON); //低电平点亮背光
// LEDON = 1;
// LcdBackLightOpenTime = LCD_BLIGHT_OPEN_TIME;
//}
//
//void CloseLcdBackLight(void)
//{
// //Set_Pin_X(PIN1,LEDON);
// LEDON = 0;
//}
void init_LCD(void)
{
LCDCS = 1;
// LCDRST = 1;
LCDA0 = 0;
LCDSCL = 1;
LCDSDA = 0;
OpenLcdBackLight();
//Clr_Pin_X(PIN1,LEDON);
// LcdBackLightOpenTime = 0xffff;
Delay1us(5);
// LCDRST = 0;
// Delay1ms(10);
// LCDRST = 1;
// Delay1ms(10);
LCDCS = 0;
// Delay10ms(1);
lcd_wr(LCD_COMMAND,0xA2); //置液晶显示驱动偏压比D0=0=1/9
lcd_wr(LCD_COMMAND,0xA0); //显示缓冲区地址与段输出对应关系D0=0=正常 =1=按Y轴反向//a0//a1
lcd_wr(LCD_COMMAND,0xC8); //置公共端输出扫描方向D3=0=正常 =1=按X轴反向 //c0//c
lcd_wr(LCD_COMMAND,0x2F); //打开供电电源
Delay1ms(5);
lcd_wr(LCD_COMMAND,0x25);// v5:Rb/Ra,20-27粗调,越小越淡
Delay1ms(5);
lcd_wr(LCD_COMMAND,0x81); //BIT2-BIT0=V5电压调节,选择内部电阻比例//25//23
ReadBytesFMEEPROM(LCDCONTRAST_Adds,1);
lcd_wr(LCD_COMMAND,EEPROMDataBuf[0]); //uLCDContrast); //V5=1,微调,越小越淡0-3f 0x30
Delay1ms(10);
lcd_wr(LCD_COMMAND,0xA4); //D0=0=正常显示/D0=1=全亮
lcd_wr(LCD_COMMAND,0xA6); //正显
lcd_wr(LCD_COMMAND,0xAF); //液晶显示开/关D0=1=开
lcd_wr(LCD_COMMAND,0x60); //GO 33 LINE
Delay1ms(5);
LCDCS = 1;
Delay1ms(5);
}
void SetLCDContrast( uchar n) //设置对比度
{
LCDCS = 1;
// LCDRST = 1;
Delay1us(5);
// LCDRST = 0;
// Delay1ms(10);
// LCDRST = 1;
// Delay1ms(10);
LCDCS = 0;
Delay1ms(10);
lcd_wr(LCD_COMMAND,0x81); //BIT2-BIT0=V5电压调节,选择内部电阻比例//25//23
if(n>0x3f) n = uLCDContrast;
lcd_wr(LCD_COMMAND,n); //V5=1,微调,越小越淡0-3f 0x30
Delay1ms(5);
LCDCS = 1;
Delay1ms(10);
}
void putASCII( int8 chASC, uint8 reserve )
{
/*该函数用来显示一个ASCII码字符*/
uint8 i;
uint16 ASC_index, MAXLEN;
if ( chASC == ' ' )
{
chCursorSiteNow_X = 0;
chCursorSiteNow_Y += 16;
if ( chCursorSiteNow_Y > Y_SIZE - 1 )
{
chCursorSiteNow_Y = 0;
}
return;
}
if ( chCursorSiteNow_X + 8 > X_SIZE ) //如果剩下的位置不够显示一个ASCII码字符,则换行
{
chCursorSiteNow_X = 0;
chCursorSiteNow_Y += 16;
if ( chCursorSiteNow_Y > Y_SIZE - 1 )
{
chCursorSiteNow_Y = 0;
}
}
MAXLEN = sizeof( ASCIITAB ) / sizeof( lattice8_16 );
for ( ASC_index = 0; ASC_index < MAXLEN; ++ASC_index )
{
if ( ASCIITAB[ ASC_index ].index[0] == chASC )
break;
}
if ( ASC_index < MAXLEN )
{
LCDCS = 0;
set_address( chCursorSiteNow_X, chCursorSiteNow_Y );
if ( reserve )
{
for ( i = 0; i < 8; i++ )
{
lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i ]^0xff );
}
}
else
{
for ( i = 0; i < 8; i++ )
{
lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i ] );
}
}
set_address( chCursorSiteNow_X, chCursorSiteNow_Y + 8 );
if ( reserve )
{
for ( i = 0; i < 8; i++, chCursorSiteNow_X++ )
{
lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i + 8 ]^0xff );
}
}
else
{
for ( i = 0; i < 8; i++, chCursorSiteNow_X++ )
{
lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i + 8 ] );
}
}
LCDCS = 1;
}
}
void putHZ( uint8 *str, uint8 reserve )
{
/*该函数用来显示一个汉字*/
uint8 iHZ_GB2312[ 2 ];
uint16 hz_index, MAXLEN;
uint8 i;
MAXLEN = sizeof( HZTAB ) / sizeo
加载中...
nihao_x
2楼-- · 2020-02-07 02:07
精彩回答 2 元偷偷看……
加载中...
角度361
3楼-- · 2020-02-07 05:59
mark,多谢分享
加载中...
sensitiveplant
4楼-- · 2020-02-07 11:39
Hamyou 发表于 2011-2-23 21:09
传一个这个屏的驱动,测试过,没问题
#ifndef __12864COG_H__
好强大!
加载中...
sensitiveplant
5楼-- · 2020-02-07 15:20
Hamyou 发表于 2011-2-23 21:09
传一个这个屏的驱动,测试过,没问题
#ifndef __12864COG_H__
很好很强大。
www.360suos.com
加载中...
上一页
1
2
3
4
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
东软载波ESF0654 PDS开发板串口USART0代码分享
1 个回答
普通32位单片机使用linux的应用代码
5 个回答
东软载波ESF0654 PDS开发板AT24C04的调试
9 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
/*===========================================================================
Filename: CP_LCD.C
Version : 2005-1-21
Note : WGM-12864COG-41 V3.0驱动程序
Hardware: XTAL=7.158MHz(3.579MHz倍频)
============================================================================*/
/*============================================================================
; WGM-12864COG-41 VER2.0 serial LCD dirver program
; author zhaofei,modification date 04-3-23
; copyright ningbo land communicatins equipment co.,ltd,2004-03
=============================================================================*/
#define LCD_GLOBAL
#include <stdarg.h>
#include "..incDotlib.h"
#include "..incconfig.h"
////0123456789012345
uint8 code EmptyTable[] = " ";
void Delay1us(uint8 n)
{
while(n--)
{
_nop_();
}
}
/*================================================================================
; func data serial out
; intern function
; call no
; called InitialLCD() InitialLCD1() ClearLCD() putHZ() PutASCII()
; modification author zhaofei modification date 04-03-11
=================================================================================*/
void lcd_wr(uint8 ComDatFlag,uint8 OutData)
{
uint8 j;
if(ComDatFlag)
{
LCDA0 = 1;
}
else
{
LCDA0 = 0;
}
for(j=0;j<8;j++)
{
LCDSCL = 0;
//Delay1us(1);
_nop_();
if((OutData&0x80)==0x80)
LCDSDA = 1;
else
LCDSDA = 0;
//Delay1us(1);
_nop_();
OutData<<=1;
LCDSCL = 1;
//Delay1us(2);
_nop_();
_nop_();
}
}
//void OpenLcdBackLight(void)
//{
// //Clr_Pin_X(PIN1,LEDON); //低电平点亮背光
// LEDON = 1;
// LcdBackLightOpenTime = LCD_BLIGHT_OPEN_TIME;
//}
//
//void CloseLcdBackLight(void)
//{
// //Set_Pin_X(PIN1,LEDON);
// LEDON = 0;
//}
void init_LCD(void)
{
LCDCS = 1;
// LCDRST = 1;
LCDA0 = 0;
LCDSCL = 1;
LCDSDA = 0;
OpenLcdBackLight();
//Clr_Pin_X(PIN1,LEDON);
// LcdBackLightOpenTime = 0xffff;
Delay1us(5);
// LCDRST = 0;
// Delay1ms(10);
// LCDRST = 1;
// Delay1ms(10);
LCDCS = 0;
// Delay10ms(1);
lcd_wr(LCD_COMMAND,0xA2); //置液晶显示驱动偏压比D0=0=1/9
lcd_wr(LCD_COMMAND,0xA0); //显示缓冲区地址与段输出对应关系D0=0=正常 =1=按Y轴反向//a0//a1
lcd_wr(LCD_COMMAND,0xC8); //置公共端输出扫描方向D3=0=正常 =1=按X轴反向 //c0//c
lcd_wr(LCD_COMMAND,0x2F); //打开供电电源
Delay1ms(5);
lcd_wr(LCD_COMMAND,0x25);// v5:Rb/Ra,20-27粗调,越小越淡
Delay1ms(5);
lcd_wr(LCD_COMMAND,0x81); //BIT2-BIT0=V5电压调节,选择内部电阻比例//25//23
ReadBytesFMEEPROM(LCDCONTRAST_Adds,1);
lcd_wr(LCD_COMMAND,EEPROMDataBuf[0]); //uLCDContrast); //V5=1,微调,越小越淡0-3f 0x30
Delay1ms(10);
lcd_wr(LCD_COMMAND,0xA4); //D0=0=正常显示/D0=1=全亮
lcd_wr(LCD_COMMAND,0xA6); //正显
lcd_wr(LCD_COMMAND,0xAF); //液晶显示开/关D0=1=开
lcd_wr(LCD_COMMAND,0x60); //GO 33 LINE
Delay1ms(5);
LCDCS = 1;
Delay1ms(5);
}
void SetLCDContrast( uchar n) //设置对比度
{
LCDCS = 1;
// LCDRST = 1;
Delay1us(5);
// LCDRST = 0;
// Delay1ms(10);
// LCDRST = 1;
// Delay1ms(10);
LCDCS = 0;
Delay1ms(10);
lcd_wr(LCD_COMMAND,0x81); //BIT2-BIT0=V5电压调节,选择内部电阻比例//25//23
if(n>0x3f) n = uLCDContrast;
lcd_wr(LCD_COMMAND,n); //V5=1,微调,越小越淡0-3f 0x30
Delay1ms(5);
LCDCS = 1;
Delay1ms(10);
}
void putASCII( int8 chASC, uint8 reserve )
{
/*该函数用来显示一个ASCII码字符*/
uint8 i;
uint16 ASC_index, MAXLEN;
if ( chASC == ' ' )
{
chCursorSiteNow_X = 0;
chCursorSiteNow_Y += 16;
if ( chCursorSiteNow_Y > Y_SIZE - 1 )
{
chCursorSiteNow_Y = 0;
}
return;
}
if ( chCursorSiteNow_X + 8 > X_SIZE ) //如果剩下的位置不够显示一个ASCII码字符,则换行
{
chCursorSiteNow_X = 0;
chCursorSiteNow_Y += 16;
if ( chCursorSiteNow_Y > Y_SIZE - 1 )
{
chCursorSiteNow_Y = 0;
}
}
MAXLEN = sizeof( ASCIITAB ) / sizeof( lattice8_16 );
for ( ASC_index = 0; ASC_index < MAXLEN; ++ASC_index )
{
if ( ASCIITAB[ ASC_index ].index[0] == chASC )
break;
}
if ( ASC_index < MAXLEN )
{
LCDCS = 0;
set_address( chCursorSiteNow_X, chCursorSiteNow_Y );
if ( reserve )
{
for ( i = 0; i < 8; i++ )
{
lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i ]^0xff );
}
}
else
{
for ( i = 0; i < 8; i++ )
{
lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i ] );
}
}
set_address( chCursorSiteNow_X, chCursorSiteNow_Y + 8 );
if ( reserve )
{
for ( i = 0; i < 8; i++, chCursorSiteNow_X++ )
{
lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i + 8 ]^0xff );
}
}
else
{
for ( i = 0; i < 8; i++, chCursorSiteNow_X++ )
{
lcd_wr( LCD_DATA, ASCIITAB[ ASC_index ].TABLE[ i + 8 ] );
}
}
LCDCS = 1;
}
}
void putHZ( uint8 *str, uint8 reserve )
{
/*该函数用来显示一个汉字*/
uint8 iHZ_GB2312[ 2 ];
uint16 hz_index, MAXLEN;
uint8 i;
MAXLEN = sizeof( HZTAB ) / sizeo
好强大!
很好很强大。
www.360suos.com
一周热门 更多>