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

mạch chuông báo tiết học

11 682 0

Đ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

Định dạng
Số trang 11
Dung lượng 644,34 KB

Nội dung

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNGKHOA KỸ THUẬT ĐIỆN – ĐIỆN TỬ ---Báo cáo Đồ án hệ thống nhúng MẠCH CHUÔNG BÁO TIẾT HỌC Nhóm sinh viên thực hiện: Lưu Thị Tuyết Nhung Nguyễn Minh P

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA KỸ THUẬT ĐIỆN – ĐIỆN TỬ

-Báo cáo

Đồ án hệ thống nhúng

MẠCH CHUÔNG BÁO TIẾT HỌC

Nhóm sinh viên thực hiện:

Lưu Thị Tuyết Nhung Nguyễn Minh Phú Nguyễn Anh Tú

1

Trang 2

CƠ SỞ LÝ THUYẾT

Nguyên lý hoạt động:

Bộ RTC nếu có xung nhịp đầu vào là 32.768 thì giá trị sẽ tăng một đơn vị sau mỗi một giây Giá tị này được lưu vào biến đếm TimeVar Dựa vào biến đếm

và các công thức tính thời gian ta có thể tính toán và hiện thị lên màn hình LCD

Khởi động mạch bằng nút nguồn, đợi LCD hiển thị sau đó cài đặt giá trị thời gian tương ứng.Phím bấm PA0 dùng cài đặt giá trị Phím bấm PC13 chuyển sang giá trị cài đặt tiếp theo.Sau khi các giá trị được cài đặt xong, LCD sẽ hiển thị ngày

và giờ Thời gian báo chuông được cố định sẵn trong code.Tín hiệu xuất ra chân PA7

Các thành phần mạch :

Vi điều khiển Thành phần chính

Vai trò là khối xử lý trung tâm

Cấu hình RTC, điều khiển tín hiệu ra cho bộ hiển thị và Pin báo chuông

LCD 16x2 Khối hiển thị

Thông tin : Giờ : Ngày:

Biến trở Điều chỉnh độ tương phản của LCD

Nút bấm Cài đặt thời gian

Bộ Báo chuông Báo chuông

Trang 3

Sơ đồ khối

RTC và các thanh ghi backup:

3

VĐK (Hỗ trợ RTC)

Bộ báo chuông (Demo sử dụng sang Led)

Trang 4

Ngắt ngoại (EXTI)

Trang 6

Giao tiếp tương tự như mode 8 bit, chỉ cần chú ý một số khác biệt so với mode 8 bit như sau:

* Chỉ dùng 4 đường dữ liệu ( D4, D5, D6, D7), 4 đường kia bỏ trống 4 bit cao

được xử lý trước, sau đó đến 4 bit thấp

Trang 7

Trước khi đưa LCD vào mode 4 bit cần tạo một lệnh giả lập để cho LCD hiểu ta đang muốn giao tiếp với nó ở Mode 4 bit Nghĩa là trước khi gửi lệnh 0x28 thì cần gửi lệnh với giá trị 0x2- (- :tùy định) Và điều này còn tùy vào loại LCD cũng như thời gian hiển thị chữ

Phần 2 Một số cấu hình code cần lưu ý

Công thức Giờ, Phút, Giây:

TimerVar = biến đếm thời gian đơn vị “s”

THH = TimeVar / 3600; //Công thức tính giờ:

TMM = (TimeVar % 3600) / 60; // Công thức tính phút:

TSS = (TimeVar % 3600) % 60; // Công thức tính giây

if(THH==24) THH=00; // khi THH=24 thì đặt về 00

Nguyên lý đếm ngày tháng

1.Với những tháng 31 ngày 1,3,5,7,8,10,12 thì biến ngày

“date_s.day” chạy đến ngày 31 thì biến tháng “date_s.month”

Sẽ tăng 1 đơn vị Với các tháng còn lại trừ tháng 2 ,

“date_s.day” chỉ chạy đến 30.

7

Trang 8

2.Tháng 2 của năm không nhuận thì “date_s.day” chạy đến 28

thì chuyển tháng Năm nhuận thì chạy đến 29.

/*Hàm thiết lập đếm ngày tháng năm*/

void Calendar_DateUpdate(void)

{

if (date_s.month == 1 || date_s.month == 3 || date_s.month == 5

|| date_s.month == 7 ||

date_s.month == 8 || date_s.month == 10 || date_s.month == 12)

{

if (date_s.day < 31)

{

date_s.day++;

}

/* Date structure member: date_s.day = 31 */

else

{

if (date_s.month != 12)

Trang 9

date_s.month++;

date_s.day = 1;

}

/* Date structure member: date_s.day = 31 & date_s.month

=12 */

else

{

date_s.month = 1;

date_s.day = 1;

date_s.year++;

}

}

}

else if (date_s.month == 4 || date_s.month == 6 || date_s.month

== 9 ||

date_s.month == 11)

{

if (date_s.day < 30)

{

date_s.day++;

9

Trang 10

}

/* Date structure member: date_s.day = 30 */

else

{

date_s.month++;

date_s.day = 1;

}

}

else if (date_s.month == 2)

{

if (date_s.day < 28)

{

date_s.day++;

}

else if (date_s.day == 28)

{

/* Leap year */

if (((date_s.year)%4)==0)

{

Trang 11

date_s.day++;

}

else

{

date_s.month++;

date_s.day = 1;

}

}

else if (date_s.day == 29)

{

date_s.month++;

date_s.day = 1;

}

}

}

11

Ngày đăng: 12/10/2015, 10:32

TỪ KHÓA LIÊN QUAN

w