Mạch Khóa Số Điện Tử Mạch Đếm Sản Phẩm Mạch Đèn giao thông Ngã Tư Mạch Trái Tim Final Mạch Trái Tim Final Mạch Trái Tim I Love U

November 28, 2013

Mạch đèn giao thông hiển thị LCD 16x2

( CTV Angels Demons ) Mạch đèn giao thông hiển thị LCD 16x2 lập trình bằng ATmega16 +  Biên dịch AVRstudio 6.


Code Main: 

/*
 * den_giao_thong.c
 *
 * Created: 27/11/2013 6:12:57 CH
 *  Author: Entertainment
 */

#ifndef F_CPU
#define F_CPU 12000000UL // 1 MHz
#define TIMER_PRESCALE 1024
#define TIMER1_INTERVAL (F_CPU/TIMER_PRESCALE)

#define TIMER1PRESCALE 0x05 ///< timer 1 prescaler default
#define TIMER_PRESCALE_MASK 0x07 ///< Timer Prescaler Bit-Mask
#endif

//-----------------------------
#include <avr/io.h>
#include <avr/interrupt.h>
#include "myLCD.h"
#include "delay.h"

volatile uint8_t val=0;  //khai bao 1 bien tam val va khoi tao =0
static volatile unsigned int Counter1s;
//char dis[10];

void timer1Init(void)
{
TCCR1B = (TCCR1B & ~TIMER_PRESCALE_MASK) | TIMER1PRESCALE; // set prescaler
TCNT1H = 0; // reset TCNT1
TCNT1L = 0;
TIMSK |= (1<<TOIE1); // enable TCNT1 overflow
TCNT1 = 0xFFFF - TIMER1_INTERVAL;
//TCNT1=49910;              //gan gia tri khoi tao cho T/C1
}

void trang_thai_1(void)
{
char dis[5];
if(Counter1s<=40){
clr_LCD();
move_LCD(1,3);
print_LCD("Den Xanh - Do");
sprintf(dis,"%i", Counter1s);
move_LCD(2,3);
print_LCD("Thoi Gian: ");
print_LCD(dis);
PORTB &= ~((1 << PB1) | (1 << PB2)) ;
PORTD &= ~((1 << PD0) | (1 << PD1)) ;
//----------------------------
PORTB |= (1 << PB0);   //xanh va do
PORTD |= (1 << PD2);
}
}
void trang_thai_2(void)
{
char dis[5];
if((Counter1s>40)&&(Counter1s<=43)){
clr_LCD();
move_LCD(1,3);
print_LCD("Den Vang - Do");
val = (Counter1s - 40);
sprintf(dis,"%i",val);
move_LCD(2,3);
print_LCD("Thoi Gian: ");
print_LCD(dis);
PORTB &= ~((1 << PB0) | (1 << PB2)) ;
PORTD &= ~((1 << PD0) | (1 << PD1)) ;
//-----------------------------------------
PORTB |= (1 << PB1);   //vang va do
PORTD |= (1 << PD2);
}
}
void trang_thai_3(void)
{
char dis[5];
if((Counter1s>43)&&(Counter1s<=73)){
clr_LCD();
move_LCD(1,3);
print_LCD("Den Do - Xanh");
val = (Counter1s - 43);
sprintf(dis,"%i", val);
move_LCD(2,3);
print_LCD("Thoi Gian: ");
print_LCD(dis);
PORTB &= ~((1 << PB0) | (1 << PB1)) ;
PORTD &= ~((1 << PD1) | (1 << PD2)) ;
//-------------------------
PORTB |= (1 << PB2);   //do va xanh
PORTD |= (1 << PD0);
}
}
void trang_thai_4(void)
{
char dis[5];
if((Counter1s>73)&&(Counter1s<=76)){
clr_LCD();
move_LCD(1,3);
print_LCD("Den Do - Vang");
val = (Counter1s - 73);
sprintf(dis,"%i", val);
move_LCD(2,3);
print_LCD("Thoi Gian: ");
print_LCD(dis);
PORTB &= ~((1 << PB0) | (1 << PB1)) ;
PORTD &= ~((1 << PD0) | (1 << PD2)) ;
//--------------------------------
PORTB |= (1 << PB2);   //do va vang
PORTD |= (1 << PD1);
}
}
int main(void){
DDRA=0xFF;                //PORTA la output PORT
PORTA=0x00;
DDRB=0xFF;                //PORTB la output PORT
PORTB=0x00;
DDRD=0xFF;                //PORTD la output PORT
PORTD=0x00;
timer1Init();
sei();                       //set bit I cho phep ngat toan cuc
init_LCD();
clr_LCD();
//putChar_LCD(' ');
putChar_LCD(' ');
putChar_LCD('D');
print_LCD("emo of control");
move_LCD(2,2);
print_LCD("Den Giao Thong");
_delay_ms(3000);
while (1){           //v?ng l?p vô t?n
// Nothing Here :D
}
return 0;
}
//trinh phuc vu ngat tran T/C1
ISR (TIMER1_OVF_vect){
TCNT1 = 0xFFFF - TIMER1_INTERVAL;
Counter1s++;

if (Counter1s==77) Counter1s=1;
PORTA =Counter1s;        //xuat gia tri ra PORTA
trang_thai_1();
trang_thai_2();
trang_thai_3();
trang_thai_4();
}

( Tải Full)

Echipkool.com - Điện Tử | Tin Học - Chia sẻ kiến thức - Kết nối đam mê điện tử

0 comments:

Post a Comment

Bạn đọc hãy giúp chúng tôi xây dựng cộng đồng bằng cách để lại bình luận, chúng tôi luôn đón nhận mọi ý kiến của các bạn:
» Bình luận nghiêm túc và không chứa các liên kết quảng cáo.
» Vui lòng không Spam nhận xét với mọi hình thức.
» Rất mong bạn đề tên cho nhận xét của chính mình - Bằng cách chọn vào Tên/URL và điền tên bạn vào (Phần URL có thể bỏ trống ).

- Bạn có thể chèn Link nhạc (NCT), video(Youtube),Hình ảnh vào comment bằng cú pháp:
+ [youtube] Link video Youtube [/youtube].
+ [img] Link ảnh( định dạng PNG, JPG,GIF) [/img]
+Chèn link liên kết: <a href="LINK" rel="nofollow">Name</a>
-Bạn copy mã bên cạnh biểu tượng chèn vào nhận xét để bày tỏ cảm xúc!!

:) :( :)) :(( =)) =D> :D :P