网上看了很多1629驱动程序,很乱,下载了几个整合了一下,下面的程序还没有烧录到开发板里面测试,程序已经做好了,但是这个方案老板不做了,所以只能在这里放着了,留着以后用吧

void TM1629A_Write( unsigned char wr_data)
{
unsigned char i;
for(i=0;i<8;i++)
{
TM1629_CLK_LOW();
if(wr_data&0x01)
TM1629_DIO_HIGH();//需要传送的数据的低位为“1”,则把“DIO”清零
else
TM1629_DIO_LOW();//需要传送的数据的低位为“0”,则把“DIO”置高
TM1629_CLK_HIGH();
wr_data>>=1;
}
}

void Clear_TM1629B(void)
{
unsigned char i;
TM1629_STB_LOW();
TM1629A_Write(0xc0); // 11000000 设置显示地址从0开始
for(i=0;i<16;i++)
TM1629A_Write(0x00); // 所有显示为灭
TM1629_STB_HIGH();
}

void Write_COM(unsigned char cmd) //发送命令字
{
TM1629A_Write(cmd);
}

void init_TM1629B(void)
{
TM1629_CLK_HIGH(); // 上拉TM1629B通信时钟引脚
TM1629_STB_HIGH(); // 上拉TM1629B通信片选引脚
TM1629_DIO_HIGH(); // 上拉TM1629B通信数据引脚
Clear_TM1629B();
}

void convert2(void)
{
unsigned char i,j,s,tmp,count,index;
uint8_t ucLowercase;
unsigned char ucIndex;

count = 0x01;
s=0x01;
for(i=0;i<16;i++)
{
if((LED[i]>='a')&&(LED[i]<='z')||((LED[i]>='A')&&(LED[i]<='Z')))
{
ucLowercase = CapitalToLowercase(LED[i]);
if(NO == IsLowercase(ucLowercase))
{
return;
}

ucIndex = ucLowercase-'a';
tmp = CODE_char[ucIndex ]; //1-16个seg需要显示的数字
}
else
{
tmp = CODE_num[ LED[i] ]; //1-16个seg需要显示的数字
}
for(j = 0;j<8;j++)
{
if(i<8)
{
index = 2*j; //偶地址
}
else
{
index=2*j+1; //奇地址
}
if((tmp&count)==count)
{
DspBuf[index] = DspBuf[index] | (s);
}
else
{
DspBuf[index] = DspBuf[index] & (~s);
}
if(count==0x80)
{
count=0x01;
}
else
{
count <<= 1;
}
}
if(s==0x80) s=0x01;
else s <<= 1;
}
}

/*将所要传输的数据显示在led上*/
void Display(void) {
unsigned char i;

convert2();
TM1629_STB_HIGH(); //通讯开始前通讯端口全部初始化为“1”
TM1629_DIO_HIGH(); //打开数据线 //释放DIO为输入
TM1629_CLK_HIGH();//拉低时钟

TM1629_STB_LOW();//保证“STB”为低电平,程序不依赖于之前端口的状态
Write_COM(0x40); // 01000000准备写数据到显示寄存器,普通模式,自动地址增加
TM1629_STB_HIGH();

delay_ms(10);
TM1629_STB_LOW();
TM1629A_Write(0XC0); // 传输起始地址

for(i = 0; i < 16; i++) /* 传输数据*/
{
TM1629A_Write(DspBuf[i]);
}
TM1629_STB_HIGH();

delay_ms(10);
TM1629_STB_LOW();
Write_COM(0x85); // 最亮 10001111 设置消光脉冲12/16 显示开
// delay_ms(20);
TM1629_STB_HIGH();

}

TM1629A驱动程序的更多相关文章

  1. 常用数据库的驱动程序和Url地址

    常用数据库的驱动程序及JDBC URL: Oracle数据库: 驱动程序包名:ojdbc6.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:jd ...

  2. linux网络设备驱动程序

    4.linux网络设备驱动程序体系结构 -------------------------------------- | 数据包发送 | 数据包接收 | ----->网络协议接口层 | dev_ ...

  3. nandflash驱动程序编写

    NAND FLASH是一个存储芯片 那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A" 问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地 ...

  4. 嵌入式Linux驱动学习之路(二十六)DM9000C网卡驱动程序

    基于DM9000C的原厂代码修改dm9000c的驱动程序. 首先确认内存的基地址 iobase. 确定中断号码. 打开模块的初始化函数定义. 配置内存控制器的相应时序(结合DM9000C.C的手册). ...

  5. 嵌入式Linux驱动学习之路(二十五)虚拟网卡驱动程序

    一.协议栈层次对比 设备无关层到驱动层的体系结构 1).网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过 ...

  6. 嵌入式Linux驱动学习之路(二十四)Nor Flash驱动程序

    Nor Flash和Nand Flash的不同: 类型 NOR Flash  Nand Flash  接口 RAM-like,引脚多 引脚少 容量 小(1M.2M...) 大(512M.1G) 读 简 ...

  7. 18.tty驱动程序框架

    tty驱动程序框架 一.TTY概念解析 在Linux系统中,终端是一类字符型设备,它包括多种类型,通常使用tty来简称各种类型的终端设备. 1.1串口终端(/dev/ttyS*) 串口终端是使用计算机 ...

  8. 15.linux按键驱动程序(二)

    linux按键驱动程序 包含内容定时器延时去抖动,阻塞型设备驱动设计 一.定时器延时去抖 按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,开关不会马上稳定地接通或断开.因而 ...

  9. 14.linux按键驱动程序(一)

    按键驱动程序 本文学习主要包含按键硬件的实现.中断分层管理.按键定时器去抖.阻塞性驱动程序设计.这里面需要使用到混杂设备驱动和中断处理程序的内容. 一.创建按键混杂设备驱动模型 int key_ope ...

随机推荐

  1. 解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错

    前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" .如果数据库中的表里有字段类型为 Long 等类型时,my ...

  2. Vue计算属性的用法

    计算属性是个很好玩的东西,在这里面可以对数据模型进行操作,·也可以使用getter,setter方法.使用的话也是非常的简洁明了 这里写个例子 <!DOCTYPE html> <ht ...

  3. 01-Javascript简介(了解)

    [转]01-Javascript简介(了解) Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用 ...

  4. SSM 后台封装的有值, 到前台打印的时候没有值

    原因: 实体类中的getting  setting 方法没有配置,导致封装json 数据的时候没有封装进去

  5. android中checkbox自定义样式

    1.首先res/drawable中定义checkbox_style.xml样式: <?xml version="1.0" encoding="utf-8" ...

  6. Spring Boot (#1 quick start)

    Spring Boot (#1 quick start) 官方文档 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无 ...

  7. Prometheus Node_exporter 详解

    Basic CPU / Mem / Disk Info https://www.cnblogs.com/qianyuliang/p/10479515.html Basic CPU / Mem / Di ...

  8. pycharm的常用快捷键

      使用pycharm写代码时,如果有错误,一般代码右边会有红色标记.   1,写代码时忘记导入模块,可以使用快捷键 Alt + Enter 自动导入模块.() 再倒入模块之前,需要现在pycharm ...

  9. 解决:Tomcat 局域网IP地址 访问不了

    解决:Tomcat 局域网IP地址 访问不了 2014年10月17日 ⁄ 综合 ⁄ 共 1000字 ⁄ 字号 小 中 大 ⁄ 评论关闭 如果连最基本的localhost:8080都失败的话. 原因就一 ...

  10. rename 批量修改文件名简单用法

    有的时候我们需要批量创建文件做测试,为了做区分,一般只要稍稍动动文件名即可,MV命令既可以移动文件,也是可以修改文件名的,但批量修改文件名MV做不到,此时,我们可以用rename命令批量修改是蛮不错的 ...