Mạch Khóa Số Điện Tử Mạch Đếm Sản Phẩm Mạch Đèn giao thông Ngã Tư Mạch Trái Tim Final Mạch Trái Tim Final Mạch Trái Tim I Love U

December 6, 2013

Hiển thị chữ lên LCD



Code:
#include <REGX52.H>
#include <stdio.h>
sbit RS = P1^0;
sbit RW = P1^1;
sbit EN = P1^2;
char x;
void delay30ms(void)
 {
  TMOD = 0x10;
  TH1 = 35535/256;
  TL1 = 35535%256;
  TR1 = 1;
  while (!TF1);
  TR1 = TF1=0;
 }
void delay(unsigned long int t)
 {
  unsigned long int i;
  for (i=0;i<t;i++);
 }
void busy_flag(void)
 {
  P2 = 0xff;
  RS = 0;
  RW = 1;
  do
   {
    EN = 0;
    delay(10);
    EN = 1;
    x = P2;
    x = x&0x80;
   }
  while(x==0x80);
 }
void write_command(unsigned char LCD_command)
 {
  busy_flag();
  P2 = LCD_command;
  RS = 0;
  RW = 0;
  EN = 1;
  delay(50);
  EN = 0;
  delay(50);
 }
void write_data (unsigned char LCD_data)
 {
  busy_flag();
  P2 = LCD_data;
  RS = 1;
  RW = 0;
  EN = 1;
  delay(50);
  EN = 0;
  delay(50);
 }
void write_string(char *s)
 {
  while(*s)
   {
    write_data(*s);
    s++;
   }
 }

void init(void)
 {
  write_command(0x03);
  write_command(0x38);
  write_command(0x06);
  write_command(0x0c);
 }
void main(void)
 {
  delay30ms();
  init();

    write_command(0x01);
    delay(10);
    write_command(0x80);
    write_string(" DUY TAN ");
    delay(10);
    write_command(0xc0);
    write_string (" KHOA DIEN TU");
      while(1);
 }

( Full code + Mô Phỏng)
Khi nhấn nút "Tải Về Máy", bạn sẽ vào trang quảng cáo, vui lòng chờ 5 giây. Nút  hiện ra ở góc phải phía trên, nhấn vào để đến trang download

Nguồn binhminhks.com


10 comments:

tuấn nguyễn thanh said...
24/12/13

anh ơi em củng đang làm đồ án y như này nhưng em dùng ngôn ngử assembly để viết .biên dich nó lại báo lổi
chương trình của em đây:
#include
E BIT P3.2
RS BIT P3.1
RW BIT P3.0
MAIN:
LCALL GHI_LENH ; GOI CHUONG TRINH CON GHI LENH RA LCD
MOV P1,#38H ; KHOI DONG CHE DO 2 DONG
LCALL WAIT
LCALL GHI_LENH
MOV P1,#0EH ;BAT DAU HIEN THI
LCALL WAIT
LCALL GHI_LENH
MOV P1,#06H ; TANG CON TRO SANG PHAI
LCALL WAIT ;CAI DAT LCD
START:
MOV DPTR,#DU_LIEU2 ;DONG 2 DUNG YEN
LCALL GHI_LENH
MOV P1,#0C0H
LCALL WAIT
LCALL HIEN_THI
MOV R2,#0 ;DONG 1 DICH
SHIFT1:
MOV DPTR,#DU_LIEU1
AAA:
LCALL DISPLAY1
LCALL DELEY500
INC DPTR
MOV A,DPL ;KIEM TRA DA DICH XONG DONG CHU RA MAN HINH LCD
CJNE A,#LOW(DU_LIEU1+19),AAA
MOV A,DPH
CJNE A,#HIGH(DU_LIEU1+19),AAA
INC R2
CJNE R2,#2,SHIFT1
MOV DPTR,#DU_LIEU3 ;DONG 1 DUNG YEN
LCALL GHI_LENH
MOV P1,#80H
LCALL WAIT
LCALL HIEN_THI
MOV R2,#0 ;DONG 2 DICH
SHIFT2:
MOV DPTR,#DU_LIEU4
BBB:
LCALL DISPLAY2
LCALL DELEY500
INC DPTR
MOV A,DPL
CJNE A,#LOW(DU_LIEU4+29),BBB
MOV A,DPH
CJNE A,#HIGH(DU_LIEU4+29),BBB
INC R2
CJNE R2,#3,SHIFT2
LJMP START
DISPLAY1:
LCALL GHI_LENH
MOV P1,#80H ; dua con tro ve dau dong 1
LCALL WAIT
HIEN_THI:
MOV R0,#0
LOOP:
MOV A,R0
MOVC A,@A+DPTR
LCALL GHI_DATA
MOV P1,A
LCALL WAIT
INC R0
CJNE R0,#16,LOOP
RET
DISPLAY2:
LCALL GHI_LENH
MOV P1,#0C0H
LCALL WAIT
LCALL HIEN_THI
RET
GHI_LENH:
SETB P3.2
CLR P3.0
CLR P3.1
RET
GHI_DATA:
SETB P3.2
SETB P3.0
CLR P3.1
RET
WAIT:
CLR P3.2
MOV TMOD,#10H
MOV TH1,#HIGH(-500)
MOV TL1,#LOW(-500)
CLR TF1
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
RET
DELEY500:
MOV R1,#0
DEM:
MOV TMOD,#10H
MOV TH1,#HIGH(-5000)
MOV TL1,#LOW(-5000)
CLR TF1
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
INC R1
CJNE R1,#50,DEM
RET
ORG 100H
DU_LIEU1:
DB 'DE TAI MON VI DIEU KHIEN '
ORG 150H
DU_LIEU2:
DB 'LOP DH07TD'
ORG 250H
DU_LIEU3:
DB 'KHOA CO KHI'
ORG 300H
DU_LIEU4:
DB 'TRUONG DH NONG LAM TP.HCM'
END
đây là lỗi:
Assembling AssemblyFile1.asm
4 errors found

"D:\mach lcd\codelcd\AssemblyFile1.asm" 111 Undecodable line, Syntax error
"D:\mach lcd\codelcd\AssemblyFile1.asm" 114 Undecodable line, Syntax error
"D:\mach lcd\codelcd\AssemblyFile1.asm" 117 Undecodable line, Syntax error
"D:\mach lcd\codelcd\AssemblyFile1.asm" 120 Undecodable line, Syntax error

Chip Kool said...
24/12/13

Biên dịch với keil c khai báo thư viện kiểu gì vây? khai bão chỗ dòng #include thay bằng $mod51

tuấn nguyễn thanh said...
24/12/13

@Chip Kool
em thay #include bằng $mod51 nhưng biên dịch vẫn báo .nhửng 42 lỗi .a có tài liệu gì không cho em xin em nghiên cứu sâu xem sao ạ. thank trước anh .

Chip Kool said...
25/12/13

@tuấn nguyễn thanh Trong trường hợp bí nhất...không dùng keil c bạn dùng pinnale 52 biên dịch rất tốt..mình hay dùng pinnale 52 nhất

tuấn nguyễn thanh said...
25/12/13

@Chip Kool
mỗi trình biên dịch có 1 cách khai báo riêng hả anh .em dùng reads51 để viết và biên dịch chương trình ,
chương trình ở trên là của keil c sao anh .em hông rành lắm chỉ biết 1 cái read51 đó thui . đồ án em làm phần cứng ổn hết rồi ,chỉ trục trặc mã code thui .

Chip Kool said...
25/12/13

Mỗi phần mềm có những đặc điểm lập trình hơi khác 1 chút..VD: lập trình pinnale code vẫn thế, nhưng khi copy sang keil c phải khai báo thêm $mod51 mới chạy..và những chỗ chú thích bên keil c mà copy sang pinnale lại báo lỗi.

tuấn nguyễn thanh said...
26/12/13

@Chip Kool
thank anh nha
dậy lấy mã đó đem wa read51 thi mình thay đổi ra sao anh nhỉ

tuấn nguyễn thanh said...
5/1/14

@Chip Kool
ad oi cho em hỏi mạch này mình cần con ic tăng dòng gì không ạ
mạch trên em đả viết biên dịch thành công rồi ,test mô phỏng ok hết nhưng nạp wo6 cho chạy thực tế thì chả thấy hiện tượng gì anh ạ

Chip Kool said...
5/1/14

mạch này chẳng cần tăng dòng gì cả..nếu ko sáng nhầm chân 15 ( A) 16 ( K) cho led..nếu ko do chưa chỉnh độ tương phản led ở chân Vee của chân 3 LCD..nếu không hiện chưa nữa..dễ nhầm chân 1 2 3 của LCD xem lại là ok.

tuấn nguyễn thanh said...
8/1/14

@Chip Kool
hi thank anh nhiều nha

Post a Comment

Bạn đọc hãy giúp chúng tôi xây dựng cộng đồng bằng cách để lại bình luận, chúng tôi luôn đón nhận mọi ý kiến của các bạn:
» Bình luận nghiêm túc và không chứa các liên kết quảng cáo.
» Vui lòng không Spam nhận xét với mọi hình thức.
» Rất mong bạn đề tên cho nhận xét của chính mình - Bằng cách chọn vào Tên/URL và điền tên bạn vào (Phần URL có thể bỏ trống ).

- Bạn có thể chèn Link nhạc (NCT), video(Youtube),Hình ảnh vào comment bằng cú pháp:
+ [youtube] Link video Youtube [/youtube].
+ [img] Link ảnh( định dạng PNG, JPG,GIF) [/img]
+Chèn link liên kết: <a href="LINK" rel="nofollow">Name</a>
-Bạn copy mã bên cạnh biểu tượng chèn vào nhận xét để bày tỏ cảm xúc!!

:) :( :)) :(( =)) =D> :D :P