0% found this document useful (0 votes)
83 views12 pages

BÁO CÁO TÌM HIỂU TIMER

The document discusses code for using a timer, LED, and LCD1602 display on a microcontroller board. It includes: 1. Code to connect a timer to count seconds, minutes and hours and display on an LCD. 2. Code using a timer to blink an LED by toggling its state each 10 time units. 3. Functions to initialize and write commands/data to an LCD1602 display.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views12 pages

BÁO CÁO TÌM HIỂU TIMER

The document discusses code for using a timer, LED, and LCD1602 display on a microcontroller board. It includes: 1. Code to connect a timer to count seconds, minutes and hours and display on an LCD. 2. Code using a timer to blink an LED by toggling its state each 10 time units. 3. Functions to initialize and write commands/data to an LCD1602 display.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

BÁO CÁO TÌM HIỂU TIMER

I/ SƠ ĐỒ KẾT NỐI

II/GIẢI THÍCH CODE

[Link] ĐỒNG HỒ

#include<reg51.h>

#include"lcd.h"

sbit K1=P3^0;//CHUYEN

sbit K2=P3^1;//TANG

sbit K3=P3^2;//dung va chay

sbit K4=P3^3;

unsigned char Time;

void Delay1ms(unsigned int c);


void TimerConfiguration();

void Int0Configuration();

unsigned char SetPlace;

void main(void)

unsigned char hour,minit,second;

unsigned int i;

TimerConfiguration();

Int0Configuration();

LcdInit();

hour=12;

LcdWriteData('0'+hour/10); //lay hour chia cho 10 lay nguyen roi cong voi 0 là ki tu so 48

LcdWriteData('0'+hour%10); //lay hour chia cho 10 lay phan du roi cong voi 0

LcdWriteData('-');

LcdWriteData('0'+minit/10);

LcdWriteData('0'+minit%10);

LcdWriteData('-');

LcdWriteData('0'+second/10);

LcdWriteData('0'+second%10);

while(1)

if(TR0==0)

if(K1==0) //K1 duoc nhan

Delay1ms(10); //delay 10ms

if(K1==0) // ktra lai K1 xem dc nhan hay k neu dc nhan thì thuc hien
cac cau lenh ben trong
{

SetPlace++;

if(SetPlace>=3)

SetPlace=0;

while((i<50)&&(K1==0)) //lap lai 50 lan va k1 dc nhan

Delay1ms(1);

i++;

i=0;

if(K2==0) //k2 dc nhan

Delay1ms(10); //delay 10ms

if(K2==0) //ktra lai K2 xem dc nhan hay k neu dc nhan thì thuc hien cac
cau lenh ben trong

if(SetPlace==0)//neu setpalce la 0 thi tang gia tri second

second++;

if(second>=60)

second=0;

else if(SetPlace==1)//neu setplace la 1 thì tang gia tri minit

minit++;

if(minit>=60)
minit=0;

else

hour++; // neu k phai 0 hay 1 thi tang gia tri hour

if(hour>=24)

hour=0;

while((i<50)&&(K2==0)) // lap lai 50 lan va k2 dc nhan

Delay1ms(1);

i++;

i=0;

if(Time>=20) //dem tran thuong la 50ms*20

Time=0; //dat lai gia tri time

second++;

if(second==60)// neu second = 60 thi tang minit them ,neu minit=60 thi tang
hour them 1,neu hour = 24 thi dat lai =0

second=0;

minit++;

if(minit==60)

{
minit=0;

hour++;

if(hour==24)

hour=0;

//gui len lcd

LcdWriteCom(0x80);

LcdWriteData('0'+hour/10);

LcdWriteData('0'+hour%10);

LcdWriteCom(0x83);

LcdWriteData('0'+minit/10);

LcdWriteData('0'+minit%10);

LcdWriteCom(0x86);

LcdWriteData('0'+second/10);

LcdWriteData('0'+second%10);

void Delay1ms(unsigned int c) //ham delay

unsigned char a,b;

for (; c>0; c--)

{
for(b=199;b>0;b--)

for(a=1;a>0;a--);

void TimerConfiguration()// cau hinh timer 0 hoat dong o che do 1

TMOD = 0x01;

TH0 = 0x3C;

TL0 = 0x0B0;

EA = 1;

ET0 = 1;

TR0 = 1;

void Timer0() interrupt 1

TH0 = 0x3C; //dat lai bit cao

TL0 = 0x0B0;//dat lai bi thap

Time++;//dem so lan tran

void Int0Configuration()
{

IT0=1;

EX0=1;

EA=1;

void Int0() interrupt 0

Delay1ms(10);

if(K3==0)

TR0=~TR0; // khi k3 dc nhan dao trang thai chay va dung

SetPlace=0;

[Link] ĐƠN

#include<reg51.h>

#include<intrins.h>

#define GPIO_LED P2//gan led vao chan p2

void TimerConfiguration();

unsigned char Time;

void main(void)

Time=0; //dat gia tri ban dau cho time

GPIO_LED=0XFE; //da

TimerConfiguration();
while(1)

if(Time==10)

GPIO_LED=_crol_(GPIO_LED,1);//dich tu cao xuong thap sang trai 1 don vi moi


khi time=10

Time=0; //dat lai gia tri time

void TimerConfiguration()

TMOD = 0x01; //Ñ¡Ôñ¹¤×÷·½Ê½1

TH0 = 0x3C; //ÉèÖóõʼֵ,¶¨Ê±50MS

TL0 = 0xB0;

EA = 1; //´ò¿ª×ÜÖжÏ

ET0 = 1; //´ò¿ª¶¨Ê±Æ÷0ÖжÏ

TR0 = 1; //Æô¶¯¶¨Ê±Æ÷0

void Timer0() interrupt 1

TH0 = 0x3C; //ÉèÖóõʼֵ

TL0 = 0xB0;

Time++;

}
[Link] 1602

#include"lcd.h"

void Lcd1602_Delay1ms(uint c) //DELAY 10ms

uchar a,b;

for (; c>0; c--)

for (b=199;b>0;b--)

for(a=1;a>0;a--);

#ifndef LCD1602_4PINS //kiem tra xem dc dinh nghia hay khong neu chua thì thuc hien bên duoi

void LcdWriteCom(uchar com) //gui lenh den man lcd1602

LCD1602_E = 0; //Tat chân kích hoat (Enable)

LCD1602_RS = 0; //Chon che do ghi lenh.

LCD1602_RW = 0; //Chon che do ghi (không doc).

LCD1602_DATAPINS = com; //Gui byte lenh den chân du lieu cua màn hình.

Lcd1602_Delay1ms(1); //delay1ms

LCD1602_E = 1; //Bat chân kích hoat de day du lieu vào màn hình
Lcd1602_Delay1ms(5); //delay5ms

#else

void LcdWriteCom(uchar com) //дÈëÃüÁî

LCD1602_E = 0; //Tat chân kích hoat (Enable), làm cho màn hình LCD không san sàng de nhan
du lieu.

LCD1602_RS = 0; //Chon che do gui lenh (dt chân RS ve 0).

LCD1602_RW = 0; //Chon che do ghi (dat chân RW ve 0)

LCD1602_DATAPINS = com; // Ghi du lieu vào chân du lieu cua màn hình,su dung 4 chân du
lieu (4 bits) cua màn hình LCD1602

Lcd1602_Delay1ms(1);

LCD1602_E = 1; //Bat chân kích hoat de day lenh vào màn hình.

Lcd1602_Delay1ms(5);

LCD1602_E = 0; //tat chan kich hoat(eneble)

Lcd1602_Delay1ms(1);

LCD1602_DATAPINS = com << 4; //Gui 4 bitt cao cua byte lenh bang cách chuyen "com" sang trái
4 bitt.

Lcd1602_Delay1ms(1);

LCD1602_E = 1; //дÈëʱÐò

Lcd1602_Delay1ms(5);

LCD1602_E = 0;

#endif

#ifndef LCD1602_4PINS

void LcdWriteData(uchar dat) //dinh nghia ham co tham so dau vao la "dat"
{

LCD1602_E = 0

LCD1602_RS = 1;

LCD1602_RW = 0;

LCD1602_DATAPINS = dat;

Lcd1602_Delay1ms(1);

LCD1602_E = 1;

Lcd1602_Delay1ms(5);

LCD1602_E = 0;

#else

void LcdWriteData(uchar dat)

LCD1602_E = 0;

LCD1602_RS = 1;

LCD1602_RW = 0;

LCD1602_DATAPINS = dat;

Lcd1602_Delay1ms(1);

LCD1602_E = 1;

Lcd1602_Delay1ms(5);

LCD1602_E = 0;

LCD1602_DATAPINS = dat << 4;

Lcd1602_Delay1ms(1);
LCD1602_E = 1;

Lcd1602_Delay1ms(5);

LCD1602_E = 0;

#endif

#ifndef LCD1602_4PINS

void LcdInit()

LcdWriteCom(0x38); // Thiet lap chuc nang: che do 8-bitt, 2 dòng, 5x8 cham

LcdWriteCom(0x0c); //Ðieu khien bat/tet hien thi: Bat hien thi, Tat con tro, Tat nhap nháy

LcdWriteCom(0x06); //Thiet lap che do nhap: Tang vi trí con tro, Không dich hien thi

LcdWriteCom(0x01); //Xóa hien thi

LcdWriteCom(0x80); //Thiet lap dia chi DDRAM toi 0x80 (dòng dau tiên)

#else

void LcdInit()

LcdWriteCom(0x32); //Thiet lap chuc nang: che do 4-bitt, 2 dòng, 5x8 cham

LcdWriteCom(0x28); //Thiet lap chuc nang: che do 4-bitt, 2 dòng, 5x8 cham¯

LcdWriteCom(0x0c); //Ðieu khien bat/tet hien thi: Bat hien thi, Tat con tro, Tat nhap nháy

LcdWriteCom(0x06); //Thiet lap che do nhap: Tang vi trí con tro, Không dich hien thi

LcdWriteCom(0x01); //Xóa hien thi

LcdWriteCom(0x80); //Thiet lap dia chi DDRAM toi 0x80 (dòng dau tiên)

#endif

You might also like