ARM을 이용한 LCD 문자열 출력
-main.c 소스 분석
- main.c 소스
#include <project.h>
int main(void)
{
Lcd_Init();
Lcd_Print("Hello");
while(1);
return 0;
}
-lcd.c 소스 분석
- lcd.c 소스
#include <lcd.h>
#include <AT91SAM7S256.h>
void Lcd_Inst(unsigned char uiInst)
{
volatile unsigned int uiCnt;
*AT91C_PIOA_CODR = LCD_BUS | LCD_RS | LCD_RW | LCD_EN;
*AT91C_PIOA_SODR = LCD_CAL_INST(uiInst);
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
*AT91C_PIOA_SODR = LCD_EN;
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
*AT91C_PIOA_CODR = LCD_EN;
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
}
void Lcd_Init()
{
volatile unsigned int uiCnt;
*AT91C_PIOA_PER = LCD_BUS | LCD_RS | LCD_RW | LCD_EN;
*AT91C_PIOA_OER = LCD_BUS | LCD_RS | LCD_RW | LCD_EN;
*AT91C_PIOA_PPUDR = LCD_BUS | LCD_RS | LCD_RW | LCD_EN;
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
Lcd_Inst(LCD_INST_FUNC);
Lcd_Inst(LCD_INST_DSP);
Lcd_Inst(LCD_INST_ENT);
Lcd_Inst(LCD_INST_CUR);
Lcd_Inst(LCD_INST_CLR);
Lcd_Inst(LCD_INST_HOME);
return;
}
void Lcd_Data(unsigned char uiInst)
{
volatile unsigned int uiCnt;
*AT91C_PIOA_CODR = LCD_BUS | LCD_RS | LCD_RW | LCD_EN;
*AT91C_PIOA_SODR = LCD_RS;
*AT91C_PIOA_SODR = LCD_CAL_INST(uiInst);
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
*AT91C_PIOA_SODR = LCD_EN;
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
*AT91C_PIOA_CODR = LCD_EN;
for(uiCnt = 0 ; uiCnt < 100000 ; uiCnt++);
return;
}
void Lcd_Print(const unsigned char * cString)
{
while(0!=*cString)
{
Lcd_Data(*cString);
++cString;
}
return;
}
-lcd.h 소스 분석
-lcd.h 소스
#ifndef __LCD_H__
#define __LCD_H__
#define LCD_BUS 0x00FF0000
#define LCD_RS 0x00000001
#define LCD_RW 0x00000002
#define LCD_EN 0x00000004
#define LCD_CAL_INST(x) ( (LCD_BUS)&((x)<<16) )
#define LCD_INST_CLR 0x01
#define LCD_INST_HOME 0x02
#define LCD_INST_ENT 0x06
#define LCD_INST_DSP 0x0f
#define LCD_INST_CUR 0x14
#define LCD_INST_FUNC 0x38
void Lcd_Init();
void Lcd_Inst(unsigned char );
void Lcd_Data(unsigned char );
void Lcd_Print(const unsigned char * );
#endif //__LCD_H__
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
ARM 인터럽트소스 (1) | 2015.07.31 |
---|---|
20150730-7번-김재홍-IPC(내부 프로세스 간 통신 설비)통신 (4) | 2015.07.31 |
20150729-6번-김성현-ARM7 (6) | 2015.07.30 |
20150728-3번-권오민 - 멀티 프로세스 프로그래밍 (17) | 2015.07.28 |
2015-07-21 32번 천정호 AT91ARM7S256 Chip 분석 및 ARM을 이용한 LED 제어 (7) | 2015.07.22 |
20150720-31번-차윤도-ARM bootcode분석,Datasheet 중간프로젝트 (7) | 2015.07.20 |
2015.07.17(금) 주재민 -스테핑 모터,ARM Compiler 설치,Cygwin 설치 (2) | 2015.07.17 |
20150716 - 26번 임현수 ADConverter, ADCompare 서보모터제어, ARM(AT91SAM7S256), TCP헤더 캡처용 패킷애널라이저 (6) | 2015.07.17 |