ypedef unsigned char BYTE;
typedef unsigned int WORD;
#include <ioAT89s52.h>
BYTE msg1[]= "#goodtime #";
BYTE msg2[]= "nice day";
#define RS P2_bit.P2_5
#define RW P2_bit.P2_6
#define E P2_bit.P2_7
#define FLAG P0_bit.P0_7
#define DATA P0
void BUSY(void);
void LCD_Command(BYTE cmd);
void LCD_DATA(BYTE ch);
void LCD_String(BYTE *str);
void LCD_Clear(void);
void LCD_position(BYTE col,BYTE row);
void LCD_Init(void);
void Delay(int i);
void main(void)
{
LCD_Init();
LCD_position(0,0);
LCD_String(msg1);
LCD_position(1,0);
LCD_String(msg2);
while(1)
{
P1=0x00; Delay(0x3FFF);
P1=0xFF; Delay(0x3FFF);
}
}
void BUSY(void)
{
BYTE temp=0;
FLAG=1;
do{
RS=0;
RW=1;
E=1;
Delay(1);
temp = DATA;
E=0;
}while(temp & 0x80);
}
void LCD_Command(BYTE cmd)
{
BUSY();
RS=0;
RW=0;
E=1;
Delay(1);
DATA=cmd;
Delay(10);
E=0;
}
void LCD_DATA(BYTE ch)
{
BUSY();
RS=1;
RW=0;
E=1;
Delay(1);
DATA=ch;
E=0;
}
void LCD_String(BYTE *str)
{
while(*str !=0)
{
LCD_DATA(*str);
str++;
}
}
void LCD_Clear(void)
{
LCD_Command(0x01);
Delay(1000);
}
void LCD_position(BYTE col,BYTE row)
{
LCD_Command(0x80 | row + col * 0x40);
}
void LCD_Init(void)
{
DATA=0x3F;
Delay(10000);
RS=0;
RW=0;
E=1;
E=0;
Delay(1000);
LCD_Command(0x38); Delay(1000);
LCD_Command(0x38); Delay(1000);
LCD_Command(0x08); Delay(1000);
LCD_Command(0x06); Delay(1000);
LCD_Command(0x0F); Delay(1000);
LCD_Clear();
}
void Delay(int i)
{
while(i--);
}
이렇게 문자출력을 만들어봤습니다 온도센서(LM35)로 온도측정후 온도가표시되게 하고싶은데
소스를 어떡게 짜야할지모르겠네요...
먼저 LM35를 사용하는 소스는
typedef unsigned char BYTE;
typedef unsigned int WORD;
#include <io51.h>
// 포트 define
#define CS P1.0
#define Din P1.1
#define Dout P1.2
#define CLK P1.3
#define FND P2
#define LM35_Input P1.4
#define LM35_Output P1.5
#define CdS_Input P1.6
#define CdS_Output P1.7
#define A7 P0.4 // 음성분할녹음 주소 A7의 포트정의
#define A6 P0.3 // 음성분할녹음 주소 A6의 포트정의 (사용X)
#define A5 P0.2 // 음성분할녹음 주소 A5의 포트정의
#define PLAYE P0.5 // 음성재생의 포트정의 (Active Low 동작)
#define RECORD P0.0 // 음성녹음 의 포트정의 (Active Low 동작) (사용X)
#define FAN_ON P0.1 // FAN ON (사용X)
#define LAMP_ON P0.6 // LAMP ON (사용X)
//각 상수 define
#define MaxVolt 5
#define MaxNumber 0xFFF
#define Multiplier 100
#define Gain 4
//사용자 정의 함수
WORD SPI_of_MCP3202 (BYTE ch);
void Delay(WORD count);
void FND_Conversion(BYTE temp);
BYTE Temp_Conversion(WORD temp);
void CdS_State (BYTE Flag);
void PLAY_Function(BYTE addr6, BYTE addr5);
//main 함수
void main(void)
{
WORD result;
BYTE converted_result;
P1 = P2 = P0 = 0x00; Delay(0xFFFF);
PLAYE = 1; RECORD = 1;
while(1)
{
result = SPI_of_MCP3202(1);
converted_result = Temp_Conversion(result);
FND_Conversion(converted_result); Delay(0xFFFF);
if(P2 >= 0x30)
{
LM35_Output = 1;
}
else if(P2 < 0x30)
{
LM35_Output = 0;
}
CdS_State(CdS_Input);
if(LM35_Output == 1)
{
PLAY_Function(0, 0); // FAN이 ON 되면(0,0)주소에 녹음된 음성 재생
PLAYE=0;
}
else if(CdS_Output == 1)
{
PLAY_Function(0, 1); // LAMP가 ON 되면 (0,1)주소에 녹음된 음성 재생
PLAYE=0;
}
else
{
RECORD = 1; PLAYE = 1; // 그 이외에는 녹음,재생 안되게 1로 셋팅
}
}
}
WORD SPI_of_MCP3202(BYTE ch)
{
WORD OUT12 = 0x0000;
BYTE i;
CS = 1; CLK = 1; CS = 0;
Din = 1; CLK = 0; CLK = 1;
Din = 1; CLK = 0; CLK = 1;
Din = ch; CLK = 0; CLK = 1;
Din = 1; CLK = 0; CLK = 1;
CLK = 0; CLK = 1;
for( i = 0; i<12; i++)
{
OUT12 = OUT12 <<1;
CLK = 0;
if(Dout == 1)
{
OUT12 = OUT12 | 0x0001;
}
CLK = 1;
}
CS = 1; Din = 0;
return OUT12;
}
void Delay(WORD count)
{
while(count --);
}
void FND_Conversion (BYTE temp)
{
BYTE temp10 , temp01;
temp10 = temp/10;
temp01 = temp;
FND = (temp10 <<4) | temp01;
}
BYTE Temp_Conversion (WORD temp)
{
float temp_data;
temp_data = temp / (float) MaxNumber;
temp_data = temp_data * (float) MaxVolt;
temp_data = temp_data / (float) Gain;
temp_data = temp_data * (float) Multiplier;
return (BYTE)temp_data;
}
void CdS_State (BYTE Flag)
{
BYTE CdS_flag;
CdS_flag = Flag;
if(CdS_flag == 1)
{
CdS_Output = 1;
}
else
{
CdS_Output = 0;
}
}
void PLAY_Function(BYTE addr6, BYTE addr5) // 음성분할재생 불러오는 함수
{
A7=0; // A7=0이면 음성을 분할 한다는 뜻
A6=addr6;
A5=addr5; Delay(3000); // 주소할당 후 약간의 딜레이를 주는 것이 더 이상적이기 때문에 약간의 딜레이를 줌
}
이소스를 사용합니다 조도센서와 다른것들도 포함된 소스이구요(이건 제가짠소스가 아닙니다)
여기서 포트만 다르게 LM35의 온도를재서 위에 char LCD로 표시가되게 하고싶습니다. 온도센서는 ADC를포함해서 납떔까지 완성한부분입니다.이제 포트연결해서 코드를짜야하는데 어찌해야할지모르겠네요..ㅜ 알려주시면감사하겠습니다!