Ứng dụng này hiển thị ngày tháng và thời gian tại cùng một thời điểm mà chúng tôi đã tạo ra một báo động có thể được cài đặt với Atmel AT89S52 8051 dựa trên Keil C biên dịch ngôn ngữ lập trình sử dụng tasarlanmıştır.uygulama mã của chúng tôi được viết bằng vi điều khiển lanılarak chức. Proteus Isis chương trình mô phỏng một phần thực hiện trong các ứng dụng mạch in và được rút ra trong một lần nữa Ares' của chương trình Proteus.
Thao tác được thực hiện với 3 phím và 5 nút được kết nối với cổng P0 của vi điều khiển của chúng tôi sẽ được chọn. ví dụ Nếu chuông báo được cài đặt sau khi P0_7 kết nối với công tắc đóng nếu công tắc được đóng lại và sự gia tăng được thực hiện để tăng phút, giờ bằng cách nhấn nút báo động được cài đặt. Khi báo động được cài đặt, đèn dẫn trên đỉnh của tàu và kết nối với pin P2_4 sẽ sáng lên. Bằng cách này, người dùng sẽ có thể xem mạch từ xa và hiểu thiết lập cảnh báo. Có hai loại thiết lập lại trên mạch, tự động và thủ công.
Timer / counter0 (T0) được đặt thành 100 đếm ở chế độ tải tự động (mod2) và mỗi 10.000 đếm tương ứng với 1sn. Sau đó tăng số phút, giờ, ngày, tháng và năm bằng cách tăng số giây.
Ngày tự động thay đổi khi năm hoặc tháng được thay đổi. Các giá trị khác nhau này được hiển thị trong màn hình LCD văn bản 2x16. Các giá trị trên dòng đầu tiên của văn bản LCD thay đổi trong 10 giây.
Lcd văn bản (Hiển thị Cristal lỏng) 
Hình này hiển thị Lcd văn bản 2 × 16. Nguyên tắc hoạt động và kết nối cuối của màn hình LCD được sử dụng ngày nay được chuẩn hóa. Đường dẫn dữ liệu giữa D0 và D7 cung cấp Lcd để đọc dữ liệu từ bên ngoài và gửi dữ liệu ra bên ngoài.
Để vận hành Lcd, điện áp của thiết bị đầu cuối 1 (VSS) và điện áp của đầu cuối 2 (VDD) +5 volt được áp dụng. Số 3 được sử dụng để điều chỉnh độ sắc nét của hình ảnh (độ tương phản) của màn hình LCD. Ngoài ra, đăng ký chọn (RS) quy định rằng thông tin 8-bit được gửi từ các đầu vào dữ liệu là mã ký tự hoặc lệnh (lệnh RS = 0 dữ liệu - RS = 1) Đọc / Ghi (L / R) (E / Enable) được sử dụng để chuyển dữ liệu sang logic 1 hoặc để đọc dữ liệu từ Lcd (nếu R / W = 1, dữ liệu được đọc nếu R / W = nói bitwise bitwise bitwise.
EA (External Accsess): Mẹo này, là điểm 31 của vi điều khiển (AT89S52), hoạt động ở mức thấp. Nó được kết nối với điện áp cung cấp 5 volt. Nếu kết nối với +5 volts, các chương trình sẽ chạy từ bộ nhớ ngoài nếu các chương trình được kết nối với ROM bên trong.
Mạch báo động
Trong mạch này, bóng bán dẫn giai điệu đặc biệt được sản xuất UM 66 được sử dụng. Vì dòng đầu ra của pin 24 của vi điều khiển (Port2_3) rất yếu, nên một bóng bán dẫn BC 547 (npn) được sử dụng làm phần tử chuyển đổi ở đây.
UM66 và kết nối chân bán dẫn
Cấu hình và tính năng của AT89S52 
Các tính năng của AT89S52
• CPU 8 bit cho các ứng dụng điều khiển
• Bộ xử lý logic • Bộ
điều khiển CMOS 16MHz dựa trên 16MHz • 4 x 8-bit cổng I / O (32 cổng)
• 3 bộ đếm / giờ
• Cơ quan giám sát Bộ định thời
• 8 cấu trúc phần cứng ngắt với 2 mức ưu tiên
• UART, 2 DPTR,
• Bộ nhớ Flash 8K Byte (ISP),
• Bộ nhớ RAM onte 256 byte
Sơ đồ mạch 
Power PCB Schematic
Đề án in ấn của Quỷ được vẽ trên phần Ares của chương trình Proteus. Nó được in trên một mảng bám bằng cách sử dụng một phương pháp acetand và sắt.
Mã thực hành C
#include // tệp tiêu đề quy trình
#include "T_LCD.H" // tệp tiêu đề LCD
#include // Tệp tiêu đề ngôn ngữ C
#include
Chương trình mà chúng tôi đã viết ở trên cần thực hiện một số cài đặt ban đầu để màn hình LCD có thể hiển thị các ký tự mong muốn trên màn hình. Hiển thị màn hình, xác định số lượng bit được sử dụng là thao tác đầu tiên phải được thực hiện cho hoạt động của màn hình LCD.
Hiển thị văn bản sẽ được sử dụng như là tiêu chuẩn trong các ứng dụng LCD, gửi lệnh, thiết lập các điều kiện bắt đầu của màn hình LCD, v.v. Hàm T_LCD sau đây đã được sử dụng để định nghĩa các thường trình như các hàm và gọi chúng khi cần thiết. Chức năng này được lưu dưới dạng tệp thư viện.
/ ************************************************* *************** /
/ * T_LCD.H * /
/ ************************************************* *************** /
/ * Xác định các lệnh được sử dụng trên màn hình LCD * /
#define Xóa 1 // Xóa màn hình
#define BasaDon 2 // Di chuyển con trỏ đến góc trên cùng bên trái
#define SolaYaz 4 // Địa chỉ được chỉ định bởi con trỏ đi xuống
#define SagaYaz 6 // Con trỏ sẽ tăng địa chỉ được chỉ định
#define ImlecGizle 12 // Mở chỉ báo, làm cho con trỏ hiển thị
#define ImlecYanSon 15 // Nhấp nháy con trỏ khối
#define ImlecGeri 16 // Di chuyển trở lại một ký tự trong con trỏ
#define SlideSaga 24 // Trượt con trỏ một ký tự sang bên phải
#define SlideSave 28 // Trượt sang trái một ký tự trong màn hình
#define DisplayClose 8 // Đóng màn hình (dữ liệu sẽ không bị xóa)
#define FirstSection 128 // Địa chỉ bắt đầu dòng đầu tiên của màn hình LCD
// (địa chỉ DDRAM)
#define SecondarySection 192 // Địa chỉ bắt đầu của dòng thứ hai
#define KarakUretAdres 64 // Đặt địa chỉ của trình tạo ký tự
// (địa chỉ CGRAM)
/ * Chức năng lựa chọn trên màn hình LCD * /
#define CiftSatir8Bit 56 // giao diện 8 bit, 2 dòng, 5 * 7 pixel
#define CiftSatir4Bit 48 // giao diện 8 bit, 1 dòng, 5 * 7 pixel
#define TekSatir8Bit 40 // giao diện 4 bit, 2 dòng, 5 * 7 pixel
#define TekSatir4Bit 32 // giao diện 4 bit, 1 dòng, 5 * 7 pixel
/ * Nhận dạng đầu vào LCD * /
#define Dữ liệu P1 // Gán cổng cho các mục Dữ liệu LCD
#define RS P2_2 // Đăng ký lựa chọn đầu vào RS = 0 lệnh, RS = 1 dữ liệu
#define RW P2_1 // Đầu vào Đọc / Ghi Viết RW = 0, ghi RW = 1
#define EN P2_0 // Mục ủy quyền
/ * Chức năng trễ LCD * /
void delay (dài int chắc chắn)
{
dài int i;
cho (i = 1; i <= chắc chắn; i + +)
{;}
}
/ * Chức năng chờ sẵn sàng LCD * /
// void LcdHazir ()
// {
// Dữ liệu = 0xFF; // Chuẩn bị nhận dữ liệu LCD
// RS = 0; // chế độ lệnh
// RW = 1; // Đọc trên màn hình LCD
// EN = 1; // cài đặt cạnh cắt cho phép
// Delay (200); // thời gian chờ đợi ngắn
// trong khi (Dữ liệu & 0x7F == 0x80); // kiểm tra bit bận.
//}
/ * Chức năng in lệnh LCD * /
void Command (lệnh int)
{
// LcdHead (); // Đợi cho đến khi màn hình LCD sẵn sàng
RS = 0; // RS trong chế độ lệnh
RW = 0; // Chế độ ghi RW
WIDTH = 1; // cài đặt cạnh giảm đối với ủy quyền quy trình
Data = lệnh; // Chuyển thông tin lệnh tới đầu vào dữ liệu LCD
EN = 0; // cạnh giảm cho phép được cấp
Delay (1000); // chậm trễ
}
/ * Chức năng in ký tự đơn trên màn hình LCD * /
void Dữ liệu (dữ liệu char, unsigned int nhanh)
{
// LcdHead (); // Đợi cho đến khi màn hình LCD sẵn sàng
RS = 1; // RS trong chế độ lệnh
RW = 0; // Chế độ ghi RW
WIDTH = 1; // xử lý cạnh nhàn rỗi để ủy quyền
Data = dữ liệu; // Chuyển thông tin dữ liệu sang đầu vào dữ liệu LCD
EN = 0; // cạnh giảm cho phép được cấp
Chậm trễ (vận tốc); // Thời gian giữa hiển thị các ký tự trên màn hình
}
/ * Chuỗi ký tự LCD (Chuỗi) Chức năng in * /
/ * void DataDizi (dữ liệu char [], dài int hiz)
{
int i = 0;
while (dữ liệu [i]! = 0)
{
// LcdHead (); // Đợi cho đến khi màn hình LCD sẵn sàng
RS = 1; // RS trong chế độ lệnh
RW = 0; // Chế độ ghi RW
WIDTH = 1; // xử lý cạnh nhàn rỗi để ủy quyền
Data = dữ liệu [i]; // Chuyển thông tin dữ liệu sang đầu vào dữ liệu LCD
EN = 0; // cạnh giảm cho phép được cấp
i ++; // tăng mảng bằng 1 để nhận bit dữ liệu tiếp theo
Chậm trễ (vận tốc); // thời gian giữa các ký tự xuất hiện
}
} * /
/ * Chức năng tạo cài đặt ban đầu cho LCD * /
void LcdAc (void)
{
Command (ımlecgizl A);
Command (ciftsatir8bit);
Command (sagayaz);
}
Tải xuống tệp LINK danh sách (ở định dạng TXT) link-3757.zip mật khẩu-pass: 320volt.com Cảm ơn bạn
Post a Comment