注:本程序使用华大半导体HC32L13X系列单片机。Cortex-M0 plus内核

Tm1729.h

#ifndef _TM1729_HPP_
#define _TM1729_HPP_typedef unsigned char uint8_t;extern void tm1729_init(void);
extern void tm1729_disp(uint8_t* p, uint8_t size);#endif

Tm1729.c

#include "Tm1729.h"
#include "gpio.h"
#include "ddl.h"#define nop() delay10us(1); // 十微秒延时。根据Tm1729官方手册说明,最小需要时间间隔在2.5us,\
所以实际上大于3us的延时都可以// 指令集
#define SLAVE_ADDRESS     0x7C           // 从机地址
#define ICSET             0xEA           // 1110 1010 软复位,内部时钟
#define BLKCTL            0xF0           // 1111 0000 闪烁控制命令:不闪烁
#define DISCTL            0xA2           // FR=Normal,SR=Normal,Line翻转
#define MODESET           0xC8           // 显示开启,1/3偏压
#define APCTL             0xFC           // 全屏控制命令:Normal
#define ADSET             0x00           // 初始地址设置// 此处为单片机接到Tm1729的管脚配置,本程序采用软件模拟IIC。
#define SDA_SET Gpio_WriteOutputIO(GpioPortD, GpioPin7, TRUE) //拉高
#define SDA_RESET Gpio_WriteOutputIO(GpioPortD, GpioPin7, FALSE) //拉低  SDA
#define SCL_SET Gpio_WriteOutputIO(GpioPortD, GpioPin6, TRUE) //拉高
#define SCL_RESET Gpio_WriteOutputIO(GpioPortD, GpioPin6, FALSE) //拉低  SCL// IIC开始信号
void start_i2c()
{SDA_SET;nop();SCL_SET;nop();SDA_RESET;nop();SCL_RESET;nop();
}// IIC停止信号
void stop_i2c()
{SCL_SET;nop();SDA_RESET;nop();SDA_SET;nop();SDA_RESET;SCL_RESET;
}// 数据传输-传送一个字节, 先读高位
void send_byte(unsigned char dat)
{unsigned char i;for (i = 0; i < 8; i++){SCL_RESET;if (dat & 0x80) SDA_SET;else SDA_RESET;SCL_SET;dat = dat << 1;}SCL_RESET;nop();SDA_RESET; // ACK信号nop();SCL_SET;nop();nop();SCL_RESET;nop();
}// 管脚初始化
void gpio_init(void)
{stc_gpio_config_t pstcGpioCfg;Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);  //< 打开GPIO外设时钟门控pstcGpioCfg->enDir = GpioDirOut; // 端口方向配置->输出 pstcGpioCfg->enDrv = GpioDrvH; // 端口驱动能力配置->高驱动能力 pstcGpioCfg->enPuPd = GpioPu; // 端口上下拉配置->上拉 pstcGpioCfg->enOD = GpioOdDisable; // 端口开漏输出配置->开漏输出关闭 pstcGpioCfg->enCtrlMode = GpioAHB; // 端口输入/输出值寄存器总线控制模式配置->AHB   Gpio_Init(GpioPortD, GpioPin6, &pstcGpioCfg);Gpio_WriteOutputIO(GpioPortD, GpioPin6, TRUE); // SCLGpio_Init(GpioPortD, GpioPin7, &pstcGpioCfg);Gpio_WriteOutputIO(GpioPortD, GpioPin7, TRUE); // SDA
}// 初始化
void tm1729_init(void)
{gpio_init();stop_i2c(); // 停止条件start_i2c(); // 开始条件send_byte(SLAVE_ADDRESS); // 发送SLAVE_ADDRESSsend_byte(ICSET); // 软复位,内部时钟send_byte(DISCTL); // FR=Normal,SR=Normal,Line翻转send_byte(BLKCTL); // 不闪烁send_byte(APCTL); // 全屏控制命令:Normalsend_byte(MODESET); // 显示开启,1/3偏压stop_i2c(); // 停止条件
}// 更新RAM
void tm1729_disp(uint8_t* p, uint8_t size)
{unsigned char i;start_i2c();send_byte(SLAVE_ADDRESS);send_byte(ADSET);for (i = 0; i < size; ++i) // 发送26byte显示数据{send_byte(*p);p++;}stop_i2c();
}// 测试
unsigned char LCD_TEST[26] = { 0x00 };
unsigned char LCD_OFF[26] = { 0x00 };void test_tm1729(void)
{delay1ms(100); // 上电延时100mstm1729_init(); // TM1729初始化memset(LCD_OFF, 0X00, 26);tm1729_disp(LCDOFF, 26); // 清屏memset(LCD_TEST, 0xff, 26); // 全亮while (1){tm1729_disp(LCD_TEST, 26);delay1ms(200);}
}

[驱动] TM1729相关推荐

  1. 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态

    嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...

  2. 0、Spring 注解驱动开发

    0.Spring注解驱动开发 0.1 简介 <Spring注解驱动开发>是一套帮助我们深入了解Spring原理机制的教程: 现今SpringBoot.SpringCloud技术非常火热,作 ...

  3. 安装 Python MySQL 驱动(mysql-connector-python、MySQL-python)

    1. 安装 由于 MySQL 服务器以独立的进程运行,并通过网络对外服务,所以,需要支持 Python 的MySQL 驱动来连接到 MySQL 服务器. 目前,有两个MySQL驱动: mysql-co ...

  4. Linux驱动框架之framebuffer驱动框架

    1.什么是framebuffer? (1)framebuffer帧缓冲(一屏幕数据)(简称fb)是linux内核中虚拟出的一个设备,framebuffer向应用层提供一个统一标准接口的显示设备.帧缓冲 ...

  5. [Ubuntu] 安装/卸载 声卡驱动

    卸载 sudo apt-get --purge remove linux-sound-base alsa-base alsa-utils 安装 sudo apt-get install linux-s ...

  6. pci串口驱动安装失败_TSC TTP-243E Pluse装LTP并口驱动无法安装

    一.前言描述 接到客户报修说,电脑无法开机,即到哥上门维修立即安排人员到现场查看原因,到现场后,查看的确是电脑系统问题,重新安装系统,安装完成系统后,发现打印机无法使用.这个打印机型号是TSC TTP ...

  7. linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...

    点击上方蓝字关注我吧! 为什么内推更靠谱?内推是基于人脉关系链的推荐,其背后有一定的信用背书,靠谱的人推荐的人相对也会比较靠谱,所以企业一般职位都是从内部开始分享的,相较于自己海投简历,内推的效率和成 ...

  8. i7 7700hq安装Linux,黑苹果安装火影金刚4K VULCAN JinGang GTX i7-7700HQ 独显驱动 Hackintosh...

    严格来说,这不是一台笔记本,更像是一台移动一体机.火影金刚4K,独显GTX 1060,核显HD 630,在BIOS里是可以屏蔽核显的.所以这一次安装黑苹果时,直接当是一台IMAC来安装,连机型都是选择 ...

  9. java获取达梦数据库_Java连接达梦数据库驱动dm_jdbc

    [实例简介] Java连接达梦数据库驱动dm_jdbc: dm_jdbc\com.dameng.floader.jar dm_jdbc\com.dameng.impexp.jar dm_jdbc\Dm ...

最新文章

  1. caffe实现多任务学习
  2. 微信支付curl出错及错误码解决方案
  3. nl.basjes.parse.useragent.UserAgentAnalyzer内存泄漏问题解决
  4. 在启动HDFS时,针对集群中namenode无法识别datanode的问题的解决方法
  5. linux上docker安装centos7.2
  6. Android 系统性能优化(47)---Traceview
  7. python提供了两种基本的数值类型_Python的三种基本数据类型
  8. 如何编写一个好的测试用例
  9. codevs 1145 Hanoi双塔问题 2007年NOIP全国联赛普及组
  10. JAVA与C当中基本数据类型和基本运算符的区别
  11. typescript面试题_vue 248+个知识点(面试题)为你保驾护航
  12. matlab在神经网络中的应用,应用matlab实现神经网络
  13. 基于Linux系统PXE启动DOS工具
  14. C语言 判断质数很简单
  15. html怎样 做二级菜单,HTML制作二级下拉菜单的方法步骤
  16. iNav飞控AOCODARC-F7MINI固件编译
  17. 高德地图——步行导航
  18. API to UPDATE Oracle FND User
  19. 网易2018年春招 校招编程题
  20. 数据基础---《利用Python进行数据分析·第2版》第8章 数据规整:聚合、合并和重塑

热门文章

  1. FLV流媒体格式详细介绍
  2. 如何将wma转换成mp3格式?
  3. 三国志战略版:Daniel_张姬分析
  4. 阿里巴巴技术工程师撰写书单汇总!这些好书值得你一读再读!
  5. 复制文件到指定文件夹下,复制目录和文件
  6. 8266接入华为hilink Demo之网站创建(一)
  7. pako java_接口实现后台GZIP压缩,pako.js 前端解压
  8. 麻省理工公开课:线性代数 正交向量与子空间
  9. 2022年人工智能学习路线图,清楚明确
  10. 函授计算机应用基础答案,计算机应用基础函授本科考试题库