마이크로컨트롤러(Microcontroller)

78F9222

arirangled 2007. 12. 9. 16:40

NEC78F9222코너        http://homepage3.nifty.com/nonchansoft/nec78/index.htm

온도계를 만들자!

이번은 지금까지 몇 번이나 만들고 있습니다만, 또 온도계를 만들겠습니다. 지금까지는 테이블 참조로 계측한 데이터를 온도로 변환해 표시하고 있었습니다만, 이번은 C언어라고 하는 것으로 간단한 변환식에서 표시하고 있습니다. 이 정도 C언어가 취급하기 쉽다고는 생각하지 않았습니다. 이 계산을 어셈블러에서 짜려고 하면 대단한 노력이 걸린다고 생각합니다.

온도계를 만들자의 thermistor 이번은「이시즈카전자제」의 thermistor를 사용합니다. 도쿄 방면으로 갔을 때에「셍고쿠전상」에서 구입했습니다. 

(이시즈카전자제의 thermistorthermistor는「103 AT3」을 사용합니다. 25℃의 저항이 10 kΩ로 B정수=3435 k입니다. 오차는 1%로 대단히 우수한 부품이라고 생각합니다.

온도계를 만들자의 7 세그먼트(segment) LED 이번은 7 세그먼트(segment)에 열중해 보고 싶습니다. 지금까지 적색만으로 만들었기 때문에 이번은「청색」으로 했습니다. 청색 LED는 상당히 가격이 높습니다만, 우연히 도쿄 방면에 갔을 때에「아키즈키 전자」에서 구입했습니다. 1 200엔이므로 청색으로 하면 싸다고 생각합니다. 

(청색 7 세그먼트(segment) LED)나와 같은 온도계를 만드는 경우는 애노드 커먼(양극공통)을 사용해 주세요. 

온도계를 만들자의 회로도 이번도 매우 간단한 회로도입니다. 

(온도계를 만들자의 회로도)온도계를 만들자의 기본 사양

1) 온도계측범위는「0℃에서 50℃」()라고 했습니다.

2) 0℃이하의 경우는「dn, 50℃이상의 경우는「UP」라고 표시합니다.

3) 온도의 갱신은 0. 5초 마다 실시합니다. 

온도계를 만들자의 포트 할부와 설정(포트 할부와 설정) 이번 소프트도「main.c」와「TIMER_user.c」만으로 다른 소스를 만질 것은 없습니다. 

온도계를 만들자의 온도 변환 온도 변환의 겉()를 나타냅니다.

포트명

입출력

기능

풀업

P20

입력

서어미스터전압

 

P21

출력

7세그LED(a)

 

P22

출력

7세그LED(b)

 

P23

출력

7세그LED(c)

 

P121

출력

7세그LED(d)

 

P122

출력

7세그LED(e)

 

P123

출력

7세그LED(f)

 

P130

출력

7세그LED(g)

 

P40

출력

10자리행제어

 

P41

출력

1자리행제어

 

P42

출력

없슴

 

P43

출력

없슴

 

P44

출력

없슴

 

P45

출력

없슴

 

P30

출력

범위외표시

 

P31

출력

없슴

 

P34

 

리셋

 

 

 

 

 

시스템설정

 

 

고속Ring-OSC발진(8MHz)

 

소프트웨어로 부터 정지가능

 

 

 

 

 

타이머

 

 

 

타이머00(인터벌타이머)

 

카운터클록시간(500msec)

 

설정한동기마다통지한다.

 

 

 

 

 

워치도그타이머(사용하지 않는다)

 

 

 

 

 

A/D컨버터

 

 

채널입력0

 

기준전압4.5V<=Avref

 

 

변환시간28us

 

 

 

가능한 한 간단한 방법으로 온도에 변환 할 수 있도록 생각했습니다. 

 

(온도 변환 테이블)변환의 방법은 2 종류 있습니다.

0℃에서 32℃까지와 33℃에서 50℃까지를 나누어 계산하고 있습니다.

가능한 한 계산한 결과가 그대로 온도 표시에 사용할 수 있도록 생각하고 있습니다.

자세한 것은 윗 그림과 소스 리스트를 차분히 바라봐 주세요. 

온도계를 만들자의 하드 제작 이번도 컴팩트하게 정리했습니다.

기입 단자는 케이스로부터 나오도록 합니다.

 

(완성 기판 상태입니다)온도계를 만들자의 대완성에서는 대완성한 모습을 봐 주세요.

 

 

 

 

(수상쩍게 온도를 표시중)(50℃이상에서는 UP라고 표시합니다)온도계를 만들자의 원시 파일 원시 파일 일식은 이쪽으로부터 다운 로드해 주세요.  http://homepage3.nifty.com/nonchansoft/nec78/ondo.zip

폴더마다 압축하고 있습니다. 모든 파일이 들어가 있습니다. 라이터로 쓰는 실행 파일도 포함되어 있습니다. 

훌륭하다고 생각합니다. 이 정도 간단하게 소프트를 쓸 수 있다니. 어셈블러에서 10진의 계산 등을 쓰면 대단한 작업이 될 것입니다. 이번 A/D입력을 사용했습니다만 아무것도 신경 쓰지 않고 짜 넣을 수 있었습니다. 앞으로도 자꾸자꾸 작품의 제작을 계속해 갑니다. 

앞으로도「NEC78K0/K0S 마이크로컴퓨터 개발실」은 자꾸자꾸 즐거워집니다.

/*
*******************************************************************************
**
**  This device driver was created by Applilet for the 78K0S/KB1+, 78K0S/KA1+,
**  78K0S/KY1+ 8-Bit Single-Chip Microcontrollers.
**
**  Copyright(C) NEC Electronics Corporation 2002-2004
**  All rights reserved by NEC Electronics Corporation.
**
**  This program should be used on your own responsibility.
**  NEC Electronics Corporation assumes no responsibility for any losses
**  incurred by customers or third parties arising from the use of this file.
**
**  Filename : main.c
**  Abstract : This file implements main function.
**  APIlib : NEC78K0SKX1H.lib E1.46a [13 May 2005]
**
**  Device : uPD78F9222
**
**  Compiler : NEC/CC78K0
**
*******************************************************************************
*/
/*
*******************************************************************************
**  Include files
*******************************************************************************
*/
#include "macrodriver.h"
#include "system.h"
#include "ad.h"
#include "port.h"
#include "timer.h"
#include "watchdogtimer.h"
/*
*******************************************************************************
**  MacroDefine
*******************************************************************************
*/
/*
**---------------------------------------------------------------------------
**
**  Abstract:
** This function implements main function.
**
**  Parameters:
** None
**
**  Returns:
** None
**
**---------------------------------------------------------------------------
*/
int  ondo_10;
int  ondo_1;
int  ondo_f;

char led_data[14]=
   {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x3e,0x73,0x1e,0x54};
   /*led_data[10]="U",[11]="P",[12]="d",[13]="n"*/

void led_port_clear(void)
{
 P4.0=1;
 P4.1=1;
}

void time_wait(long time)
{
 while(time!=0){
 time--;
 }
}

void led_7seg_out(int data)
{
 P2=(P2|0x0e)&(~(led_data[data]&0x07)<<1);
 P12=(P12|0x0e)&(~(led_data[data]&0x38)>>2);
 P13=(P13|0x01)&(~(led_data[data]&0x40)>>6);
}

void led_disp(void)
{
 led_port_clear();
 led_7seg_out(ondo_10);
 P4.0=0;
 time_wait(200);
 led_port_clear();
 led_7seg_out(ondo_1);
 P4.1=0;
 time_wait(200);
 led_port_clear();
 if(ondo_f==1){
  P3.0=0;
 }
 else{
  P3.0=1;
 }
}

void main( void )
{

 ondo_10=9;
 ondo_1=0;
 ondo_f=0;

 /* TODO. add user code */
 AD_Start(ADChannel0);
 TM00_Start();
 while(1){
 
  led_disp();
  
 }
}


 

마이크로 컴퓨터에 대한 관심을 갖도록 일본 NEC사의 NEC78K0/K0S에 대한 내용을 필자가 번역해서 올렸습니다만 번역에 미흡한 부분이 있더라도 이해를 해주시기 바라며 마이컴IC에 관심을 갖고 부품등을 구입해서 공작하는 것에 도전을 해주시기 바랍니다.대부분 미국의 아트멜사와 마이크로칩사의 마이컴IC를 학교에서 배우고 있는데 여러 회사의 마이컴IC를 다루어 보는 것도 자신의 실력향상에 많은 도움이 되리라고 생각합니다. naryseo

 

 

반응형

'마이크로컨트롤러(Microcontroller)' 카테고리의 다른 글

PIC12F683  (0) 2008.10.18
그래픽LCD  (0) 2008.05.30
12F683 주파수카운터  (0) 2007.02.28
PIC12F675 일루미네이션  (0) 2007.02.28
PIC12F683 직류모터제어  (0) 2007.02.28