728x90
반응형
#include <avr/io.h>
#include <util/delay.h>
#define CLR 0x01 //Clear Display 명령
#define HOME 0x02 //Return Home 명령
#define FNC 0x38 //Function Set 명령
//Data Length = 8bit. 행수 2행
void LCD_PortSetting(void)
{
DDRC = 0xFF; //데이터 라인
DDRD = 0xFF; //0~2 제어핀 사용
//D0: RS ,D1: R/W ,D2: EN
}
void IR_Write(unsigned char Data)
{
PORTD &= 0xFC; //RS = 0, Write Enable
_delay_us(1); //Enable 까지 최소 대기 시간 40ns
PORTD |= 0x04; //Enable 활성화
_delay_us(1); //
PORTC = Data; //Data
_delay_us(1);
PORTD = 0b00000010; //Disable, Read Mode
}
void DR_Write(unsigned char Data)
{
PORTD = 0x01; //RS = 1, Write Enable
_delay_us(1); //Enable 까지 최소 대기 시간 40ns
PORTD |= 0x04; //Enable 활성화
_delay_us(1); //
PORTC = Data; //Data
_delay_us(1);
PORTD = 0b00000010; //Disable, Read Mode
}
void LCD_drive()
{
_delay_ms(50);
IR_Write(FNC);
_delay_ms(5);
IR_Write(FNC);
_delay_us(100);
IR_Write(FNC);
_delay_ms(2);
IR_Write(0x0E); // Display On / Off, DDRAM, 커서 ON
_delay_ms(2);
IR_Write(CLR); // Display Clear
_delay_ms(30);
IR_Write(0x06); // Entry Mode Set, 커서위치를 오른쪽으로 증가
_delay_ms(2);
}
int main(void)
{
LCD_PortSetting();
LCD_drive();
DR_Write(65);
_delay_ms(2);
DR_Write('D');
while(1)
{
}
return 0;
} |
Output :
LCD에 D 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
| #include <avr/io.h>
#include <util/delay.h>
#define CLR 0x01 // Return Home 명령
#define HOME 0x02 // Function Set 명령
#define FNC 0x38 // Data Length 8 bit
void LCD_PortSetting(void)
{
DDRC = 0xFF; // 데이터 라인
DDRD = 0xFF; // 0 ~ 2 제어 핀 사용
// 00: RS, 01: R/W, 02: En
}
void IR_Write(unsigned char Data)
{
PORTD &= 0xFC; // RS = 0, Write Enable
_delay_us(1); // Enable 까지 최소 대기 시간 40ns
PORTD |= 0x04; // En
_delay_us(1);
PORTC = Data;
_delay_us(1);
PORTD = 0b00000010; // Disable. Read Mode
}
void DR_Write(unsigned char Data)
{
PORTD = 0x01; // RS = 1, Write Enable
_delay_us(1); // Enable 까지 최소 대기 시간 40ns
PORTD |= 0x04; // En
_delay_us(1);
PORTC = Data;
_delay_us(1);
PORTD = 0b00000010; // Disable. Read Mode
}
void LCD_drive()
{
_delay_ms(50); //
IR_Write(FNC);
_delay_ms(5);
IR_Write(FNC);
_delay_us(100);
IR_Write(FNC);
_delay_ms(2);
IR_Write(0x0E); // Display on/off DDRAM, 커서를 화면에 표시
_delay_ms(2);
IR_Write(CLR); // Display Clear
_delay_ms(30);
IR_Write(0x06); // Entry module set 명령. 오른쪽으로 커서 이동.
_delay_ms(2);
}
void LCD_CHAR(unsigned char a)
{
_delay_ms(1); // 명령어 쓰기 전 일정 시간 지연
DR_Write(a); // 사유: Busy Flage 확인 대용
}
void cursor_HOME(void)
{
IR_Write(0x02);
_delay_ms(2);
}
void Display_Shift(unsigned char p)
{
if(p == 1) // 표시화면 전체를 오른쪽으로 이동.
{
IR_Write(0x1C); // 화면 표시 내용을 오른쪽으로 이동.
_delay_us(50);
}
else if(p == 0)
{
IR_Write(0x18); // 화면 표시 내용을 오른쪽으로 이동.
_delay_us(50);
}
}
void LCD_STR(unsigned char *str)
{
while(*str != 0) // 0은 null, 값이 들어오면
{
LCD_CHAR(*str);
str++;
}
}
void Position(unsigned char col, unsigned char row) // 열과 행
{
IR_Write(0x80 | row+col*(0x40));
}
int main(void)
{
LCD_PortSetting();
LCD_drive();
/*
DR_Write(65);
DR_Write('B');
*/
Position(1,1);
LCD_STR("JO JAE CHAN");
//Display_Shift(1);
while(1)
{
}
return 0;
} |
Output :
C# 성적관리 프로그램
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Student_Score
{
class STUDENT
{
public string name;
public int Kor;
public int Eng;
public int Tot;
public double ag;
public int grd;
public string Total(string a, string b)
{
string temp = (int.Parse(a) + int.Parse(b)).ToString();
return temp;
}
public string Avg(string a, string b)
{
string temp = ((int.Parse(a) + int.Parse(b)) / 2).ToString();
return temp;
}
public string Grade(double ag)
{
string grade;
if (90 <= ag)
grade = "A";
else if (80 <= ag)
grade = "B";
else if (70 <= ag)
grade = "C";
else
grade = "F";
return grade;
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("학생정보 입력");
STUDENT s1 = new STUDENT();
Console.Write("이름 : ");
s1.name = Console.ReadLine();
Console.Write("국어성적 : ");
s1.Kor = int.Parse(Console.ReadLine());
Console.Write("영어성적 : ");
s1.Eng = int.Parse(Console.ReadLine());
s1.Tot = s1.Kor + s1.Eng;
s1.ag = (s1.Kor + s1.Eng) / (double)2;
Console.WriteLine("====================================================================================");
Console.WriteLine("이름" + "\t" + "국어" + "\t" + "영어" + "\t" + "총점" + "\t" + "평균" + "\t" + "등급");
Console.WriteLine(s1.name + "\t" + s1.Kor + "\t" + s1.Eng + "\t" + s1.Tot + "\t" + s1.ag + "\t" + s1.Grade(s1.ag));
}
}
} |
Output :
728x90
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
오픈소스 버그를 잡는 블랙덕 무료 툴 ‘Security Checker’OSS (0) | 2016.06.01 |
---|---|
2016-05-22_조재찬_스터디일지-C# 클래스 복습 (0) | 2016.05.22 |
2016-05-20_조재찬_스터디일지-C# 메소드와 클래스 복습 (0) | 2016.05.20 |
이름 (0) | 2016.05.20 |
2016-05-18_조재찬_스터디일지_ C#-설문조사 APP, 기초복습 (0) | 2016.05.19 |
2016-05-18_조재찬_업무일지_ C#-OOP와 클래스 (0) | 2016.05.18 |
2016-05-17_조재찬_업무일지_AVR 입출력/ C#메소드 (0) | 2016.05.17 |
2016-05-16_조재찬_업무일지_AVR 입출력/ C#기초 (0) | 2016.05.16 |