BASIC4MCU | 질문게시판 | atmega128 4bit lcd 질문
페이지 정보
작성자 master 작성일2018-09-21 06:17 조회9,650회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=3168
본문
#include <mega128.h>// Alphanumeric LCD functions
#asm
.equ __lcd_port=0x12; #endasm #include <lcd.h> #include <delay.h>// Declare your global variables here
unsigned int count = 0,num = 0, four , three , two , one; void main(void) { DDRD = 0xff; lcd_init(16);do{
EIMSK = 0b01110000; EICRB = 0b00101010;if(num >9999)
num <= 0; four = (num/1000)%10; three = (num/100)%10; two = (num/10)%10; one = num%10; lcd_gotoxy(0,0); lcd_putchar(four); lcd_putchar(three); lcd_putchar(two); lcd_putchar(one);}while(1);
SREG = 0x80; } interrupt [EXT_INT4] void external_int4(void) { num++; } interrupt [EXT_INT5] void external_int5(void) { num--; } interrupt [EXT_INT6] void external_int6(void) { num = 0; }이런식으로 코드를 짯는데 4bit용 lcd에는 아무것도 안뜨네요
//
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-09-09 오후 5:15:35// by Ok-Hyun Park//#include <mega128.h>#include <delay.h>//#asm.equ __lcd_port=0x12;#endasm#include <lcd.h>//int num=0;unsigned int four,three,two,one;//interrupt[EXT_INT4]void external_int4(void){ if(++num>9999)num=0; }interrupt[EXT_INT5]void external_int5(void){ if(--num<0)num=9999; }interrupt[EXT_INT6]void external_int6(void){ num=0; }//void main(void){DDRD=0xff;lcd_init(16);EICRB=0xAA; EIFR=0xFF; EIMSK=0x70; SREG=0x80;while(1){four=num/1000%10+'0';three=num/100%10+'0';two=num/10%10+'0';one=num%10+'0';lcd_gotoxy(0,0); lcd_putchar(); lcd_putchar(three); lcd_putchar(two); lcd_putchar(one);delay_ms(250);}}
Table of ASCII Characters
binary MSN 0000 0001 0010 0011 0100 0101 0110 0111 LSN hex 0 1 2 3 4 5 6 7 0000 0 NUL 0
00DLE 16
10SP 32
200 48
30@ 64
40P 80
50` 96
60p 112
700001 1 SOH 1
01XON
(DC1)17
11! 33
211 49
31A 65
41Q 81
51a 97
61q 113
710010 2 STX 2
02DC2 18
12" 34
222 50
32B 66
42R 82
52b 98
62r 114
720011 3 ETX 3
03XOFF (DC2) 19
13# 35
233 51
33C 67
43S 83
53c 99
63s 115
730100 4 EOT 4
04DC4 20
14$ 36
244 52
34D 68
44T 84
54d 100
64t 116
740101 5 ENQ 5
05NAK 21
15% 37
255 53
35E 69
45U 85
55e 101
65u 117
750110 6 ACK 6
06SYN 22
16& 38
266 54
36F 70
46V 86
56f 102
66v 118
760111 7 BEL 7
07ETB 23
17' 39
277 55
37G 71
47W 87
57g 103
67w 119
771000 8 BS 8
08CAN 24
18( 40
288 56
38H 72
48X 88
58h 104
68x 120
781001 9 HT 9
09EM 25
19) 41
299 57
39I 73
49Y 89
59i 105
69y 121
791010 A LF 10
0ASUB 26
1A* 42
2A: 58
3AJ 74
4AZ 90
5Aj 106
6Az 122
7A1011 B VT 11
0BESC 27
1B+ 43
2B; 59
3BK 75
4B[ 91
5Bk 107
6B{ 123
7B1100 C FF 12
0CFS 28
1C, 44
2C< 60
3CL 76
4C\ 92
5Cl 108
6C| 124
7C1101 D CR 13
0DGS 29
1D- 45
2D= 61
3DM 77
4D] 93
5Dm 109
6D} 125
7D1110 E SO 14
0ERS 30
1E. 46
2E> 62
3EN 78
4E^ 94
5En 110
6E~ 126
7E1111 F SI 15
0FUS 31
1F/ 47
2F? 63
3FO 79
4F_ 95
5Fo 111
6FDEL 127
7F
LCD는 정수를 출력하면 안되고 문자를 사용해서 출력하세요
'0'=0x30
'1'=0x31
'2'=0x32
0 48
30
39 |
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-09-09 오후 5:18:48
// by Ok-Hyun Park
//
#include <mega128.h>
#include <delay.h>
#include <stdio.h>
//
#asm
.equ __lcd_port=0x12;
#endasm
#include <lcd.h>
//
int num=0;
unsigned int count=0,four,three,two,one;
char str[21];
//
interrupt[EXT_INT4]void external_int4(void){ if(++num>9999)num=0; }
interrupt[EXT_INT5]void external_int5(void){ if(--num<0)num=9999; }
interrupt[EXT_INT6]void external_int6(void){ num=0; }
//
void main(void){
DDRD=0xff;
lcd_init(16);
EICRB=0xAA; EIFR=0xFF; EIMSK=0x70; SREG=0x80;
while(1){
sprintf(str,"%04d",num); lcd_gotoxy(0,0); lcd_puts(str);
delay_ms(250);
}
}
sprintf를 사용한 예제입니다.
댓글 0
조회수 9,650등록된 댓글이 없습니다.