1. Trang chủ
  2. » Luận Văn - Báo Cáo

thiết kế đồng hồ thời gian hiển thị lcd

21 1K 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Đồng Hồ Thời Gian Hiển Thị Lcd
Tác giả Nguyễn Xuân Tư, Lê Thị Nhung
Người hướng dẫn GVHD: Nguyễn Anh Dũng
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Điện Tử
Thể loại Đồ án
Thành phố Hà Nội
Định dạng
Số trang 21
Dung lượng 497,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LỜI NÓI ĐẦUKỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh vực khác nữa.. Mục

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

Lê Thị Nhung

Trang 2

MỤC LỤC

Phần 1: Giới thiệu về vi điều khiển AT89S52……… 4

Phần 2: Thiết kế mạch……… 6

I.Thiết kế phần cứng……… 6

II.Thiết kế phần mềm……….8

Code của chương trình……… 9

Phần 3: Ứng dụng của mạch……… 21

Trang 3

LỜI NÓI ĐẦU

Kỹ thuật vi điều khiển hiện nay rất phát triển, nó được ứng dụng vào rất nhiều lĩnh vực sản xuất công nghiệp, tự động hóa, trong đời sống và còn nhiều lĩnh vực khác nữa So với kỹ thuật số thì kỹ thuật vi điểu khiển nhỏ gọn hơn rất nhiều do nó được tích hợp lại và

có khả năng lập trình được để điều khiển Nên rất tiện dụng và cơ động Với tính ưu việt của vi điều khiển thì trong phạm vi đồ án nhỏ này, em chỉ dùng vdk thiết kế đông hồ thời gian hiển thị lên LCD

Mục đích của đề tài hướng đến: tạo ra bước đầu cho sinh viên thử nghiệm những ứng dụng của vdk trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứng dụng khác trong đời sống hằng ngày cần đến

Việc thực hiện xong đồ án môn học bằng các kiến thức đã học, một số sách tham khảo và một số nguồn tài liệu khác nên không tránh khỏi những thiếu sót Vì vậy nhóm rất mong được sự góp ý của thầy cô và các bạn

Chúng em xin chân thành cảm ơn!

Nhóm sinh viên thực hiện: Nguyễn Xuân Tư

Lê Thị Nhung

Trang 4

Phần 1: Giới thiệu về vi điều khiển AT89S52

AT89S52 là chíp được sản xuất bởi hãng Atmel kiểu DIP 40 chân Sau đây là sơ đồ chân của chíp:

AT89S52 gồm 4 port ,từ chân 32 đến chân 39 là port 0, từ chân 1 đến chân 8 là port 1, từ chân 21 đến chân 28 là port 2, và từ chân 10 đến chân 17 là port 3

Ngoài ra chíp còn 1 số chân khác như: PSEN,ALE,EA,RST,XTAL1,XTAL2,Vcc,GND.AT89S52 có 8 kbyte Flash ROM trên chip, khi chân EA được đặt ở mức logic cao vi điều khiển sẽ thực hiện chương trình trong bộ nhớ này bắt đầu từ địa chỉ 0000H

Khi EA được đặt ở mức logic thấp bộ vi điều khiển sẽ thực hiện chương trình ở bộ nhớ ngoài EPROM

AT89S52 có 256 byte RAM nội và được chia làm 4 bank

Trang 5

Sau đây là sơ đồ cấu trúc bên trong của vi điều khiển 8051(8052):

Các hoạt động của AT89S52:

*Hoạt động định thời/đếm:

AT89S52 có 3 bộ định thời/đếm là timer0,timer1,timer2

Các thanh ghi của timer0 và timer1 gồm có:

Thanh ghi chế độ định thời TMOD dùng để đặt chế độ làm việc cho timer0 và timer1.Thanh ghi điều khiển timer TCON chứa các bit trạng thái và bit điều khiển cho timer0 và timer1

Thanh ghi chứa giá trị cửa các bộ định thời

Riêng timer2 thì có thanh ghi riêng là T2CON và T2MOD Timer2 ít dùng nên ở đây chỉ giới thiệu qua

*Hoạt động port nối tiếp :

AT89S52 có 1 cổng nối tiếp trên chip có thể hoạt động ở nhiều chế độ khác nhauvoiws các tốc độ khác nhau Chức năng chính của cổng nối tiếp là thực hiện chuyển đổi song song sang nối tiếp dữ liệu xuất và chuyển đổi nối tiếp sang song song với dữ liệu nhận để có thể giao tiếp với máy tính

Các thanh ghi của cổng nối tiếp là SBUF và SCON là 2 thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến cổng nối tiếp

Trang 6

*Hoạt động của ngắt :

Trong thực tế người ta muốn tận dụng khả năng của CPU để làm thêm nhiều công việc khác nữa, chỉ khi nào có cần trao đổi dữ liệu mới cần yêu cầu CPU tạm dừng công việc hiện tại để phục vụ việc trao đổi dữ liệu Vì vậy 1 hệ thống sử dụng ngắt có thể đáp ứng nhanh các yêu cầu trao đổi dữ liệu trong khi vẫn có thể làm được các công việc khác

Tổ chức ngắt ở AT89S52 bao gồm:

- Ngắt ngoài đến từ chân INT0

- Ngắt ngoài đến từ chân INT1

- Ngắt do bộ timer0

- Ngắt do bộ timer1

- Ngắt do bộ timer2

- Ngắt do port nối tiếp

Sáu nguồn ngắt này được xóa khi reset và được đặt riêng bằng phần meemfboiwr các bit trong thanh ghi cho phép ngắt IE và thanh ghi ưu tiên ngắt IP

Phần 2: Thiết kế mạch

I.Thiết kế phần cứng:

Sơ đồ nguyên lý:

Trang 7

Trong mạch sử dụng 1 chip AT89S52, 1 màn hình LCD, 4 nút nhấn tự phục hồi, 6 điện trở,

2 diod, 1 pin dự phòng, 6 điện trở, 3 tụ điện, và 1 thạch anh 12MHz

Các nút nấn SW1,SW2,SW3 được nối vào các chân 10, 11,12 của chíp để điều chỉnh tăng giảm

Sau đây là sơ đồ mạch in của mạch:

Trang 8

Phím tăng

có nhấn?

Phím giảm

có nhấn?

Giảm thông số đi

một đi vị

Gọi chương trình hiển thị

Tăng thông số lên

một đơn vị

Phím mode có nhấn không?

Nhấn lầnthứ nhất

Chỉnh ngày/tháng/năm

Chỉnh thứ

Trang 9

Code của chương trình:

#include <reg52.h>

#include <intrins.h>

#include<stdio.h>

#include<string.h>

typedef unsigned char bit_8;

sbit nutchinh=P3^2; // khai bao nut chinh gio

sbit nutchinhtang=P3^1; // khai bao nut chon tang

sbit nutchinhgiam=P3^0;

bit_8 code *days[]={"Cnhat","T.hai","T.ba ","T.tu

","T.nam","T.sau","T.bay"}; // day mang ngay

bit_8 code *val[]={"0","1","2","3","4","5","6","7","8","9","10","11","12"};

#define DISABLE_INT IE=0x0; //cam toan bo

#define ENABLE_INT IE=0x81;//chon ngat ngoaitimer 0

Trang 10

command(0xc3);

if(hh<=12){ if(hh<=9)

data_in(val[0]);

data_in(val[hh]);

}else{

command(0xcc);

data_in("am");

}else{

Trang 11

data_in("pm");

}for(hmin=0;hmin<=5;hmin++){

command(0xc5);

data_in(":");

data_in(val[hmin]);

for(lmin=0;lmin<=9;lmin++){

command(0xc7);

data_in(val[lmin]);

for(hsec=0;hsec<=5;hsec++){

command(0xc8);

data_in(":");

data_in(val[hsec]);

for(lsec=0;lsec<=9;lsec++){

}}

if(hh==23&&lmin==0&&hmin==0){

day=day+1;

if(day==7)

day=0;

}}

hh=1;

date=date+1;

}month=month+1;

date=1;

if(month==13){

month=1;

lyear=lyear+1;

if(lyear==10){

lyear=0;

hyear=hyear+1;

}

Trang 12

}

void ini()

{

command(0x38); //thiet dat font chu 5x7 ,che do 8 bit

command(0x0c); //bat hhien thi,tat con tro

command(0x01); //xoa man hinh

command(0x06); // tang con tro

Trang 15

if(lyear==10){

lyear=0;

hyear++;

}command(0xca);

lyear ;

if(lyear==-1){

delay();

up1:while(nutchinhtang!=0&&nutchinhgiam!=0&&nutchinh!=0);

if(nutchinhtang==0){

Trang 16

up: while(nutchinhtang!=0&&nutchinhgiam!=0&&nutchinh!=0);

if(nutchinhtang==0){

command(0x80);

data_in("set time");

command(0xc4);

Trang 17

if(hh<=9)

data_in(val[0]);

data_in(val[hh]);

}else{

data_in(val[hmin]);

data_in(val[lmin]);

command(0xca);

if(hh<12){

data_in("am");

}else{

data_in("pm");

}command(0xc5);

delay();

up3: while(nutchinhtang!=0&&nutchinhgiam!=0&&nutchinh!=0);

if(nutchinhtang==0){

if(hh<=9)

data_in(val[0]);

data_in(val[hh]);

}else{

if(hh<12)

Trang 18

data_in("am");

}else{

data_in("pm");

}command(0xc5);

delay();

goto up3;

}if(nutchinhgiam==0){

if(hh<=9)

data_in(val[0]);

data_in(val[hh]);

}else{

if(hh<12){

data_in("am");

}else{

data_in("pm");

}command(0xc5);

delay();

goto up3;

}command(0xc8);

delay();

up4: while(nutchinhtang!=0&&nutchinhgiam!=0&&nutchinh!=0);

if(nutchinhtang==0){

lmin++;

Trang 19

lmin ;

if(lmin==-1){

Trang 20

data_in("am");

}else{

data_in("pm");

}command(0xc3);

if(hh<=12){

if(hh<=9)

data_in(val[0]);

data_in(val[hh]);

}else{

Trang 21

Mạch được ứng dụng nhiều trong thực tế vì mạch đơn giản dễ làm Song bên cạnh đó còn

có nhiều nhược điểm như code viết dài độ chính xác không cao so với dùng bộ thời gian thực real time

Hướng phát triển của đề tài: kết hợp vối bộ cảm biến nhiệt độ và cảm biến độ ẩm để tạo ra LỊCH VẠN NIÊN

Ngày đăng: 15/04/2014, 11:58

HÌNH ẢNH LIÊN QUAN

Sơ đồ nguyên lý: - thiết kế đồng hồ thời gian hiển thị lcd
Sơ đồ nguy ên lý: (Trang 6)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w