网上看了很多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. redis主从|哨兵|集群模式

    关于redis主从.哨兵.集群的介绍网上很多,这里就不赘述了. 一.主从 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重 ...

  2. 'QuerySet' object has no attribute '_meta'

    'QuerySet' object has no attribute '_meta' 对象列表没有'_meta'属性 单独的对象才有, 忘记加first了 edit_obj = models.Role ...

  3. Hadoop HDFS 的 HttpFS

    参考 Hadoop权威指南 第3章中3.4节 背景 要写一个操作HDFS的web后台(文件CRUD),虽然可以直接使用HDFS提供的FileSystem类然后通过get方法获取到一个Distribut ...

  4. promise的理解和应用

    老铁们,我又满血复活了,今天我准备来吹一波我对promise,如有错吴请直接指出,明白了吗?话不多说开始吧 首先我们需要知道啥叫promise,我问了问大佬,他说这个东西是 异步操作的同步代码(but ...

  5. Ajax 滚动异步加载数据

    第一种情况:单个div滚动 HTML <body> <!-- search start --> <div class="search" #if($m_ ...

  6. AJAX删除事件与加载数据

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. View的measure机制

    Android中View框架的工作机制中,主要有三个过程: 1.View树的测量(measure)Android View框架的measure机制     2.View树的布局(layout) And ...

  8. React Native - TextInput详细解说

    1,TextInput组件介绍 TextInput 组件除了作为输入框实现基本的输入功能外,它还提供了许多其他功能,比如自动校验.占位符以及指定弹出不同的键盘类型等. 2,组件的属性 (1)autoC ...

  9. 【three.js练习程序】创建简单物理场景

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. ECMAScript5新特性总结

    虽然ECMAScript5早就成为标准推出来了,但之前因为一直用的是ECMAScript3,并且工作中总是要求兼容IE的低版本,所以用的比较少.如今市场上大多数浏览器都能兼容ECMAScript5(I ...