特性描述
TM1621D是56点、内存映象和多功能的LCD驱动器,TM1621D的软件配置特性使它适用于多种LCD应用场合,包括LCD模块和显示子系统。主控制器和TM1621D的通讯时序简单,TM1621D还有一个节电命令用于降低系统功耗。
功能特点
工作电压2.4~ 5.2V
内嵌256KHz RC 振荡器
可选1/2或1/3偏压和1/2、1/3或1/4的占空比
片内时基频率源
节电命令可用于减少功耗
一个14x4的LCD 驱动器
一个内嵌的14x4位显示RAM 内存
三线串行接口
片内LCD驱动频率源
软件配置特征
数据模式和命令模式指令
两种数据访问模式
提供VLCD管脚用于调整LCD操作电压
封装形式:SOP24
TM1621D引脚图:
TM1621D管脚功能定义:
TM1621D的pdf规格书:
*MCU 型号:STC12C5608AD
*开发环境:Keil uVision4
*晶震频率:11.0592MHZ
*完成日期:2013-08-07
*程序功能:1.LCD驱动:LCD屏所接SEG显示0~5
*免责声明:1.此程序为TM1621D驱动LCD演示程序,仅作参考之用。
2.如有直接使用本例程程序造成经济损失的,本公司不承担任何责任
********************************************************************************/
#include <reg52.h> //MCU头文件
#include "intrins.h" //包含nop指令头文件
#define uchar unsigned char //数据类型宏定义
#define uint unsigned int //数据类型宏定义
#define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); //宏定义
/******************TM1621D模块命令定义*********************/
#define SYSDIS 0x00 //关系统振荡器和LCD偏压发生器
#define SYSEN 0x02 //打开系统振荡器
#define LCDOFF 0x04 //关LCD偏压
#define LCDON 0x06 //开LCD偏压
#define RC 0x30 //内部RC振荡
#define BIAS 0x52 //1/3偏压 4公共口
/********************定义控制端口**********************/
sbit CS=P2^1;
sbit WRITE=P2^0;
sbit DATA=P1^7;
/********************定义数据*************************/
uchar code Smg[16]={0xeb,0x60,0xc7,0xE5,0x6C,0xAD,0xaf,0xE0,0xef,0xed,0xee,0x2f,0x8b,0x67,0x8f,0x8e}; //0~F字型码
uchar code Tab0[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //清屏
/********************延时函数*************************/
void delay_nms(uint n)
{
uint i;
while(n--)
for(i=0;i<500;i++);
}
/********************从高位写入数据*************************/
void Write_Data_H(uchar Data, uchar Cnt) //Data的高cnt位写入TM1621D,高位在前
{
uchar i;
for(i=0;i<Cnt;i++)
{
WRITE=0;
if(Data&0x80) //从最高位发送
DATA=1;
else
DATA=0;
nop;
nop;
WRITE=1;
Data<<=1;
}
WRITE=0;
DATA=0;
}
/********************从低位写入数据*************************/
void Write_Data_L(uchar Data,uchar Cnt) //Data 的低cnt位写入TM1621D,低位在前
{
unsigned char i;
for(i=0;i<Cnt;i++)
{
WRITE=0;
if(Data&0x01) //从低位发送
DATA=1;
else
DATA=0;
nop;
nop;
WRITE=1;
Data>>=1;
}
WRITE=0;
DATA=0;
}
/********************写入控制命令*************************/
void WriteCmd(uchar Cmd)
{
CS=0;
nop;
Write_Data_H(0x80,4); //写入命令标志100
Write_Data_H(Cmd,8); //写入命令数据
CS=1;
nop;
}
/*********指定地址写入数据,实际写入后4位************/
void WriteOneData(uchar Addr, uchar Data)
{
CS=0;
Write_Data_H(0xa0,3); //写入数据标志101
Write_Data_H(Addr<<2,6); //写入地址数据
Write_Data_L(Data,4); //写入数据
CS=1;
nop;
}
/*********连续写入方式,每次数据为8位,写入数据************/
void WriteAllData(uchar Addr,uchar *p,uchar cnt)
{
uchar i;
CS=0;
Write_Data_H(0xa0,3); //写入数据标志101
Write_Data_H(Addr<<2,6); //写入地址数据
for(i=0;i<cnt;i++) //写入数据
{
Write_Data_L(*p,8);
p++;
}
CS=1;
nop;
}
/*******************TM1621D初始化**********************/
void TM1621D_init()
{
CS=1;
WRITE=1;
DATA=1;
nop;
delay_nms(1);
WriteCmd(BIAS); //1/3偏压 4公共口
WriteCmd(RC); //内部RC振荡
WriteCmd(SYSDIS); //关系统振荡器和LCD偏压发生器
WriteCmd(SYSEN); //打开系统振荡器
WriteCmd(LCDON); //开LCD偏压
}
void main()
{
TM1621D_init(); //开机初始化
delay_nms(1);
WriteAllData(0,Tab0,16); //LCD清显存
while(1)
{
WriteAllData(0x0a,Smg,6); //LCD SEG10到SEG21显示0~5
}
}
完整的pdf格式文档51黑下载地址:
TM1621D_V1.0代替vk1056b.pdf
(353.49 KB, 下载次数: 169)
|