历史上的今天

今天是:2024年11月09日(星期六)

正在发生

2019年11月09日 | STM32 TM1640芯片驱动程序

发布者:自在堂 来源: eefocus关键字:STM32  TM1640芯片  驱动程序 手机看文章 扫描二维码
随时随地手机看文章

以下为.h文件:

#ifndef __TM1640_H__

#define __TM1640_H__

#include "stm32f10x.h"  

 

#define   ADDR_START1640        0XC0  

  

#define     DSP1640_DIS     0  

#define     DSP1640_ENB     1  

  

/* 

控制显示 

0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f 分别对应 

1/16,  2/16,  4/16,  10/16, 11/16, 12/16, 13/16, 14/16    

 

设置数据,0x40,0x44分别对应地址自动加一和固定地址模式      

*/  

  

#define SET_DATA_ORDER     0X40  //数据命令设置 地址自动加1  

#define        SET_DISPLAY         0X8F  //显示命令控制  脉冲宽度14/16  

#define SET_DSP1640_DIS          0x80  //显示关控制  

   

  

#define     VT_DLY1640           150//80//10//2000  

#define     VT_DLYNOP            10//80//10  

 

 

 

      

 

#define SCLK_GPIO_PORT      GPIOB              

#define SCLK_GPIO_CLK    RCC_APB2Periph_GPIOB

#define SCLK_GPIO_PIN    GPIO_Pin_7        

 

#define DIN_GPIO_PORT       GPIOB              

#define DIN_GPIO_CLK    RCC_APB2Periph_GPIOB

#define DIN_GPIO_PIN    GPIO_Pin_6

 

 

#define TM1640SLK_LOW      GPIO_ResetBits( SCLK_GPIO_PORT, SCLK_GPIO_PIN )

#define TM1640SLK_HING     GPIO_SetBits( SCLK_GPIO_PORT, SCLK_GPIO_PIN )

#define TM1640DAT_LOW      GPIO_ResetBits( DIN_GPIO_PORT, DIN_GPIO_PIN )

#define TM1640DAT_HING     GPIO_SetBits( DIN_GPIO_PORT, DIN_GPIO_PIN )

 

 

void TM1640_GPIO_Config(void);

void Nop1640(u16 T_Dly);

void TM1640Start(void);

void TM1640Stop(void);

void TM1640WriteByte(u8 date);

void TM1640_Init(u8 InValue);

void TM1640_SendData(u8 Addr1640,u8 *a,u8 DataLong);

 

#endif

 


以下为.c文件:


#include "stm32f10x.h"

#include "stm32f10x_rcc.h"

#include "stm32f10x_gpio.h"

 

#include "TM1640.h"

 

/********  TM1640 GPIO 配置 *************************/

void TM1640_GPIO_Config(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd( SCLK_GPIO_CLK | DIN_GPIO_CLK, ENABLE);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Pin = SCLK_GPIO_PIN;

GPIO_Init(SCLK_GPIO_PORT, &GPIO_InitStructure);   // 初始化 SCLK 引脚

GPIO_InitStructure.GPIO_Pin = DIN_GPIO_PIN;

GPIO_Init(DIN_GPIO_PORT, &GPIO_InitStructure);      // 初始化 DIN   引脚

 

    // 引脚初始状态为高,便于产生下降沿

GPIO_SetBits(SCLK_GPIO_PORT, SCLK_GPIO_PIN);  

GPIO_SetBits(DIN_GPIO_PORT, DIN_GPIO_PIN);

}

  

//*************************************  

// 函数名称:_Nopt  

// 函数功能:延时函数  

// 入口参数:延时时间  

// 出口参数:无  

//***************************************/  

void Nop1640(u16 T_Dly)  

{     

        while(T_Dly--);           

        return ;  

}  

//****************************************  

// 函数名称:TM1640Start  

// 函数功能:TM1640起始信号  

// 入口参数:无  

// 出口参数:无  

//***************************************/  

void TM1640Start(void)  

{   

        TM1640DAT_HING;  

        Nop1640(VT_DLYNOP) ;  

        TM1640SLK_HING;  

        Nop1640(VT_DLY1640) ;  

        TM1640DAT_LOW;  

        Nop1640(VT_DLY1640) ;  

        TM1640SLK_LOW;  

        Nop1640(VT_DLY1640) ;  

}  

//*************************************  

// 函数名称:TM1640Stop  

// 函数功能:TM1640结束信号  

// 入口参数:无  

// 出口参数:无  

//***************************************/  

void TM1640Stop(void)  

{  

        TM1640DAT_LOW;  

        Nop1640(VT_DLYNOP) ;  

        TM1640SLK_HING;  

        Nop1640(VT_DLY1640) ;  

        TM1640DAT_HING;  

        Nop1640(VT_DLY1640) ;  

        TM1640SLK_LOW;  

        Nop1640(VT_DLY1640) ;  

          

}  

//*************************************  

// 函数名称:TM1640WriteByte  

// 函数功能:TM1640写一字节数据  

// 入口参数:要写的数据  

// 出口参数:无  

//***************************************/  

void TM1640WriteByte(u8 date)  

{  

        u8 i;  

        u8 Tmp;  

          

        Tmp=date;  

          

        TM1640DAT_LOW;  

        Nop1640(VT_DLYNOP) ;  

        TM1640SLK_LOW;  

          

        for(i=0;i<8;i++)  

        {  

                TM1640SLK_LOW;  

                Nop1640(VT_DLYNOP) ;  

                if(Tmp & 0x01)  

                {  

                        TM1640DAT_HING;  

                        Nop1640(VT_DLY1640) ;  

                }  

                else  

                {  

                        TM1640DAT_LOW;  

                        Nop1640(VT_DLY1640) ;  

                }  

                TM1640SLK_HING;  

                Tmp = Tmp>>1;  

        }  

          

        TM1640SLK_LOW;  

        Nop1640(VT_DLYNOP) ;  

        TM1640DAT_LOW;  

}  

//*************************************  

// 函数名称:TM1640_Init  

// 函数功能:TM1640设备初始化  

// 入口参数:0 1 代表 显示关 显示开  

// 出口参数:无  

//***************************************/  

void TM1640_Init(u8 InValue)    

{  

        TM1640DAT_HING;  

        Nop1640(VT_DLYNOP) ;                 

        TM1640SLK_HING;  

          

        if(InValue == DSP1640_DIS) //显示关  

        {  

                TM1640Start();//数据写模式设置  

                TM1640WriteByte(SET_DSP1640_DIS);//显示关控制   

                TM1640Stop();         

        }  

        else  

        {  

                TM1640Start();//数据写模式设置  

                TM1640WriteByte(SET_DATA_ORDER);//数据命令设置 地址自动加1  

                TM1640Stop();  

                  

                TM1640Start(); //显示亮度设置  

                TM1640WriteByte(SET_DISPLAY); //显示命令控制  脉冲宽度14/16       

                TM1640Stop();  

        }  

}  

//*************************************  

// 函数名称:TM1640_SendData  

// 函数功能:发送显示缓存  

// 入口参数:1640要写数据的起始地址  

//           显示数据缓存的起始地址 数据长度  

// 出口参数:无  

//***************************************/  

void TM1640_SendData(u8 Addr1640,u8 *a,u8 DataLong)  

{  

        u8 i;    

          

        TM1640Start();  

        TM1640WriteByte(Addr1640); //设置起始地址  

          

        for(i=0;i        {  

                TM1640WriteByte(a[i]);   

        }  

          

        TM1640Stop();   

}


关键字:STM32  TM1640芯片  驱动程序 引用地址:STM32 TM1640芯片驱动程序

上一篇:关于STM32驱动点阵的问题整理及科研思维小酌
下一篇:STM32 74HC595驱动程序

推荐阅读

上海曾是中国重要的工业生产基地,汽车、装备、电子等行业在中国具有较强竞争优势,且产业链配套较为齐全;苏州吴中区,已明确将机器人与智能制造、生物医药及大健康产业作为十三五期间主导产业进行重点培育和扶持。两地优质企业众多,尤其与龙华大力发展的智能制造产业有诸多不谋而合之处。11月6日至8日,深圳交易团龙华分团赶赴上海,一边积极关注区内企...
从安徽省经济和信息化厅获悉,超过2万台工业机器人在安徽“上岗”。近年来,安徽把智能制造作为制造强省建设的主攻方向和突破口,通过强化智能装备发展、智能工厂和数字化车间建设、工业机器人推广应用,不断加快制造业的数字化、网络化、智能化转型升级,促进了安徽制造业高质量发展。 安徽省经济和信息化厅装备工业处处长施力介绍,安徽工业机器人产...
辅助电源单元在电池电动汽车(BEV)和混合动力电动汽车(HEV)的电源应用中无处不在,对于为控制、通信、安全、驱动等通常低于 20 V 的各种低压子系统供电至关重要,而且,电源本身的电源可能来自+400 V 直流高压总线,如车载充电(OBC)系统或 48 V 或 12 V 电池电压轨。 在如此广泛的应用范围内,对辅助电源的要求非常多样化,因而市场上产生了无数...
近日,景嘉微在接受机构调研时表示,公司始终坚持“预研一批、定型一批、生产一批”的滚动式产品发展战略,JM9系列图形处理芯片目前正处于测试阶段,公司在保障前代芯片测试与调试的同时不断推进后续产品的研发,实现公司产品持续、快速发展。据了解,景嘉微自成立以来一直致力于集成电路设计、图形处理器(GPU)芯片、图形图像处理系统等领域的研发生产。...

史海拾趣

问答坊 | AI 解惑

面向便携高清视频应用DaVinci DM355处理器

TI的DaVinci解决方案可以面向广阔的数字视频应用,这些应用中许多都是现在很热门的产品,包括个人媒体播放器、数码相机、数码相框、IP网络摄像机、视频婴儿监视器等等(如图1所示),所有这些应用都要求低功耗、便携式和高清视频。 TMS320DM355处理 ...…

查看全部问答∨

tsb41卢二都

老师,前面的两个帖子,是我这次设计程序的一部分,老师,帮我看看,它有没有问题。…

查看全部问答∨

华为的轨迹

转自C114 如下的数据全部是采用网上的公开的数据,其中销售额是采用华为公开业绩数据,收入是采用从97年起到电子百强的数据。2009年度数据是采用网上公布的华为的初步业绩数据,销售额未获取具体数据,从新年贺词中得到的是超过300亿美金,以300亿 ...…

查看全部问答∨

液晶128*64疑问

   我用MSP430F149控制12864的显示,当程序写进去后,只有背光亮,就是不显示要显示内容,有没有谁遇到过类似的问题,给我帮帮忙,在这里谢过了!   …

查看全部问答∨

ppc2003 开发的程序能在windows Mobile 6下运行吗?

请问各位大侠,我用ppc2003开发的程序,现在需要给用户写运行环境,该如何写呢,我测试过可以在Windows 5.0 下运行,但是可以在Windows Mobile 6.0环境下运行吗,望各位大侠指点?…

查看全部问答∨

有关MapInfo的问题

请问在CE中能不能用MapInfo这个东西(MapInfo MapX) 有没有推荐的教材或者msdn上有没有说明? …

查看全部问答∨

25434158 新建一嵌入式群,有兴趣的加入!

欢迎高手进入!相互学习,相互帮助。发扬中国嵌入式事业!…

查看全部问答∨

学驱动开发需要那些知识?

想学驱动开发,不知道要学那些知识…

查看全部问答∨

07.07【每周讨论】工程师职称评定

面临毕业,事情很多也很烦。很多东西都不知道怎么办。《就业协议书》、《报到证》(派遣证)到底有啥用。还有既然走上技术这条路,职称评定更是关注了。 现在在公司里我只是一个软件技术员,像助理工程师,工程师这样的,不知道什么时候才能获得。 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved