BASIC4MCU | 질문게시판 | 질문드립니다.
페이지 정보
작성자 ㅇㅇ 작성일2019-06-14 02:42 조회8,555회 댓글3건본문
lcd를 통해 알람시계가 작동되는것을 보고싶은데
어떻게 해야될지 모르겠습니다.
시계부분은 잘 나오는데 알람부분을 어떻게 해야될지 모르겠어요
12시 몇분 몇초에 알람이 울리게 하고싶은데 어떻게 해야될까요
알려주세요ㅜㅜ
#include "lcd.h"
#define Do 1908
#define Re 1700
#define Mi 1515
#define Fa 1432
#define Sol 1275
#define La 1136
#define Si 1012unsigned char Temp;
unsigned int cnt;
unsigned char sec, min, hour;
unsigned int alarm[]= {Do,Re,Mi};
void Init_Timer0(void)
{
TIMSK = (1<<OCIE0);
TCCR0 |= (1<< WGM01) | (1<<CS01);
OCR0 = 100;
SREG |= 0x80;
}interrupt [TIM0_COMP] void timer0_out_comp(void)
{
cnt++;
if(cnt == 20000)
{
cnt =0;
sec++;
if(sec >= 60){
min++; sec=0;
}
if(min >= 60){
hour++; min=0;
}
if(hour>= 24) hour=0;
}
}void Buzzer(int melody)
{
int i;
for(i=0; i<3; i++)
{
PORTG |= 1<<PORTG4;
delay_ms(100);
PORTG &= ~(1<<PORTG4);
delay_ms(100);
}
}
void main(void)
{
unsigned char str[] = " Time ";
unsigned char str1[] = " ";
unsigned char AM[] = "AM";
unsigned char PM[] = "PM";
int i;
int melody;
Temp =0;
cnt =0;
sec = min =0;
hour =12;
Init_Timer0();
LCD_Init();
LCD_Pos(0,2);
LCD_Str(str);
LCD_Pos(1,0);
LCD_Str(str1);
while(1) {
if(hour >12) {
LCD_Pos(1,1);
LCD_Str(PM);
LCD_Char(((hour-12) /10) +'0');
LCD_Char(((hour-12) %10) +'0');
}
else {
LCD_Pos(1,0);
LCD_Str(AM);
LCD_Char((hour/10) +'0');
LCD_Char((hour%10) +'0');
}
LCD_Pos(1,5);
LCD_Char((min/10) +'0');
LCD_Char((min%10) +'0');
LCD_Pos(1,7);
LCD_Char((sec/10) +'0');
LCD_Char((sec%10) +'0');
}if(hour == 12 & min == 0 & sec == 10)
{
Buzzer(melody[i]);
}
}
댓글 3
조회수 8,555master님의 댓글
master 작성일
if(hour>12){ LCD_Pos(1,1); LCD_Str(PM);
else { LCD_Pos(1,0); LCD_Str(AM);
AM과 PM의 LCD_Pos()이 다릅니다. 동일하게 맞추세요
master님의 댓글
master 작성일
if(hour==12&min==0&sec==10){ Buzzer(melody[i]); }
알람을 이미 하고 있습니다.
변수를 사용하고 싶으면 상수값대신 변수를 사용하면 되겠죠
//
//if(hh==ah&mm==am&ss==ad) 논리 and는 아래처럼 && 두개를 사용해야 합니다.
if(hh==ah&&mm==am&&ss==ad)
master님의 댓글
master 작성일
//
#define Do 1908
#define Re 1700
멜로디 선언이 있는 것을보면 멜로디 예제소스도 있을텐데요
예제소스를 첨부하지 않았으니 도와드릴 방법이 없습니다.
제가 멜로디 출력하는 것은 타이머를 사용하는데
포트G로 출력하는 것을보면 특정보드의 특징 상 타이머 출력이 불가능한 보드인가봅니다.
대충 소스를 정리해서 답글로 올려드릴테니 직접 완성시켜보세요