Tải bản đầy đủ (.doc) (13 trang)

THIẾT KẾ MÔ HÌNH AMPEMET ĐIỆN TỬ HIỂN THỊ BẰNG LED 7 THANH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (345.18 KB, 13 trang )

BỘ GIÁO DỤC ĐÀO TẠO
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
BÁO CÁO ĐỒ ÁN
THIẾT KẾ MÔ HÌNH AMPEMET ĐIỆN TỬ
HIỂN THỊ BẰNG LED 7 THANH
GIÁO VIÊN HƯỚNG DẪN
TS HOÀNG XUÂN BÌNH
SINH VIÊN THỰC HIỆN
Hoàng Sĩ Linh
Thiều Quang Nam
Trần Trung Kiên
HÀ NỘI-2014
NỘI DUNG
1 . Lí thuyết cơ bản
1.1 Vi điều khiển AT89C51
AT89C51 là phiên bản 8051 có ROM trên chip là bộ nhớ Flash. Phiên
bản này rất thích hợp cho các ứng dụng nhanh vì bộ nhớ FLASH có thể
được xoá trong vài giây. Tất nhiên là để dùng AT89C51 cần phải có thiết
bị lập trình PROM hổ trợ bộ nhớ Flash nhưng không cần đến thiết bị xoá
ROM vì bộ nhớ Flash được xoá bằng thiết bị lập trình PROM. Để tiện
cho việc sử dụng, hiện nay hãng Atmel đang nghiên cứu một phiên bản
của AT89C51 cò thể lập trình qua cổng COM của máy tính PC và như
vậy sẽ không cần đến thiết bị lập trình PROM.
a. Một số nét đặc trưng:
- Tương thích với sản phẩm MCS-51
- Bộ nhớ chương trình bên trong: 4KB (ROM)
- Bộ nhớ dữ liệu bên trong: 128 KB (RAM)
- Port xuất nhập (I/O port) :32
- 2 bộ định thời 16 bit
- Ngắt :6
- Nguồn cấp :Vcc =5V


- 3 vị trí khoá bộ nhớ chương trình.
- Mạch giao tiếp nối tiếp.
- Hoạt động tĩnh: từ 0 Hz đến 24 MHz
- Chạy không nguồn thấp và chế độ giảm nguồn.
- Số chân IC :40
b. Sơ đồ khối của chip AT89C51
c. Sơ đồ chân và chức năng các chân của vi điều khiển AT89C51
U 1
A T 8 9 C 5 1
9
1 8
1 9
2 0
2 9
3 0
3 1
4 01
2
3
4
5
6
7
8
2 1
2 2
2 3
2 4
2 5
2 6

2 7
2 8
1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
3 9
3 8
3 7
3 6
3 5
3 4
3 3
3 2
R S T
X T A L 2
X T A L 1
G N D
P S E N
A L E / P R O G
E A / V P P
V C CP 1 . 0
P 1 . 1
P 1 . 2
P 1 . 3
P 1 . 4

P 1 . 5
P 1 . 6
P 1 . 7
P 2 . 0 / A 8
P 2 . 1 / A 9
P 2 . 2 / A 1 0
P 2 . 3 / A 1 1
P 2 . 4 / A 1 2
P 2 . 5 / A 1 3
P 2 . 6 / A 1 4
P 2 . 7 / A 1 5
P 3 . 0 / R X D
P 3 . 1 / T X D
P 3 . 2 / I N T 0
P 3 . 3 / I N T 1
P 3 . 4 / T 0
P 3 . 5 / T 1
P 3 . 6 / W R
P 3 . 7 / R D
P 0 . 0 / A D 0
P 0 . 1 / A D 1
P 0 . 2 / A D 2
P 0 . 3 / A D 3
P 0 . 4 / A D 4
P 0 . 5 / A D 5
P 0 . 6 / A D 6
P 0 . 7 / A D 7
 Vcc:nguồn cấp (chân số 40)
 GND: Nối đất (chân số 20 )
 Port 0:

− Port 0 (P0.0 – P0.7) có số chân từ 32- 39
− Port 0 là port xuất nhập 8bit 2 chiều. Port 0 được định hình làm bus
địa chỉ (byte thấp) và làm bus dữ liệu đa hợp trong khi truy xuất bộ nhớ
dữ liệu ngoài và bộ nhớ chương trình ngoài. Port 0 nhận các byte mã
trong khi lập trình cho Flash và xuất các byte mã trong khi kiểm tra
chương trình.
 Port 1 :
− Port 1 (P1.0 – P1.7) có số chân từ 1 – 8.
− Port 1 là một port xuất nhập 8bit có các điện trở kéo lên bên trong.khi
các logic 1 được đặt lên các chân của port 1, các chân này được kéo lên
mức cao bởi các điện trở kéo lên bên trong và có thể được sử dụng như là
các ngõ vào. Khi thực hiện là các port nhập, các chân của port 1 được kéo
xuống mức thấp do tác động bên ngoài sẽ cấp dòng cho các điện trở kéo
lên bên trong.
 Port 2 :
− Port 2 (P2.0 – P2.7) có số chân từ 21 -28
− Port 2 là port xuất nhập 8bit 2 chiều có các điện trở kéo lên bên trong.
Khi các logic 1 được đặt lên các chân của port 2, các chân này được sử
dụng như là các ngõ vào. Khi thực hiện chức năng port nhập, các chân
port 2 được kéo xuống mức thấp do tác động bên ngoài sẽ cấp dòng do có
các điện trở kéo lên bên trong. Port 2 tạo ra byte cao của bus địa chỉ trong
thời gian tìm nạp lệnh từ bộ nhớchương trình ngoài và trong thời gian
truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 16 bit.
 Port 3 :
− Port 3 (P3.0 - P3.7) có số chân từ 10 – 17
− Port 3 là port xuất nhập 8 bit 2 chiều có các điện trở kéo lên bên trong.
Khi các logic 1 được đặt lên các chân của port 3 các chân này được đưa lê
mức cao bởi các điện trở kéo lên bên trong và có thể được sử dụng như là
các ngõ vào. Khi làm chức năng port nhập, các chân port 3 được kéo
xuống mức thấp do tác động bên ngoài cấp dòng do có các điện trở kéo

lên bên trong. Port 3 còn được sử dụnglàm các chức năng khác của
AT89C51.
Chức năng của các chân được mô tả qua bảng sau :
 RST : Thiết lập lại ( chân 9). Mức cao trên chân này trong 2 chu kì
máy trong khi bộ dao động đang hoạt động sẽ Reset AT89C51.
Mạch Reset tự động khi khởi động máy
Ở đây chúng ta thực hiện Reset bằng cách nối chân 9 của 8951 với nguồn
5V.
 Chân ALE (Address Latch Enable) /
PROG
: chân số 3
Là một xung ngõ ra cho phép chốt địa chỉ, cho phép chốt byte thấp của
địa chỉ trong thời gian truy xuất bộ nhớ ngoài. Chân này cũng được dùng
làm ngõ vào xung lập trình (
PROG
) trong thời gian lập trình cho Flash.
Khi hoạt động bình thường, xung của ngõ ra ALE luôn luôn có tần số
bằng 1/6 tần số của mạchdao động trên chip, có thể được sử dụng cho các
mục đích định thời từ bên ngoài và tạo xung Clock. Tuy nhiên cần lưu ý
là một xung ALE sẽ bị bỏ qua trong mỗi chu kì truy xuất của bộ nhớ dữ
liệu ngoài. Khi cần hoạt động cho phép chốt byte thấp của địa chỉ sẽ được
vô hiệu hoá bằng cách set bit 0 của thanh ghi chức năng đặc biệt (SFR) có
địa chỉ byte là 8EH. Khi bit này được set, ALE chỉ tích cực trong thời
gian thực hiện lệnh MOVX hoặc MOVC. Ngược lại chân này sẽ được
đưa lên mức cao. Việc set bit không cho phép hoạt động chốt byte thấp
của địa chỉ sẽ không có tác dụng nếu bộ điều khiển đang ở chế độ thực thi
chương trình ngoài.
Bit Tên Địa chỉ
bit
Chức năng

P3.0 RxD B0H Chân nhận dữ liệu của port nối tiếp
P3.1 TxD B1H Chân phát dữ liệu của port nối tiếp
P3.2 INTO\ B2H Ngõ vào ngắt ngoài 0
P3.3 INT1\ B3H Ngõ vào ngắt ngoài 1
P3.4 T0 B4H Ngõ vào của bộ định thời/đếm 0
P3.5 T1 B5H Ngõ vào của bộ định thời/đếm 1
P3.6 WR\ B6H Điều khiển ghi vào RAM ngoài
P3.7 RD\ B7H Điều khiển đọc từ RAM ngoài
 Chân
PSEN
(Program Store Enable):cho phép đọc bộ nhớ chương
trình, chân số 29
Khi 8951 thực thi mã từ bộ nhớ chương trình ngoài,
PSEN
được hoạt
động 2 lần trong mỗi chu kỳ máy ngoại trừ hoạt của
PSEN
được bỏ qua
trong mỗi bộ nhớ dữ liệu ngoài.
 Chân
EA
/ V
pp
(External Access): truy xuất ngoài , chân số 31
EA
phải đươc nối với GND cho phép xuất mã từ vị trí bộ nhớ chương
trình ngoài bắt đầu tại 0000H đến FFFFH.
Chú ý:cho dù thế nào, nếu khoá bit 1 được lập trình,
EA
sẽ được chốt bên

trong lúc Reset.
EA
nối V
cc
để thực hiện chương trình bên trong.
Chân này nhận điện áp cho phép lập trình là 12V (Vpp) trong khi lập
trình Flash
 Chân XTAL 1 (Crysral), hân 18)
Ngõ vào mạch khuếch đại đảo của mạch dao động và ngõ vào mạch tạo
xung Clock bên trong chip
 Chân XTAL 2(chân 19)
Ngõ ra mạch khuếch đại đảo của mạch dao động.
Để tạo dao động cho vi điều khiển AT89C51 hoạt động, chúng em chọn
mạch dao động như hình vẽ sau với các giá trị của linh kiện:
C1= C2=33pF
2. Sơ đồ nguyên lý và mạch in
MACH RESET
MACH TAO DAO DONG
KHOI HIEN THI
KHOI ADC
KHOI PHAN AP DAU VAO MACH DO
KHOI XU LY TRUNG TAM (VI DIEU KHIEN 89S52)
3. Chương trình:
#include<reg52.h>
#include<stdio.h>
#define LED_DATA P0 //Port xuat du lieu ra led 7 thanh
#define LED_CTRL P2 //P4 7
unsigned char CTRL[] = {0xfe, 0xfd, 0xfb, 0xf7};
//Bang ma Led 7 thanh A chung
unsigned char M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

unsigned char DATA[4]={0};
unsigned char i, LedId;
int ADvalue, congdon;
#define AD_IN P1
sbit INTR_AD = P3^2;
sbit WR_AD = P3^6;
sbit SW1 = P3^0;
sbit SW2 = P3^1;
void delay(unsigned long int d)
{
int n;
for (n=0;n<d;n++);
}
int ad_convert(void)
{
unsigned char temp;
AD_IN=0xff;
WR_AD = 0;
delay(3);
WR_AD = 1; //Bat dau chuyen doi
while(!INTR_AD); //Cho chuyen doi xong
return (temp=AD_IN); //Doc du lieu AD vao;
}
void hienthi(void)
{
/*Tat led */
LED_DATA = 0xFF;
LED_CTRL |= 0x0f;
/*Bat Led */
LED_DATA = M[DATA[LedId]];

LED_CTRL &= CTRL[LedId];
//
if (((SW1==0)&&(SW2==0))&&(LedId==3))
LED_DATA &= 0x7f;
if (((SW1==0)&&(SW2==1))&&(LedId==2))
LED_DATA &= 0x7f;
if (((SW1==1)&&(SW2==0))&&(LedId==2))
LED_DATA &= 0x7f;
if (((SW1==1)&&(SW2==1))&&(LedId==1))
LED_DATA &= 0x7f;
//
LedId++;
if(LedId == 4) LedId = 0;
}
void ngat_Timer_1(void)interrupt 3
{
TR1=0; //Dung Timer
TH1=1000/256; //Nap lai byte cao
TL1=1000%256; //Nap lai byte thap
TR1=1; //Chay Timer
hienthi();
}
void main()
{
EA=0; //Cam cac ngat
TMOD=0x10; //Timer 1 che do 1
TH1=1000/256; //Nap lai byte cao
TL1=1000%256; //Nap lai byte thap
ET1=1; //Ngat Timer_1.
EA=1; //Cho phep cac ngat

TR1=1; //Chay timer 1
while (1)
{
Advalue= ad_convert (); //doc ADC
if (ADvalue==255) //Neu say ra tran ADC
{
DATA[3]=1; //Hien thi so 1
DATA[2]=10; //Tat cac led hien thi
DATA[1]=10;
DATA[0]=10;
}
else //Khong tran hien thi
{
DATA[0]=0;
for(i=1;i<4;i++)
{
DATA[i]=ADvalue%10;
ADvalue/=10;
}
}
}
}
4. KẾT LUẬN
- Từ những nền tảng sẵn có chúng ta có thể nghĩ ra những ý
tưởng khác nữa, tùy vào mục đích sử dụng mà tìm những
thiết bị phù hợp cho ý tưởng của mình. Mong rằng rồi đây sẽ
còn có nhiều sản phẩm điện tử mới được ra đời đáp ứng
được nhu cầu của con người và tiến dần đến tự động hóa
trong tất cả các lĩnh vực.

×