資源簡介
TM1629系列用c語言寫的驅動代碼,項目用到,實測可行,有問題可聯系3244035342@qq.com

代碼片段和文件信息
//================文件tm1629.c==============================
//#include?
#include?“tm1629b.h“
//#include?“delay.h“
#include?“string.h“
?
?
#define?????TM1629_CS_HIGH??P_1629CS?=?1
#define?????TM1629_CS_LOW???P_1629CS?=?0
?
#define?????TM1629_DAT_HIGH?P_1629DAT?=?1
#define?????TM1629_DAT_LOW??P_1629DAT?=?0
?
#define?????TM1629_CLK_HIGH?P_1629CLK?=?1
#define?????TM1629_CLK_LOW??P_1629CLK?=?0
?
//----------------------------
#define?????V_NOP???????1????//1//3?5
//*****************************************
//函數名稱:TM1629Init
//函數功能:初始化stm32?的io口
//入口函數:無
//出口參數:無
//******************************************
void?TM1629Init(void)
{ ?????
GPIO_InitTypeDef?GPIO_InitStructure;
// RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB?ENABLE?);
//禁用調試端口,使得PB3,PB4?能用作普通IO口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO?ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable?ENABLE);
???
GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
//開漏輸出當stm32?需要輸出5V時候,GPIO口可設置成開漏輸出。(@via《STM32F10x常見應用解析.pdf》p48-52)
GPIO_InitStructure.GPIO_Mode?= GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
GPIO_Init(GPIOB?&GPIO_InitStructure);
}
//*************************************
//?函數名稱:Nop1629
//?函數功能:延時函數
//?入口參數:延時時間
//?出口參數:這里最好不要用到systick時鐘延時,因為下面的函數可能會用到在定時器里面
// 如果定時器調用systick?外部也用systick,就會導致外部的systick延時不準確,
// 參考網址??http://www.openedv.com/thread-38193-1-1.html
//--------------------------------
// 延時程序?參考網址?http://www.openedv.com/posts/list/13937.htm
// 所以,72M的stm32?1us?可以執行指令90?條??下面的程序用到的延時最少1us
//***************************************
void?Nop1629(u16?T_Dly)
{???
T_Dly*=90;
????while(T_Dly--);????
// delay_us(T_Dly);
?//???return?;
}
//**************************************
//?函數名稱:TM1629_WriteByteData
//?函數功能:TM1668發送一字節數據
//?入口參數:要發送的數據
//?出口參數:
//***************************************
void?TM1629_WriteByteData(u8?Data)???
{???
????u8?i;??
?
????Nop1629(V_NOP)?;
????for(i=8;i>0;i--)???
????{???
????????TM1629_CLK_LOW?;???
????????if(Data?&?0x01)?
????????{
????????????TM1629_DAT_HIGH?;
????????}???
????????else?
????????{
????????????TM1629_DAT_LOW?;
????????}
????????Data?>>=?1?;
????????Nop1629(V_NOP)?;
?
????????TM1629_CLK_HIGH?;
????????Nop1629(V_NOP)?;
????}???
}
//**************************************
//?函數名稱:TM1668_WriteCommand
//?函數功能:寫設置命令
//?入口參數:設置命令參數
//?出口參數:無
//***************************************
void?TM1629_WriteCommand(u8?Comm)
{
????TM1629_CS_LOW?;??
????Nop1629(V_NOP)?;????
????TM1629_WriteByteData(Comm);
??
}
//**************************************
//?函數名稱:TM1668_WriteAddrData
//?函數功能:向固定地址寫一個數據??
//?入口參數:地址?數據
//?出口參數:無
//***************************************
void?TM1629_WriteAddrData(u8?Addru8?Data)
{
????TM1629_CS_LOW?;
Nop1629(V_NOP)?;?
????TM1629_WriteByteData(Addr);?//寫地址
????TM1629_WriteByteData(Data);?//寫數據SS
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-02-20?17:47??TM1629B\
?????文件????????5541??2017-02-20?17:32??TM1629B\tm1629b.c
?????文件????????3125??2017-02-20?17:47??TM1629B\tm1629b.h
- 上一篇:A*算法解決八數碼問題C++
- 下一篇:基于順序表的學生信息管理系統.cpp
評論
共有 條評論