본문 바로가기

컴퓨터/Cortex-M3(STM32F103)

삼광도트매트릭스 기본 프로그램


/************************************************
제목 : 16x32 MDOT
보드 : STM3210E-EVAL
LCD : 16x32 SAM KWANG SMM-63216
최초작성일 : 2011.08.23
작성자 : 부산직업능력개발원 정보기술 ###

핀연결
1(RDATA)  : PD0
2(GDATA)  : PD1
3(A0)   : PD2
4(A1)   : PD3
5(A2)   : PD4
6(A3)   : PD5
7(ENABLE) : PD6
8(LATCH)  : PD7
9(CLX)   : PD8
10(GND)  : GND
*************************************************/
#include "stm32f10x.h"

#define RD(x) x?(GPIOD->ODR |= GPIO_Pin_0) : (GPIOD->ODR &= ~GPIO_Pin_0)
#define GD(x) x?(GPIOD->ODR |= GPIO_Pin_1) : (GPIOD->ODR &= ~GPIO_Pin_1)
#define A0(x) x?(GPIOD->ODR |= GPIO_Pin_2) : (GPIOD->ODR &= ~GPIO_Pin_2)
#define A1(x) x?(GPIOD->ODR |= GPIO_Pin_3) : (GPIOD->ODR &= ~GPIO_Pin_3)
#define A2(x) x?(GPIOD->ODR |= GPIO_Pin_4) : (GPIOD->ODR &= ~GPIO_Pin_4)
#define A3(x) x?(GPIOD->ODR |= GPIO_Pin_5) : (GPIOD->ODR &= ~GPIO_Pin_5)
#define EN(x) (x==0)?(GPIOD->ODR |= GPIO_Pin_6) : (GPIOD->ODR &= ~GPIO_Pin_6)
#define CK(x) x?(GPIOD->ODR |= GPIO_Pin_8) : (GPIOD->ODR &= ~GPIO_Pin_8)
#define LA(x) (x==0)?(GPIOD->ODR |= GPIO_Pin_7) : (GPIOD->ODR &= ~GPIO_Pin_7)

void delay(vu32 t){
 while(t--);
}

int main(void){
 
 vu8 k,j;
 vu16 i;
 
 GPIO_InitTypeDef GPIO;
 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
 
 GPIO.GPIO_Mode=GPIO_Mode_Out_PP;
 GPIO.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6;
 GPIO_Init(GPIOD, &GPIO);
 
 EN(1);
  
 while(1)
 {
 for(k=0; k<16; k++){
  i=200;
  for(j=0;j<32;j++){
   RD(0); GD(1);
   CK(1);
   CK(0);
  }
  A0(k & 0x01);
  A1(k & 0x02);
  A2(k & 0x04);
  A3(k & 0x08);
  LA(1); LA(0);
  
  do{
   CK(1);
   CK(0);
  }while(i--);
 }
 }
  
}