久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
TM1640驅動程序及控制LED累加流水 源程序
[打印本頁]
作者:
gfswzy1110
時間:
2021-8-20 15:44
標題:
TM1640驅動程序及控制LED累加流水 源程序
此程序為基于TM1640 驅動LED燈進行累加流水
單片機源程序如下:
#include "ucos_ii.h"
#include "driver_i2c1640.h"
#include "driver_sys.h"
#include "sys_time.h"
//位選地址
#define DIG1 0xc0
#define DIG2 0xc1
#define DIG3 0xc2
#define DIG4 0xc3
#define DIG5 0xc4
#define DIG6 0xc5
#define DIG7 0xc6
#define DIG8 0xc7
#define DIG9 0xc8
#define DIG10 0xc9
#define DIG11 0xca
#define DIG12 0xcb
#define DIG13 0xcc
#define DIG14 0xcd
#define DIG15 0xce
#define DIG16 0xcf
//顯示亮度級別
#define LEVEL_OFF 0x80
#define LEVEL_1 0x88
#define LEVEL_2 0x89
#define LEVEL_3 0x8a
#define LEVEL_4 0x8b
#define LEVEL_5 0x8c
#define LEVEL_6 0x8d
#define LEVEL_7 0x8e
#define LEVEL_8 0x8f
#define DATA_CMD_ADDR_INC 0x40 //數據命令設置 地址自動加1
#define DATA_CMD_ADDR_FIXED 0x44 //固定地址
#define addr_TM1640 (0xc0+0x01)
#define DSPTM1640_DIS 0
#define DSPTM1640_ENB 1
#define TM1640_DELAY delay_us(2)
/***************************TM1640顯示緩沖區*********************************/
unsigned char led_buffer[48]={0}; //8位數字緩沖區 //18個燈緩沖區
/******************************************************************************
* Function Name --> IIC_GPIO_Init
* Description --> GPIO初始化
* Input --> none
* Output --> none
* Reaturn --> none
******************************************************************************/
void IIC_1640_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
GPIO_InitStructure.GPIO_Pin = IIC_1642_SCL_PIN|IIC_1642_SDA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(IIC_1642_SCL_PORT, &GPIO_InitStructure);
IIC_Init_1640LC();
}
//IIC初始化
void IIC_Init_1640LC(void)
{
IIC_1642_SDA_H;
IIC_1642_SCL_H;
IIC_Start_1640LC();
IIC_Send_Byte_1640LC(DATA_CMD_ADDR_INC);//設置地址自動+1模式
IIC_Stop_1640LC();
IIC_Start_1640LC();
IIC_Send_Byte_1640LC(LEVEL_8);//顯示亮度
IIC_Stop_1640LC();
led_clr();
}
//產生IIC起始信號
void IIC_Start_1640LC(void)
{
IIC_1642_SCL_H;
TM1640_DELAY;
IIC_1642_SDA_H;
TM1640_DELAY;
IIC_1642_SDA_L;//START:when CLK is high,DATA change form high to low
TM1640_DELAY;
}
//產生IIC停止信號
void IIC_Stop_1640LC(void)
{
IIC_1642_SCL_L;
TM1640_DELAY;
IIC_1642_SDA_L;//STOP:when CLK is high DATA change form low to high
TM1640_DELAY;
IIC_1642_SCL_H;
TM1640_DELAY;
IIC_1642_SDA_H;//發送I2C總線結束信號
TM1640_DELAY;
}
void IIC_Send_Byte_1640LC(u8 txd)
{
u8 t;
for(t=0;t<8;t++)
{
IIC_1642_SCL_L;//拉低時鐘開始數據傳輸
TM1640_DELAY;
if(txd&0x01)
{
IIC_1642_SDA_H;
TM1640_DELAY; //對TEA5767這三個延時都是必須的
}
else
{
IIC_1642_SDA_L;
TM1640_DELAY; //對TEA5767這三個延時都是必須的
}
IIC_1642_SCL_H;
txd = txd>>1;
TM1640_DELAY; //對TEA5767這三個延時都是必須的
}
}
/*將TM1640顯示緩沖區寫入到芯片中*/
/*可能需要在語句間增加必要的延時*/
/*如果128個點全部用到,需要修改變量I的值*/
void TM1640_display(uint8_t start_address,uint8_t data)
{
uint8_t i;
IIC_Start_1640LC();
IIC_Send_Byte_1640LC(DATA_CMD_ADDR_FIXED); //設置起始地址
IIC_Stop_1640LC();
IIC_Start_1640LC();
IIC_Send_Byte_1640LC(start_address); //設置起始地址
IIC_Send_Byte_1640LC(data);
IIC_Stop_1640LC();
IIC_Start_1640LC();
IIC_Send_Byte_1640LC(LEVEL_8); //設置起始地址
IIC_Stop_1640LC();
}
void deal_Disp()
{
u8 i,j;
u16 led_data=0xE0;
for(j=0;j<6;j++)
{
led_data |= (1<<j);
for(i=0;i<5;i++)
{
//最后、顯示
TM1640_display(DIG1+i,led_data);
OSTimeDlyHMSM(0, 0, 0, 100);
}
}
led_clr();
}
void led_clr()
{
uint8_t i;
u16 led_data=0;
for(i=0;i<16;i++)
{
TM1640_display(DIG1+i,led_data);
}
}
void led_green_full()
{
uint8_t i;
u16 led_data=0xFF;
u16 red_data = 0x00;
for(i=0;i<5;i++)
{
TM1640_display(DIG11+i,led_data);
}
for(i=0;i<10;i++)
{
TM1640_display(DIG1+i,red_data);
}
}
void led_red_full()
{
uint8_t i;
u16 led_data=0xFF;
u16 blue_data = 0x00;
for(i=0;i<5;i++)
{
TM1640_display(DIG6+i,led_data);
}
for(i=0;i<5;i++)
{
TM1640_display(DIG1+i,blue_data);
}
for(i=0;i<5;i++)
{
TM1640_display(DIG11+i,blue_data);
}
}
void led_blue_full()
{
uint8_t i;
u16 led_data=0xFF;
u16 green_data = 0x00;
for(i=0;i<5;i++)
{
TM1640_display(DIG1+i,led_data);
}
for(i=0;i<10;i++)
{
TM1640_display(DIG6+i,green_data);
}
}
復制代碼
#ifndef _DRIVER_I2C1640_H
#define _DRIVER_I2C1640_H
#include "stdlib.h"
#include "stm32f2xx.h"
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
/* IIC_SCL時鐘端口、引腳定義 */
#define IIC_1642_SCL_PORT GPIOF
#define IIC_1642_SCL_PIN (GPIO_Pin_1)
#define IIC_1642_SCL_PORT_RCC RCC_AHB1Periph_GPIOF
/* IIC_SDA時鐘端口、引腳定義 */
#define IIC_1642_SDA_PORT GPIOF
#define IIC_1642_SDA_PIN (GPIO_Pin_0)
#define IIC_1642_SDA_PORT_RCC RCC_AHB1Periph_GPIOF
/******************************************************************************
位帶操作
******************************************************************************/
#define IIC_1642_SCL_H GPIO_SetBits(IIC_1642_SCL_PORT, IIC_1642_SCL_PIN)
#define IIC_1642_SCL_L GPIO_ResetBits(IIC_1642_SCL_PORT, IIC_1642_SCL_PIN)
#define IIC_1642_SDA_H GPIO_SetBits(IIC_1642_SDA_PORT, IIC_1642_SDA_PIN)
#define IIC_1642_SDA_L GPIO_ResetBits(IIC_1642_SDA_PORT, IIC_1642_SDA_PIN)
#define IN_1642_SDA GPIO_ReadInputDataBit(IIC_1642_SDA_PORT, IIC_1642_SDA_PIN) //IIC讀取數據用
//IIC所有操作函數
void IIC_1640_GPIO_Init(void);
void IIC_Init_1640LC(void); //初始化IIC的IO口
void IIC_Start_1640LC(void); //發送IIC開始信號
void IIC_Stop_1640LC(void); //發送IIC停止信號
void IIC_Send_Byte_1640LC(u8 txd);
void IIC_Send_Byte_1640(unsigned char name,unsigned char display);
void deal_Disp();
void led_clr();
void led_green_full();
void led_red_full();
void led_blue_full();
#endif
復制代碼
51hei.png
(2.73 KB, 下載次數: 59)
下載附件
2021-8-20 16:36 上傳
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
99精品久久久久久中文字幕
|
成人在线观看黄
|
免费一区
|
国产一区二区久久
|
国产精品久久亚洲
|
www.97zyz.com
|
国产香蕉视频在线播放
|
一区二区伦理电影
|
国产精品一区二区三区在线播放
|
欧美日韩中文在线
|
自拍偷拍精品
|
国产高清性xxxxxxxx
|
国产不卡一区在线观看
|
欧美日韩久久精品
|
久久国产电影
|
99精品一级欧美片免费播放
|
免费看片在线播放
|
麻豆视频国产在线观看
|
免费在线看黄
|
欧美一区二区在线播放
|
亚洲国产一区二区三区在线观看
|
精品一区二区三区免费视频
|
国产伦精品一区二区三区精品视频
|
99久久免费精品
|
中文字幕精品一区二区三区精品
|
久久久女女女女999久久
|
欧美视频免费在线
|
不卡在线一区
|
国产亚洲精品久久久优势
|
久久99久久99精品免视看婷婷
|
四季久久免费一区二区三区四区
|
国产精品综合色区在线观看
|
久久久久亚洲
|
www成人啪啪18
|
亚洲成人精品久久久
|
天堂资源最新在线
|
毛片国产
|
成人在线免费视频
|
亚洲国产一区视频
|
一区二区免费在线观看
|
97国产爽爽爽久久久
|