网上看了很多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. HDU4704(SummerTrainingDay04-A 欧拉降幂公式)

    Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submi ...

  2. PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆

    PHP中Cookie的使用---添加/更新/删除/获取Cookie 及 自动填写该用户的用户名和密码和判断是否第一次登陆  什么是cookie 服务器在客户端保存用户的信息,比如登录名,密码等 这些数 ...

  3. Python3.6下的Requests登录及利用Cookies登录

    利用Python中的Requests模块可以实现Post,Get等发送功能,我以登录某网站为例,记录使用Post发送用户名.密码及图形验证码,以及通过Cookies直接登录的内容. 1.利用POST发 ...

  4. element-ui Pagination组件源码分析整理笔记(七)

    element-ui源码的版本是2.4.9 pagination.js import Pager from './pager.vue'; import ElSelect from 'element-u ...

  5. nodejs图像处理模块

    首先是搜索了npm包的性能比较,找到了这篇: https://github.com/ivanoff/images-manipulation-performance 性能最好的当属sharp,由于安装不 ...

  6. C++二进制输入输出流接口设计

    提到输入输出流,作为CPPer很自然的就会想到std::iostream,对于文本流的处理,iostream可以说足够强大,应付一般复杂度的需求毫无压力.对二进制流处理却只能用“简陋”来形容,悲催的是 ...

  7. apache web服务器安全配置

    尽管现在购买的云服务器很多都有一键web环境安装包,但是如果是自己配置web环境则需要对各种安全配置十分了解,今天我们就来尝试这做好web服务器安全配置.这里的配置不尽完善,若有纰漏之处还望指出. 修 ...

  8. Linux下动态链接库加载路径

    引子 近日,服务器迁移后,偷懒未重新编译nginx的,直接./nginx启动,结果遇到如下问题: "error while loading shared libraries" 这是 ...

  9. 从零自学Java-1.编写第一个Java程序

    编写第一个Java程序 完成工作:1.在文本编辑器中输入一个Java程序. 2.使用括号组织程序. 3.保存.编译和运行程序. package com.Jsample;//将程序的包名称命名为com. ...

  10. 入坑Vue

    长期的后端数据开发着实有些枯燥无趣,项目完工,闲暇之际,最近一直在研究前端方面的东西,不得感叹,前端技术发展速度快的让人有些目不暇接,从jQuery开启的插件化时代,几乎许多网站都被jQuery支配, ...