MÁY TÍNH CHỈ BÁO LCD 8051 ĐẾN 2X16

MÁY TÍNH CHỈ BÁO LCD 8051 ĐẾN 2X16


Dynamics Work
Như bạn có thể thấy có 1 bàn phím và một màn hình LCD sử dụng với 8.051. Bàn phím bao gồm các hàng và cột. Khi nhấn nút, một số phím nhất định được kết hợp và xử lý. Ví dụ, đối với bước 1, dòng 1 là dòng đầu tiên và phải được kết hợp 1-5. Bởi vì một cột hoặc hàng được kết nối với nhiều hơn một nút để xác định nút đó được nhấn, trước hết nó phải xác định nút dòng chìa ra cho người khác 0 1 0 giá trị bằng cách áp dụng các trụ cột 1.
Sơ đồ mạch Isis Calculator
Sau đó, quá trình tương tự được áp dụng cho các cột thứ 2 và thứ 3, điều này hiển nhiên khi nhấn nút đó. Khi được bật, bàn phím được kết nối với cổng P2. 4 cột thông đầu tiên được kết nối bằng các hàng tại chốt tiếp theo. Dữ liệu từ bàn phím được chuyển sang màn hình LCD để xử lý và hiển thị thông qua mã hex vi điều khiển.
Màn hình LCD có kích thước 2 × 16 pixel. Nó bao gồm 2 cột và 16 hàng. Do tiêu thụ điện năng rất thấp, nó thường được sử dụng trong các giai đoạn đầu ra trong mạch điện tử. Chúng tôi đã được sử dụng trong các đơn vị xuất cảnh trong thời gian của chúng tôi. 1Voltage đến ground 2 + Vcc 3Contrast 4-selector 5-đọc / ghi 6-ủy quyền là dữ liệu xe buýt giữa 7,14. Ở đây, bàn phím được xử lý trong bộ điều khiển vi mô và dữ liệu đến màn hình LCD được hiển thị nhờ những lời khuyên này. Đây là cách nó hoạt động.
Danh sách vật liệu
  • AT89C51RD2 (8051)
  • 2 tụ 33pf
  • OSC 12 MHz
  • bàn phím
  • Màn hình LCD 2 * 16
Chương trình C
/ ************************************************* *******************

 Fatih Yıldırım
  000303005
 ELEKTRONIK OGRETMENLIGI 4 ĐÊM
 CHƯƠNG TRÌNH KIỂM SOÁT DERSI LAB. giấy
 CHỦ ĐỀ: MÁY KẾ TOÁN VỚI 8051
C CODES
************************************************** ***************** /  
  
 

Xóa # define 1
#define solayaz 4
#define sagayaz 6
#define kursorgizle 12
#define displayĐóng 8
#define Nguyên tắcNumber 128
#define composite_4bit 48

// mô tả bàn phím
#define sut1 P2_0
#define sut2 P2_1
#define sut3 P2_2
#define sut4 P2_3
#define sata P2_4
#define satb P2_5
#define satc P2_6
#define satd P2_7

// khai báo thoát
#define Dữ liệu P1
#define rs P3_4
#define rw P3_1
#define vi P3_0

#define max_character 10
  
  
enum ERROR {OK = 0, ERR = 2};  
  
void tanitim (); // Chức năng của LCD Yihisin Fatih Yildirim

void account_start (); // máy tính bắt đầu hoạt động
 
char tustakimi_tara (void);  
 
void account_format (float f); 
void account_type (char * buf); // hàm được sử dụng để in kết quả tính toán trên màn hình LCD
 
void account_function (mã thông báo char); // chức năng của phép toán
  
ký char num_test (char ch); // Nhân vật có được nhập vào bàn phím chữ số không? điểm? hoạt động operatoru mu? chức năng xác định những gì đang xảy ra
 
void screenMove (void); // xóa màn hình LCD.

void Datakomut (lệnh int); // LCD thiết lập đầu vào RS và EN để in lệnh.
 
void Dữ liệu (dữ liệu char); // Đặt đầu vào RS và EN để in các ký tự trên màn hình LCD.

void Datayaz (dữ liệu char);
 
void lcdkur (void); // Chức năng chuẩn bị màn hình LCD

void delay (dài int chắc chắn); // chức năng trì hoãn

char tus (void); // chức năng điều khiển nút


// Phần chương trình

#include <89c51rd2 .h="">
#include "account.h"
#include "stdio.h"
#include "math.h"
#include "stdlib.h"

// Biến chung
quy tắc float tĩnh;
tĩnh float mới;
tĩnh char sonic;

void chính (void)
// Các biến được thiết lập và chức năng cài đặt cho màn hình LCD được gọi.
 {lcdkur ();
giới thiệu ();
hesap_basl A ();
 }
void account_basla ()
 {số char [max_character + 1], số;
ký char pos;
float k;

// giá trị ban đầu của các giá trị tĩnh được gán:
bond = 0;
newGer = 0;
soniclem = 0;

// Hiển thị đầu tiên trên màn hình khi màn hình đang mở. 
hesap_format (0);

// Chuỗi số (buf) bị xóa trước khi bắt đầu.
pos = 0;

cho (;;)
 {number = custom_tag ();
if (number_test (số))
 {// kiểm tra xem nó là + rakami + được ghi trong chuỗi buf
 // và màn hình LCD được viết.
 // Kích thước đếm tối đa là 8.
// kết quả eger - để trống để đánh dấu.
if (pos! = max_character - 2)
 {number [pos ++] = số;
số [pos] = 0;
hesap_yaz (số);
 }
 }
khác 
 {// nhãn dán được lưu trữ, nếu eger chọn một quy trình mới 
 // Thao tác được thực hiện với số được lưu trữ.
if (pos! = 0)
 {k = atof (số); 
	///// ********* Thông tin chuỗi số là độ chính xác gấp đôi chính xác ********* /////
if (soniclem == 0)
bond = k;
khác
new = k;
 }

// mảng số được đặt lại.
pos = 0;

// toán tử vận ​​hành cuối cùng được lưu trữ trong biến hoạt động cuối cùng và lệnh được thi hành
if (sonic! = 0)
hesap_islev (Post-Processing I);  
if (number! = '=')
soniclem = số;
khác 
soniclem = 0;  
 }
 }
 }

void account_function (mã thông báo char)
// Các hoạt động được hoàn thành. biến "dính", "kết quả" và
// kiểm tra tusk cho các hoạt động liên tiếp.
 {signed char result = OK;
chuyển đổi (mã thông báo)
 {case '+': sondeger + = newid; break;
case '-': sondeger - = newid; break;
case '*': sondeger * = newid; break;
trường hợp '/': 
if (newride! = 0) 
sondeger / = newid;
khác
result = ERROR;
break;
  }

if (result == OK)
hesap_format (các sondeg);
else if (result == ERROR)
account_print ("* BOLME ERROR *"); 
 }

 
/ ****
********************* Chương trình phụ trợ *********************
***** /

void account_format (float f)
 { 
char buf [max_char ~ 1];
float bolen = 100000000;
float l;
ký char chiều cao = 0, p = 0;

// dấu là gia tăng? nó có bị trừ không?
if (f> = 0)
buf [p ++] = '';
khác
 {buf [p ++] = '-';
f = -f;
 }

if (f> = bollen) // eger trả về 100000000 den nếu kết quả của phép tính lớn.
buf [p ++] = 'E';
khác
trong khi (p  1 || f> = 0.0000001))
 {bolen / = 10;
l = sàn (f / bolen); // Các bước kết quả được tách ra.
if (blob <1 amp="" blob=""> 0.01) // Xác định phần chấm chấm nếu có số lượng 
buf [p ++] = '.';
if (l! = 0 | | bolen <10 c="" font="" g="" h="" i="" k="" lcd="" m="" n="" nh="" p="" s="" t.="" t="" theo="" ti="" x="">
 {buf [p ++] = 1 + '0'; //
chiều cao = 1; //
 }
nếu không (boy)
buf [p ++] = '0';
f - = 1 * bole;
 }
buf [p] = 0;  
hesap_yaz (buf);
 }

ký char num_test (số char) 
// Chữ số được nhập trong bàn phím có thể là toán tử chữ số, dấu chấm hoặc toán tử. 
// Eger 1 sẽ đóng băng nếu chữ số hoặc dấu chấm, 0 nếu hoạt động operatoru 
 {if ((number == '.') || ((số> = '0') && (số <= '9')))
trả về 1;
khác
trả về 0;
 }

/ ****
****************** chương trình nhập / xuất **************
**** /

char tustakimi_tara (void)
{char key;
  trong khi ((key = tus ()) == 0x00)
  / * Nếu 0, quét lại * /;
  phím trả về;
 }

void account_type (char * buf)
// Kết quả được hiển thị trên màn hình kết quả. 
 {ký char i;
ekranite của chúng tôi (); // Khi màn hình bị xóa.
cho (i = 0; buf [i]! = 0; i ++)
 {Dữ liệu dữ liệu (buf [i]); }
}


/ ***********
****************** chương trình trợ lý đầu vào / đầu ra ******************
****** /
void tanitim ()
{
char ad [] = "FATIH", họ [] = "YILDIRIM";
ký char i;
ekranite của chúng tôi (); // Khi màn hình bị xóa.
i ++) {Datayaz (quảng cáo [i]); }
chậm trễ (9000);
i + +) {Datayaz (last_name [i]); }
chậm trễ (9000);


}

void delay (dài int chắc chắn)
{long int i;
for (i = 0; i <= thời gian; i ++);
}

void Datakomut (lệnh int)
{rs = 0;
  rw = 0;
  mp = 1;
  Data = lệnh;
  en = 0;
  chậm trễ (150);
}

void datayaz (char data) // cho phép các tên trong hàm tanim () để di chuyển chậm 
{
	r = 1;
	rw = 0;
	mp = 1;
	Data = dữ liệu;
	en = 0;
	chậm trễ (1000);
}
void Dữ liệu dữ liệu (dữ liệu char)
{
  r = 1;
  rw = 0;
  mp = 1;
  Data = dữ liệu;
  en = 0;
  chậm trễ (50);
}

void screenMove (void)
{
	Datakomut (rõ ràng); // xóa màn hình, con trỏ di chuyển sang trái.  
	Datakomut (birincisat là + 15); // con trỏ nằm ở bên phải.
}

void lcdkur (void)
{
Datakomut (ciftsatir4bit); // Giao diện 8 bit - 1 dòng.
Datakomut (kursorgizle); // Không thấy hiển thị ac-kursor.
Datakomut (solayaz + 3); // tăng nó tự hiển thị ở bên trái.
Datakomut (birincisat là + 15); // con trỏ nằm ở bên phải.
}

char tus (void)
{char don;	

sut1 = 0; // kiểm tra cột 1
while (! sut1)
{
trong khi (sata == 0) {while (sata == 0) nếu (sata == 1);
trong khi (satb == 0) {while (satb == 0) nếu (satb == 1);
trong khi (satc == 0) {while (satc == 0) nếu (satc == 1); don = '7'
trong khi (satd == 0) {while (satd == 0) nếu (satd == 1);
sut1 = 1;  	
}
	
sut2 = 0; // kiểm tra cột 2
while (! col2)
{
trong khi (sata == 0) {while (sata == 0) nếu (sata == 1);
trong khi (satb == 0) {while (satb == 0) nếu (satb == 1);
trong khi (satc == 0) {while (satc == 0) nếu (satc == 1); don = '8';
trong khi (satd == 0) {while (satd == 0) nếu (satd == 1);
Col2 = 1;

}

sut3 = 0; // kiểm tra cột 3
while (! sut3)
{
trong khi (sata == 0) {while (sata == 0) nếu (sata == 1); don = '3';
trong khi (satb == 0) {while (satb == 0) nếu (satb == 1); don = '6'
trong khi (satc == 0) {trong khi (satc == 0) nếu (satc == 1);
trong khi (satd == 0) {while (satd == 0) nếu (satd == 1);
sut3 = 1;

}

sut4 = 0; // kiểm tra cột 4
while (! Col4)
{
trong khi (sata == 0) {while (sata == 0) nếu (sata == 1); don = '/';
trong khi (satb == 0) {while (satb == 0) nếu (satb == 1);
trong khi (satc == 0) {trong khi (satc == 0) nếu (satc == 1);
trong khi (satd == 0) {while (satd == 0) nếu (satd == 1);
Col4 = 1;
}
	
 trả lại don;
}

Được chuẩn bị bởi: Fatih Yıldırım Tập tin nguồn máy chiếu 8051 với máy tính đánh dấu LCD 2X16
Tải xuống tệp LINK danh sách (ở định dạng TXT) link-3274.zip mật khẩu-pass: 320volt.com Cảm ơn bạn

Post a Comment

[disqus] [facebook] [blogger]

MKRdezign

Biểu mẫu liên hệ

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget
Hỗ trợ trực tuyến