1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Báo cáo bài tập lớn kiến trúc máy tính

13 2K 10
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

Định dạng
Số trang 13
Dung lượng 348,85 KB

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

Nội dung

Báo cáo bài tập lớn kiến trúc máy tính

Trang 1

BÁO CÁO BÀI TẬP LỚN MÔN KIẾN TRÚC MÁY TÍNH

ĐỀ TÀI: THIẾT KẾ MẠCH VÀ VIẾT CHƯƠNG TRÌNH ĐIỀU KHIỂN HIỂN

THỊ MỘT DÒNG CHỮ BẤT KÌ CHẠY TRÊN LCD

GV: TỐNG VĂN LUYÊN SVTH: NGUYỄN TRÍ TRƯỞNG NGUYỄN VIẾT VỮNG

Trang 2

I / TỔNG QUAN VỀ LCD VÀ CÁCH GIAO TIẾP CỦA LCD VỚI 89S52

1 Tổng quan LCD

Ngày nay LCD với những tính năng nổi trội của nó đã được sử dụng rất nhiều trong vi điều khiển Khả năng hiện thị của LCD là rất đa dạng, trực quan (chữ, số và nhiều loại kí

tự đồ họa khác ), dễ dàng đưa vào mạch ứng dụng chẳng hạn như : điện thoại di động, máy game và các lĩnh vực khác mà giá thành rẻ…

LCD sử dụng trong mạc là LCD : LM016L

LCD LM016L là loại màn hình hiển thị được 16 kí tự × 2 dòng, bao gồm tất cả các kí tự chuẩn ngoài ra còn có một số kí tự đặc biệt nhưng không có kí tự dấu tiếng Việt

Hình dáng và sơ đồ chân của LCD:

2 / CÁCH GIAO TIẾP CỦA LCD VỚI 89S52

Giao tiếp của LCD với 89S52 trong mạch được kết nối với nhau thông qua Port P1 < P1.0 – P1.7 >

Trang 3

3 / Giới thiệu về 89S52

Sơ đồ chân của 89S52

4 Giới thiệu về MAX232

Vi mạch MAX 232 của hãng MAXIM là 1 vi mạch chuyên dùng trong giao diện nối tiếp với máy tính Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào thành mức +10V hoặc – 10V ở phía truyền và các mức +3…+15V hoặc -3…-15V thành mức TTL ở phía nhận

Vi mạch MAX 232 có hai bộ đệm và hai bộ nhận Đường dẫn điều khiển lối vào

CTS,điều khiển việc xuất ra dữ liệu ở cổng nối tiếp khi cần thiết, được nối với chân 9 của vimạch MAX 232 Còn chân RST (chân 10 của vi mạch MAX ) nối với đường dẫn bắt tay để điều khiển quá trình nhận

Trang 4

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

Chương trình cho VDK:

#include <REGX52.H>

#include <stdio.h>

#include<serial.h>

#include<lcd.h>

int timer=0;

char datax[10];

int dem=0,k=0;

void delay(timer)

{

int ix,jx;

Trang 5

for(ix=0;ix<timer;ix++)

for(jx=0;jx<=150;jx++);

}

void receive_data() interrupt 4

{

if(RI==1)

{ RI=0;

if (SBUF=='@')

dem=0 ; datax[dem]=SBUF ; dem++;

} }

void main(void)

{

uart_init() ;

setting();

home();

command(LCD_DISPLAY_ON ); get_x_y(1,16);

print_str("SINH VIEN THUC HIEN");

Trang 6

for(k=0;k<=17;k++)

{

move_display(1,1);

delay(150);

}

clear();

delay(100);

get_x_y(1,16);

print_str("NGUYEN TRI TRUONG"); for(k=0;k<=15;k++)

{

move_display(1,1);

delay(100);

}

for(k=0;k<=4;k++)

{

command(LCD_CURSOR_ON); delay(100);

command(LCD_DISPLAY_ON); delay(150);

}

clear();

Trang 7

get_x_y(1,7);

print_str("*Vs*");

delay(100);

for(k=0;k<=4;k++)

{ command(LCD_CURSOR_ON); delay(100);

command(LCD_DISPLAY_ON); delay(100);

}

clear();

get_x_y(1,16);

print_str("NGUYEN VIET VUNG");

for(k=0;k<=14;k++)

{

move_display(1,1);

delay(100);

}

for(k=0;k<=4;k++)

{

command(LCD_CURSOR_ON); delay(100);

Trang 8

command(LCD_DISPLAY_ON); delay(150);

}

clear();

command(LCD_DISPLAY_ON );

while(1)

{

home();

if (datax[6]=='^' )

print_str("HN ");

else

print_str("HCM");

get_x_y(1,6);

print_char(datax[1]/10+0x30);

print_char(datax[1]%10+0x30);

print_char('/');

print_char(datax[2]/10+0x30);

print_char(datax[2]%10+0x30);

print_str("/200");

print_char(datax[3]/10+0x30);

print_char(datax[3]%10+0x30);

get_x_y(2,1);

Trang 9

print_char(datax[4]/10+0x30);

print_char(datax[4]%10+0x30);

print_char(':');

print_char(datax[5]/10+0x30);

print_char(datax[5]%10+0x30);

get_x_y(2,9);

print_char(datax[7]/10+0x30);

print_char(datax[7]%10+0x30);

print_char(0xdf);

print_char('C');

}

}

Chương trình cho cổng nối tiếp:

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, _

ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long

Private Declare Function InternetGetConnectedStateEx Lib "Wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal

dwReserved As Long) As Long

Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long

Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Dim Ret As Long

Trang 10

Dim sConnType As String * 255

Dim SearchString, SearchChar, MyPos

Dim ak As Long

Private Const pi As Double = 3.14159265358979

Private Sub MakeRoundObject(objObject As Object, Value As Long)

Static lngHeight, lngLong, lngReturn, lngWidth As Long

lngWidth = objObject.Width / Screen.TwipsPerPixelX

lngHeight = objObject.Height / Screen.TwipsPerPixelY

SetWindowRgn objObject.hWnd, CreateRoundRectRgn(0, 0, lngWidth, lngHeight, Value, Value), True

End Sub

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyEscape Then

App.TaskVisible = False

Unload Me

End

End If

End Sub

Private Sub Form_Load()

Dim intX As Integer

Call MakeRoundObject(frmMain, 20)

Call tmrClock_Timer

Dim Ret As Long

Ret = InternetGetConnectedStateEx(Ret, sConnType, 254, 0)

Combo1.AddItem "HA NOI", 0

Combo1.AddItem "HO CHI MINH", 1

For intX = 0 To 360 Step 6

If intX Mod 30 = 0 Then

Me.DrawWidth = 6

Trang 11

Me.PSet (1100 * Cos(intX * pi / 180) + lineSecond.X1, 1100 * Sin(intX * pi / 180) + lineSecond.Y1)

Else

Me.DrawWidth = 3

Me.PSet (1100 * Cos(intX * pi / 180) + lineSecond.X1, 1100 * Sin(intX * pi / 180) + lineSecond.Y1)

End If

Next intX

MSComm1.CommPort = 1

MSComm1.Settings = "9600,n,8,1"

MSComm1.PortOpen = True

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) ReleaseCapture

SendMessage Me.hWnd, &HA1, 2, 0&

End Sub

Private Sub lblTime_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Call Form_MouseDown(Button, Shift, X, Y)

End Sub

Private Sub Timer1_Timer()

MSComm1.Output = "@"

MSComm1.Output = Chr(Day(Now))

MSComm1.Output = Chr(Month(Now))

MSComm1.Output = Chr(Year(Now) - 2000)

MSComm1.Output = Chr(Hour(Now))

MSComm1.Output = Chr(Minute(Now))

If Combo1 = "HO CHI MINH" Then

MSComm1.Output = "*"

Else

MSComm1.Output = "^"

End If

ak = lable4

MSComm1.Output = Chr(Abs(ak))

End Sub

Private Sub tmrClock_Timer()

Dim dblSecond As Double, dblMinute As Double, dblHour As Double

dblSecond = Second(Now) * 6 - 90

Trang 12

dblMinute = (Minute(Now) + Second(Now) / 60) * 6 - 90

dblHour = (Hour(Now) + Minute(Now) / 60) * 30 - 90

lineSecond.X2 = 1000 * Cos(dblSecond * pi / 180) + lineSecond.X1

lineSecond.Y2 = 1000 * Sin(dblSecond * pi / 180) + lineSecond.Y1

lineMinute.X2 = 900 * Cos(dblMinute * pi / 180) + lineMinute.X1

lineMinute.Y2 = 900 * Sin(dblMinute * pi / 180) + lineMinute.Y1

lineHour.X2 = 700 * Cos(dblHour * pi / 180) + lineHour.X1

lineHour.Y2 = 700 * Sin(dblHour * pi / 180) + lineHour.Y1

lblTime.Caption = Format(Now, "hh:mm:ss")

Label1.Caption = Format(Now, "dd/mm/yyyy")

End Sub

Private Sub Combo1_Click()

If Ret = 0 Then

If Combo1 = "HA NOI" Then

Call DownloadFile1

lable4 = "38"

Picture1.Picture = LoadPicture(App.Path & "\1.gif")

Else

Call DownloadFile2

lable4 = "40"

Picture1.Picture = LoadPicture(App.Path & "\2.gif")

End If

' Set fso = CreateObject("Scripting.FileSystemObject").OpenTextFile("D:\Date.sys", 1) 'S = fso.ReadAll: S = Right(S, Len(S) - InStrRev(S, "&nbsp") - 3)

' S = Left(S, 38): MsgBox Left(S, InStrRev(S, ":") - 1)

' Set fso = Nothing: Kill "D:\Date.sys"

Else

MsgBox "KHONG THE KET NOI VAO MANG"

End If

End Sub

5 / Mạch mô phỏng

Ngày đăng: 11/05/2014, 15:35

HÌNH ẢNH LIÊN QUAN

Hình dáng và sơ đồ chân của LCD: - Báo cáo bài tập lớn kiến trúc máy tính
Hình d áng và sơ đồ chân của LCD: (Trang 2)
Sơ đồ chân của 89S52 - Báo cáo bài tập lớn kiến trúc máy tính
Sơ đồ ch ân của 89S52 (Trang 3)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w