1. TM1640.H
#ifndef __TM1640_H
#define __TM1640_H
#include "sys.h"#define TM1640_GPIOPORT   GPIOA   //定义IO接口
#define TM1640_DIN  GPIO_Pin_12 //定义IO接口
#define TM1640_SCLK GPIO_Pin_11 //定义IO接口#define TM1640_LEDPORT  0xC8    //定义IO接口void TM1640_Init(void);//初始化
void TM1640_led(u8 date);//
void TM1640_display(u8 address,u8 date);//
void TM1640_display_add(u8 address,u8 date);//#endif

2.TM1640.C

#include "TM1640.h"
#include "delay.h"#define DEL  1   //宏定义 通信速率(默认为1,如不能通信可加大数值)//地址模式的设置
//#define TM1640MEDO_ADD  0x40   //宏定义  自动加一模式
#define TM1640MEDO_ADD  0x44   //宏定义 固定地址模式(推荐)//显示亮度的设置
//#define TM1640MEDO_DISPLAY  0x88   //宏定义 亮度  最小
//#define TM1640MEDO_DISPLAY  0x89   //宏定义 亮度
//#define TM1640MEDO_DISPLAY  0x8a   //宏定义 亮度
//#define TM1640MEDO_DISPLAY  0x8b   //宏定义 亮度
#define TM1640MEDO_DISPLAY  0x8c   //宏定义 亮度(推荐)
//#define TM1640MEDO_DISPLAY  0x8d   //宏定义 亮度
//#define TM1640MEDO_DISPLAY  0x8f   //宏定义 亮度 最大#define TM1640MEDO_DISPLAY_OFF  0x80   //宏定义 亮度 关void TM1640_start(){ //通信时序 启始(基础GPIO操作)(低层)GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(1)); //接口输出高电平1   GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(1)); //接口输出高电平1   delay_us(DEL);GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(0)); //接口输出0 delay_us(DEL);GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(0)); //接口输出0    delay_us(DEL);
}
void TM1640_stop(){ //通信时序 结束(基础GPIO操作)(低层)GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(0)); //接口输出0    GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(1)); //接口输出高电平1   delay_us(DEL);GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(1)); //接口输出高电平1  delay_us(DEL);
}
void TM1640_write(u8 date){ //写数据(低层)u8 i;u8 aa;aa=date;GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(0)); //接口输出0    GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(0)); //接口输出0  for(i=0;i<8;i++){GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(0)); //接口输出0   delay_us(DEL);if(aa&0x01){GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(1)); //接口输出高电平1  delay_us(DEL);}else{GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(0)); //接口输出0   delay_us(DEL);}GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(1)); //接口输出高电平1    delay_us(DEL);aa=aa>>1;}GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(0)); //接口输出0    GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(0)); //接口输出0
}void TM1640_Init(void){ //TM1640接口初始化GPIO_InitTypeDef  GPIO_InitStructure;     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);       GPIO_InitStructure.GPIO_Pin = TM1640_DIN | TM1640_SCLK; //选择端口号(0~15或all)                        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)    GPIO_Init(TM1640_GPIOPORT, &GPIO_InitStructure);GPIO_WriteBit(TM1640_GPIOPORT,TM1640_DIN,(BitAction)(1)); //接口输出高电平1   GPIO_WriteBit(TM1640_GPIOPORT,TM1640_SCLK,(BitAction)(1)); //接口输出高电平1   TM1640_start();TM1640_write(TM1640MEDO_ADD); //设置数据,0x40,0x44分别对应地址自动加一和固定地址模式TM1640_stop();TM1640_start();TM1640_write(TM1640MEDO_DISPLAY); //控制显示,开显示,0x88,  0x89,  0x8a,  0x8b,  0x8c,  0x8d,  0x8e,  0x8f分别对应脉冲宽度为://------------------1/16,  2/16,  4/16,  10/16, 11/16, 12/16, 13/16, 14/16   //0x80关显示TM1640_stop();    }
void TM1640_led(u8 date){ //固定地址模式的显示输出8个LED控制TM1640_start();TM1640_write(TM1640_LEDPORT);          //传显示数据对应的地址TM1640_write(date); //传1BYTE显示数据TM1640_stop();
}
void TM1640_display(u8 address,u8 date){ //固定地址模式的显示输出const u8 buff[21]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x00};//数字0~9及0~9加点显示段码表//---------------   0    1    2    3    4    5    6    7    8    9    0.   1.   2.   3.   4.   5.   6.   7.   8.   9.   无   TM1640_start();TM1640_write(0xC0+address);            //传显示数据对应的地址TM1640_write(buff[date]);               //传1BYTE显示数据TM1640_stop();
}
void TM1640_display_add(u8 address,u8 date){    //地址自动加一模式的显示输出 u8 i;const u8 buff[21]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x00};//数字0~9及0~9加点显示段码表//---------------   0    1    2    3    4    5    6    7    8    9    0.   1.   2.   3.   4.   5.   6.   7.   8.   9.   无   TM1640_start();TM1640_write(0xC0+address);             //设置起始地址for(i=0;i<16;i++){TM1640_write(buff[date]); }TM1640_stop();
}

TM1640驱动程序相关推荐

  1. OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?

    OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)? 图形硬件供应商,需要为显示适配器编,编写用户模式显示驱动程序.用户模式显示驱动程序,是由Microsoft Direct3D运行时加 ...

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

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

  3. 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序

    嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...

  4. 嵌入式Linux设备驱动程序:发现硬件配置

    嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...

  5. 嵌入式Linux设备驱动程序:编写内核设备驱动程序

    嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...

  6. 现代传感器的接口:中断驱动的ADC驱动程序

    现代传感器的接口:中断驱动的ADC驱动程序 Interfacing with modern sensors: Interrupt driven ADC drivers 研究了如何编写一个阻塞的模数转换 ...

  7. 与现代传感器的接口:轮询ADC驱动程序

    与现代传感器的接口:轮询ADC驱动程序 Interfacing with modern sensors: Polled ADC drivers 我们研究了在现代嵌入式应用程序中,开发人员应该如何创建一 ...

  8. java加载驱动没有异常显示_java – Tomcat没有加载MSSQL驱动程序

    我正在尝试将我的webapp部署到Tomcat容器,但是我得到一个例外,说明找不到我的数据库的驱动程序.在本地我测试Jetty上的应用程序,驱动程序jar由Maven提供.我将驱动程序jar复制到To ...

  9. Linux驱动程序编写

    工作需要写了我们公司一块网卡的Linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微 软垄断的强有力武器,日益受到大家的喜爱.真希望她能在中国迅速成长.把程序文档贴出来, ...

  10. Linux网卡驱动程序编写

    Linux网卡驱动程序编写 [摘自 LinuxAID] 工作需要写了我们公司一块网卡的Linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微软垄断的强有力武器,日益受到大 ...

最新文章

  1. opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
  2. 责任链(Chain of Responsibility Pattern)
  3. 笔记·mybatis核心对象和全局配置文件
  4. SQL Server,Oracle,DB2索引建立语句的对比
  5. php 运算器,运算器的功能是什么
  6. 物理实验数据处理(c语言)
  7. Python 为什么要用线程池?
  8. 动态顺序图可视化控件
  9. 词法分析程序 LEX和VC6整合使用的一个简单例子
  10. 过程日志定位疑难问题
  11. 69. (待补) (使用sqlite3)实现简单的管理系统 MVC 将链表作为内存数据模型,将sqlite3作为数据库,将终端作为交互界面。读数据库生成 链表,修改链表写入文件。...
  12. AtCoder Beginner Contest 137 解题报告(A ~ E)
  13. 2020-11-30 04_机器视觉中的特征提取与描述
  14. GNSS观测数据下载地址
  15. [求助]python模拟布丰投针
  16. 20162330 第三周 蓝墨云班课 泛型类-Bag 练习
  17. 树莓派安装网易云音乐amd64(Exagear)
  18. 与众不同的微前端设计思维
  19. 一般英文(java)
  20. VC++游戏编程基础无法找到“d3d9.h”问题

热门文章

  1. 原生JS实现拖动滑块验证登录效果
  2. 模糊控制 MATLAB 仿真
  3. smartsvn 忽略文件夹_Smart SVN-使用Smart SVN 管理项目代码文件(在windows上)
  4. “普通高中数学课程标准(实验)”解读
  5. jeesite中日期插件
  6. SLC、MLC和TLC三者的区别
  7. Winform支付宝扫码支付
  8. banner设圆角_Banner设计技巧!
  9. pe分区助手读不到Linux硬盘,解决WINPE下不显示硬盘的方法
  10. 2019年南京大学计算机考研复试机试真题