?? led-test.c
字號(hào):
// File name:can-test.c
#include "DSP281x_Device.h"
#define CLK GpioMuxRegs.GPBMUX.bit.TDIRB_GPIOB11
#define DIN GpioMuxRegs.GPBMUX.bit.TCLKINB_GPIOB12
#define LOAD GpioMuxRegs.GPBMUX.bit.C4TRIP_GPIOB13
#define DELAYUS delay_us(20)
#define DELAYMS delay_ms(10)
#define DELAYS delay_ms(1000)
//寄存器宏定義
#define DEC0DE_MODE 0x09 //譯碼控制寄存器
#define lNTENSITY 0x0A //亮度控制寄存器
#define SCAN_LIMIT 0x0B //掃描界限寄存器
#define SHUT_D0WN 0x0C //關(guān)斷模式寄存器
#define DISPLAY_TEST 0x0F //測(cè)試控制寄存器
#define DOT 0x80
#define Digit0 0x01 /*數(shù)碼管1*/
#define Digit1 0x02 /*數(shù)碼管2*/
#define Digit2 0x03 /*數(shù)碼管3*/
#define Digit3 0x04 /*數(shù)碼管4*/
//#define Digit4 0x05 /*數(shù)碼管5*/
//#define Digit5 0x06 /*數(shù)碼管6*/
//#define Digit6 0x07 /*數(shù)碼管7*/
//#define Digit7 0x08 /*數(shù)碼管8*/
#define ShutdownMode 0x00 /*掉電方式工作*/
#define NormalOperation 0x01 /*正常操作方式*/
#define DecodeDigit 0x0F /*譯碼位數(shù)設(shè)置*/
#define IntensityGrade 0x0A /*顯示亮度級(jí)別設(shè)置*/
#define ScanDigit 0x03 /*掃描位數(shù)設(shè)置*/
#define TestMode 0x01 /*顯示測(cè)試方式*/
#define TextEnd 0x00 /*顯示測(cè)試結(jié)束,正常工作*/
void Gpio_select(void);
void Init_7219(void);
void Write_8bit(Uchar data); ////寫(xiě)8位數(shù)據(jù)子程序
void Write_7219(Uchar addr,Uchar data);//地址數(shù)據(jù)發(fā)送子程序
void delay_us(int us);
void delay_ms(int ms);
void main()
{
InitSysCtrl();
Gpio_select();
Init_7219();
Write_7219(DISPLAY_TEST,TestMode);//選擇工作模式(0xX0)
DELAYS;
Write_7219(DISPLAY_TEST,TextEnd);
while(1)
{
DELAYS;
DELAYS;
Init_7219();
Write_7219(Digit0,0x01|DOT);
Write_7219(Digit1,0x02&~DOT);
Write_7219(Digit2,0x03&~DOT);
Write_7219(Digit3,0x04&~DOT);
}
}
void Gpio_select(void)
{
EALLOW;
GpioMuxRegs.GPBMUX.all = 0x0;
GpioMuxRegs.GPBDIR.all = 0xFF; // output
GpioMuxRegs.GPBQUAL.all = 0x0;
EDIS;
}
void Init_7219(void)
{
Write_7219(SHUT_D0WN,NormalOperation);//開(kāi)啟正常工作模式0x01
Write_7219 (DEC0DE_MODE,DecodeDigit);//選用全譯碼模式
Write_7219(SCAN_LIMIT,ScanDigit);//4只LED
Write_7219(lNTENSITY,IntensityGrade);//設(shè)置初始亮度
}
void Write_7219(Uchar addr,Uchar data) //地址數(shù)據(jù)發(fā)送子程序
{
LOAD=0; ///拉低片選線.選中器件
DELAYUS;
Write_8bit(addr); //發(fā)送地址
Write_8bit(data); //發(fā)送數(shù)據(jù)
LOAD=1; //發(fā)送結(jié)束。上升沿鎖存數(shù)據(jù)
DELAYUS;
}
void Write_8bit(Uchar data)//寫(xiě)8位數(shù)據(jù)子程序
{
int i;
for(i=0;i<8;i++)
{
if((data&0x80)==1)DIN=1;
else DIN=0;
data=data<<1;
CLK=0;
DELAYUS;
CLK=1;
DELAYUS;
}
}
void delay_us(int us)
{
int i;
while(us--)
{ i=150;
while(i--)
{ asm("NOP");}
}
}
void delay_ms(int ms)
{
while(ms--)
{delay_us(1000);}
}
/*****************************************************************
No more
*****************************************************************/
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -