本资料提供TM1621芯片的参考代码程序,详细介绍了其驱动显示管脚的操作方法及应用场景,适用于电子工程师和硬件开发人员。
```
/* 版权信息:深圳天微电子有限公司 */
/* 文件名:TM1621-V1.0 */
/* 当前版本:V1.0 */
/* MCU 型号:STC12C5608AD */
/* 开发环境:Keil uVision4 */
/* 晶振频率:11.0592MHz * 完成日期:2013-08-07 */
/* 程序功能:LCD驱动,显示字符 0~F */
#ifndef __TM1621_H__
#define __TM1621_H__
#include
#include intrins.h
typedef unsigned char uchar;
typedef unsigned int uint;
#define nop _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
/* TM1621模块命令定义 */
#define SYSDIS 0x00 // 关闭系统振荡器和LCD偏压发生器
#define SYSEN 0x02 // 打开系统振荡器
#define LCDOFF 0x04 // 关闭LCD偏压
#define LCDON 0x06 // 开启LCD偏压
#define TONEON 0x12 // 开启声音输出
#define TONEOFF 0x10 // 关闭声音输出
#define XTAL 0x28 // 外部接晶振
#define RC 0x30 // 内部RC振荡
#define BIAS 0x52 // 1/3偏压,4公共口
#define WDTDIS 0x0a // 禁止看门狗
#define WDTEN 0x0e // 开启看门狗
/* 定义控制端口 */
sbit CS = P2^1;
sbit READ = P2^7;
sbit WRITE = P2^0;
sbit DATA = P1^7;
/* 数据定义 */
uchar code Smg[16] = { 0xeb,0x60,0xc7,0xE5,0x6C,0xAD,
0xaf,0xE0,0xef,0xed,0xee,
0x2f, 8b , 67 , 8f , 8e }; // 字型码
uchar code Tab0[16] = { 0x0 } ; // 清屏
/* 延时函数 */
void delay_nms(uint n);
/* 数据写入函数 */
void Write_Data_H(uchar Data, uchar Cnt);
void Write_Data_L(uchar Data, uchar Cnt);
void WriteCmd(uchar Cmd);
void WriteOneData(uchar Addr, uchar Data);
void WriteAllData(uchar Addr , uchar *p , uint cnt);
/* TM1621初始化 */
void TM1621_init(void);
#endif
#include TM1621.h
// 实现函数
void delay_nms(uint n) {
while(n-- > 0)
;
}
void Write_Data_H(uchar Data, uchar Cnt) {
// 写入高位数据的实现代码
}
void Write_Data_L(uchar Data, uchar Cnt) {
// 写入低位数据的实现代码
}
void WriteCmd(uchar Cmd){
WRITE = 0;
CS = 0;
DATA = Cmd;
nop();
CS = 1;
}
void WriteOneData(uchar Addr , uchar Data ) {
WRITE = 0 ;
CS = 0 ;
DATA = (Addr<<2) | ((Data>>4)&3);
NOP();
DATA &= ~((~DATA)<<8); //写入数据高四位
NOP();
DATA |= (Data & 15 );
nop();
WRITE=1;
}
void WriteAllData(uchar Addr , uchar *p, uint cnt) {
CS = 0 ;
while(cnt-- > 0)
WriteOneData(Addr++,*p++);
}
// 主函数
void main(){
TM1621_init();
delay_nms(1);
//LCD不显示
WriteAllData(0,Tab0 , 16);
while (true){
// LCD 显示 0~F
WriteAllData(0, Smg, 16);
delay_nms(200) ;
// LCD 不显示
WriteAllData(0 , Tab0 , 16);
delay_nms(200);
}
}
```
这段代码实现了一个基于STC12C5608AD单片机的TM1621模块LCD驱动程序,