BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP HUẾ KHOA: ĐIỂN TỦ VIỄN THÔNG BÀI TIỂU LUẬN MÔN : THỰC HÀNH VI XỬ LÝ Giáo viên hướng dẫn: Sinh viên thực hiện: Hoàng Lê Vinh Hưng Lớp 11CDDV02 H
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG NGHIỆP HUẾ
KHOA: ĐIỂN TỦ VIỄN THÔNG
BÀI TIỂU LUẬN
MÔN : THỰC HÀNH VI XỬ LÝ
Giáo viên hướng dẫn: Sinh viên thực hiện: Hoàng Lê Vinh Hưng
Lớp 11CDDV02
Huế, ngày 21-10-2013
Trang 2Bài 1: Vẽ mạch mô phỏng trên Proteus và viết chương trình trên Keil C hiện thị phút giây trên LED 7 đoạn đúng với thời gian thực.
Mạch Mô phỏng vi xử lý hiển thị phút giây trên LED 7 đoạn trong Proteus.
D D D D D D B B B B B B A A A A A A A
C C C C C C
A1 A2 A3 A4 A5 A6 A7
B1 B2 B3 B4 B5 B6 B7
C1 C2 C3 C4 C5 C6 C7
D2
D5
D6
D7
D1
D3
D4
U1
AT89C52
R2
220
R3
220
R4
220
R6
220
R7
220
R8
220
R10
220
R11
220
R12
220
R14
220
R15
220
R16
220
R18
220
R19
220
R20
220
R21
220
R22
220
R23
220
R24
220
R26
220
R27
220
R28
220
R29
220
R30
220
R31
220
R32
220
R1
220
R5
220
Trang 3Chương trình:Hiển thị phút giây trên LED 7 đoạn đúng với thời gian thực trên Keil
C
#include <REGX51.H>
#include<stdio.h>
unsigned char mang[10]={64,121,36,48,25,18,2,120,0,16};
void delay(int t)
{
unsigned long int i;
for(i=0;i<t;i++);
}
void main()
{ char dem,SauGiay,TruocGiay,SauPhut,TruocPhut, dem1;
dem1=0;
dem=0;
while(1)
{
TruocPhut=dem1/10;
SauPhut=dem1%10;
TruocGiay=dem/10;
SauGiay=dem%10;
P0=mang[TruocPhut];
P1=mang[SauPhut];
P2=mang[TruocGiay];
P3=mang[SauGiay];
Trang 4if(++dem==60) {
dem=0;
if(++dem1==60) dem1=0;
if(dem >= 59) SauPhut++;
} if(SauPhut==9) {
TruocPhut++;
SauPhut=0;
} delay(8000);
}
}
Trang 5Bài 2 : Thiết kế mạch mô phỏng trên Proteus và viết chương trình cho LCD hiển thị giờ phút giây đúng với thời gian thực trên Keil C
Mạch: Vi xử lý nối với LCD hiển thị giờ phút giây trên Proteus.
Trang 6U1
AT89C51
LCD1
LM032L
R1
220
1
220
2
220
3
220
4
220
5
220
6
220
7
220
Chương trình: Hiển thị giờ phút giây trên LCD đúng với thời gian thực trên Keil C.
#include <REGX52.H>
#include <stdio.H>
#include <string.H>
#define dulieu P3
sbit RS=P2^0;
Trang 7sbit RW=P2^1;
sbit EN=P2^2;
unsigned char maled[]={'0','1','2','3','4','5','6','7','8','9'};
unsigned char a[10];
int i=0;
int dem=0,dem1=0,giay=0,giay1=0,phut=0,phut1=0; void delay(int t)
{
unsigned long int i;
for(i=0;i<t;i++);
}
void ghilenh(unsigned char c)
{
RS=0;
RW=0;
dulieu=c;
EN=0;delay(10);
EN=1;delay(10);
EN=0;delay(10);
}
void ghidulieu(unsigned char c)
{
RS=1;
RW=0;
dulieu=c;
EN=0;delay(10);
Trang 8EN=0;delay(10);
}
void chuoi(unsigned char *s)
{
while(*s )
{
ghidulieu(*s++);
}
}
void khoidonglcd()
ghilenh(0x38);
ghilenh(0x0c);
ghilenh(0x01);
}
void hienthi()
{
while(1)
{
if(++dem==60) {
dem=0;
if(++dem1==60) {
Trang 9if(++giay==60) {
giay=0;
} } }
delay(15000);
ghilenh(0xc0);
chuoi("Bay Gio La:");
a[0]=maled[giay/10];
a[1]=maled[giay%10];
a[2]=maled[dem1/10];
a[3]=maled[dem1%10];
a[4]=maled[dem/10];
a[5]=maled[dem%10];
chuoi(a);
}
}
void main()
{
khoidonglcd();
ghilenh(0x80);
chuoi("ThucHanh ViDieuKhien"); hienthi();
}
Trang 10Câu 3: Thiết kế mạch mô phỏng trên Proteus và viết chương trình trên Keil C làm máy tính bỏ túi hiển thị trên LCD.
Mạch: Mô phỏng mạch máy tính bỏ túi trên Proteus.