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 (1.14 MB, 69 trang )
Hình: Giao diện chương trình Proteus.
4.5.2 Các thành phần của chương trình
* Thanh trình đơn
Bao gồm các Menu quen thuộc như File, View, Edit,…. Ta có thể thực hiện
hầu hết các lệnh của ISIS tại đây (Trừ các lệnh của thanh công cụ).
* Thanh tác vụ.
Chứa một số lệnh của thanh trình đơn ở dạng Shortcut như New,
Save,Open… và các nút sau
“Làm tươi” màn hình và các chỉnh sửa.
Bật/Tắt lưới cho bản vẽ.
Chọn gốc tọa độ.
Các công cụ phóng to thu nhỏ toàn mạch.
Undo/ Redo.
Cắt ,sao chép, dán.
Các lênh tác động lên đối tượng đã được chọn trước.
Các công cụ chỉnh sửa, tạo thư viện linh kiện.
54
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