Tải bản đầy đủ
Hình: Giao diện chương trình Proteus.

Hình: Giao diện chương trình Proteus.

Tải bản đầy đủ

Bật/ Tắt chế độ mô phỏng trên nền thời gian thực.
Bật tắt chế độ đi dây trong sơ đồ nguyên lý.
Tìm kiếm linh kiện.
Chỉnh sửa thuộc tính chung.
Các công cụ quản lý trang làm việc.
Xuất danh sách linh kiện.
Kiểm tra lỗi mạch điện (ERC).
Liên thông ARES để vẽ mạch in.
* Thanh công cụ.
Component – Thêm linh kiện vào bản vẽ.
Junction Dot – Thêm điểm nối nơi giao nhau của đường dây.
Wire Lable – Gán tên cho đường dây.
Text Script – Thêm Text vào bản vẽ.
Bus – Vẽ đường Bus.
Sub Circuit – Mạch phụ.
Instant Edit Mode – Chỉnh sửa nhanh thuộc tính linh kiện
Inter – Sheet Terminal – Nối đầu cực.
Divice Pin – Vẽ chân linh kiện.
Simulation Graph – Vẽ đồ thị mô phỏng.
Tapr Recorder – Băng ghi.
Gennerator – Các máy phát tín hiệu.
Voltage Probe – Đầu dò điện áp.
Current Probe – Đầu đò dòng điện.
Virtual Instruments – Các thiết bị ảo.

55

Các công cụ vẽ 2D.
* Các nút mô phỏng.

* Vùng hiển thị.
Hiện thị khái quát vùng làm việc hiện hành, khung màu xanh dương biểu hiện
cho từng bản vẽ, khung xanh lá biểu hiện cho phần bản vẽ đang hiện thị trên vùng
làm việc chính. Khi ta chọn một linh kiện, kí hiệu nguyên lý của nó cũng được
hiển thị lên vùng này.
* Vùng làm việc chính.
Đây là nơi thực hiện toàn bộ các thao tác đẻ hoàn thành bản vẽ.
4.5.3 Sơ đồ nguyên lý

56

4.5.4 Hình ảnh mô phỏng mạch chạy

57

4.6 Phần mềm lập trình và Code lập trình
Với họ điều khiển 8051 thì dùng phần mềm lập trình là KeilC có hỗ trợ với
họ 8051 thích hợp cho việc lập trình. Ta có thể làm trình bằng ngôn ngữ C hoặc
Assemberly. Trong mạch đo nhiệt độ cho em sử dụng ngôn ngữ C. Code chương
trình.
4.6.1 Ngôn ngữ lập trình C
* Giới thiệu về ngôn ngữ lập trình C
Ngôn ngữ lập trình C là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập
niên 1970 bởi Ken Thompson và Dennis Ritchie để dùng trong hệ điều hành
UNIX. Từ dó, ngôn ngữ này đã lan rộng ra nhiều hệ điều hành khác và trở thành
một những ngôn ngữ phổ dụng nhất.
C là một ngôn ngữ lập trình tương đối nhỏ gọn vận hành gần với phần cứng
và nó giống với ngôn ngữ Assembler hơn hầu hết các ngôn ngữ bậc cao. Hơn
thế, C đôi khi được đánh giá như là “có khả năng di động”, cho thấy sự khác
nhau quan trọng giữa nó với ngôn ngữ bậc thấp như là Assembler, đó là việc mã
C có thể được dịch và thi hành trong hầu hết các máy tính, hơn hẳn các ngôn
ngữ hiện tại trong khi đó thì Assembler chỉ có thể chạy trong một số máy tính
đặc biệt. Vì lý do này C được xem là ngôn ngữ bậc trung.
Các chức năng của C:


Một ngôn ngữ cốt lõi đơn giản, với các chức năng quan trọng chẳng

hạn như là những hàm hay việc xử lý tập tin sẽ được cung cấp bởi các bộ thư
viện các thủ tục.


Tập trung trên mẫu hình lập trình thủ tục, với các phương tiện lập

trình theo kiểu cấu trúc.


Một hệ thống kiểu đơn giản nhằm loại bỏ nhiều phép toán không có

ý nghĩa thực dụng.


Dùng ngôn ngữ tiền xử lý, tức là các câu lệnh tiền xử lý C, cho các

nhiệm vụ như là định nghĩa các macro và hàm chứa nhiều tập tin mã nguồn
(bằng cách dùng câu lệnh tiền xử lý dạng #include chẳng hạn).


Mức thấp của ngôn ngữ cho phép dùng tới bộ nhớ máy tính qua việc

sử dụng kiểu dữ liệu pointer.
58



Số lượng từ khóa rất nhỏ gọn.



Các tham số được đưa vào các hàm bằng giá trị, không bằng địa chỉ.



Hàm các con trỏ cho phép hình thành một nền tảng ban đầu cho tính

đóng và tính đa hình.


Hỗ trợ các bản ghi hay các kiểu dữ liệu kết hợp do người dùng từ

khóa định nghĩa struct cho phép các dữ liệu liên hệ nhau có thể được tập hợp
lại và được điều chỉnh như là toàn bộ.
* Từ khóa

Asm

Const

Else

For

Interrupt

Return

Sizeof

Void

Break

Continue

Enum

Goto

Long

Short

Switch

Volatile

Case

Default

Extern

Huge

Near

Static

Typedef

While

Cdeel

Do

Far

If

Pascal

Struct

Union

Char

Double

Float

Int

Register

Các từ khóa phải viết bằng chữ thường.

59

Signed Unsigned

* Kiểu dữ liệu
T

Kiểu dữ liệu

Kích thước

Miền giá trị

1

(Type)
unsigned char

(Length)
1 byte

(Range)
0 đến 255

2

char

1 byte

-128 đến 127

3

enum

2 byte

-32,768 đến 32,767

4

unsigned int

2 byte

0 đến 65,535

5

short int

2 byte

-32,768 đến 32767

6

int

2 byte

-32768 đến 32767

7

unsigned long

4 byte

0 đến 4,294,967,295

8

long

4 byte

-2,147,483,648 đến 2,147,483,247

9

float

4 byte

3.4*10-38 đến 3.4 *1038

1

double

8 byte

1.7*10-308 đến 1.7 *10308

long double

10 byte

3.4*10-4932 đến 1.1 *104932

T

0
1
1

4.6.2 Chương trình đo và điều khiển nhiệt độ của thiết bị.
#include
//#include
#define Data P0
sbit L1=P2^4;
sbit L2=P2^5;
sbit L3=P2^6;
sbit L4=P2^7;
sbit rd=P3^0;
sbit wr=P3^1;
sbit intr=P3^2;
sbit set=P3^5;
sbit up=P3^6;
sbit down=P3^7;
sbit relay=P3^3;
60

sbit led=P3^4;
sbit quat=P2^0;
unsigned char maled[]={0x7e,0x42,0x5d,0x57
,0x63,0x37,0x3f,0x52,0x7f,0x77,0xf1,0xbc,0xc3,0xa9};
unsigned char nd=20,min=10,max=90;
unsigned int dem=0;
//================================================
void delay_ms(unsigned int ms)
{
unsigned char i;
while(ms--)
for(i=0;i<121;i++){};
}
//================================================
void timer1() interrupt 3
{
TR1=0;
TF1=0;
dem++;
if(dem==15)quat=1;
if(dem>=nd+5)
{
quat=0;
dem=0;
}
TH1=0xfc;
TL1=0x18;
TR1=1;
}
//================================================
unsigned char conv()

61

{
unsigned char t;
wr=0;
wr=1;
while(intr);
rd=0;
t=P1;
rd=1;
return t;
}
//================================================
void display_t(unsigned char x,unsigned char y)
{
Data=~maled[x];
L1=1;
delay_ms(1);
L1=0;
Data=~maled[y];
L2=1;
delay_ms(1);
L2=0;
}
//=================================================
void display_c(unsigned char x,unsigned char y)
{
Data=~maled[x];
L3=1;
delay_ms(1);
L3=0;
Data=~maled[y];
L4=1;

62

delay_ms(1);
L4=0;
}
//================================================
void quetphim()
{
delay_ms(300);
while(set==0);
while(set==1)
{
display_t(13,max/10);
display_c(max%10,10);
if(up==0)
{
delay_ms(300);
max++;
if(max>90) max=0;
}
if(down==0)
{
delay_ms(300);
max--;
if(max==255) max=90;
}
}
delay_ms(300);
while(set==0);
while(set==1)
{
display_t(12,min/10);
display_c(min%10,10);

63

if(up==0)
{
delay_ms(300);
min++;
if(min>90) min=0;
}
if(down==0)
{
delay_ms(300);
min--;
if(min==255) min=90;
}
}
delay_ms(300);
while(set==0);
}
//=================================================
void main()
{
unsigned char n,i,min;
unsigned char a[10];
relay=0;
led=0;
quat=0;
TMOD=0x10;
TH1=0xfc;
TL1=0x18;
IE=0x88;
quat=1;
delay_ms(3000);
TR1=1;

64

i=0;
while(1)
{
a[i]=conv();
i++;
if(i==10)
{
i=0;
nd=a[0];
for(n=0;n<10;n++)
if(nd>a[n]) nd=a[n];
}
for(n=0;n<30;n++)
{
if(set==0) quetphim();
display_t(nd/10,nd%10);
display_c(10,11);
if(nd>max) relay=1;
else relay=0;
if(ndelse led=0;
}
}}

65