RULLANDE visning med ledde matrisen (3 / 3 steg)
Steg 3: Program och anslutningar
Anslut motsvarande stift av de två styrelserna.
Det fullständiga programmet för att Visa "RWDD" är som nedan:
#include < stdint.h >
#include < stdbool.h >
#include"tm4c123gh6pm.h"
#include"sysctl.h"
volatile osignerade långa j = 0;
volatile osignerade långa en = 0x0;
volatile osignerade långa jag = 0;
void writedata (osignerade långa data)
{medan ((SSI0_SR_R&0X02) == 0) {SSI0_DR_R} = data.}
void writecom (unsigned char data)
{medan ((SSI0_SR_R&0X10) == 0x10) {}
GPIO_PORTA_DATA_R & = ~ 0X40;
SSI0_DR_R = data;
medan ((SSI0_SR_R&0X10) == 0x10) {}
GPIO_PORTA_DATA_R | = 0X40; }
CONST osignerade långa namn1 [] = {
{0xF1FF, 0xF2FF, 0xF388, 0xF488, 0xF588, 0xF688, 0xF7FF, 0xF8FF} / / 30 0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x88, 0x88, 0xF8, 0x04, 0x02, 0x01 / / 31 1 / / 31 1, 0x00, 0xFF, 0x02, 0x04, 0x08, 0x08, 0x04, 0x02, 0xFF / / 32 2, 0x00, 0xFF, 0x81, 0x81, 0x42, 0x24, 0x18 / / 33 3
, 0x00, 0xFF, 0x81, 0x81, 0x42, 0x24, 0x18, 0x00
};
void LED_Init()
{SYSCTL_RCGCSSI_R | = 0X00000001;
SYSCTL_RCGC2_R | = 0X00000001;
SYSCTL_RCGC2_R | = 0X00000020;
Jag = 0;
While(i<1000)
{jag = i + 1;}
GPIO_PORTA_AFSEL_R = 0X3F;
GPIO_PORTA_PCTL_R = 0X00222200;
GPIO_PORTA_AMSEL_R = 0X00;
GPIO_PORTA_DEN_R | = 0XFF;
GPIO_PORTA_PUR_R | = 0X08;
GPIO_PORTA_PDR_R & = 0XF7;
GPIO_PORTA_DIR_R | = 0XEC; SSI0_CR1_R = 0;
SSI0_CC_R = (SSI0_CC_R & ~ SSI_CC_CS_M) + SSI_CC_CS_SYSPLL;
SSI0_CC_R = 0X00;
SSI0_CR0_R = 0X0F;
SSI0_CPSR_R | = 0X02;
SSI0_CR1_R = 0X02;
GPIO_PORTA_DATA_R & = ~ 0X80; Jag = 0;
While(i<20) {jag = i + 1;}
SSI0_CR1_R = 0X02;
GPIO_PORTA_DATA_R | = 0X80;
GPIO_PORTA_DATA_R & = ~ 0X40;
medan ((SSI0_SR_R&0X10) == 0X10) {}
medan ((SSI0_SR_R&0X10) == 0X10) {}
GPIO_PORTF_DIR_R = 0XFF;
GPIO_PORTF_DEN_R = 0XFF;
GPIO_PORTA_DATA_R | = 0XC0; }
int main)
{LED_Init();
GPIO_PORTF_DATA_R = 0XF5;
WriteData(0xF900);
WriteData(0xFBF7);
WriteData(0xFFF0);
WriteData(0xFCF1); Jag = 0;
samtidigt (1) {
While(i<33)
{writedata(0xF800+name1[i]);
WriteData(0xF700+name1[i+1]);
WriteData(0xF600+name1[i+2]);
WriteData(0xF500+name1[i+3]);
WriteData(0xF400+name1[i+4]);
WriteData(0xF300+name1[i+5]);
WriteData(0xF200+name1[i+6]);
WriteData(0xF100+name1[i+7]);
j = 0;
While(j<500000)
{j = j + 1;}
jag = i + 1.
}
While(i<40)
{
WriteData(0xF800+name1[i]);
om (i + 1 > = 40) {writedata(0xF700+name1[i+1-40+8]);}
annat {writedata(0xF700+name1[i+1]);}
om (i + 2 > = 40) {writedata(0xF600+name1[i+2-40+8]);}
annat {writedata(0xF600+name1[i+2]);}
om (jag + 3 > = 40) {writedata(0xF500+name1[i+3-40+8]);}
annat {writedata(0xF500+name1[i+3]);}
om (i + 4 > = 40) {writedata(0xF400+name1[i+4-40+8]);}
annat {writedata(0xF400+name1[i+4]);}
om (i + 5 > = 40) {writedata(0xF300+name1[i+5-40+8]);}
annat {writedata(0xF300+name1[i+5]);}
om (i + 6 > = 40) {writedata(0xF200+name1[i+6-40+8]);}
annat {writedata(0xF200+name1[i+6]);}
om (i + 7 > = 40) {writedata(0xF100+name1[i+7-40+8]);}
annat {writedata(0xF100+name1[i+7]);}
j = 0; While(j<500000) {j = j + 1;}
jag = i + 1. }
IF(i==40) {jag = 8.}
}
}