- #define ADDR_START1640 (0XC0+0x01)
- #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 TM1640SLK_HING P_TM1640SLK = 1
- #define TM1640SLK_LOW P_TM1640SLK = 0
- #define TM1640DAT_HING P_TM1640DAT = 1
- #define TM1640DAT_LOW P_TM1640DAT = 0
- #define VT_DLY1640 150//80//10//2000
- #define VT_DLYNOP 10//80//10
- //*************************************
- // 函数名称:_Nopt
- // 函数功能:延时函数
- // 入口参数:延时时间
- // 出口参数:无
- //***************************************/
- void Nop1640(uint16 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(uint8 date)
- {
- uint8 i;
- uint8 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(uint8 InValue)
- {
- TM1640DAT_HING;
- Nop1640(VT_DLYNOP) ;
- TM1640SLK_HING;
- if(InValue == DSP1640_DIS) //显示关
- {
- TM1640Start();//数据写模式设置
- TM1640WriteByte(SET_DSP1640_DIS);//
- TM1640Stop();
- }
- else
- {
- TM1640Start();//数据写模式设置
- TM1640WriteByte(SET_DATA_ORDER);//
- TM1640Stop();
- TM1640Start(); //显示亮度设置
- TM1640WriteByte(SET_DISPLAY); //0x80关显示
- TM1640Stop();
- }
- }
- //*************************************
- // 函数名称:TM1640_SendData
- // 函数功能:发送显示缓存
- // 入口参数:1640要写数据的起始地址
- // 显示数据缓存的起始地址 数据长度
- // 出口参数:无
- //***************************************/
- void TM1640_SendData(uint8 Addr1640,uint8 *a,uint8 DataLong)
- {
- uint8 i;
- TM1640Start();
- TM1640WriteByte(Addr1640); //设置起始地址
- for(i=0;i<DataLong;i++)
- {
- TM1640WriteByte(a[i]);
- }
- TM1640Stop();
- }
TM1640操作源码--LED驱动IC
最新推荐文章于 2025-03-05 19:59:17 发布