📄 led-test.c
字号:
// 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 //关断模式寄存器
#define DISPLAY_TEST 0x0F //测试控制寄存器
#define DOT 0x80
#define Digit0 0x01 /*数码管1*/
#define Digit1 0x02 /*数码管2*/
#define Digit2 0x03 /*数码管3*/
#define Digit3 0x04 /*数码管4*/
//#define Digit4 0x05 /*数码管5*/
//#define Digit5 0x06 /*数码管6*/
//#define Digit6 0x07 /*数码管7*/
//#define Digit7 0x08 /*数码管8*/
#define ShutdownMode 0x00 /*掉电方式工作*/
#define NormalOperation 0x01 /*正常操作方式*/
#define DecodeDigit 0x0F /*译码位数设置*/
#define IntensityGrade 0x0A /*显示亮度级别设置*/
#define ScanDigit 0x03 /*扫描位数设置*/
#define TestMode 0x01 /*显示测试方式*/
#define TextEnd 0x00 /*显示测试结束,正常工作*/
void Gpio_select(void);
void Init_7219(void);
void Write_8bit(Uchar data); ////写8位数据子程序
void Write_7219(Uchar addr,Uchar data);//地址数据发送子程序
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);//开启正常工作模式0x01
Write_7219 (DEC0DE_MODE,DecodeDigit);//选用全译码模式
Write_7219(SCAN_LIMIT,ScanDigit);//4只LED
Write_7219(lNTENSITY,IntensityGrade);//设置初始亮度
}
void Write_7219(Uchar addr,Uchar data) //地址数据发送子程序
{
LOAD=0; ///拉低片选线.选中器件
DELAYUS;
Write_8bit(addr); //发送地址
Write_8bit(data); //发送数据
LOAD=1; //发送结束。上升沿锁存数据
DELAYUS;
}
void Write_8bit(Uchar data)//写8位数据子程序
{
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
*****************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -