网上看了很多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. jdk源码->并发->Unsafe&Atomic

    synchronized关键字类似于java中的悲观锁机制,接下来介绍一种java的乐观锁机制Unsafe类 CAS CAS简介 CAS全称是Compare And Swap,即比较交换,它是在并发执 ...

  2. 【代码笔记】iOS-请求去掉url中的空格

    一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...

  3. JS 对数组的操作集锦(基础)

    下面内容是自己复习基础时候整理出来的,感谢缪雪峰老师的课程让自己可以有节奏的复习基础的东西! 以下内容颜色是重点关注,已经特别注意提醒,不是为了颜色好看噢,希望能帮到刚学习前端的朋友们,后续还会持续更 ...

  4. ActiveReports 报表应用教程 (15)---报表换肤

    在葡萄城ActiveReports报表中,可以设置报表中不同控件的样式,然后把这些样式保存到一个外部的XML文件当中,供其他报表使用.如果用户希望同一份报表以不用的外观分发,只需要简单地修改样式表单, ...

  5. Visual Studio编译C工程出现的错误

    错误1. エラー 1 error LNK1561: エントリー ポイントを定義しなければなりません. 解决办法:将工程的类型改为dll动态库,设置方式如下: 右键工程,选择[プロパティ].在弹出的面板 ...

  6. android控件跟随手势滑动改变位置

    要求:1.通过手指移动来拖动图片   2.控制图片不能超出屏幕显示区域 技术点:1.MotionEvent处理2.对View进行动态定位(layout) activity_main.xml: < ...

  7. Djang之Model操作

    Django之Model操作 一.字段 1.字段列表: AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField ...

  8. windows 服务器MYSQL 数据库安装配置

    一.到官网下载MYSQL 打开官网地址:www.mysql.com, 选择 DOWNLOADS,进入到MySQL的下载页面,在页面的底部有一个MySQL Community Edition, 并且下面 ...

  9. Linux系统之TroubleShooting(启动故障排除)

    尽管Linux系统非常强大,稳定,但是我们在使用过程当中,如果人为操作不当,仍然会影响系统,甚至可能使得系统无法开机,无法运行服务等等各种问题.那么这篇博文就总结一下一些常见的故障排除方法,但是不可能 ...

  10. 从外部导入django模块

    import os import sys sys.path.append("D:\\pyweb\\sf"); # 项目位置(不是app) os.environ.setdefault ...