Q&A
| 번호 | 제목 | 작성자 | 등록일 | 조회 |
|---|---|---|---|---|
| 6993 | 답변완료AM-MS2 가변저항 방향 문의 | 김성환 | 2012-01-21 | 1,401 |
|
AM-MS2의 가변저항에 따른 Vref 값을 측정해봤는데
제일 반시계방향으로 돌렸을 때 1.79V
제일 시계방향으로 돌렸을 때 0.01V 정도 나옵니다.
I = Vref / Rs 이니
가변저항을 반시계방향으로 돌릴수록 모터에 흐르는 전류가 높아지는건가요?
보통 돌리는 스위치는 시계방향으로 돌릴수록 힘이 세지는 거라고 생각해서
제일 반시계방향으로 돌려놓는 게 제일 약한 출력이라고 생각해서
테스트할 때 매번 제일 반시계방향으로 돌려놓고 시작했었는데,
Vref를 재보니 당황스럽네요.
자주 사용하던 오른쪽 드라이버가 고장이 난 것 같은데 이것 때문인지...
가변저항을 돌리는 방향에 따른 출력 전류의 변화가 어떻게 되는지 궁금합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주ㅕ서 감사합니다.
트립 저항을 0.5옴으로 R611, R604, R612, R603에 사용할 경우,
I trip = Vref / R, (단, I trip은 최대전류치 ) 여기서 트립 저항을 0.5옴을 쓰면, 1.5 / 0.5 즉,
Vref입력은 최대 1.5V이고 회로는 현재 0.5옴을 사용하므로 최대 3A까지 사용이 가능합니다. 실제는 최대 전류치가 IC의 상태나 회로에 사용된 저항 등에 의해 약간의 오차가 있을 수 있습니다.
모듈에서 저항을 구별하는 쉬운 방법은 중간의
본사에서 달아 나가는 큰 저항의 바깥 색깔이 주황색이면 1옴이고, 녹색이면 0.5옴입니다.
즉, 현재 0.5옴으로 장착하여 나가므로, 200mA - 3A까지 사용 가능합니다.
하지만, 가변 저항에 걸린 전압을 크게 한다고만 좋은 것은 아니며, 작게한다고만 좋은 것은 아닙니다.
항상 동작시마다 테스트 해서, 적정한 곳을 선정하여 사용하는 것이 좋습니다.
수고하세요.
>
>
> AM-MS2의 가변저항에 따른 Vref 값을 측정해봤는데
> 제일 반시계방향으로 돌렸을 때 1.79V
> 제일 시계방향으로 돌렸을 때 0.01V 정도 나옵니다.
>
> I = Vref / Rs 이니
> 가변저항을 반시계방향으로 돌릴수록 모터에 흐르는 전류가 높아지는건가요?
>
> 보통 돌리는 스위치는 시계방향으로 돌릴수록 힘이 세지는 거라고 생각해서
> 제일 반시계방향으로 돌려놓는 게 제일 약한 출력이라고 생각해서
> 테스트할 때 매번 제일 반시계방향으로 돌려놓고 시작했었는데,
> Vref를 재보니 당황스럽네요.
>
> 자주 사용하던 오른쪽 드라이버가 고장이 난 것 같은데 이것 때문인지...
>
> 가변저항을 돌리는 방향에 따른 출력 전류의 변화가 어떻게 되는지 궁금합니다.
>
|
||||
| 6992 | 답변완료무통장입금으로 물건을 구매하려는데 영수증,세금계산서 | 전진기 | 2012-01-20 | 1,278 |
|
무통장입금으로 물건을 구매하려는데 영수증,세금계산서는 어떻게 받을 수 있나요??
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
구매하시는 과정에 있는 내용을 빠짐없이 기입해 주시구요.
본사로 회사 사업자 등록증 + 통장사본 을 팩스(02-704-4733)으로 보내신 후,
전화 주시면 됩니다. 그러면, 전자세금 계산서를 이메일로 발급해 드립니다.
감사합니다.
>
>
> 무통장입금으로 물건을 구매하려는데 영수증,세금계산서는 어떻게 받을 수 있나요??
>
|
||||
| 6991 | 답변완료atmega128, atmega2561 포트에 대한 궁금증 | 이인준 | 2012-01-20 | 1,232 |
|
여러해동안 귀사의 제품을 이용하고 있습니다.
AB-M128-B 보드에 AM-128PL를 주로 사용하였으나 AM-2561PRO 보드를 꼽아서 사용할려고 하던중에 포트에 대해 의문시 되는 사항이 있어 질문하게 되엇습니다.
atmega 128, atmega2561 공히 PE1, PE2 가 통신 포트 TXD0, RXD0로만 사용하였는데 금일 보니까 ISP의 MISO, MOSI에 연결되어 사용중임을 알았습니다. PB2, PB1의 MOSI, MISO로만 알고 있었거든요, 어떻게 된거죠 ?
답변 부탁드립니다.
연락처는 01032571159
입니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 여러해 이용하여 주셔서 감사드립니다.
원래 ATMEGA64, 128, 2561, 2560 같은 제품들은 MOSI, MISO 라인 대신 PDI, PDO를 이용하고 있습니다.
데이터 시트 상에 나와 있어요.
SPI 통신과는 별도로 다운로딩 전용으로 만들어 둔 거라고 합니다.
수고하세요.
>
>
> 여러해동안 귀사의 제품을 이용하고 있습니다.
> AB-M128-B 보드에 AM-128PL를 주로 사용하였으나 AM-2561PRO 보드를 꼽아서 사용할려고 하던중에 포트에 대해 의문시 되는 사항이 있어 질문하게 되엇습니다.
>
> atmega 128, atmega2561 공히 PE1, PE2 가 통신 포트 TXD0, RXD0로만 사용하였는데 금일 보니까 ISP의 MISO, MOSI에 연결되어 사용중임을 알았습니다. PB2, PB1의 MOSI, MISO로만 알고 있었거든요, 어떻게 된거죠 ?
> 답변 부탁드립니다.
> 연락처는 01032571159
> 입니다.
>
|
||||
| 6990 | 답변완료질문이요^^ | 최예한 | 2012-01-19 | 1,422 |
|
안녕하세요. 사장님
다름아니라 궁금 사항이 2가지 질문이 있었습니다.
첫번째는 첨 스태핑 모타구동이 시계방향으로 돌아 반시계방향으로 오는 것이었습니다만,
-- 사장님꼐서 도움 주심 파일은 처음 시작점이 반시계 반향 ^^.
** 고민끝에 소스을 이것 저것 운좋게.. 방향법을 알었습니다.
*** 제일 중요한 부분은
두번째로 도움주신 스태핑 왕복운동 소스에 선 버튼 누름시 시작부터 끝 마루리까지는 정상적으로
이루워 집니다.
다만, 다시한번 동작을 하려면 전원 또는 reset버튼을 누르고 작동 버튼을 눌러야 하는 번거로움이 없지않아 있는데...
이런거 보안하려면 어찌해야 되는지?
원본은 소중한거라 잘 보관되어. 복사 본으로 이것저것 다른소스를 비교하고 입력해서 보곤하는데...
통...모르겠더라구여.
사장님께서 늘 바쁘시지만, 시간되실때. 어디를 어떻게 해야되는지 소스 수정을 해주시면....
처음 원본과 대조해 보며 그 부분을 과 필요했던 문재점을 잘 알수있고 쉽게 이해될거 같다라는 제의견을 적어보네드립니다.
안된다 하시더라도 답변을 부탁드립니다.
첫날 배운것에 도움이 많이된거 같습니다. 방향 전환 문재를 풀었습니다. 운이 좋았다고 생각되지만.,
건강하세요.
관리자 답변
안녕하세요?
지난 번에 짜드린 소스는 구조상 한 번 동작하면 대기 상태에서는 다시 다음 명령을 기다리기 떄문에,
원칙적으로 버튼 누르는 것에 따라서, 계속 동작하는 것인데, 무슨 말인지 잘 이해가 안갑니다.
또한, 미안하지만, 소스는 계속 짜드리기는 어렵겠습니다. 원래 저희가 소스를 짜드리지는 않습니다.
자세히 질문하여 주세요.
수고하세요.
>
>
> 안녕하세요. 사장님
>
> 다름아니라 궁금 사항이 2가지 질문이 있었습니다.
>
> 첫번째는 첨 스태핑 모타구동이 시계방향으로 돌아 반시계방향으로 오는 것이었습니다만,
> -- 사장님꼐서 도움 주심 파일은 처음 시작점이 반시계 반향 ^^.
> ** 고민끝에 소스을 이것 저것 운좋게.. 방향법을 알었습니다.
>
> *** 제일 중요한 부분은
>
> 두번째로 도움주신 스태핑 왕복운동 소스에 선 버튼 누름시 시작부터 끝 마루리까지는 정상적으로
> 이루워 집니다.
>
> 다만, 다시한번 동작을 하려면 전원 또는 reset버튼을 누르고 작동 버튼을 눌러야 하는 번거로움이 없지않아 있는데...
>
> 이런거 보안하려면 어찌해야 되는지?
>
> 원본은 소중한거라 잘 보관되어. 복사 본으로 이것저것 다른소스를 비교하고 입력해서 보곤하는데...
>
> 통...모르겠더라구여.
>
> 사장님께서 늘 바쁘시지만, 시간되실때. 어디를 어떻게 해야되는지 소스 수정을 해주시면....
>
> 처음 원본과 대조해 보며 그 부분을 과 필요했던 문재점을 잘 알수있고 쉽게 이해될거 같다라는 제의견을 적어보네드립니다.
>
> 안된다 하시더라도 답변을 부탁드립니다.
>
> 첫날 배운것에 도움이 많이된거 같습니다. 방향 전환 문재를 풀었습니다. 운이 좋았다고 생각되지만.,
>
> 건강하세요.
>
|
||||
| 6989 | 답변완료AD-USBISP++V4에서 ISP Mode Error 관련 | 심경섭 | 2012-01-19 | 1,402 |
|
안녕하세요.
AD-USBISP++V4로 새 칩에 프로그래밍하려는데
ISP Mode Error라고 뜨면서 더 이상 진행이 어렵네요.
환경:
Windows XP Pro. 32bit
WinAvr + AVR Studio 4.19
AVR Studio->Tools->...->ISP Freq: 1.21kHz(다른 것도 증상 동일)
AVR이 새칩이고, 기본 fuse 값이 Int.RC Osc. 1MHz라고 스펙이 나와있어,
외부 XTAL는 사용 안함(사용해도 증상 동일함 ㅡㅡ;)
Target:
ATtiny45-20PU
ATMEGA8L-8PU
ATMEGA8-16PU
회로는 단순하게 USBISP-컨버팅 보드 6핀-각 AVR 칩의 해당 PIN에 연결, AVR을 빵판에서 RESET Vcc 10K 풀업, Vcc 5V 외부 전원/GND 연결(외부 XTAL 유/무 증상 동일함)
증상:
AVR 칩을 새로 구입하여 처음 구우려 시도함(fuse/lock 비트 미설정 상태)
AVR Studio->Tools->Program AVR->Connect->STK500, COM4로 Connect하면 다음과 같이 표시됨
Detecting on 'COM4'...
STK500 with V2 firmware found on COM4
Getting revisions.. HW: 0x02, SW Major: 0x02, SW Minor: 0x0a .. OK
Getting isp parameter.. SD=0xfe .. OK
Device Atmega8 선택, Signature not read라고 표시되어 있어, Read Signature를 누르면
ISP Mode Error라는 창 뜸
(위 target 칩 모두 동일함)
USBISP의 ISP Connection 파란 LED가 들어오지 않거나 깜빡일 때도 있고,
항상 켜져 있지 않음
(보드 공급 전압은 5V로 이상없음, USBISP 커넥터로도 Vcc 5V 확인 )
Target 칩부터 USBISP 커넥터 까지는 배선 이상 없음
다른 보드가 없어 더 이상 확인이 어려워 질문 남김니다.
어떤 부분을 확인해 봐야 할 까요?
관리자 답변
안녕하세요? 고객님,
답변 드리겠습니다.
> AD-USBISP++V4로 새 칩에 프로그래밍하려는데
> ISP Mode Error라고 뜨면서 더 이상 진행이 어렵네요.
>
> 환경:
> Windows XP Pro. 32bit
> WinAvr + AVR Studio 4.19
> AVR Studio->Tools->...->ISP Freq: 1.21kHz(다른 것도 증상 동일)
===> STK500은 최소 5kHz 이상으로 ISP Freq.를 사용하도록 되어 있으며,
또한, 최소한 사용 클럭의 1/4 이하를 사용하면 됩니다.
즉, 내부 클럭으로 한다고 해도 처음 써도 460kHz나 115kHz 등으로 쓰시면 되겠습니다.
처음 쓰는 새 칩에 1.8MHz 쓰면 당연히 에러가 나게 되죠.
본사의 USBISP V3.5 이하는 그렇게 해도 알아서 맞춰서 내려쓰기 떄문에 문제가 안 생기지만,
속도가 USBISP+ V4.0 보다는 아무래도 느리게 되구요. USBISP+V4.0은 최고 속도에 맞춰서 디자인 한 것이라서, 최고 속도로 사용하려면, 그런 점들을 고려하여 처음쓸 때는 ISP Freq를 내려서 써야 하겠습니다.
> AVR이 새칩이고, 기본 fuse 값이 Int.RC Osc. 1MHz라고 스펙이 나와있어,
> 외부 XTAL는 사용 안함(사용해도 증상 동일함 ㅡㅡ;)
>
>
> Target:
> ATtiny45-20PU
> ATMEGA8L-8PU
> ATMEGA8-16PU
>
> 회로는 단순하게 USBISP-컨버팅 보드 6핀-각 AVR 칩의 해당 PIN에 연결, AVR을 빵판에서 RESET Vcc 10K 풀업, Vcc 5V 외부 전원/GND 연결(외부 XTAL 유/무 증상 동일함)
==> 리셋단은 단순히 풀업만 시키는 것이 아니라, 커패시터 등으로 RC 타이밍을 만들어 내서, 자연스럽게 리셋하면 High로 올라가도록 타이밍을 조절해 가면서 해야 합니다.
>
>
> 증상:
> AVR 칩을 새로 구입하여 처음 구우려 시도함(fuse/lock 비트 미설정 상태)
> AVR Studio->Tools->Program AVR->Connect->STK500, COM4로 Connect하면 다음과 같이 표시됨
>
> Detecting on 'COM4'...
> STK500 with V2 firmware found on COM4
> Getting revisions.. HW: 0x02, SW Major: 0x02, SW Minor: 0x0a .. OK
> Getting isp parameter.. SD=0xfe .. OK
>
> Device Atmega8 선택, Signature not read라고 표시되어 있어, Read Signature를 누르면
> ISP Mode Error라는 창 뜸
> (위 target 칩 모두 동일함)
==> 위에서 설정하신 ISP Freq.가 너무 낮네요.
>
> USBISP의 ISP Connection 파란 LED가 들어오지 않거나 깜빡일 때도 있고,
> 항상 켜져 있지 않음
> (보드 공급 전압은 5V로 이상없음, USBISP 커넥터로도 Vcc 5V 확인 )
==> ISP 연결이 되지 않는 것으로 보입니다. 위에서 말씀드린 것들을 해보세요.
>
> Target 칩부터 USBISP 커넥터 까지는 배선 이상 없음
>
> 다른 보드가 없어 더 이상 확인이 어려워 질문 남김니다.
> 어떤 부분을 확인해 봐야 할 까요?
>
자작 보드인 경우, 많은 변수가 있습니다만, 일단, 위에서 말씀드린 대로 해 보는 게 좋겠습니다.
그리고, 전문가용보다는 많이 사용해 보지 않으셨을 때는 조금 속도가 상대적으로 늦더라도 일반용 V03.5를 쓰는 것이 좋지 않을까 싶습니다. 사용자에게 맞춰 주니까요.
수고하세요.
|
||||
| 6988 | 답변완료atmega128로 usart 통신 하려고 하는데요. 문제가 있습니다. | 박진수 | 2012-01-18 | 1,389 |
|
현재 당사의 usb isp 를 가지고 usart통신을 시도 중에 있습니다. 물론 이 isp 장비로 다운로더 기능이 있는
6핀과 usart통신으로 쓰이는 4핀을 동시에 사용하고 있지는 않습니다. usart통신핀만 끼워 놓았습니다.
그리고 1번 스위치를 on으로 해놓고 2번 스위치는 내려 놓았고요.
소스는 다음과 같습니다.
#include <mega128.h>
#include <delay.h>
void main(void){
UCSR0B=8; UBRR0H=0; UBRR0L=103; // 16MHz, 9600
UCSR1B=8; UBRR1H=0; UBRR1L=103; // 16MHz, 9600
while(1){ UDR0='0'; UDR1='1'; delay_ms(1000); }
}
이 소스는 문제가 없습니다. 제 친구가 usart통신 테스트 용으로 썻던거고 잘 되었다고
했기때문에 그런데 혹시 일단 소스 검사 부탁드릴게요.
그런데 제 꺼에 넣어서 하이퍼터미널을 키니깐 안나오내요. 아 참
정확히 저는 하이퍼터미널을
사용하지 않구요. serial com 이라는 프로그램을 사용하고 있습니다.
이 프로그램 파일은 위에 첨부할게요.
하이퍼터미널 보다 좋은거 같은데, 기능은 똑같은거 같거든요?
위에 소스에서 보다 싶히 1초당 0,과 1 값이 컴퓨터 RX 창 부분에
떠야 되는데 안되네요.;;;;; 뭐가 문제이죠?
더 정확한 현재 상태를 말씀드릴게요
현재 usb isp 두개를 사서 사용하고 있고 한개는 다운로더 기능으로 한개는 usart 통신 기능으로 사용
중입니다.
usart 핀은 거꾸로 끼우지 않았고 정확하게 꽃았는 상태 입니다. 문제가 무엇인지 모르겠습니다.
아 참 그리고 보트레이트와 정지비트수는 당연히 정확히 맞추어 주었습니다
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
USBISP가 두 개 꼽히면서 충돌난 문제일 가능성이 있습니다.
둘 다 제어판--> 시스템--> 하드웨어 장치관리자 --> 포트에서 잘 잡혔는 지 확인하여 주세요.
아니라면, 컴퓨터 뒤에 보면 보통 4개가 USB포트가 있는 데,
사실은 두 개씩 한 묶음인데, 같은 포트에서 USB 허브로 내부에서 만들어져서 나오는 거라,
그 두 쌍인 곳에 꽂으면 충돌 날 수도 있습니다.
그러므로, 충돌나지 않는 구조로 꽂아서 쓰시면 됩니다.
그것을 확인하여 보세요.
수고하세요.
>
>
> 현재 당사의 usb isp 를 가지고 usart통신을 시도 중에 있습니다. 물론 이 isp 장비로 다운로더 기능이 있는
>
> 6핀과 usart통신으로 쓰이는 4핀을 동시에 사용하고 있지는 않습니다. usart통신핀만 끼워 놓았습니다.
>
> 그리고 1번 스위치를 on으로 해놓고 2번 스위치는 내려 놓았고요.
>
> 소스는 다음과 같습니다.
>
>
> #include <mega128.h>
> #include <delay.h>
>
>
>
> void main(void){
> UCSR0B=8; UBRR0H=0; UBRR0L=103; // 16MHz, 9600
> UCSR1B=8; UBRR1H=0; UBRR1L=103; // 16MHz, 9600
> while(1){ UDR0='0'; UDR1='1'; delay_ms(1000); }
> }
>
>
> 이 소스는 문제가 없습니다. 제 친구가 usart통신 테스트 용으로 썻던거고 잘 되었다고
>
> 했기때문에 그런데 혹시 일단 소스 검사 부탁드릴게요.
>
> 그런데 제 꺼에 넣어서 하이퍼터미널을 키니깐 안나오내요. 아 참
>
> 정확히 저는 하이퍼터미널을
>
> 사용하지 않구요. serial com 이라는 프로그램을 사용하고 있습니다.
>
> 이 프로그램 파일은 위에 첨부할게요.
>
> 하이퍼터미널 보다 좋은거 같은데, 기능은 똑같은거 같거든요?
>
> 위에 소스에서 보다 싶히 1초당 0,과 1 값이 컴퓨터 RX 창 부분에
>
> 떠야 되는데 안되네요.;;;;; 뭐가 문제이죠?
>
> 더 정확한 현재 상태를 말씀드릴게요
>
> 현재 usb isp 두개를 사서 사용하고 있고 한개는 다운로더 기능으로 한개는 usart 통신 기능으로 사용
>
> 중입니다.
>
> usart 핀은 거꾸로 끼우지 않았고 정확하게 꽃았는 상태 입니다. 문제가 무엇인지 모르겠습니다.
>
> 아 참 그리고 보트레이트와 정지비트수는 당연히 정확히 맞추어 주었습니다
>
|
||||
| 6987 | 답변완료AVR MEGA 128 RAM 모듈 시리얼통신 | 초보 | 2012-01-18 | 1,373 |
|
AVR MEGA 128 RAM 모듈로 시리얼 통신을 하려고 합니다.
프로그램을 입력 시키고 입력된 프로그램으로 인해 발생하는 데이터를 시리얼 통신을 이용해 수신하려고 하는데 9핀을 납땜 하려는 과정에서 데이터를 받고 보내고 그리고 그라운드 되는 2,3,5번과 대응되는 핀(홈페이지 그림상 왼쪽 밑에 핀)이 어느 순서로 되어야하는지 확실히 몰라 납땜을 못하고 있습니다.
도움 부탁드립니다.
아 그리고 제품 상세보기에 들어가면 개요와 구성도 부분에 뜨는 그림이 뜨지 않습니다. 확인 부탁 드릴게요
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
일단, 해당 홈페이지 페이지를 복구하여 두었습니다.
그 페이지에 가시면 보실 수 있구요.
또한, 자료실에서 128RAM 메뉴얼 확인하셔서 보시면서 하세요.
소스들도 자료실에서 다운로드 받으시면 됩니다.
UART나 printf 등으로 검색하시면 됩니다.
수고하세요.
>
>
> AVR MEGA 128 RAM 모듈로 시리얼 통신을 하려고 합니다.
> 프로그램을 입력 시키고 입력된 프로그램으로 인해 발생하는 데이터를 시리얼 통신을 이용해 수신하려고 하는데 9핀을 납땜 하려는 과정에서 데이터를 받고 보내고 그리고 그라운드 되는 2,3,5번과 대응되는 핀(홈페이지 그림상 왼쪽 밑에 핀)이 어느 순서로 되어야하는지 확실히 몰라 납땜을 못하고 있습니다.
> 도움 부탁드립니다.
>
> 아 그리고 제품 상세보기에 들어가면 개요와 구성도 부분에 뜨는 그림이 뜨지 않습니다. 확인 부탁 드릴게요
>
|
||||
| 6986 | 답변완료kd-128pro / am-glcd-p 사용하고 있는데요.. | 김성경 | 2012-01-18 | 1,547 |
|
이곳 자료실에서 다운받은 glcd 구동 소스는 icc-avr 용이던데요..
이 소스를 avr studio 에서 구동시키려면, 어떤 걸 바꿔줘야 하나요?ㅜ
@GLCD.C
// Target : M128
// Crystal: 16Mhz
#include <iom128v.h>
#include <macros.h>
#include "FONTK52.h"
#include "GLCDK52.h"
//ICC-AVR application builder : 2006-06-13 오후 10:18:26
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00; //m103 output only
DDRC = 0xFF;
PORTD = 0x00;
DDRD = 0xFF;
PORTE = 0x00;
DDRE = 0x00;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x00;
DDRG = 0x00;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
XDIV = 0x00; //xtal divider
XMCRA = 0x00; //external memory
port_init();
MCUCR = 0x00;
EICRA = 0x00; //extended ext ints
EICRB = 0x00; //extended ext ints
EIMSK = 0x00;
TIMSK = 0x00; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void main(void)
{
unsigned char i;
init_devices();
//insert your functional code here...
//for(i=0;i<100;i++)
//delay(60000);
lcd_init(); /* initialize GLCD */
lcd_clear();
//lcd_xy(0,0);
//lcd_string(0,0,"안녕하세요!!");
//write_data(CS_ALL,0xff);
while(1)
{
lcd_string(0,0," 현대 LCD ");
lcd_string(1,0," HG12605NY-LY ");
lcd_string(2,0," 삼성 SDI ");
lcd_string(0,0,"UG-13B04-SEAT5-E");
lcd_string(1,0,"GLCD128X64 V1.0");
lcd_string(1,0,"128x64 그래픽LCD");
lcd_string(2,0," 8x16도트 ASCII ");
lcd_string(3,0,"16x16도트 조합형");
delay(50000);
delay(50000);
delay(50000);
lcd_xy(0,0);
for(i = 0x00; i <= 0x0F; i++)
GLCD_English(i);
lcd_xy(1,0);
for(i = 0x10; i <= 0x1F; i++)
GLCD_English(i);
lcd_string(2,0," !");
GLCD_English(0x22);
lcd_string(2,0,"#$%&'()*+,-./");
lcd_string(3,0,"0123456789:;<=>?");
lcd_string(0,0,"@ABCDEFGHIJKLMNO");
lcd_string(1,0,"PQRSTUVWXYZ[");
GLCD_English(0x5C);
lcd_string(1,13,"]^_");
lcd_string(2,0,"`abcdefghijklmno");
lcd_string(3,0,"pqrstuvwxyz{|}~");
GLCD_English(0x7F);
delay(50000);
delay(50000);
delay(50000);
lcd_string(0,0," * 배우자 * ");
lcd_string(1,0,"마이크로프로세서");
lcd_string(2,0," * 익히자 * ");
lcd_string(3,0,"마이크로콘트롤러");
delay(50000);
delay(50000);
delay(50000);
lcd_string(0,0,"1988 서울 올림픽");
lcd_string(1,0,"2002 월드컵 축구");
lcd_string(2,0,"오~ 필승 KOREA !");
lcd_string(3,0,"대한민국 화이팅!");
delay(50000);
delay(50000);
delay(50000);
lcd_string(0,0,"어려운 한글글자");
lcd_string(1,0," 값광깎꼴꿍넋똘 ");
lcd_string(2,0," 뛸빵뽕삯쏼쑹웬 ");
lcd_string(3,0," 짱쭝첸콸튈펑황 ");
delay(50000);
delay(50000);
delay(50000);
}
}
@FONTK52.H 는 수정할 필요 없을 거 같구요..
@GLCDK52.C
typedef unsigned char byte;
typedef unsigned int word;
#define LCD_OUTP PORTD
#define LCD_INP PIND
#define LCD_CTRL PORTB
#define DISPON 0x3f
#define DISPOFF 0x3e
#define DI 0x01
#define RW 0x02
#define E 0x04
#define CS1 0x08
#define CS2 0x10
#define CS_ALL 0x18
#define SetDI(m) m?(LCD_CTRL|=DI): (LCD_CTRL&=~DI)
#define SetRW(m) m?(LCD_CTRL|=RW): (LCD_CTRL&=~RW)
#define SetE(m) m?(LCD_CTRL|=E): (LCD_CTRL&=~E)
#define SetCS1(m) m?(LCD_CTRL|=CS1):(LCD_CTRL&=~CS1)
#define SetCS2(m) m?(LCD_CTRL|=CS2):(LCD_CTRL&=~CS2)
byte xcharacter, ycharacter; /* x character(0-3), y character(0-15) */
byte cursor_flag, cursorx, cursory; /* x and y cursor position(0-3, 0-15) */
byte Korean_buffer[32]; /* 32 byte Korean font buffer */
/*-------------------------------------------------------------------------*/
/* 시간 지연 루틴 */
void delay( word del )
{
while( del-- );
}
/*
unsigned char read_status(void)
{
unsigned char dat=0;
LCD_CTRL = CS_ALL | DI;
SetE(1);
delay(10);
SetE(0);
dat = LCD_INP;
delay(10);
LCD_CTRL=0x00;
delay(100);
return dat;
}
*/
/* 비지 플래그 체크 */
/*
void check_bf(void)
{
while(read_status() & 0x80 );
}
unsigned char read_data(void)
{
unsigned char dat=0;
//check_bf();
LCD_CTRL = CS_ALL | DI | RW;
SetE(1);
delay(10);
SetE(0);
dat = LCD_INP;
delay(10);
LCD_CTRL=0x00;
delay(300);
return dat;
}
*/
/* lcd 명령 출력 */
//signal = CS1, CS2
//cmd = instruction
void write_cmd( byte signal, byte cmd )
{
//check_bf();
LCD_CTRL = signal & CS_ALL;
SetE(1);
LCD_OUTP = cmd;
delay(10);
SetE(0);
delay(10);
LCD_CTRL=0x00;
delay(300);
}
/* 1 문자 출력 */
//signal = CS1, CS2
//cmd = data
void write_data( byte signal, byte ch )
{
//check_bf();
LCD_CTRL = (signal & CS_ALL) | DI;
SetE(1);
LCD_OUTP = ch;
delay(10);
SetE(0);
delay(10);
LCD_CTRL=0x00;
delay(300);
}
/* GLCD Clear */
void lcd_clear(void)
{
byte i, j, x, y;
LCD_CTRL=0x00;
write_cmd(CS_ALL,0x3f);
write_cmd(CS_ALL,0xc0);
x = 0xB8; /* X start address */
y = 0x40; /* Y start address */
for(i = 0; i <= 7; i++)
{
write_cmd(CS_ALL,x);
write_cmd(CS_ALL,y);
for(j = 0; j < 64; j++)
write_data(CS_ALL,0x00); /* clear CS1 and CS2 */
x++;
}
}
void lcd_init(void)
{
write_cmd( CS_ALL, DISPON );
write_cmd( CS_ALL, 0xc0 ); /* 디스플레이 시작라인 */
write_cmd( CS_ALL, 0xb8 ); /* X 어드레스 셋 = 0 */
write_cmd( CS_ALL, 0x40 ); /* Y 어드레스 셋 = 0 */
}
/* 문자 위치 세트 */
void lcd_xy( byte x, byte y ) /* set English character position on GLCD */
{
xcharacter = x; /* x = 0 - 3 */
ycharacter = y; /* y = 0 - 15 */
}
/*-------------------------------------------------------------------------*/
void lcd_xy_row(byte row,byte x,byte y) /* set character upper/lower row on GLCD */
{
lcd_xy(x,y); /* x = 0 - 3, y = 0 - 15 */
if(row == 0) /* if upper row, set Y address */
write_cmd(CS_ALL,0xB8 + x*2);
else /* if lower row, set Y address + 1 */
write_cmd(CS_ALL,0xB8 + x*2 + 1);
if(ycharacter <= 7) /* if y <= 7, CS1 Y address */
write_cmd(CS1,0x40 + y*8);
else /* if y >= 8, CS2 Y address */
write_cmd(CS2,0x40 + (y-8)*8);
}
void GLCD_English(byte Ecode) //* display a 8x16 Dot English(ASCII) on GLCD /
{ byte x, y, i, signal;
x = xcharacter;
y = ycharacter;
lcd_xy_row(0,x,y); //* display upper row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 0; i <= 7; i++)
write_data(signal,E_font[Ecode][i]);
lcd_xy_row(1,x,y); //* display lower row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 8; i <= 15; i++)
{ if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == cursory))
write_data(signal,E_font[Ecode][i] | 0x80);
else
write_data(signal,E_font[Ecode][i]);
}
ycharacter++;
if(ycharacter==16){
ycharacter = 0;
xcharacter++;
}
}
void GLCD_Korean(word Kcode) //* display a 16x16 Dot Korean on GLCD /
{ byte x, y, i, signal;
byte cho_5bit, joong_5bit, jong_5bit;
byte cho_bul, joong_bul, jong_bul, jong_flag;
word character;
if(ycharacter==15)
GLCD_English(0x20);
cho_5bit = table_cho[(Kcode >> 10) & 0x001F]; //* get cho, joong, jong 5 bit /
joong_5bit = table_joong[(Kcode >> 5) & 0x001F];
jong_5bit = table_jong[Kcode & 0x001F];
if(jong_5bit == 0) //* don't have jongsung /
{ jong_flag = 0;
cho_bul = bul_cho1[joong_5bit];
if((cho_5bit == 1) || (cho_5bit == 16)) joong_bul = 0;
else joong_bul = 1;
}
else //* have jongsung /
{ jong_flag = 1;
cho_bul = bul_cho2[joong_5bit];
if((cho_5bit == 1) || (cho_5bit == 16)) joong_bul = 2;
else joong_bul = 3;
jong_bul = bul_jong[joong_5bit];
}
character = cho_bul*20 + cho_5bit; //* copy chosung font /
for(i = 0; i <= 31; i++)
Korean_buffer[i] = K_font[character][i];
character = 8*20 + joong_bul*22 + joong_5bit; //* OR joongsung font /
for(i = 0; i <= 31; i++)
Korean_buffer[i] |= K_font[character][i];
if(jong_flag == 1) //* if jongsung, OR jongsung font /
{ character = 8*20 + 4*22 +jong_bul*28 + jong_5bit;
for(i = 0; i <= 31; i++)
Korean_buffer[i] |= K_font[character][i];
}
x = xcharacter;
y = ycharacter;
lcd_xy_row(0,x,y); //* display upper left row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 0; i <= 7; i++)
write_data(signal,Korean_buffer[i]);
lcd_xy_row(1,x,y); //* display lower left row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 16; i <= 23; i++)
{ if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == cursory))
write_data(signal,Korean_buffer[i] | 0x80);
else
write_data(signal,Korean_buffer[i]);
}
ycharacter++;
y = ycharacter;
lcd_xy_row(0,x,y); ///* display upper right row /
if(ycharacter <= 7) ///* if y <= 7, CS1 /
signal = CS1;
else ///* if y >= 8, CS2 /
signal = CS2;
for(i = 8; i <= 15; i++)
write_data(signal,Korean_buffer[i]);
lcd_xy_row(1,x,y); //* display lower right row /
if(ycharacter <= 7) //* if y <= 7, CS1 /
signal = CS1;
else //* if y >= 8, CS2 /
signal = CS2;
for(i = 24; i <= 31; i++)
{ if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == (cursory+1)))
write_data(signal,Korean_buffer[i] | 0x80);
else
write_data(signal,Korean_buffer[i]);
}
ycharacter++;
if(ycharacter==16){
ycharacter = 0;
xcharacter++;
}
}
/*******************************************************************************
* 완성형 한글을 조합형으로 바꾸어 주는 부분입니다.
*******************************************************************************/
word kssm_convert(word kssm)
{
byte high,low;
word index;
word return_data;
high = (kssm>>8)&0xff;
low = kssm &0xff;
if ((kssm >= 0xb0a1)&&(kssm <= 0xc8fe))
{
index = (high - 0xb0) * 94 + low - 0xa1;
return_data = KSTable[index][0]*256;
return_data |= KSTable[index][1];
return return_data;
}
return 0;
}
void lcd_string(byte x, byte y, byte *string) //* display a string on GLCD /
{ byte character1;
word character2;
lcd_xy(x,y); //* x = 0 - 3, y = 0 - 15 /
while(*string != '\0')
{
character1 = *string;
string++;
if(((character1 >> 7) & 0x01) == 0)
GLCD_English(character1); //* display English character /
else
{
character2 = *string;
character2 = 256*character1 + (character2 & 0xFF);
string++;
character2 = kssm_convert(character2);//완성형을 조합형으로 변환
GLCD_Korean(character2); //* display Korean character /
}
}
}
/*
void LCD_OnOff(byte x, byte y, byte *string)
{
write_cmd( 0xc0, DISPON );
lcd_string(x, y, *string);
write_cmd( 0xc0, DISOFF );
delay(50);
write_cmd( 0xc0, DISPON );
}
*/
지금 이것만 1주일 째 붙잡고 있어요ㅜ 도와 주세요ㅜㅠ 감사합니다..
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
혹시 네이버에서 질문하신 분 아니신지요?
답변 올려 드렸었는 데, 여기 첨부로 다시 올려드립니다.
그것 사용하시면 되요. 이것은 WINAVR + AVR Studio 용입니다.
다시 테스트 해보고 올려드리는 거에요.
수고하세요.
>
>
> 이곳 자료실에서 다운받은 glcd 구동 소스는 icc-avr 용이던데요..
>
> 이 소스를 avr studio 에서 구동시키려면, 어떤 걸 바꿔줘야 하나요?ㅜ
>
> @GLCD.C
> // Target : M128
> // Crystal: 16Mhz
>
> #include <iom128v.h>
> #include <macros.h>
>
> #include "FONTK52.h"
> #include "GLCDK52.h"
> //ICC-AVR application builder : 2006-06-13 오후 10:18:26
>
> void port_init(void)
> {
> PORTA = 0x00;
> DDRA = 0x00;
> PORTB = 0x00;
> DDRB = 0xFF;
> PORTC = 0x00; //m103 output only
> DDRC = 0xFF;
> PORTD = 0x00;
> DDRD = 0xFF;
> PORTE = 0x00;
> DDRE = 0x00;
> PORTF = 0x00;
> DDRF = 0x00;
> PORTG = 0x00;
> DDRG = 0x00;
> }
>
> //call this routine to initialize all peripherals
> void init_devices(void)
> {
> //stop errant interrupts until set up
> CLI(); //disable all interrupts
> XDIV = 0x00; //xtal divider
> XMCRA = 0x00; //external memory
> port_init();
>
> MCUCR = 0x00;
> EICRA = 0x00; //extended ext ints
> EICRB = 0x00; //extended ext ints
> EIMSK = 0x00;
> TIMSK = 0x00; //timer interrupt sources
> ETIMSK = 0x00; //extended timer interrupt sources
> SEI(); //re-enable interrupts
> //all peripherals are now initialized
> }
>
> //
> void main(void)
> {
> unsigned char i;
> init_devices();
> //insert your functional code here...
>
> //for(i=0;i<100;i++)
> //delay(60000);
> lcd_init(); /* initialize GLCD */
> lcd_clear();
>
> //lcd_xy(0,0);
> //lcd_string(0,0,"안녕하세요!!");
> //write_data(CS_ALL,0xff);
> while(1)
> {
> lcd_string(0,0," 현대 LCD ");
> lcd_string(1,0," HG12605NY-LY ");
> lcd_string(2,0," 삼성 SDI ");
> lcd_string(0,0,"UG-13B04-SEAT5-E");
> lcd_string(1,0,"GLCD128X64 V1.0");
> lcd_string(1,0,"128x64 그래픽LCD");
> lcd_string(2,0," 8x16도트 ASCII ");
> lcd_string(3,0,"16x16도트 조합형");
> delay(50000);
> delay(50000);
> delay(50000);
>
> lcd_xy(0,0);
> for(i = 0x00; i <= 0x0F; i++)
> GLCD_English(i);
> lcd_xy(1,0);
> for(i = 0x10; i <= 0x1F; i++)
> GLCD_English(i);
> lcd_string(2,0," !");
> GLCD_English(0x22);
>
> lcd_string(2,0,"#$%&'()*+,-./");
> lcd_string(3,0,"0123456789:;<=>?");
>
> lcd_string(0,0,"@ABCDEFGHIJKLMNO");
> lcd_string(1,0,"PQRSTUVWXYZ[");
> GLCD_English(0x5C);
> lcd_string(1,13,"]^_");
> lcd_string(2,0,"`abcdefghijklmno");
> lcd_string(3,0,"pqrstuvwxyz{|}~");
> GLCD_English(0x7F);
> delay(50000);
> delay(50000);
> delay(50000);
>
> lcd_string(0,0," * 배우자 * ");
> lcd_string(1,0,"마이크로프로세서");
> lcd_string(2,0," * 익히자 * ");
> lcd_string(3,0,"마이크로콘트롤러");
> delay(50000);
> delay(50000);
> delay(50000);
>
> lcd_string(0,0,"1988 서울 올림픽");
> lcd_string(1,0,"2002 월드컵 축구");
> lcd_string(2,0,"오~ 필승 KOREA !");
> lcd_string(3,0,"대한민국 화이팅!");
> delay(50000);
> delay(50000);
> delay(50000);
>
> lcd_string(0,0,"어려운 한글글자");
> lcd_string(1,0," 값광깎꼴꿍넋똘 ");
> lcd_string(2,0," 뛸빵뽕삯쏼쑹웬 ");
> lcd_string(3,0," 짱쭝첸콸튈펑황 ");
> delay(50000);
> delay(50000);
> delay(50000);
> }
> }
>
>
>
> @FONTK52.H 는 수정할 필요 없을 거 같구요..
>
> @GLCDK52.C
>
> typedef unsigned char byte;
> typedef unsigned int word;
>
> #define LCD_OUTP PORTD
> #define LCD_INP PIND
> #define LCD_CTRL PORTB
>
> #define DISPON 0x3f
> #define DISPOFF 0x3e
>
> #define DI 0x01
> #define RW 0x02
> #define E 0x04
> #define CS1 0x08
> #define CS2 0x10
> #define CS_ALL 0x18
>
> #define SetDI(m) m?(LCD_CTRL|=DI): (LCD_CTRL&=~DI)
> #define SetRW(m) m?(LCD_CTRL|=RW): (LCD_CTRL&=~RW)
> #define SetE(m) m?(LCD_CTRL|=E): (LCD_CTRL&=~E)
> #define SetCS1(m) m?(LCD_CTRL|=CS1):(LCD_CTRL&=~CS1)
> #define SetCS2(m) m?(LCD_CTRL|=CS2):(LCD_CTRL&=~CS2)
>
> byte xcharacter, ycharacter; /* x character(0-3), y character(0-15) */
> byte cursor_flag, cursorx, cursory; /* x and y cursor position(0-3, 0-15) */
> byte Korean_buffer[32]; /* 32 byte Korean font buffer */
> /*-------------------------------------------------------------------------*/
> /* 시간 지연 루틴 */
> void delay( word del )
> {
> while( del-- );
> }
> /*
> unsigned char read_status(void)
> {
> unsigned char dat=0;
>
> LCD_CTRL = CS_ALL | DI;
> SetE(1);
> delay(10);
> SetE(0);
> dat = LCD_INP;
> delay(10);
> LCD_CTRL=0x00;
> delay(100);
>
> return dat;
> }
> */
> /* 비지 플래그 체크 */
> /*
> void check_bf(void)
> {
> while(read_status() & 0x80 );
> }
>
> unsigned char read_data(void)
> {
> unsigned char dat=0;
> //check_bf();
>
> LCD_CTRL = CS_ALL | DI | RW;
> SetE(1);
> delay(10);
> SetE(0);
> dat = LCD_INP;
> delay(10);
> LCD_CTRL=0x00;
> delay(300);
>
> return dat;
> }
> */
> /* lcd 명령 출력 */
> //signal = CS1, CS2
> //cmd = instruction
> void write_cmd( byte signal, byte cmd )
> {
> //check_bf();
> LCD_CTRL = signal & CS_ALL;
> SetE(1);
> LCD_OUTP = cmd;
> delay(10);
> SetE(0);
> delay(10);
> LCD_CTRL=0x00;
> delay(300);
> }
>
> /* 1 문자 출력 */
> //signal = CS1, CS2
> //cmd = data
> void write_data( byte signal, byte ch )
> {
> //check_bf();
> LCD_CTRL = (signal & CS_ALL) | DI;
> SetE(1);
> LCD_OUTP = ch;
> delay(10);
> SetE(0);
> delay(10);
> LCD_CTRL=0x00;
> delay(300);
> }
>
>
> /* GLCD Clear */
> void lcd_clear(void)
> {
> byte i, j, x, y;
> LCD_CTRL=0x00;
> write_cmd(CS_ALL,0x3f);
> write_cmd(CS_ALL,0xc0);
> x = 0xB8; /* X start address */
> y = 0x40; /* Y start address */
> for(i = 0; i <= 7; i++)
> {
> write_cmd(CS_ALL,x);
> write_cmd(CS_ALL,y);
> for(j = 0; j < 64; j++)
> write_data(CS_ALL,0x00); /* clear CS1 and CS2 */
> x++;
> }
> }
>
> void lcd_init(void)
> {
> write_cmd( CS_ALL, DISPON );
> write_cmd( CS_ALL, 0xc0 ); /* 디스플레이 시작라인 */
> write_cmd( CS_ALL, 0xb8 ); /* X 어드레스 셋 = 0 */
> write_cmd( CS_ALL, 0x40 ); /* Y 어드레스 셋 = 0 */
> }
>
> /* 문자 위치 세트 */
> void lcd_xy( byte x, byte y ) /* set English character position on GLCD */
> {
> xcharacter = x; /* x = 0 - 3 */
> ycharacter = y; /* y = 0 - 15 */
> }
>
> /*-------------------------------------------------------------------------*/
>
> void lcd_xy_row(byte row,byte x,byte y) /* set character upper/lower row on GLCD */
> {
> lcd_xy(x,y); /* x = 0 - 3, y = 0 - 15 */
>
> if(row == 0) /* if upper row, set Y address */
> write_cmd(CS_ALL,0xB8 + x*2);
> else /* if lower row, set Y address + 1 */
> write_cmd(CS_ALL,0xB8 + x*2 + 1);
>
> if(ycharacter <= 7) /* if y <= 7, CS1 Y address */
> write_cmd(CS1,0x40 + y*8);
> else /* if y >= 8, CS2 Y address */
> write_cmd(CS2,0x40 + (y-8)*8);
> }
>
> void GLCD_English(byte Ecode) //* display a 8x16 Dot English(ASCII) on GLCD /
> { byte x, y, i, signal;
>
> x = xcharacter;
> y = ycharacter;
>
> lcd_xy_row(0,x,y); //* display upper row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 0; i <= 7; i++)
> write_data(signal,E_font[Ecode][i]);
>
> lcd_xy_row(1,x,y); //* display lower row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 8; i <= 15; i++)
> { if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == cursory))
> write_data(signal,E_font[Ecode][i] | 0x80);
> else
> write_data(signal,E_font[Ecode][i]);
> }
>
> ycharacter++;
> if(ycharacter==16){
> ycharacter = 0;
> xcharacter++;
> }
> }
>
> void GLCD_Korean(word Kcode) //* display a 16x16 Dot Korean on GLCD /
> { byte x, y, i, signal;
> byte cho_5bit, joong_5bit, jong_5bit;
> byte cho_bul, joong_bul, jong_bul, jong_flag;
> word character;
> if(ycharacter==15)
> GLCD_English(0x20);
> cho_5bit = table_cho[(Kcode >> 10) & 0x001F]; //* get cho, joong, jong 5 bit /
> joong_5bit = table_joong[(Kcode >> 5) & 0x001F];
> jong_5bit = table_jong[Kcode & 0x001F];
>
> if(jong_5bit == 0) //* don't have jongsung /
> { jong_flag = 0;
> cho_bul = bul_cho1[joong_5bit];
> if((cho_5bit == 1) || (cho_5bit == 16)) joong_bul = 0;
> else joong_bul = 1;
> }
> else //* have jongsung /
> { jong_flag = 1;
> cho_bul = bul_cho2[joong_5bit];
> if((cho_5bit == 1) || (cho_5bit == 16)) joong_bul = 2;
> else joong_bul = 3;
> jong_bul = bul_jong[joong_5bit];
> }
>
> character = cho_bul*20 + cho_5bit; //* copy chosung font /
> for(i = 0; i <= 31; i++)
> Korean_buffer[i] = K_font[character][i];
>
> character = 8*20 + joong_bul*22 + joong_5bit; //* OR joongsung font /
> for(i = 0; i <= 31; i++)
> Korean_buffer[i] |= K_font[character][i];
>
> if(jong_flag == 1) //* if jongsung, OR jongsung font /
> { character = 8*20 + 4*22 +jong_bul*28 + jong_5bit;
> for(i = 0; i <= 31; i++)
> Korean_buffer[i] |= K_font[character][i];
> }
>
> x = xcharacter;
> y = ycharacter;
> lcd_xy_row(0,x,y); //* display upper left row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 0; i <= 7; i++)
> write_data(signal,Korean_buffer[i]);
>
> lcd_xy_row(1,x,y); //* display lower left row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 16; i <= 23; i++)
> { if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == cursory))
> write_data(signal,Korean_buffer[i] | 0x80);
> else
> write_data(signal,Korean_buffer[i]);
> }
>
> ycharacter++;
>
> y = ycharacter;
> lcd_xy_row(0,x,y); ///* display upper right row /
> if(ycharacter <= 7) ///* if y <= 7, CS1 /
> signal = CS1;
> else ///* if y >= 8, CS2 /
> signal = CS2;
> for(i = 8; i <= 15; i++)
> write_data(signal,Korean_buffer[i]);
>
> lcd_xy_row(1,x,y); //* display lower right row /
> if(ycharacter <= 7) //* if y <= 7, CS1 /
> signal = CS1;
> else //* if y >= 8, CS2 /
> signal = CS2;
> for(i = 24; i <= 31; i++)
> { if((cursor_flag == 1) && (xcharacter == cursorx) && (ycharacter == (cursory+1)))
> write_data(signal,Korean_buffer[i] | 0x80);
> else
> write_data(signal,Korean_buffer[i]);
> }
>
> ycharacter++;
> if(ycharacter==16){
> ycharacter = 0;
> xcharacter++;
> }
> }
>
> /*******************************************************************************
> * 완성형 한글을 조합형으로 바꾸어 주는 부분입니다.
> *******************************************************************************/
>
> word kssm_convert(word kssm)
> {
> byte high,low;
> word index;
> word return_data;
>
> high = (kssm>>8)&0xff;
> low = kssm &0xff;
>
> if ((kssm >= 0xb0a1)&&(kssm <= 0xc8fe))
> {
> index = (high - 0xb0) * 94 + low - 0xa1;
> return_data = KSTable[index][0]*256;
> return_data |= KSTable[index][1];
> return return_data;
> }
> return 0;
> }
>
>
> void lcd_string(byte x, byte y, byte *string) //* display a string on GLCD /
> { byte character1;
> word character2;
>
> lcd_xy(x,y); //* x = 0 - 3, y = 0 - 15 /
>
> while(*string != '\0')
> {
> character1 = *string;
> string++;
> if(((character1 >> 7) & 0x01) == 0)
> GLCD_English(character1); //* display English character /
> else
> {
> character2 = *string;
> character2 = 256*character1 + (character2 & 0xFF);
> string++;
> character2 = kssm_convert(character2);//완성형을 조합형으로 변환
> GLCD_Korean(character2); //* display Korean character /
> }
> }
> }
>
> /*
> void LCD_OnOff(byte x, byte y, byte *string)
> {
> write_cmd( 0xc0, DISPON );
> lcd_string(x, y, *string);
> write_cmd( 0xc0, DISOFF );
> delay(50);
> write_cmd( 0xc0, DISPON );
> }
> */
>
>
> 지금 이것만 1주일 째 붙잡고 있어요ㅜ 도와 주세요ㅜㅠ 감사합니다..
>
|
||||
| 6985 | 답변완료컴파일오류>>>>> | 전진국 | 2012-01-18 | 1,332 |
|
당사 홈페이지에서 sdcc 컴파일러를 다운받고 , 울트라 edit도 설치하여 .
자료실에 있는 예제대로 프로그램작성후 컴파일로 한다음에 다음과 같은 에러가 발생하였습니다.
답변 부탁드립니다.
발생된 오류 메시지를 아래와 같이서술합니다.
at 1: error 4: 'fopen' failed on file 'ex.c'
홈페이지에 있는 예제를 다운로드 해서 컴파일해는데도 발생되는 오류 메시지는 동일합니다.
추가 질문합니다....
1. 우선 네이버 등업좀 해주시고요.....
2. sdcc로 컴파일을 하면 hex 파일이 없는데.. avr stdtio 에서 어떻게 다운로드 하는지 문의합니다....
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
우선, 네이버 쪽은 다 처리 되었구요. 혹시, 안되었으면 다시 신청하시면서, 쪽지 주세요.
그리고, SDCC 관련은 확인하여 올려 드리겠습니다.
수고하세요.
>
>
> 당사 홈페이지에서 sdcc 컴파일러를 다운받고 , 울트라 edit도 설치하여 .
>
> 자료실에 있는 예제대로 프로그램작성후 컴파일로 한다음에 다음과 같은 에러가 발생하였습니다.
>
> 답변 부탁드립니다.
>
> 발생된 오류 메시지를 아래와 같이서술합니다.
>
> at 1: error 4: 'fopen' failed on file 'ex.c'
>
> 홈페이지에 있는 예제를 다운로드 해서 컴파일해는데도 발생되는 오류 메시지는 동일합니다.
>
> 추가 질문합니다....
>
> 1. 우선 네이버 등업좀 해주시고요.....
> 2. sdcc로 컴파일을 하면 hex 파일이 없는데.. avr stdtio 에서 어떻게 다운로드 하는지 문의합니다....
>
|
||||
| 6984 | 답변완료온라인 무료 강좌 관련 | 김형영 | 2012-01-18 | 1,423 |
|
안녕하세요
avr 무료 온라인 강좌좀 볼려고 하는데
안되네요 강좌를 막았는지 궁금해서 그렇습니다.
수고하세요
관리자 답변
안녕하세요? 고객님,
서버 문제로 막혀 있었네요.
해결해 두었습니다.
무료 온라인 강좌 이제 보실 수 있습니다. 많이 이용해 주세요.
그리고, 내일 본사에서 무료 온라인 강좌를 진행합니다. 참고하세요.
수고하세요.
>
>
> 안녕하세요
> avr 무료 온라인 강좌좀 볼려고 하는데
> 안되네요 강좌를 막았는지 궁금해서 그렇습니다.
> 수고하세요
>
|
||||
| 6983 | 답변완료김남규 | 김남규 | 2012-01-18 | 1,403 |
|
수고하십니다....
통신 모듈에 초보이고 신입 인 연구원입니다.
AM-RFMOD통신모듈 이 PC와 바로 연결될때 PC에서는 12V 레벨 로서 통신모듈과는 바로 연결이
안된다는 것을 알았습니다. 그래서 ATMEGA128 KIT 를 가지고 사용해서 5V를 뽑아내고자 다시 회로와
선연결을 하려 합니다.
여기서 다시확인하고 싶은게(메뉴얼상에)통신모듈에 3.3V / 5V 를 사용하는데 바로 ATMEGA128 에서 5V가
바로 들어가도 된다는 게 맞나요??
다른 설정 이나 과정이 있는 건 아니죠??
아직은 제가너무 부족해서 이렇게 질문을 올립니다
수고하세요.
관리자 답변
안녕하세요? 김남규 고객님,
고객님 말씀이 맞습니다.
그 4핀 커넥터가 5V, 3.3V 모두 호환되도록 설계되어 있습니다.
그런데, 본사의 ATMEGA128 보드와 연결하고자 한다면, RX-TX로 TX-RX로 연결하고, GND-GND, VCC, VCC로 연결하면 되는 데, 1:1로 연결하면 가능합니다.
수고하세요.
>
>
> 수고하십니다....
> 통신 모듈에 초보이고 신입 인 연구원입니다.
>
> AM-RFMOD통신모듈 이 PC와 바로 연결될때 PC에서는 12V 레벨 로서 통신모듈과는 바로 연결이
> 안된다는 것을 알았습니다. 그래서 ATMEGA128 KIT 를 가지고 사용해서 5V를 뽑아내고자 다시 회로와
> 선연결을 하려 합니다.
>
> 여기서 다시확인하고 싶은게(메뉴얼상에)통신모듈에 3.3V / 5V 를 사용하는데 바로 ATMEGA128 에서 5V가
> 바로 들어가도 된다는 게 맞나요??
> 다른 설정 이나 과정이 있는 건 아니죠??
> 아직은 제가너무 부족해서 이렇게 질문을 올립니다
> 수고하세요.
>
|
||||
| 6982 | 답변완료AM_GLCD_P lcd 모듈의 J731 conn 의 핀번호 확인. | 초초보 | 2012-01-16 | 1,329 |
|
안녕하세요,
AM_GLCD_P 를 구입하였고, 사용하려고,
만능기판에 atmega128 모듈 납땜하고
10pin connecor를 준비하려고 합니다.
atmega128모듈용 확장 기판 모듈?? 이건 사지 않아서 필요한 커넥터만 직접 납땜하고있습니다.
근데 궁금한게,
AM_GLCD_P 의 J731, J734 connetor 에서,
1번 핀을 어떻게 구분하나요?
회도로도 없고 해서 잘 못찾겠네요,
표시가 없어서 모르겠는데, J731 이란 글자 위치로 1번핀을 구분해야하는건지요?
구분할수 있는 방법좀 자세히 부탁드립니다.
감사합니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨 제품을 이용하여 주셔서 감사합니다.
확장보드 구매하시면, 뒷면에 1번-10번이 적혀 있습니다.
그런데, 구매하지 않으셨으니, 어려우신 건데요.
저희 제품 아무것이나 가지고 계신다면, 1-10번이 동일한 규격이라서 쉽게 알 수 있습니다.
예를 들어서, J731이라고 쓴 곳은 거기가 1번핀이 맞습니다.
수고하세요.
>
>
> 안녕하세요,
> AM_GLCD_P 를 구입하였고, 사용하려고,
> 만능기판에 atmega128 모듈 납땜하고
> 10pin connecor를 준비하려고 합니다.
> atmega128모듈용 확장 기판 모듈?? 이건 사지 않아서 필요한 커넥터만 직접 납땜하고있습니다.
>
>
> 근데 궁금한게,
> AM_GLCD_P 의 J731, J734 connetor 에서,
> 1번 핀을 어떻게 구분하나요?
>
> 회도로도 없고 해서 잘 못찾겠네요,
>
> 표시가 없어서 모르겠는데, J731 이란 글자 위치로 1번핀을 구분해야하는건지요?
> 구분할수 있는 방법좀 자세히 부탁드립니다.
>
> 감사합니다.
>
|
||||
| 6981 | 답변완료궁금해서요, 다시한번 문의드립니다.(^^해결되었습니다) | 최예한 | 2012-01-18 | 1,303 |
|
---------^^ 귀사의 도움과 용산 newtc대리점에서 구매후 작동을 해보니 잘 되더라구여.
newtc직원분께 감사드립니다.
안녕하세요. 몇일전 사장님께 큰도움을 받은 최예한 입니다.
다름아닌, AVR MEGA128 개발보드 (소형) 에 장착된 스테핑모터 구동모듈과 스테핑 모터(1.7kg급)
SE-SM243 작동에 아무런 이상은 없습니다.
다만, 스테핑 모타에 피니언 기어를 달고 구동시 토크가 모자란지 멈춤 현상이 간혹 발생해서
(가변 저항 조작시 같은 현상)
개인적인 문재로 생각 되어선, 스태핑의 토크 힘이 부족한듯 개인적인 진단을 내려보는데..
newt사의 사이트에 올려놓으신 "스테핑 모터(9kg급)SE-SM9K" 를 구매했을시
기존 소스에서 작동시 문재가 발생되는 요인이 없을까? 문의 드립니다.
금일 사장님께 q&a 를 작성후, 용산쪽에 자재구입하로 나가서 혹시 보시게되면.
사장님꼐 무뢰한, 업무상 시간이 안 나실수 있으시지만, 문자로 알려 주실수 있는 답변을 기대해도 되는
지 언짢은 글과 함께 부탁드리겠습니다.
010-4645-8852 죄송합니다.
관리자 답변
안녕하세요? 고객님,
잘 해결되었다니 다행입니다.
아마도 모터용 전원을 별도로 주시면 잘 될 듯 합니다.
수고하세요.
>
>
> ---------^^ 귀사의 도움과 용산 newtc대리점에서 구매후 작동을 해보니 잘 되더라구여.
> newtc직원분께 감사드립니다.
>
>
>
> 안녕하세요. 몇일전 사장님께 큰도움을 받은 최예한 입니다.
>
> 다름아닌, AVR MEGA128 개발보드 (소형) 에 장착된 스테핑모터 구동모듈과 스테핑 모터(1.7kg급)
> SE-SM243 작동에 아무런 이상은 없습니다.
>
> 다만, 스테핑 모타에 피니언 기어를 달고 구동시 토크가 모자란지 멈춤 현상이 간혹 발생해서
> (가변 저항 조작시 같은 현상)
>
> 개인적인 문재로 생각 되어선, 스태핑의 토크 힘이 부족한듯 개인적인 진단을 내려보는데..
>
> newt사의 사이트에 올려놓으신 "스테핑 모터(9kg급)SE-SM9K" 를 구매했을시
>
> 기존 소스에서 작동시 문재가 발생되는 요인이 없을까? 문의 드립니다.
>
> 금일 사장님께 q&a 를 작성후, 용산쪽에 자재구입하로 나가서 혹시 보시게되면.
>
>
> 사장님꼐 무뢰한, 업무상 시간이 안 나실수 있으시지만, 문자로 알려 주실수 있는 답변을 기대해도 되는
> 지 언짢은 글과 함께 부탁드리겠습니다.
>
> 010-4645-8852 죄송합니다.
>
|
||||
| 6980 | 답변완료제품 구매 문의 입니다. | 문의 사항 입니다. | 2012-01-17 | 1,243 |
|
KD-128pro-c를 구매 하고자 합니다.
제가 이쪽은 완전 초보 입니다.
상기 킷트만 구매 하면 pc와 연동하여
실험을 할 수 있는지 궁금 합니다.
별도의 data 입력을 위한 지그 같은 것이 필요 한지 궁금 합니다.
이상 입니다.
관리자 답변
안녕하세요? 고객님,
저희 뉴티씨를 이용하여 주셔서 감사합니다.
본사의 KD-128PRO 킷트의 시리얼 포트와 PC의 시리얼 포트 또는 AD-USBSerial을 추가 구매한 후, 연결하여, PC의 시리얼 포트를 통하여 KD-128PRO에 명령을 내리는 등으로 제어하시면 좋겠습니다.
온라인 강좌에서 AVR 강좌나 동영상 강좌 등을 열심히 보셔야 할 것 같습니다.
수고하세요.
>
>
> KD-128pro-c를 구매 하고자 합니다.
>
> 제가 이쪽은 완전 초보 입니다.
>
> 상기 킷트만 구매 하면 pc와 연동하여
>
> 실험을 할 수 있는지 궁금 합니다.
>
> 별도의 data 입력을 위한 지그 같은 것이 필요 한지 궁금 합니다.
>
> 이상 입니다.
>
|
||||
| 6979 | 답변완료모듈과 atmega128사이에서의 통신관련 질문 입니다. | 이명수 | 2012-01-17 | 1,265 |
|
CC1020모듈과 atmega128을 이용하여 무선 송수신 시스템을 만들려고 합니다.
수신부에서 CC1020모듈(3개)의 여러 정보가 atmega128로 들어가야 됩니다.
SPI통신 방식을 이용하고, TTL레벨로 모듈(CC1020)과 atmega128이 통신을 하는거 같습니다.
그리고 B포트 전부를 연결하여 통신합니다.
수신부에서 모듈 3개를 atmega128 한 개로 정보를 받아 원활한 통신이 가능 한가요?
관리자 답변
안녕하세요? 고객님,
저희뉴티씨를 이용하여 주셔서 감사합니다.
첨부드린 문서는 SPI 통신을 이용하고, 1포트로 3개의 SPI 디바이스를 제어하는 예입니다.
이와 같이 사용하면 좋을 것 같네요.
코딩도 회로도 참고하세요.
수고하세요.
>
>
> CC1020모듈과 atmega128을 이용하여 무선 송수신 시스템을 만들려고 합니다.
>
> 수신부에서 CC1020모듈(3개)의 여러 정보가 atmega128로 들어가야 됩니다.
>
> SPI통신 방식을 이용하고, TTL레벨로 모듈(CC1020)과 atmega128이 통신을 하는거 같습니다.
>
> 그리고 B포트 전부를 연결하여 통신합니다.
>
> 수신부에서 모듈 3개를 atmega128 한 개로 정보를 받아 원활한 통신이 가능 한가요?
>
|
||||
