Trích một phần code của chƣơng trình: Date : 2/5/2014
Author : Nguyen Quang Hai
Company : Khoa Dien - Dien Tu, DHNT Comments: DO AN TOT NGHIEP
Chip type : ATmega32 Program type : Application
AVR Core Clock frequency: 8.000000 MHz Memory model : Small
External RAM size : 0 Data Stack size : 512
*****************************************************/ ……….. //khai bao bien luu du lieu khi mat dien
eeprom long luudatangaymo[7][5] = { 0}; // luu tru 7 ngay, 4 gia tri la 2 so cho ngay va 2 so cho thang
eeprom long luudatagiomo[7][5] = {0}; // luu tru 7 ngay, 4 gia tri: gio va phut eeprom long luudatadienapmo[7][5]= {0};
eeprom long luudatangaytat[7][5]={0}; // luu tru 7 ngay, 4 gia tri la 2 so cho ngay va 2 so cho thang
eeprom long luudatadienaptat[7][5]={0};
eeprom int luungaythu; //luu lai ngay hien tai
eeprom int luutrudaluudulieu = 0; // tin hieu bao da mat dien truoc do va cho phep lay lai du lieu
……….. //khai bao bien ma tran luu tru du lieu
//---truoc khi bat den----
long datangaymo[7][5]; // luu tru 7 ngay, 4 gia tri la 2 so cho ngay va 2 so cho thang long datagiomo[7][5]; // luu tru 7 ngay, 4 gia tri: gio va phut
long datadienapmo[7][5]; // luu tru 7 ngay, 4 so dien ap //---truoc khi tat den----
long datangaytat[7][5]; // luu tru 7 ngay, 4 gia tri la 2 so cho ngay va 2 so cho thang long datagiotat[7][5]; // luu tru 7 ngay, 4 gia tri: gio va phut
long datadienaptat[7][5]; // luu tru 7 ngay, 4 so dien ap
……….. void hienthigio() //hien thi gio len LCD
{
rtc_get_time (&gio, &phut, &giay); lcd_gotoxy (0,1);
lcd_putchar (' '); lcd_chuyendoi(gio); lcd_putchar (':'); lcd_chuyendoi(phut);
lcd_putchar (':'); lcd_chuyendoi(giay); }
void hienthingay() //hien thi ngay len LCD {
rtc_get_date (&ngay, &thang, &nam); lcd_gotoxy (9,1); lcd_putchar (' '); lcd_chuyendoi(ngay); lcd_putchar ('/'); lcd_chuyendoi(thang); lcd_putchar ('/'); lcd_chuyendoi(nam); lcd_putchar (' '); } ……… if( SLdauvao < 300 && kiemtradaduocluumo == 0)
// khi dien ap solar nho hon 3V bat den
{
delay_ms(500);
kiemtradaduocluumo = 1; ngaythu = ngaythu + 1;
if (ngaythu == 8) {ngaythu = 1;}
savedatamo(); //luu du lieu truoc khi bat den
{
nguonDC = 0; // cat nguon DC tai = 0; // gat tai qua acu
}
if (sosanh < 1100) //khi acu can điện {
tai = 1; // gat tai qua DC
nguonDC = 1; // dong nguon DC }
}
if (sosanh < 1100) //khi dien ap acu can
{
if (SLdauvao < 300) //neu la ban dem
{ tai = 1; // gat tai qua nguon DC
nguonDC = 1; // dong nguon DC
if( modaduocluu == 1 && kiemtradaduocluutat == 0)
// neu Acu can dien tien hanh ghi lai thoi diem nay
{
kiemtradaduocluutat = 1;
if(kiemtradaduocluumo == 1) {savedatatat();}
// neu du lieu gio mo cua ngay duoc luu thi moi luu gio tat
}
Sau khi viết xong code cho bộ điều khiển ta tiến hành dich ra file .hex và nạp file này cho Atmega16 bằng phần mềm AVR studio 4thông qua mạch nạp STK500 có bán trên thì trƣờng.Sau đó cho bộ điều khiển hoạt động để kiểm tra chức năng và sữa lỗi.