Tải bản đầy đủ (.pdf) (35 trang)

Thiết kế đồng hồ hiển thị giờ, phút, giây trên led ma trận sử dụng AT89C51

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (506 KB, 35 trang )

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA ĐIỆN – ĐIỆN TỬ

BÀI TẬP LỚN
VI XỬ LÝ

Đề 23: Thiết kế đồng hồ hiển thị giờ, phút, giây trên led ma trận
sử dụng AT89C51

HÀ NỘI
Tháng 07 năm 2016


MỤC LỤC
1. Thiết kế. ............................................................................................................ 2
1.1. Mạch làm nhiệm vụ gì? .............................................................................. 2
1.2. Các linh kiện dùng trong mạch. .................................................................. 2
1.3 Sơ đồ mạch nguyên lý. ................................................................................ 6
1.4 Sơ đồ mạch in. ............................................................................................. 7
2. Lập trình cho mạch điều khiển ......................................................................... 8
2.1 Sơ bộ yêu cầu, nhiệm vụ. ............................................................................. 8
2.2 Sơ đồ khối toàn chương trình ..................................................................... 8
2.3 Code. ............................................................................................................ 8
3. Kết quả đạt được. ............................................................................................ 34
3.1 Mô phỏng trên protus................................................................................. 34
3.2 Mạch thật. .................................................................................................. 34

Page | 1


1. Thiết kế.


1.1. Mạch làm nhiệm vụ gì?
Mạch sử dụng một số linh kiện như led matrix, AT89C51,DS1307,74S373...tạo
thành đồng hồ hiện ngày,giờ, phút, giây.
1.2. Các linh kiện dùng trong mạch.
-Mô tả DS1307.
Các DS1307 nối tiếp đồng hồ thời gian thực (RTC) là năng lượng thấp, đầy đủ
số thập phân mã nhị phân (BCD) đồng hồ / lịch cộng với 56 byte của NV
SRAM. Địa chỉ và dữ liệu chuyển nối tiếp thông qua một tôi 2C, bus hai chiều.
Đồng hồ lịch cung cấp giây, phút, giờ, ngày, ngày, tháng, năm và thông tin. Sự
kết thúc của ngày tháng được tự động điều chỉnh theo tháng có ít hơn 31 ngày,
bao gồm cả điều chỉnh cho bước nhảy vọt năm. Đồng hồ hoạt động hoặc là 24
giờ hoặc 12 giờ định dạng giờ với chỉ số AM / PM. Các DS1307 được xây dựng
trong mạch điện có ý nghĩa phát hiện mất điện và tự động chuyển sang cung cấp
sao lưu. Hoạt động chấm công tiếp tục trong khi phần hoạt động từ việc cung
cấp sao lưu. Real-Time Clock (RTC) Đếm Giây,Phút, giờ, ngày của tháng,
tháng, ngày của tuần và năm.
Giao diện nối tiếp
Lập trình Quảng trường-Wave Đầu ra tín hiệu
Tự động Power-Fail Phát hiện và Chuyển Mạch
Tiêu thụ ít hơn 500nA trong Battery-Backup
Chế độ với dao động chạy.
- Mô tả LS373.
Những tính năng ghi 8-bit đầu ra 3 trạng thái thiết kế đặc biệt cho các driver có
dung hoặc trở kháng tương đối thấp. Các trở kháng cao và tăng-logic cấp cao ổ
đĩa cung cấp các đăng ký với khả năng được kết nối trực tiếp và driver các
đường bus trong một hệ thống bus tổ chức mà không cần giao diện hoặc pullup
thành phần. Các thiết bị này đặc biệt hấp dẫn cho thực hiện đăng ký đệm, cổng
I/O, bus hai chiều, và đăng ký làm việc. 8 chốt của LS373 và S373 là minh bạch
D-loại chốt, có nghĩa là trong khi (C hoặc CLK) đầu vào cho phép là cao, các
kết quả đầu ra Q theo các dữ liệu đầu vào (D). Khi C hoặc CLK được thực hiện

thấp, đầu ra là bám vào mức độ dữ liệu đã được thiết lập.
Page | 2


Tám flip-flops của LS374 và S374 được kích hoạt D-type flip-flops. Trên tích
cực quá trình chuyển đổi của đồng hồ, các kết quả đầu ra Q được thiết lập để
trạng thái logic đã được thiết lập tại các đầu vào D.Schmitt-kích hoạt bộ đệm
đầu vào tại cho phép / đồng hồ dòng của S373 và S374 thiết bị đơn giản hóa
thiết kế hệ thống như ac và dc tiếng ồn từ chối được cải thiện bằng cách thường
400 mV do trễ đầu vào. Một đệm đầu ra kiểm soát (OC) đầu vào có thể được sử
dụng để đặt đầu ra 2 trong 8 trạng thái logic bình thường (logic cao hoặc thấp )
hoặc trạng thái trở kháng cao. Trong trạng thái trở kháng cao, các kết quả đầu ra
tải cũng không đáng kể. OC không ảnh hưởng đến hoạt động nội bộ của các chốt
hoặc dép xỏ ngón. Đó là, các dữ liệu cũ có thể được giữ lại hoặc dữ liệu mới có
thể được nhập vào, ngay cả khi các kết quả đầu ra đang tắt.
-Mô tả AT89C51.
Các AT89C51 là một năng lượng thấp, hiệu suất cao CMOS 8-bit vi tính với
4Kbyte của Flash lập trình và xóa được Read Only Memory (PEROM). Các
thiết bị được sản xuất sử dụng công nghệ bộ nhớ không bay hơi mật độ cao của
Atmel và tương thích với các tiêu chuẩn công nghiệp MCS-51 ™ hướng dẫn
thiết lập và sơ đồ chân.Trên các chip Flash cho phép bộ nhớ chương trình được
lập trình trong hệ thống hoặc một khái ventional lập trình bộ nhớ không bay
hơi. Bằng cách kết hợp một CPU 8-bit đa năng với Flash trên một chip nguyên
khối, Atmel AT89C51 là một máy vi tính mạnh mẽ cung cấp một giải pháp hiệu
quả rất linh hoạt và chi phí để kiểm soát nhiều nhúng application .
CẤU TẠO CỦA AT89C51.
VCC :Cung cấp điện áp.
GND:Nối đất.
Cổng 0:
Port 0 là một 8-bit mở cống hai chiều I / O port. Như một cổng ra mỗi pin có thể

chìm tám đầu vào TTL. Khi 1s được ghi vào cổng 0 chân, các chân có thể được
sử dụng như trở kháng đầu vào cao.
Port 0 cũng có thể được cấu hình để được ghép thấp.
Page | 3


Port 0 cũng nhận được byte mã trong chương trình Flash-ming, và kết quả đầu
ra các byte mã trong chương trình kiểm điểm hóa. Pullups bên ngoài được yêu
cầu trong chương trình kiểm điểm hóa.
Cổng 1:
Cổng 1 là một 8-bit hai chiều cổng I / O với pullups nội bộ.
Cổng 1 bộ đệm đầu ra có thể chìm / nguồn bốn đầu vào TTL.
Khi 1s được ghi vào Port 1 chân họ được kéo cao bằng các pullups nội bộ và có
thể được sử dụng như là đầu vào.
Cổng 1 chân được bên ngoài bị kéo nguồn sẽ thấp hiện tại (tôi IL) Vì pullups nội
bộ.
Cổng 1 cũng nhận được byte địa chỉ thấp trật tự trong lập trình flash và xác
minh.
Cổng 2:
Cổng 2 là một 8-bit hai chiều cổng I / O với pullups nội bộ.
Cổng 2 bộ đệm đầu ra có thể chìm / nguồn bốn đầu vào TTL.
Khi 1s được viết để Port 2 chân họ được kéo cao bằng các pullups nội bộ và có
thể được sử dụng như là đầu vào. Cổng 2 chân được bên ngoài bị kéo nguồn sẽ
thấp hiện tại vì pullups nội bộ.
Port 2 phát ra byte địa chỉ bậc cao trong quá trình nạp từ bộ nhớ chương trình
bên ngoài và trong quá trình truy cập đến bộ nhớ dữ liệu bên ngoài mà sử dụng
địa chỉ 16-bit (MOVX @ DPTR). Trong ứng dụng này nó sử dụng pullups nội
bộ mạnh mẽ
Cổng 3:
Cổng 3 là một 8-bit hai chiều cổng I / O với pullups nội bộ. Cổng 3 bộ đệm đầu

ra có thể chìm / nguồn bốn đầu vào TTL.
Khi 1s được viết để Port 3 chân họ được kéo cao bằng các pullups nội bộ và có
thể được sử dụng như là đầu vào.
Cổng 3 chân được bên ngoài bị kéo nguồn sẽ thấp hiện tại (tô I L) do pullups.
Port 3 cũng phục vụ các chức năng của các tính năng đặc biệt khác nhau của
AT89C51 như được liệt kê dưới đây:
Port 3 cũng nhận được một số tín hiệu điều khiển cho Flash chuyên nghiệp
gramming và xác minh.
RST
Page | 4


Thiết lập lại đầu vào. Một cao trên pin này cho hai chu kỳ máy trong khi dao
động đang chạy reset thiết bị.
ALE / PROG
Địa chỉ chốt cho phép đầu ra xung cho chốt byte thấp của địa chỉ trong thời gian
truy cập vào bộ nhớ bên ngoài. Này pin cũng là đầu vào xung chương trình
(PROG) trong flash lập trình.
Trong ALE hoạt động bình thường được phát ra với một tốc độ không đổi là 1/6
tần số dao động, và có thể được sử dụng cho bên ngoài timing hoặc các mục
đích ép xung. Lưu ý, tuy nhiên, một ALE xung được bỏ qua trong mỗi truy cập
vào dữ liệu bên ngoài Mem
PSEN
Chương trình Cửa hàng Enable là nhấp nháy đọc để bên ngoài ủng hộ bộ nhớ
gram.
Cổng Pin:
Chức năng thay thế
P3.0
RXD (cổng đầu vào nối tiếp)
P3.1

TXD (cổng ra nối tiếp)
P3.2
INT0 (bên ngoài gián đoạn 0)
P3.3
INT1 (ngắt ngoài 1)
P3.4
T0 (timer 0 đầu vào bên ngoài)
P3.5
T1 (1 giờ đầu vào bên ngoài)
P3.6
WR (bộ nhớ dữ liệu bên ngoài ghi nhấp nháy)
P3.7
RD (bộ nhớ dữ liệu bên ngoài đọc nhấp nháy)

Page | 5


R4

RP1

10k

R3

h33
h34
h35
h36
h37

h38
h39
h40
h41
h42
h43
h44
h45
h46
h47
h48

h17
h18
h19
h20
h21
h22
h23
h24
h25
h26
h27
h28
h29
h30
h31
h32
c1
c2

c3
c4
c5
c6
c7
c8
c1
c2
c3
c4
c5
c6
c7
c8

mode

c1
c2
c3
c4
c5
c6
c7
c8
c1
c2
c3
c4
c5

c6
c7
c8

h1
h2
h3
h4
h5
h6
h7
h8
h9
h10
h11
h12
h13
h14
h15
h16
c1
c2
c3
c4
c5
c6
c7
c8
c1
c2

c3
c4
c5
c6
c7
c8

1.3 Sơ đồ mạch nguyên lý.

RESPACK-8
menu

2
3
4
5
6
7
8
9

R2

1

10K
tang

10K


R1

U7
giam

19

XTAL1

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

10K
18

9

R6

R5

4k7

4k7


U

7
3

SCL
SDA

C1
X1

1

VBAT X2

2

SDA 1
SCL 2
mode3
menu4
tang 5
giam 6
7
8

33p

3V


1
l1 11

OE
LE
74S373

PSEN
ALE
EA

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD


39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28

d1
d2
d3
d4
d5
d6
d7
d8

10
11
12
13

14
15
16
17

l1
l2
l3
l4
l5
l6

AT89C51

U1
D0
D1
D2
D3
D4
D5
D6
D7

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13

P2.6/A14
P2.7/A15

33p

X1
32.768Hz
C2

SOUT

DS1307
B1

d1 3
d2 4
d3 7
d4 8
d5 13
d6 14
d7 17
d8 18

RST

1

SCL6
5


2

SDA

29
30
31

XTAL2

U2
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

2
5
6
9
12
15
16
19

h1

h2
h3
h4
h5
h6
h7
h8

d1 3
d2 4
d3 7
d4 8
d5 13
d6 14
d7 17
d8 18
1
l2 11

D0
D1
D2
D3
D4
D5
D6
D7
OE
LE
74S373


U3
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

2 h9
5 h10
6 h11
9 h12
12 h13
15 h14
16 h15
19 h16

d1 3
d2 4
d3 7
d4 8
d5 13
d6 14
d7 17
d8 18
1
l3 11


D0
D1
D2
D3
D4
D5
D6
D7
OE
LE
74S373

U4
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

2 h17
5 h18
6 h19
9 h20
12 h21
15 h22
16 h23

19 h24

d1 3
d2 4
d3 7
d4 8
d5 13
d6 14
d7 17
d8 18
1
l4 11

D0
D1
D2
D3
D4
D5
D6
D7
OE
LE
74S373

U5
Q0
Q1
Q2
Q3

Q4
Q5
Q6
Q7

2 h25
5 h26
6 h27
9 h28
12 h29
15 h30
16 h31
19 h32

d1 3
d2 4
d3 7
d4 8
d5 13
d6 14
d7 17
d8 18
1
l5 11

D0
D1
D2
D3
D4

D5
D6
D7
OE
LE
74S373

U6
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

2 h33
5 h34
6 h35
9 h36
12 h37
15 h38
16 h39
19 h40

d1 3
d2 4
d3 7
d4 8

d5 13
d6 14
d7 17
d8 18
1
l611

D0
D1
D2
D3
D4
D5
D6
D7

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

2 h41
5 h42
6 h43
9 h44
12 h45

15 h46
16 h47
19 h48

OE
LE
74S373

Page | 6


1.4 Sơ đồ mạch in.

Page | 7


2. Lập trình cho mạch điều khiển
2.1 Sơ bộ yêu cầu, nhiệm vụ.
Lập trình cho mạch điều khiển sau đó nạp chương trình cho chip AT89C51.
2.2 Sơ đồ khối toàn chương trình.
2.3 Code.
#include<reg52.h>
// KHAI BAO NGUYEN MAU CHO CAC HAM
unsigned char bcd_dec(unsigned char bcd); // Ham chuyen doi so bcd-thap phan
unsigned char dec_bcd(unsigned char dec); // chuyen doi thap phan-bcd
void Caidat();
void Hiengio();
void Hienngay();
void Display_hour();
void Display_min();

void Display_sec();
void Display_day();
void Display_month();
void Display_year();
void tach();
void Docgio();
unsigned char mode=0,doc=0;
int i,k,l,j;
int dem;

Page | 8


bit
tang0=1,tang1=1,giam0=1,giam1=1,menu=0,Menu0=1,Menu1=1,chedo0=0,che
do1=1;
// Khai bao cac bit cho nut nhan
char giay,phut,gio,h1,h2,m1,m2,s1,s2,ngay,thang,ng1,ng2,th1,th2,n1,n2;
Các gia tri thoi gian

//

int nam; // Nam
unsigned char cot[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char code hang[]={
0xFF,0x81,0x7E,0x7E,0x7E,0x7E,0x81,0xFF, //0
0xFF,0x7B,0x7D,0x00,0x7F,0x7F,0xFF,0xFF, //1
0xFF,0x3D,0x5E,0x6E,0x76,0x79,0xFF,0xFF,
0xFF,0xBD,0x6E,0x66,0x6A,0x9D,0xFF,0xFF,
0xFF,0xCF,0xD7,0xDB,0xDD,0x00,0xDF,0xFF,

0xFF,0xB0,0x76,0x76,0x76,0x76,0x8E,0xFF,
0xFF,0x81,0x6E,0x76,0x76,0x76,0x8D,0xFF,
0xFF,0xFF,0xFE,0x1E,0xEE,0xF6,0xF8,0xFF,
0xFF,0x89,0x76,0x76,0x76,0x76,0x89,0xFF,
0xFF,0xB1,0x6E,0x6E,0x6E,0x6E,0x81,0xFF}; //9
unsigned char mang[50];
sbit SDA=P1^0;
sbit SCL=P1^1;
sbit chedo=P1^2; // chon che do hien ngay/gio
sbit Menu=P1^3;

// Khai bao chan nut nhan "menu"

sbit tang=P1^4;

// Khai bao chan nut nhan "tang"
Page | 9


sbit giam=P1^5;

// Khai bao chan nut nhan "giam"

unsigned char bcd_dec(unsigned char bcd)
{
return((bcd/16)*10+(bcd%16));
}

//vd bcd=66 -> dec =42}


unsigned char dec_bcd(unsigned char dec)
{
return((dec/10)*16+(dec%10));
}
// Ham tao tre thu nhat
void delay(int t)
{
int a,b;
for(a=0;a{
for(b=0;b<140;b++)
{}
}
}

Page | 10


//////// CAC CHUONG TRINH GIANH CHO DS1307
void start() // Ham bat dau giao tiep I2C
{
SCL=1;
SDA=1;
delay(1);
SDA=0; delay(1);
SCL=0;
SDA=1;
}
void stop()


// Ham ket thuc giao tiep I2C

{
SDA=0;SCL=1;
delay(1);
SDA=1;
}
void send(unsigned char x) // Ham gui 1 byte du lieu tu 8051 vào DS1307
{
unsigned char temp,i;
for(i=0;i<8;i++)
{
temp=x&0x80;
if(temp==0x80) SDA=1;
Page | 11


else SDA=0;
SCL=1; delay(1);
SCL=0;
x=x<<1;
}
SCL=1; // Dieu kien Acknownlge
delay(1);
SCL=0;
}
unsigned char receiver() // Ham nhan 1 byte du lieu tu DS1307 vào 8051
{
unsigned char temp=0,i;
for(i=0;i<8;i++)

{
temp*=2;
SCL=1;

delay(1);

temp=temp|SDA;
SCL=0;delay(1);
}
SDA=1; // 89 chu dong dua ra dk A
SCL=1; // cap nhat A
delay(1);
SCL=0;
Page | 12


delay(1);
return temp;
}
////////// Doc du lieu tu 1 dia chi
unsigned char Read(unsigned char address)
{
unsigned char P;
start();
send(0xd0); // Gui lenh ghi
send(address);
start();
send(0xd1); // Gui lenh cho phep doc
P=receiver();
stop();

return P;
}
void Ghi(unsigned char add,char number)
DS1307

// Ghi 1 gia tri vao 1 dia chi trong

{
start();
send(0xd0);
send(add);
send(number);
Page | 13


stop();
}
void Docgio() // Doc gio tu DS1307
{
giay=bcd_dec(Read(0x00));
phut=bcd_dec(Read(0x01));
gio =bcd_dec(Read(0x02));
ngay=bcd_dec(Read(0x04));
thang=bcd_dec(Read(0x05));
nam=bcd_dec(Read(0x06));
}
void tach()

// tach cac gia tri thoi gian thanh cac chu so de hien thi


{
h1=(gio/10);h2=(gio%10);
m1=(phut/10);m2=(phut%10);
s1=(giay/10);s2=(giay%10);
ng1=(ngay/10);ng2=(ngay%10);
th1=(thang/10);th2=(thang%10);
n1=(nam/10);n2=(nam%10);
}
void xuly1() // Xu ly gio
{
for(i=0;i<8;i++)//h1
Page | 14


{
mang[i]=hang[h1*8+i];
}
for(i=0;i<8;i++)//h2
{
mang[i+8]=hang[h2*8+i];
}
for(i=0;i<8;i++)//m1
{
mang[i+16]=hang[m1*8+i];
}
for(i=0;i<8;i++)//m2
{
mang[i+24]=hang[m2*8+i];
}
for(i=0;i<8;i++)//s1

{
mang[i+32]=hang[s1*8+i];
}
for(i=0;i<8;i++)//s2
{
mang[i+40]=hang[s2*8+i];
}
Page | 15


}
void xuly2() // Xu ly ngay
{
for(i=0;i<8;i++)//ng1
{
mang[i]=hang[ng1*8+i];
}
for(i=0;i<8;i++)//ng2
{
mang[i+8]=hang[ng2*8+i];
}
for(i=0;i<8;i++)//th1
{
mang[i+16]=hang[th1*8+i];
}
for(i=0;i<8;i++)//th2
{
mang[i+24]=hang[th2*8+i];
}
for(i=0;i<8;i++)//n1

{
mang[i+32]=hang[n1*8+i];
}
Page | 16


for(i=0;i<8;i++)//n2
{
mang[i+40]=hang[n2*8+i];
}
}

void Hiengio()

// Che do hien gio

{
xuly1();
for(k=0;k<5;k++)
{
for(i=0;i<8;i++)
{
for(j=0;j<6;j++)
{
P3=cot[j];
P2=mang[j*8+i];
}
P0=cot[i];
delay(1);P0=0x00;
}

}
}
Page | 17


void Hienngay()

// Che do hien thi ngay

{
xuly2();
for(k=0;k<5;k++)
{
for(i=0;i<8;i++)
{
for(j=0;j<6;j++)
{
P3=cot[j];
P2=mang[j*8+i];
}
P0=cot[i];delay(1);P0=0x00;
}
}

}

void Display_hour()

// Hien gio


{
tach();
Page | 18


xuly1();
for(k=0;k<5;k++)
{
for(i=0;i<8;i++)
{
P3=0x01;
P2=mang[i]; //h1
P3=0x02;
P2=mang[i+8]; //h2
P3=0x04;
P2=0xFF;
P3=0x08;
P2=0xFF;
P3=0x10;
P2=0xFF;
P3=0x20;
P2=0xFF;
P0=cot[i];delay(1); P0=0x00;
}
}

}

Page | 19



void Display_day()

// Hien ngay

{
tach();
xuly2();
for(k=0;k<5;k++)
{
for(i=0;i<8;i++)
{
P3=0x01;
P2=mang[i]; //ng1
P3=0x02;
P2=mang[i+8]; //ng2
P3=0x04;
P2=0xFF;
P3=0x08;
P2=0xFF;
P3=0x10;
P2=0xFF;
P3=0x20;
P2=0xFF;
P0=cot[i];delay(1);P0=0x00;
}
}
Page | 20



}
void Display_min()

// Hien phut

{
tach();
xuly1();
for(k=0;k<5;k++)
{
for(i=0;i<8;i++)
{
P3=0x01;
P2=0xFF;
P3=0x02;
P2=0xFF;
P3=0x04;
P2=mang[i+16]; //m1
P3=0x08;
P2=mang[i+24]; //m2
P3=0x10;
P2=0xFF;
P3=0x20;
P2=0xFF;
Page | 21


P0=cot[i];delay(1); P0=0x00;
}
}

}
void Display_month()

// Hien thang

{
tach();
xuly2();
for(k=0;k<5;k++)
{
for(i=0;i<8;i++)
{
P3=0x01;
P2=0xFF;
P3=0x02;
P2=0xFF;
P3=0x04;
P2=mang[i+16]; //th1
P3=0x08;
P2=mang[i+24]; //th2
P3=0x10;
P2=0xFF;
P3=0x20;
Page | 22


P2=0xFF;
P0=cot[i];delay(1); P0=0x00;
}
}

}
void Display_sec() // Hien giay
{
tach();
xuly1();
for(k=0;k<5;k++)
{
for(i=0;i<8;i++)
{
P3=0x01;
P2=0xFF;
P3=0x02;
P2=0xFF;
P3=0x04;
P2=0xFF;
P3=0x08;
P2=0xFF;
P3=0x10;
P2=mang[i+32]; //s1
Page | 23


P3=0x20;
P2=mang[i+40]; //s2
P0=cot[i];delay(1);P0=0x00;
}
}
}
void Display_year()


// Hien nam

{
tach();
xuly2();
for(k=0;k<5;k++)
{
for(i=0;i<8;i++)
{
P3=0x01;
P2=0xFF;
P3=0x02;
P2=0xFF;
P3=0x04;
P2=0xFF;
P3=0x08;
P2=0xFF;
P3=0x10;
Page | 24


×