برای دیدن متن نوشته ماوس و یا صفحه را به پایین هدایت کنید.
خانه / میکروکنترلرها / میکروکنترلر های AVR / پروژه های AVR / پروژه ساعت دیجیتال با میکروکنترلر ATMEGA64 و LCD 2*16
طراحی برد با Altium Designer آموزش ‎آردوینو Arduino آموزش کنترل روبات با اندروید
آموزش آنالیز مدار با ADS مقدماتی آموزش تحلیل مدار با proteus آموزش نقشه کشی برق صنعتی
تحلیل آنالیز مدار با ADS پیشرفته آموزش مخابرات آنالوگ و دیجیتال آموزش طراحی دیجیتال با Verilog
آموزش مدارهای الکتریکی مقدماتی آموزش مبانی سیستم های مخابراتی‎‎ آموزش شبیه سازی مدار با Cadence
آموزش مدارهای الکتریکی پیشرفته آموزش های رایگان آموزش شبیه سازی مدار با OrCad
آموزش آموزش نرم افزار MAX+PLUS تبلیغات کلیکی سینماتیک مستقیم و معکوس روبات

پروژه ساعت دیجیتال با میکروکنترلر ATMEGA64 و LCD 2*16

پروژه ساعت دیجیتال با میکروکنترلر ATMEGA64 و LCD 2*16 و همچنین کی پد 4*4 برای تنظیمات ساعت یک پروژه کاربردی هست که با کریستال ساعت 32768 هرتز کار میکنه و در نرم افزار پرتئوس شبیه سازی شده.

شماتیک پروژه ساعت دیجیتال با میکروکنترلر ATMEGA64 و LCD 2*16

پروژه ساعت دیجیتال با میکروکنترلر

برنامه نویسی میکروکنترلر در محیط کدویژن انجام شده و از تایمر 0 میکروکنترلر ATMEGA64 برای ساعت دقیق با کریستال 32768 هرتز استفاده کردیم. در شکل بالا شماتیک مدار را میبنید حالا بریم سر برنامه نویسی میکروکنترلر.

برنامه نویسی پروژه ساعت دیجیتال با میکروکنترلر

کتابخونه های مورد نیاز  :

#include <mega64a.h>
#include <delay.h>
#include <alcd.h>
#include <stdio.h>
#include “keypad.h”

از متغیر های زیر برای ذخیره ساعت ، دقیقه و ثانیه استفاده میکنیم :

unsigned minute,hour,second;

برای راه اندازی LCD 2*16 از کتابخونه خود کدویژن استفاده میکنیم :

lcd_init(16);
lcd_clear();
lcd_putsf(“Melec.ir”);

پروژه ساعت دیجیتال با میکروکنترلر ATMEGA64 و LCD 2*16

برای ایجاد زمان یک ثانیه از قابلیت اتصال کریستال ساعت تایمر 0 استفاده میکنیم .

برای فعال سازی تایمر در این حالت رجیستر ها را اینطوری تنظیم میکنیم :

ASSR=0x08;
TCCR0=0x05;
TCNT0=0x00;
OCR0=0x00;
TIMSK=0x01;

و همچنین داخل روتین وقفه اینطوری مینویسیم :

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if(second==59){
second=0;
if(minute==59){
minute=0;
if(hour==23)
hour=0;
else
hour++;
}
else
minute++;
}
else
second++;
}

برای نمایش ساعت روی ال سی دی هم با تابع sprintf ساعت ، دقیقه و ثانیه را فرمت بندی میکنیم و روی #ال_سی_دی نشون میدیم

حتما در ادامه این مطلب را هم بخوانید:  دانلود مقاله آموزش راه اندازی lcd n96 چینی

sprintf(lcd_buffer,”Clock: %d:%d:%d”,hour,minute,second);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer);
delay_ms(50);

برای اسکن کی پد از کتابخونه keypad.h که خودم نوشتم استفاده میکنیم و قسمت تنظیمات را با دریافت اعداد از کی پد تنظیم میکنیم.

#include 
#include 
#include 
#include 
#include "keypad.h"

unsigned minute,hour,second;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    if(second==59){
      second=0;
      if(minute==59){
      minute=0;
      if(hour==23)
      hour=0;
      else
      hour++;
      }
      else
      minute++;
      }
      else
      second++; 
}
 void setting(void); 
 unsigned char get_keypad(void);   
 unsigned char get_number(void); 
void main(void){
        char lcd_buffer[17];

ASSR=0x08;
TCCR0=0x05;
TCNT0=0x00;
OCR0=0x00;


TIMSK=0x01;


lcd_init(16);
lcd_clear();
lcd_putsf("Melec.ir");
delay_ms(1);
lcd_gotoxy(0,1);
lcd_putsf("** ***");
delay_ms(1000);
  #asm("sei")                            
//  setting();
  while(1){
   sprintf(lcd_buffer,"Clock: %d:%d:%d",hour,minute,second);
      
      lcd_gotoxy(0,0);
      lcd_puts(lcd_buffer);
      delay_ms(50);     
       if(get_keypad()==13){
             setting();            
             } 
  }
}


  ///setting 
  void setting(void){
  unsigned char buff[16];
  lcd_clear();
  lcd_putsf("set system Time");
  lcd_gotoxy(5,1);
  sprintf(buff,"??:%d",minute);
  lcd_puts(buff); 
   do{  
   lcd_gotoxy(0,1);
   lcd_putsf("  ");
   hour=get_number();
   }while(hour>23);
   lcd_clear();  
    
  lcd_putsf("set system Time");
  lcd_gotoxy(5,1);
  sprintf(buff,"%d:??",hour);
  lcd_puts(buff); 
   do{  
   lcd_gotoxy(0,1);
   lcd_putsf("  ");
   minute=get_number();
   }while(minute>59);
   lcd_clear(); 

  }

فیلم عملکرد پروژه ساعت دیجیتال با میکروکنترلر ATMEGA64 و LCD 2*16

لطفا نظر خودتان را در قسمت دیدگاه ها مطرح کنید.

برای سفارس طراحی پروژه میتونید از قسمت تماس با ما اقدام کنید.

آموزش پروتئوس را از اینجا میتونید مطالعه کنید.

درباره ی جهاندیده

با سلام درود به شما که مطالب سایت خودتان را مطالعه می کنید امیدوارم مطالب سایت برایتان مفید باشد و باعث پیشرفت روز افزون شما شود. دوران راهنمایی در کار منتاژ کیت های الکترونیکی بودم تا رفتم هنرستان ^_^ دو سال هنرستان الکترونیک خیلی چیزها یاد گرفتم ! دو سال کاردانی الکترونیک و کارشناسی ICT گرایش بهره برداری از سیستم های مخابراتی پر از تجربه بود و مدتی است در الکترونیک دنیای مشغولم . الکترونیک - تکنولوژی - ICT ، برنامه نویسی ...

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بیست − یازده =