LỜI NÓI ĐẦU
Ngày nay tin học đã thâm nhập vào tất cả mọi hoạt động trong xã hội và máy vi tính đã trở thành một công cụ đắc lực trong việc hỗ trợ con người. Nó không chỉ làm giảm nhẹ lao động (kể cả lao động trí tuệ) mà còn giúp cho con người có những năng lực mới mà trước đây chúng ta khó hình dung được. Máy vi tính ngày càng được sử dụng rộng rãi trong nhiều cơ quan, trường học, trong các ngành kinh tế và ngay cả trong gia đình.
Theo đà phát triển hiện nay của nước ta thì quá trình hiện đại hoá, công nghiệp hoá là hai mục tiêu đứng đầu. Nói đến công nghiệp hoá, hiện đại hóa thì không thể không nói đến quá trình tự động hóa, đó là một quá trình mà sự can thiệp của con người là tối thiểu. Mà để có tự động hoá trong các khâu, các nghành thì nhất thiết phải có sự hổ trợ của tin học mà cụ thể là các máy tính. Việc sử dụng máy vi tính trong lĩnh vực đo lường và điều khiển ngày càng phổ biến đòi hỏi phải ghép nối máy tính với các thiết bị bên ngoài trong đó tải hay các yếu tố chấp hành phải điều khiển được, còn các phần tử nhập liệu và các đầu đo thì được liên tục kiểm tra để cập nhật dữ liệu bằng một phần mềm được thiết kế riêng. Thông thường cách giải quyết vấn đề này một cách tốt nhất là thiết kế một khối ghép nối với bên ngoài máy tính để trao đổi thông tin với máy tính, khối đó chính là card giao tiếp.
Trong thực tiễn sản xuất, việc đo lường và xử lý các đại lượng của thế giới thực như nhiệt độ, tốc độ, nguồn điện áp là một yêu cầu cấp bách và thường xuyên. Để phần nào đáp ứng được yêu cầu đó, nhóm em quyết định thực hiện đề tài:
THIẾT KẾ VÀ THI CÔNG CARD GIAO TIẾP MÁY TÍNH ỨNG DỤNG ĐIỀU KHIỂN BỘ NGUỒN
Từ những vấn đề đó, nhóm em đã được Thầy LÊ VIẾT PHÚ hướng dẫn thực hiện đề tài theo hướng tự động hóa bằng máy tính cá nhân (Personal Computer) và đơn giản phần cứng bằng kỹ thuật lập trình.
Tuy nhiên vì thời gian có hạn, nên trong quá trình thiết kế tập luận văn này không thể tránh khỏi những sai sót, chúng em rất mong sự giúp đỡ của Quý Thầy Cô và các bạn để cuốn Luận Văn Tốt Nghiệp này được hoàn thiện hơn.
114 trang |
Chia sẻ: banmai | Lượt xem: 1832 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Thiết kế và thi công card giao tiếp máy tính ứng dụng điều khiển bộ nguồn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
naøy.
III.Caùc böôùc xaây döïng chöông trình:
1.Phaân tích:
a. Phaân tích nhaäp xuaát.
b. Xaây döïng caùc boä soá lieäu thöû nghieäm.
2.Thieát keá:
Thieát keá döõ lieäu:
+ Thieát keá caùc kieåu döõ lieäu.
+ Thieát keá döõ lieäu haèng.
+ Thieát keá döõ lieäu nhaäp.
+ Thieát keá döõ lieäu xuaát.
Thieát keá caùc haøm:
+ Sô ñoà haøm.
+ Ñaëc taû caùc haøm.
+ Löu ñoà caùc haøm chính.
3. Laäp trình:
- Phieân baûn khoâng kieåm tra raøng buoäc, khoâng chuù yù giao dieän.
- Phieân baûn coù kieåm tra raøng buoäc, khoâng chuù yù giao dieän.
- Phieân baûn coù kieåm tra raøng buoäc, coù chuù yù giao dieän.
4.Thöû nghieäm:
- Thöû nghieäm töøng haøm.
- Thöû nghieäm toaøn boä chöông trình.
IV.Phaân tích nhaäp xuaát:
- Nhaäp: söû duïng chuoät hoaëc baøn phieám nhaäp caùc giaù trò ñieän aùp coá ñònh hay caùc daïng soùng vaø caùc thoâng soá cuûa noù theo yeâu caàu ngöôøi duøng.
- Xuaát: cho ra caùc giaù trò nhò phaân 8 bit töông öùng vôùi caùc giaù trò ñieän aùp caàn xuaát theo caùc ñòa chæ ñöôïc choïn tröôùc.
V.Xaây döïng boä soá lieäu thöû nghieäm:
Soá thöù töï
Nhaäp
Xuaát
1
0 V
0000 0000
2
1.5 V
0000 1111
3
3.0 V
0001 1110
4
5.0 V
0011 0010
5
9.0 V
0101 1010
6
12 V
0111 1000
7
15 V
1001 0110
8
18 V
1011 0100
9
24 V
1111 0000
10
25.5 V
1111 1111
VI.Thieát keá döõ lieäu:
Döõ lieäu haèng:
STT
Teân
Kieåu
Giaù Trò
Ghi chuù
1
TRUE
Soá nguyeân
1
Haèng logic
2
FALSE
Soá nguyeân
0
Haèng logic
3
MAXSCENE
Soá nguyeân
5
Soá hình
4
INT_MOUSE
Soá Hexa
33
Ngaét 33
5
M_LEFT
Soá Hexa
01
Nuùt traùi chuoät
6
M_CHANGE
Soá Hexa
08
Traïng thaùi chuoät
7
ADD
Soá Hexa
307
Ñòa chæ
Döõ lieäu nhaäp:
STT
Teân
Kieåu
Raøng buoäc
Ghi chuù
1
dienap
Soá thöïc
0 £ dienap £ 25.5
Ñieän aùp
2
dienapmax
Soá thöïc
buocdienap £ dienapmax £25.5
Ñieän aùp max
3
buocdienap
Soá thöïc
0 £ buocdienap £ dienapmax
Böôùc ñieän aùp
4
tocdo
Soá thöïc
0.5 £ tocdo £ 25
Toác ñoä
5
dangsong
1 £ dangsong £ 6
Daïng soùng
Döõ lieäu xuaát:
STT
Teân
Kieåu
Raøng buoät
Ghi chuù
1
dienap
Soá Hexa
0h £ dienap £ FFh
Ñieän aùp
Caùc kieåu döõ lieäu:
STT
Teân
Moâ taû
Ghi chuù
1
Cn[10]
Maûng caùc chuoåi kyù töï
Caùc ñieän aùp chuaån
2
EVENT
Caáu truùc:
Msg,Posx,Posy: soá nguyeân
Thoâng tin veà chuoät
3
LPEVENT
Con troû troû ñeán kieåu EVENT
4
LPBYTE
Con troû kyù töï
VII.Thieát keá haøm:
Sô ñoà haøm:
CHÖÔNG TRÌNH CHÍNH
Giao dieän
Khôûi ñoäng cheá ñoä ñoà hoïa
Trôï giuùp
Khôûi ñoäng chuoät
Phaàn giôùi thieäu
Phaàn chính cuûa CT
Xuaát
Xöû lyù döõ lieäu nhaäp
Nhaäp giaù trò ñieän aùp hay daïng soùng
Maïch beân ngoaøi
Laáy döõ lieäu hoài tieáp vaø xöû lyù
Nhaäp baèng chuoät
Nhaäp baèng baøn phieám
Caùc daïng soùng
Giaù trò ñieän aùp leû
Caùc giaù trò ñ/a chuaån
Danh saùch caùc haøm:
Soá TT
Teân haøm
Kieåu traû veà
Tham trò
Tham bieán
1
InitGraph
2
LoadImage
Soá nguyeân
3
ShowImage
x,y, lpBuff, Forward
4
CreatANDMask
LpANDMask, lpData, FlagVal
5
CreatXORMask
LpXORMask, lpData, FlagVal
6
CreatBuffer
lpBuff, lpANDMask,
lpXORMask, lpBkImg
7
GetBkImage
LpBkImg,x,y, Width, Height
8
PutBkImage
LpBkImg,x,y, Width, Height
9
PutImage
Left, t Top, lpANDMask, lpXORMask, lpBkImg, lpBuff, Forward
10
Demo
11
My_bar
ax1,ax2,ay1,ay2, color
12
NutNoi
ax1,ax2,ay1, ay2, color
13
Window
a1, x2, y 1, y 2, *Title
14
Trang_bia
15
Gioi_Thieu
16
Trang_Help
17
Help
18
SetMouseRange
x1,x2,y1,y2
19
InitMouse
Soá nguyeân
20
ShowMouse
21
HideMouse
22
MouseRead
lpEvent
23
ResetEvent
lpEvent
24
GetEvent
LPEVENT
25
Release
Msg
26
GetKey
Soá nguyeân
27
Nut_Chim
ax1, ax2, ay1, ay2, color
28
ChonTuMouse
Soá nguyeân
x, y, dai, socot, ax, ay
29
Thuhep
*Title
30
Doi
so
31
Doi_1
so
32
Inchuoi
a[ ]
33
Inchuoi_1
a[ ]
34
Doi_tt
x, y
*mc, &chon
35
Doi_tt1
x1, x2, y 1, y 2, z, poly[ ], kieu
36
Doi_tt2
x1, x2, y 1, y 2, kieu
37
Doi_tt3
x1, x2, y 1, y 2, kieu,
38
NutTG1
x, y, canh, kieu
39
NutTG2
x, y, canh, kieu
40
Menu
socot, x, y
*mc, &chon
41
Giaodien
42
Doi_tt_Nut_Stop
43
Main
3. Ñaëc taû caùc haøm:
1. void InitGraph
Khôûi taïo cheá ñoä ñoà hoïa: haøm naøy seõ baùo loãi neáu nhö khoâng khôûi taïo ñöôïc cheá ñoä ñoà hoïa.
2. int LoadImage
Ñoïc caùc file .dat (chöùa döõ lieäu hình con meøo), neáu quaù trình ñoïc thaønh coâng haøm traû veà giaù trò TRUE, neáu khoâng seõ traû veà giaù trò FALSE.
3. void ShowImage
Xuaát hình con meøo.
4. void CreatANDMask
Taïo maët naï AND.
5. void CreatXORMask
Taïo maët naï XOR.
6. void CreatBuffer
Taïo vuøng ñeäm.
7. void GetBkImage
Laáy thoâng tin veà hình con meøo.
8. void PutBkImage
Xuaát caùc pixel.
void PutImage
Taïo vuøng ñeäm vaø xuaát hình con meøo.
void Demo(void)
Taïo hieäu öùng hoaït hình: laøm 2 con meøo chaïy qua laïi.
void my_bar
Taïo moät bar (thanh) rieâng vôùi maøu color.
void NutNoi
Taïo moät nuùt noåi vôùi maøu color vaø ñoä noåi z.
void Window
Taïo moät window, trong window coù doøng chöõ *Title.
void Trang_bia()
Xuaát caùc thoâng tin veà chöông trình.
void Gioi_Thieu()
Xuaát giôùi thieäu veà chöông trình.
Trang_Help()
Xuaát caùc thoâng tin höôùng daãn söû duïng chöông trình.
17. Help()
Xuaát phaàn höông daãn söû duïng chöông trình.
18. void SetMouseRange
Ñaët vuøng di chuyeån cho chuoät.
int InitMouse()
Khôûi ñoäng chuoät.
void ShowMouse(void)
Xuaát con troû chuoät.
void HideMouse(void)
Daáu con troû chuoät.
void MouseRead(LPEVENT lpEvent)
Ñoïc traïng thaùi chuoät.
void ResetEvent(LPEVENT lpEvent)
Ñaët laïi bieán coá chuoät.
GetEvent(void)
Laáy bieán coá chuoät: nuùt ñöôïc nhaán, toaï ñoä chuoät luùc nhaán.
void Release
Traû laïi traïng thaùi cuûa chuoät sau khi daáu.
int GetKey
Laáy maõ cuûa phím ñöôïc nhaán.
void Nut_Chim
Taïo nuùt chìm coù maøu color.
int ChonTuMouse
Traû veà soá thöù töï cuûa nuùt ñöôïc nhaán.
void thuhep
Thu heïp maøn hình ñoà hoïa, vaø thoaùt khoûi chöông trình.
30. void doi
Ñoåi soá ra chuoãi kyù töï ñeå xuaát ra maøn hình.
void doi_1
Ñoåi soá ra chuoåi kyù töï ñeå xuaát ra maøn hình.
32.void inchuoi
Xuaát chuoåi kyù töï a[ ] ra maøn hình.
33. void inchuoi_1
Xuaát chuoåi kyù töï a[ ] ra maøn hình vôùi toïa ñoä (y1, y2 , y3).
34. void doi_tt
Ñoåi traïng thaùi: töø nuùt noåi sang nuùt chìm, duøng cho caùc nuùt ñieän aùp chuaån.
void doi_tt1
Ñoåi traïng thaùi: töø nuùt noåi sang nuùt chìm, duøng cho caùc nuùt daïng soùng.
36. void doi_tt2
Ñoåi traïng thaùi: töø nuùt noåi sang nuùt chìm, duøng cho nuùt STOP.
void doi_tt3
Ñoåi traïng thaùi: töø nuùt noåi sang nuùt chìm, duøng cho nuùt GIA TRI.
void NutTG1
Taïo nuùt tam giaùc chæ thò giaûm.
39. void NutTG2
Taïo nuùt tam giaùc chæ thò taêng.
void menu
Taïo menu caùc nuùt ñieän aùp chuaån.
Traû veà giaù trò cuûa bieán choïn, xaùc ñònh nuùt naøo ñöôïc choïn.
41. void Giaodien()
Taïo giao dieän cho phaàn ñieàu khieån.
Doi_tt_Nut_Stop();
Ñoåi traïng thaùi töø nuùt noåi sang nuùt chìm, duøng cho nuùt Stop.
43. void main(void)
Haøm chính cuûa chöông trình, trong haøm naøy coù lôøi goïi tôùi taát caû caùc haøm treân, laø nôi xöû lyù chính cuûa chöông trình.
Löu ñoà thuaät toaùn cuûa caùc chöông trình chính:
Haøm main:
Begin
Khôûi ñoäng chuoät
Khôûi ñoäng cheá ñoä ñoà hoïa
Giôùi thieäu
Giao dieän cuûa phaàn ñieàu khieån
A
Xuaát caùc thoâng soá ban ñaàu
Menu (choïn )
T
Choïn = 0
- Xuaát 00
- Hoài tieáp
- Xöû lyù
F
- Xuaát 15
- Hoài tieáp
- Xöû lyù
Choïn = 1
- Xuaát 30
- Hoài tieáp
- Xöû lyù
Choïn = 2
- Xuaát 50
- Hoài tieáp
- Xöû lyù
Choïn = 3
- Xuaát 90
- Hoài tieáp
- Xöû lyù
Choïn = 4
Choïn = 5
- Xuaát 120
- Hoài tieáp
- Xöû lyù
- Xuaát 150
- Hoài tieáp
- Xöû lyù
Choïn = 6
- Xuaát 180
- Hoài tieáp
- Xöû lyù
Choïn = 7
Choïn = 8
- Xuaát 240
- Hoài tieáp
- Xöû lyù
- Xuaát 255
- Hoài tieáp
- Xöû lyù
Choïn = 9
Giaûm ñieän aùp
Choïn=11
Choïn=12
Taêng ñieän aùp
Choïn=13
Giaûm ñieän aùp max
Choïn=14
Taêng ñieän aùp max
Choïn=15
Giaûm böôùc ñieän aùp
Choïn=16
Taêng böôùc ñieän aùp
Giaûm toác ñoä
Choïn=17
Choïn=18
Taêng toác ñoä
Choïn=19
STOP (Ñieän aùp = 0)
Choïn=20
Xuaát daïng soùng 1
Choïn=21
Xuaát daïng soùng 2
Choïn=22
Xuaát daïng soùng 3
Choïn=23
Xuaát daïng soùng 4
Choïn=24
Xuaát daïng soùng 5
Choïn=25
Xuaát daïng soùng 6
Nuùt giaù trò
Choïn=26
Choïn=27
Nuùt Trôï giuùp
Nuùt Thoaùt ôû goùc treân traùi maøn hình
Choïn=28
Choïn=29
Nuùt THOAT
Choïn=30
Phím thoaùt ESC
A
True
End
Haøm menu:
Begin
Veõ caùc nuùt ñieän aùp chuaån
A
Laáy bieán coá chuoät
Chuoät coù di chuyeån
Laáy soá thöù töï cuûa nuùt chuoät troû tôùi
Veõ khung chöõ nhaät di chuyeån theo chuoät.
Nuùt traùi chuoät ñöôïc nhaán
Xeùt nuùt naøo ñöôïc nhaán vaø traû veà soá thöù töï cuûa nuùt ñöôïc nhaán
Phím ñöôïc nhaán
Laáy maõ soá cuûa phím ñöôïc nhaán
Phím ¬
choïn=choïn -1
Phím ®
choïn=choïn +1
Phím ñöôïc nhaán khaùc phím Enter, ESC
A
Phím ESC ñöôïc nhaán
choïn=30
End
(Phaàn chöông trình cuï theå xin xem ôû phaàn phuï luïc)
ê Thöû Nghieäm:
Sau khi duøng boä soá lieäu thöû nghieäm trong chöông Phaân Tích, vaø caùc thöû nghieäm khaùc veà daïng soùng, caùc giaù trò ñieän aùp leû, chöùc naêng cuûa caùc nuùt, thì nhaän thaáy keát quaû raát toát ñuùng nhö muïc tieâu thieát keá ñaët ra ban ñaàu.
Höôùng daãn söû duïng chöông trình:
Caùch chaïy chöông trình:
CoÙ 3 caùch chaïy chöông trình:
- Caùch 1: vaøo RUN cuûa Window, ñaùnh teân chöông trình vaøo vôùi ñuoâi file laø .EXE, cuï theå nhö sau: LVTN.EXE. Sau ñoù nhaán phím Enter ñeå chaïy chöông trình.
- Caùch 2: vaøo NC file LVTN.EXE, di chuyeån veät saùng tôùi file naøy vaø nhaán Enter.
- Caùch 3: vaøo Explorer tìm file LVTN, duøng chuoät troû vaøo file LVTN nhaán 2 laàn lieân tuïc.
Sau khi ñaõ vaøo ñöôïc chöông trình ta seõ thaáy phaàn giôùi thieäu veà Luaän Vaên, sau ñoù ñeå vaøo phaàn chính cuûa chöông trình, töùc laø phaàn ñieàu khieån boä nguoàn, ta nhaán 1 phím baát kyø.
Khi ñoù ta seõ thaáy chöông trình coù phaàn giao dieän nhö sau:
(chuïp hình daùn voâ, hoaëc scan hình vaøo)
Caùch söû duïng phaàn ñieàu khieån:
Caùc giaù trò ñieän aùp chuaån:
Muoán xuaát caùc caùc trò trong phaàn ñieän aùp chuaån ta chæ caàn duøng phím muõi teân di chuyeån khung saùng tôùi giaù trò muoán xuaát vaø nhaán Enter, hoaëc ta cuõng coù theå söû duïng chuoät troû vaøo giaù trò muoán xuaát vaø aán nuùt traùi chuoät.
Caùc giaù trò ñieän aùp leû:
Muoán xuaát caùc giaù trò ñieän aùp leû ( ví duï 0.4 V ) ta laøm nhö sau:
+ Duøng chuoät chæ vaøo nuùt tam giaùc coù muõi teân höôùng leân vaø baám nuùt traùi chuoät cho ñeán khi giaù trò ñieän aùp trong oâ giaù trò ñaït tôùi giaù trò mong muoán.
+ Duøng chuoät chæ vaøo nuùt giaù trò vaø aán nuùt traùi chuoät thì giaù trò ñieän aùp ñöôïc xuaát ra ngoaøi.
Laøm töông töï cho nuùt tam giaùc coù muõi teân höôùng xuoáng.
c. Ngoaøi caùc ñieän aùp DC, trong chöông trình coøn taïo ra caùc daïng soùng ñieän aùp baèng caùch keát hôïp caùc ñieän aùp DC vôùi caùc giaù trò vaø thôøi gian toàn taïi ôû möùc giaù trò ñoù do ngöôøi söû duïng ñaët tröôùc.
Daïng soùng 1:
Laø daïng soùng vuoâng vôùi giaù trò ôû möùc [1] laø giaù trò ñöôïc thieát laäp trong oâ ñieän aùp max vaø thôøi gian toàn taïi ôû möùc [1] cuõng nhö thôøi gian toàn taïi ôû möùc [0] ñöôïc thieát laäp trong oâ Toác ñoä. Caùch ñaët caùc giaù trò vaøo 2 oâ ñieän aùp max vaø Toác ñoä cuõng duøng chuoät chæ vaøo caùc nuùt tam giaùc nhö treân. Daïng soùng vuoâng treân seõ hoaït ñoäng laëp laïi cho ñeán khi ta nhaán nuùt STOP.
Daïng soùng 2:
Laø daïng naác thang vôùi ñieän aùp taêng daàn töø giaù trò min laø 0V tôùi giaù trò max laø giaù trò trong oâ ñieän aùp max, khoaûng caùch giöõa 2 laàn keá tieáp laø giaù trò ñöôïc thieát laäp trong oâ Böôùc ñieän aùp vaø thôøi gian ñeå giaù trò ñieän aùp thay ñoåi laø khoaûng thôøi gian ñöôïc thieát laäp trong oâ Toác ñoä.
Daïng soùng 3:
Laø daïng naát thang vôùi ñieän aùp giaûm daàn töø giaù trò max laø giaù trò trong oâ ñieän aùp max tôùi 0V, khoaûng caùch giöõa 2 laàn keá tieáp laø giaù trò ñöôïc thieát laäp trong oâ Böôùc ñieän aùp vaø thôøi gian ñeå giaù trò ñieän aùp thay ñoåi laø khoaûng thôøi gian ñöôïc thieát laäp trong oâ Toác ñoä.
Daïng soùng 4:
Laø daïng soùng naác thang vôùi ñieän aùp taêng daàn nhö daïng soùng 2 vaø sau ñoù giaûm daàn nhö daïng soùng 3, vieäc taêng giaûm ñoù cöù laëp laïi hoaøi cho ñeán khi nuùt STOP ñöôïc nhaán.
Daïng soùng 5:
Laø daïng soùng naát thang gioáng nhö daïng soùng 2 nhöng ñöôïc laäp laïi hoaøi cho ñeán khi nuùt STOP ñöôïc nhaán.
Daïng soùng 6:
Laø daïng soùng naát thang gioáng nhö daïng soùng 3 nhöng ñöôïc laäp laïi hoaøi cho ñeán khi nuùt STOP ñöôïc nhaán.
Chöùc naêng cuûa caùc nuùt khaùc:
Nuùt Stop: khi nhaán vaøo noù thì laøm cho caùc ñieän aùp coù daïng soùng 1, 4, 5, 6 ngöøng hoaït ñoäng vaø ñaët ñieän aùp ngoõ ra = 0V.
Nuùt Thoaùt: khi nhaán vaøo noù thì seõ thoaùt khoûi chöông trình, ngoaøi ra ta coøn coù theå thoaùt khoûi chöông trình baèng nuùt vuoâng ôû treân goùc traùi phía treân maøn hình hay phím ESC treân baøn phím.
Nuùt Trôï Giuùp: khi nhaán vaøo noù thì seõ xuaát hieän phaàn höôùng daãn söû duïng chöông trình.
PHAÀN F: PHUÏ LUÏC
I. CHÖÔNG TRÌNH ÑIEÀU KHIEÅN BOÄ NGUOÀN
#include
#include
#include
#include
#include
#include
#include
#include
#define TRUE 1
#define FALSE 0
#define MAXSCENE 5 // scene : hình.
#define INT_MOUSE 0x33 // ngaét 33.
#define M_LEFT 0x01 // nuùt traùi chuoät.
#define M_RIGHT 0x02 // nuùt phaûi chuoät.
#define M_CENTER 0x04 // nuùt giöõa chuoät.
#define M_CHANGE 0x08 // chuoät thay ñoåi traïng thaùi.
#define ADD 0x307 // ñòa chæ.
float dienap=0, dienapmax=0.1, buocdienap=0.1, tocdo=0.5;
int MaxX,MaxY,MaxColors;
int H_SIZE=18; // chieàu cao cuûa moät kyù töï bình thöôøng (18 pixel)
int W_CHAR=8; // chieàu roäng cuûa moät kyù töï bình thöôøng (8 pixel)
int H_LINE=10; // khoaûng caùch giöõa 2 doøng (10 pixel)
char chuoi[10],chuoi1[10];
typedef char far *string;
string cn[10] = {" Min "," 1.5V "," 3V "," 5V "," 9V "
," 12V "," 15V "," 18V "," 24V "," Max "};
typedef struct tagEVENT{
int Msg;
int Posx, Posy; // toïa ñoä xaõy ra bieán coá chuoät.
} EVENT;
typedef EVENT far *LPEVENT;
LPEVENT lpEvent;
void InitGraph(void)
{
int gdrive= DETECT, gmode, errorcode;
initgraph(&gdrive,&gmode,"");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("\n Chua khoi tao che do DO HOA : %s\n",
grapherrormsg(errorcode));
printf("Nhan nut bat ky de dung...");
getch();
exit(1);
}
MaxX=getmaxx();
MaxY=getmaxy();
MaxColors=getmaxcolor()+1;
}
typedef unsigned char far *LPBYTE;
int LoadImage(char *szFName, LPBYTE &lpBuff)
// load hình con meøo (caùc file .dat)
{
FILE *f;
int Width, Height, Ntemp;
f = fopen(szFName, "rb");
if(f==NULL) return FALSE;
fread(&Width, 1, sizeof(int), f);
fread(&Height, 1, sizeof(int), f);
lpBuff = (LPBYTE)farmalloc(Width*Height+4);
if(lpBuff == NULL) return FALSE;
LPBYTE lpTemp = lpBuff+4;
*(int *)(&lpBuff[0]) = Width;
*(int *)(&lpBuff[2]) = Height;
for(int i=0; i<Height; i++)
for(int j=0; j<Width; j++)
{
fread(&Ntemp, 1, 1, f);
_fmemcpy(&lpTemp[i*Width+j],&Ntemp,1);
}
fclose(f);
return TRUE;
}
void ShowImage(int x, int y, LPBYTE lpBuff,int Forward)
{
int Width, Height;
LPBYTE lpTemp = lpBuff+4;
Width = *(int *)(&lpBuff[0]);
Height= *(int *)(&lpBuff[2]);
for(int i=0; i<Height; i++)
for(int j=0; j<Width; j++)
{
if (Forward)
putpixel(x+j, y+i, lpTemp[i*Width+j]);
else
putpixel(x+j, y+i, lpTemp[i*Width+(Width-j)]);
}
}
void CreatANDMask(LPBYTE lpANDMask, LPBYTE lpData, int FlagVal)
{
int Width, Height;
LPBYTE lpTemp
Width = *(int *)(&lpData[0]);
Height= *(int *)(&lpData[2]);
_fmemcpy(lpANDMask, lpData, Width*Height+4);
lpTemp = lpANDMask+4;
for(int i=0; i<Height; i++)
for(int j=0; j<Width; j++)
if(lpTemp[i*Width+j] == FlagVal)
lpTemp[i*Width+j] = 0xFF;
else
lpTemp[i*Width+j] = 0;
}
void CreatXORMask(LPBYTE lpXORMask, LPBYTE lpData, int FlagVal)
{
int Width, Height;
LPBYTE lpTemp;
Width = *(int *)(&lpData[0]);
Height= *(int *)(&lpData[2]);
_fmemcpy(lpXORMask, lpData, Width*Height+4);
lpTemp = lpXORMask+4;
for(int i=0; i<Height; i++)
for(int j=0; j<Width; j++)
if(lpTemp[i*Width+j] == FlagVal)
lpTemp[i*Width+j] = 0;
}
void CreatBuffer(LPBYTE lpBuff, LPBYTE lpANDMask,
LPBYTE lpXORMask, LPBYTE lpBkImg)
{
int Width, Height;
LPBYTE lpTemp;
Width = *(int *)(&lpBuff[0]);
Height= *(int *)(&lpBuff[2]);
_fmemcpy(lpBuff, lpANDMask, Width*Height+4);
lpTemp = lpBuff+4;
for(int i=0; i<Height; i++)
for(int j=0; j<Width; j++)
{
lpTemp[i*Width+j] &= lpBkImg[4+i*Width+j];
lpTemp[i*Width+j] ^= lpXORMask[4+i*Width+j];
}
}
void GetBkImage(LPBYTE lpBkImg, int x, int y, int Width, int Height)
{
LPBYTE lpTemp;
*(int *)(&lpBkImg[0]) = Width;
*(int *)(&lpBkImg[2]) = Height;
lpTemp = lpBkImg+4;
for(int i=0; i<Height; i++)
for(int j=0; j<Width; j++)
lpTemp[i*Width+j] = getpixel(x+j, y+i);
}
void PutBkImage(LPBYTE lpBkImg,int x,int y,int Width,int Height)
{
LPBYTE lpTemp;
*(int *)(&lpBkImg[0]) = Width;
*(int *)(&lpBkImg[2]) = Height;
lpTemp = lpBkImg+4;
for(int i=0; i<Height; i++)
for(int j=0; j<Width; j++)
putpixel(x+j,y+i,lpTemp[i*Width+j]);
}
void PutImage(int Left, int Top,LPBYTE lpANDMask,LPBYTE lpXORMask, LPBYTE lpBkImg, LPBYTE lpBuff,int Forward)
{
CreatBuffer(lpBuff, lpANDMask, lpXORMask, lpBkImg);
ShowImage(Left, Top, lpBuff, Forward);
}
void Demo(void)
{
int Width, Height;
int Maxx=getmaxx();
LPBYTE lpCat[10], lpCatANDMask[10], lpCatXORMask[10],
lpBkImg, lpBuff;
char szFName[80];
for(int i=1; i<=MAXSCENE; i++)
{
sprintf(szFName, "CAT%d.DAT", i);
if (!LoadImage(szFName, lpCat[i])) return;
Width = *(int *)(&lpCat[i][0]);
Height= *(int *)(&lpCat[i][2]);
lpCatANDMask[i] = (LPBYTE)farmalloc(Width*Height+4);
if (lpCatANDMask[i]==NULL) return;
lpCatXORMask[i] = (LPBYTE)farmalloc(Width*Height+4);
if (lpCatXORMask[i]==NULL) return;
CreatANDMask(lpCatANDMask[i], lpCat[i], 4);
CreatXORMask(lpCatXORMask[i], lpCat[i], 4);
}
lpBkImg = (LPBYTE)farmalloc(Width*Height+4);
if (lpBkImg==NULL) return;
lpBuff = (LPBYTE)farmalloc(Width*Height+4);
if (lpBuff==NULL) return;
int k = 10, l = Maxx-100;
int Forward=1;
GetBkImage(lpBkImg, 50, 360, Width, Height);
do{
for(i=1; i<=MAXSCENE; i++)
{
PutImage(k, 393, lpCatANDMask[i], lpCatXORMask[i],
lpBkImg, lpBuff,Forward);
PutImage(l, 393, lpCatANDMask[i], lpCatXORMask[i],
lpBkImg, lpBuff,!Forward);
delay(100);
// Neáu muoán meøo chaïy nhanh hôn ta giaûm giaù trò trong haøm Delay().
if (Forward)
{
k+=8;
l-=8;
}
else
{
k-=8;
l+=8;
}
if(k>(Maxx-158)/2)
Forward=0;
else if (k<=10)
Forward=1;
}
} while(!kbhit());
}
void my_bar(int ax1,int ay1,int ax2,int ay2,int color)
{
setfillstyle(1,color);
bar(ax1,ay1,ax2,ay2);
}
void NutNoi(int ax1,int ay1,int ax2,int ay2, int color, int z)
{
my_bar(ax1,ay1,ax2,ay2,color);
setcolor(15);
for (int i=1;i<z;i++)
{
line(ax1+i,ay1+i,ax2-i,ay1+i);
line(ax1+i,ay1+i,ax1+i,ay2-i);
}
setcolor(8);
for (i=1;i<z;i++)
{
line(ax1+i,ay2-i,ax2-i,ay2-i);
line(ax2-i,ay1+i,ax2-i,ay2-i);
}
setcolor(0);
rectangle(ax1,ay1,ax2,ay2);
}
void Window(int x1,int y1,int x2,int y2,char *Title)
{
int maucu=getcolor();
int ax=x1+(x2-x1+1-W_CHAR*strlen(Title))/2+1;
int ay=y1+7;
my_bar(x1,y1,x2,y2,7);
my_bar(x1,y1,x1+H_SIZE,y1+H_SIZE,7);
my_bar(x1+H_SIZE+1,y1,x2,y1+H_SIZE,1);
setcolor(14);
outtextxy(ax,ay,Title);
setcolor(15);
line(x1,y1+H_SIZE+1,x2,y1+H_SIZE+1);
setcolor(0);
line(x1,y1+H_SIZE+2,x2,y1+H_SIZE+2);
setcolor(0);
rectangle(x1+H_SIZE/2-5,y1+H_SIZE/2- 1,x1+H_SIZE/2+5,y1+H_SIZE/2+1);
line(x1+H_SIZE,y1,x1+H_SIZE,y1+H_SIZE);
rectangle(x1,y1,x2,y2);
setcolor(maucu);
}
void Trang_bia()
{
setfillstyle(SOLID_FILL, CYAN);
NutNoi(6,46,632,452,3,4);
rectangle(2,43,640-4,480-3);
rectangle(5,46,640-7,480-6);
setcolor(YELLOW);
outtextxy(180,54," BO GIAO DUC VA DAO TAO");
outtextxy(180,64," TRUONG DAI HOC SU PHAM KY THUAT");
outtextxy(180,84," KHOA DIEN - BO MON DIEN TU ");
outtextxy(180,104," ---oOo---");
outtextxy(55,127,"LUAN VAN TOT NGHIEP");
outtextxy(54,170,"DE TAI: ");
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
setcolor(BLACK);
outtextxy(13,170," THIET KE VA THI CONG CARD ");
outtextxy(13,203," GIAO TIEP MAY TINH UNG DUNG ");
outtextxy(13,236," DIEU KHIEN BO NGUON");
setcolor(WHITE);
outtextxy(10,165," THIET KE VA THI CONG CARD ");
outtextxy(10,198," GIAO TIEP MAY TINH UNG DUNG ");
outtextxy(10,231," DIEU KHIEN BO NGUON");
setcolor(BLACK);
outtextxy(358,300,"Le Viet Phu");
outtextxy(358,330,"Nguyen Lam Vu");
outtextxy(358,360,"Nguyen Minh Tuan");
setcolor(WHITE);
outtextxy(355,295,"Le Viet Phu");
outtextxy(355,325,"Nguyen Lam Vu");
outtextxy(355,355,"Nguyen Minh Tuan");
setcolor(YELLOW);
settextstyle(DEFAULT_FONT,0,1);
outtextxy(130,302," GIAO VIEN HUONG DAN:");
outtextxy(130,330," SINH VIEN THUC HIEN:");
outtextxy(130,385,"TP HO CHI MINH - THANG 3 - NAM 2000");
}
void Gioi_Thieu()
{
int Maxx=getmaxx();
int Maxy=getmaxy();
rectangle(0,0,Maxx,Maxy);
Window(0,0,Maxx,Maxy,"CHUONG TRINH DIEU KHIEN BO NGUON ");
Trang_bia();
NutNoi(6,455,634,475,3,3);
setcolor(YELLOW);
outtextxy(170,462,"Hay nhan phim bat ky de bat dau...");
Demo(); // Haøm chaïy con meøo
getch();
}
void Trang_Help()
{
setfillstyle(SOLID_FILL, CYAN);
NutNoi(6,23,632,452,3,3);
rectangle(2,20,640-4,480-3);
rectangle(5,23,640-7,480-6);
setcolor(14);
outtextxy(20,45," 1. Cac gia tri dien ap chuan: ");
setcolor(15);
outtextxy(10,63,"- Dung phim ® hay ¬ de di chuyen khung sang toi gia tri muon xuat va an Enter.");
outtextxy(10,81,"- Dung chuot tro vao gia tri muon xuat va bam nut trai chuot. ");
setcolor(14);
outtextxy(20,99," 2. Cac gia tri dien ap le: ");
setcolor(15);
outtextxy(10,117,"- Dung chuot tro vao 2 nut tam giac va bam nut trai chuot cho den khi dat gia");
outtextxy(10,135,"tri muon xuat. Sau do dung chuot tro vao nut GIA TRI va bam nut trai chuot.");
setcolor(14);
outtextxy(20,153," 3. Cac nut dang song: ");
setcolor(15);
outtextxy(20,171," a. Dang song 1 (nut thu 6): la dang song vuong, voi muc [1] = DIEN AP MAX,");
outtextxy(10,189,"thoi gian o muc [1] = thoi gian o muc [0] = TOC DO ");
outtextxy(20,207," b. Dang song 2 (nut thu 4): la dang song nat thang, voi dien ap tang dan:");
outtextxy(10,225,"tu 0V ö DIEN AP MAX, moi lan tang mot BUOC DIEN AP, thoi gian tang = TOC DO.");
outtextxy(20,243," c. Dang song 3 (nut thu 5): la dang song nat thang, voi dien ap giam dan:");
outtextxy(10,261,"tu DIEN AP MAX ö 0V, moi lan giam mot BUOC DIEN AP, thoi gian giam = TOC DO.");
outtextxy(20,279," d. Dang song 4 (nut thu 2): la su ket hop cua dang song 2 va 3.");
outtextxy(20,297," e. Dang song 5 (nut thu 1): giong dang song 2 nhung duoc lap lai nhieu lan.");
outtextxy(20,315," f. Dang song 6 (nut thu 3): giong dang song 3 nhung duoc lap lai nhieu lan.");
setcolor(14);
outtextxy(20,333," 4. Chuc nang cac nut khac: ");
setcolor(15);
outtextxy(10,351,"- Nut STOP: lam dung cua cac dang song 1,4,5,6 va dat dien ap = 0V. ");
outtextxy(10,369,"- Nut TRO GIUP: la phan huong dan su dung chuong trinh.");
outtextxy(10,387,"- Nut THOAT: de thoat khoi chuong trinh. ");
outtextxy(10,405,"- Ngoai ra chung ta co the thoat khoi chuong trinh bang nut hinh vuong o goc ");
outtextxy(10,423,"trai tren dinh cua man hinh, hay phim ESC tren ban phim. ");
}
void Help()
{
int Maxx=getmaxx();
int Maxy=getmaxy();
rectangle(0,0,Maxx,Maxy);
Window(0,0,Maxx,Maxy," HUONG DAN SU DUNG CHUONG TRINH ");
Trang_Help();
NutNoi(6,455,634,475,3,3);
setcolor(YELLOW);
outtextxy(20,462," Hay nhan phim bat ky de tro lai phan dieu khien ...");
getch();
}
void SetMouseRange(int x1,int y1,int x2,int y2)
// ñaët vuøng di chuyeån cho chuoät
{
_AX = 0x07;
_CX = x1;
_DX = y1;
geninterrupt(INT_MOUSE);
_AX = 0x08;
_CX = x2;
_DX = y2;
geninterrupt(INT_MOUSE);
}
int InitMouse()
// Khôûi ñoäng chuoät
{
int ax;
_AX = 0;
geninterrupt(INT_MOUSE);
ax = _AX;
if (ax == 0) return FALSE;
SetMouseRange(0,0,MaxX,MaxY);
return TRUE;
}
void ShowMouse(void)
// Hieån thò chuoät
{
_AX = 1;
geninterrupt(INT_MOUSE);
}
void HideMouse(void)
// Daáu chuoät
{
_AX = 2;
geninterrupt(INT_MOUSE);
}
void MouseRead(LPEVENT lpEvent)
// Traû veà bieán coá nhaän ñöôïc töø chuoät : Nuùt traùi hay phaûi ñöôïc baám
{
int bx,cx,dx;
_AX = 3;
geninterrupt(INT_MOUSE);
bx = _BX;
lpEvent->Msg = bx;
lpEvent->Posx = _CX;
lpEvent->Posy = _DX;
}
void ResetEvent(LPEVENT lpEvent)
// ñaët laïi bieán coá chuoät
{
lpEvent->Msg = 0;
lpEvent->Posx = lpEvent->Posy = 0;
}
EVENT PrevEvent, CurEvent; // Bieán coá tröôùc , Bieán coá hieän haønh.
LPEVENT GetEvent(void) // Haøm laáy bieán coá chuoät
{
ResetEvent(&CurEvent);
MouseRead(&CurEvent);
CurEvent.Posx = CurEvent.Posx;
CurEvent.Posy = CurEvent.Posy;
// xeùt traïng thaùi chuoät coù thay ñoåi hay khoâng
if((CurEvent.Posx!=PrevEvent.Posx)&&
(CurEvent.Posy!=PrevEvent.Posy))
CurEvent.Msg |= M_CHANGE;
PrevEvent = CurEvent;
return (&CurEvent);
}
void Release(int Msg)
// traû laïi traïng thaùi ( vò trí ) cuûa chuoät sau khi daáu.
{
while(GetEvent()->Msg & Msg);
}
int GetKey(void)
{
int ch;
ch = getch();
if (ch == 0) ch = getch() | 0x80;
return ch;
}
void Nut_Chim(int ax1,int ay1,int ax2,int ay2,int color)
{
my_bar(ax1,ay1,ax2,ay2,color);
setcolor(7);
for (int i=1;i<3;i++)
{
line(ax1+i+1,ay1+i,ax2-i,ay1+i);
line(ax1+i,ay1+i+1,ax1+i,ay2-i);
}
setcolor(15);
for (i=1;i<3;i++)
{
line(ax1+i,ay2-i,ax2-i-1,ay2-i);
line(ax2-i,ay1+i,ax2-i,ay2-i-1);
}
setcolor(0);
rectangle(ax1,ay1,ax2,ay2);
}
int ChonTuMouse(int x,int y,int dai,int socot,int ax,int ay)
{
for (int i=0;i<socot;i++)
{
if ((ax>=(x+dai*i)*W_CHAR)&&(ax<=(x+6+dai*i)*W_CHAR)&&
(ay>=(y-1)*W_CHAR)&&(ay<=(y+2)*W_CHAR) )
return i;
}
if ((ax>=80) &&(ax=160)&&(ay<=190)) return 11;
if ((ax>=150)&&(ax=160)&&(ay<=190)) return 12;
if ((ax>=450)&&(ax=310)&&(ay<=340)) return 13;
if ((ax>=490)&&(ax=310)&&(ay<=340)) return 14;
if ((ax>=450)&&(ax=360)&&(ay<=390)) return 15;
if ((ax>=490)&&(ax=360)&&(ay<=390)) return 16;
if ((ax>=450)&&(ax=410)&&(ay<=440)) return 17;
if ((ax>=490)&&(ax=410)&&(ay<=440)) return 18;
if ((ax>=355)&&(ax=310)&&(ay<=440)) return 19;
if ((ax>= 25)&&(ax=310)&&(ay<=370)) return 20;
if ((ax>=135)&&(ax=310)&&(ay<=370)) return 21;
if ((ax>=245)&&(ax=310)&&(ay<=370)) return 22;
if ((ax>= 25)&&(ax=380)&&(ay<=440)) return 23;
if ((ax>=135)&&(ax=380)&&(ay<=440)) return 24;
if ((ax>=245)&&(ax=380)&&(ay<=440)) return 25;
if ((ax>=250)&&(ax=140)&&(ay<=190)) return 26;
if ((ax>=550)&&(ax=455)&&(ay<=477)) return 27;
if ((ax>= 00)&&(ax= 00)&&(ay<= 20)) return 28;
if ((ax>=518)&&(ax= 85)&&(ay<=110)) return 29;
if ((ax>=420)&&(ax=455)&&(ay<=477)) return 30;
return -1;
}
void thuhep(char *Title)
{
int i,midx,midy;
for (i=0;i<10;i++)
{
cleardevice();
Window(0+i*32,0+i*24,MaxX-i*32,MaxY-i*24,Title);
delay(100);
}
}
void doi(float so)
{
sprintf(chuoi,"%2.1f%s",so,"V");
}
void doi_1(float so)
{
sprintf(chuoi,"%2.1f",so);
}
void inchuoi(char a[])
{
settextstyle(DEFAULT_FONT,HORIZ_DIR,3);
Nut_Chim(425,140,570,190,7);
setcolor(14);
outtextxy(445,155,a);
settextstyle(0,0,1);
}
void inchuoi_1(char a[], int y1, int y2, int y3)
{
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
Nut_Chim(550,y2,620,y3,7);
setcolor(14);
outtextxy(553,y1,a);
settextstyle(0,0,1);
}
void doi_tt(string *mc,int x, int y,int &chon)
// ñoåi traïng thaùi: töø nuùt noåi sang nuùt chìm, duøng cho caùc nuùt ñieän aùp chuaån.
{
int dai=7;
doi(dienap);
Nut_Chim((x+dai*chon)*W_CHAR,(y1)*W_CHAR,(x+6+dai*chon)
*W_CHAR,(y+2)*W_CHAR,7);
setcolor(14);
rectangle((x+dai*chon)*W_CHAR+6,(y-1)*W_CHAR+6,
(x+6+dai*chon)*W_CHAR-4,(y+2)*W_CHAR-4);
outtextxy((x+dai*chon)*W_CHAR+3,y*W_CHAR+1,mc[chon]);
inchuoi(chuoi);
delay(200);
NutNoi((x+dai*chon)*W_CHAR,(y-1)*W_CHAR,
(x+6+dai*chon)*W_CHAR,(y+2)*W_CHAR,7,3);
rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5,
(x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5);
outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]);
}
void doi_tt1( int x1, int y1,int x2, int y2 ,
int z, int poly[], int kieu)
// ñoåi traïng thaùi: töø nuùt noåi sang nuùt chìm, duøng cho caùc nuùt daïng soùng.
{
if (kieu==1)
{
NutNoi(x1,y1,x2,y2,7,3);
my_bar(x1+5,y1+5,x2-5,y2-5,9);
setcolor(14);
drawpoly(z,poly);
}
else
{
Nut_Chim(x1,y1,x2,y2,7);
my_bar(x1+6,y1+6,x2-4,y2-4,9);
setcolor(14);
drawpoly(z,poly);
}
}
void doi_tt2(int x1,int y1,int x2,int y2, int kieu)
// duøng cho nuùt STOP.
{
if (kieu==1)
NutNoi(x1,y1,x2,y2,7,3);
else
Nut_Chim(x1,y1,x2,y2,7);
}
void doi_tt3(int x1,int y1,int x2,int y2, int kieu)
// duøng cho nuùt GIA TRI.
{
int poly7[]={265,165,325,165,325,160,335,170,325,
180,325,175,265,175,275,170,265,165};
int poly7_7[]={266,166,326,166,326,161,336,171,326,
181,326,176,266,176,276,171,266,166};
if (kieu==1)
{
NutNoi(x1,y1,x2,y2,7,3);
drawpoly(9,poly7);
setcolor(BLACK);
setfillstyle(1,YELLOW);
drawpoly(9,poly7);
floodfill(300,168,BLACK);
outtextxy(34*W_CHAR,8*H_SIZE+2,"GIA TRI");
}
else
{
Nut_Chim(x1,y1,x2,y2,7);
drawpoly(9,poly7_7);
setcolor(BLACK);
setfillstyle(1,YELLOW);
drawpoly(9,poly7_7);
floodfill(300,168,BLACK);
outtextxy(34*W_CHAR+1,8*H_SIZE+3,"GIA TRI");
}
}
void NutTG1(int x,int y,int canh,int kieu)
{
int g=canh/2; // g=giöõa
if (kieu==1)
{
int poly8[]={x+g-4,y+g-4,x+g+4,y+g-4,x+g,
y+g+4,x+g-4,y+g-4};
NutNoi(x,y,x+canh,y+canh,7,3);
setcolor(BLACK);
setfillstyle(1,14);
drawpoly(4,poly8);
floodfill(x+g,y+g,BLACK);
}
else
{
int poly8[]={x+g-3,y+g-3,x+g+5,y+g-3,x+g+1,
y+g+5,x+g-3,y+g-3};
Nut_Chim(x,y,x+canh,y+canh,7);
setcolor(BLACK);
setfillstyle(1,14);
drawpoly(4,poly8);
floodfill(x+g,y+g,BLACK);
}
}
void NutTG2(int x,int y,int canh,int kieu)
{
int g=canh/2; // g=giöõa
if (kieu==1)
{
int poly8[]={x+g,y+g-4,x+g+4,y+g+4,x+g-4,
y+g+4,x+g,y+g-4};
NutNoi(x,y,x+canh,y+canh,7,3);
setcolor(BLACK);
setfillstyle(1,14);
drawpoly(4,poly8);
floodfill(x+g,y+g,BLACK);
}
else
{
int poly8[]={x+g+1,y+g-3,x+g+5,y+g+5,x+g-3,
y+g+5,x+g+1,y+g-3};
Nut_Chim(x,y,x+canh,y+canh,7);
setcolor(BLACK);
setfillstyle(1,14);
drawpoly(4,poly8);
floodfill(x+g,y+g,BLACK);
}
}
void menu(string *mc,int socot,int x,int y,int &chon)
{
int i,j,ch,dai=7;
setcolor(0);
for (i=0;i<socot;i++)
{
NutNoi((x+dai*i)*W_CHAR,(y-1)*W_CHAR,
(x+6+dai*i)*W_CHAR,(y+2)*W_CHAR,7,3);
setcolor(0);
outtextxy((x+dai*i)*W_CHAR+2,y*W_CHAR,mc[i]);
}
setcolor(14);
rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5,
(x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5);
outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]);
int MouseChon=-1;
do
{
ShowMouse();
lpEvent = GetEvent();
if (lpEvent->Msg==M_CHANGE)
{
MouseChon=ChonTuMouse(x,y,dai,socot,
lpEvent->Posx,lpEvent->Posy);
if ((MouseChon>=0) && (chon!=MouseChon))
{
HideMouse();
NutNoi((x+dai*chon)*W_CHAR,(y-1)*W_CHAR,
(x+6+dai*chon)*W_CHAR,(y+2)*W_CHAR,7,3);
outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]);
chon=MouseChon;
setcolor(14);
rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5,
(x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5);
outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]);
}
}
if (lpEvent->Msg==M_LEFT)
{
MouseChon=ChonTuMouse(x,y,dai,socot,
lpEvent->Posx,lpEvent->Posy);
if (MouseChon>=0)
{
HideMouse();
Release(M_LEFT);
chon=MouseChon;
return;
}
}
if (kbhit())
{
HideMouse();
ch=getch();
if (ch==0) ch=getch();
switch (ch)
{
case 75: // phím ¬
{
setcolor(7);
rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5,
(x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5);
setcolor(0);
outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]);
if (chon==0) chon=socot-1;
else chon=chon-1;
setcolor(14);
rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5,
(x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5);
outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]);
break;
}
case 77: // phím ®
{
setcolor(7);
rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5,
(x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5);
setcolor(0);
outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]);
if (chon==socot-1) chon=0;
else chon=chon+1;
setcolor(14);
rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5,
(x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5);
outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]);
break;
}
}
ShowMouse();
}
} while ((ch!=27)&&(ch!=13));
if (ch==27) chon=31;
}
void Giaodien()
{
setviewport(0,0,MaxX,MaxY,1);
Window(0,0,MaxX,MaxY,"LUAN VAN TOT NGHIEP _ KHOA :
1995 - 2000 _ LOP : 95KDD ");
setcolor(0);
line(0,2*H_SIZE+1,MaxX,2*H_SIZE+1);
setcolor(7);
rectangle(0,0,MaxX,MaxY);
setcolor(14);
outtextxy(1*W_CHAR+5,26*H_SIZE-7,"KHOA DIEN –
DAI HOC SU PHAM KY THUAT ");
NutNoi(10,50,630,120,7,4);
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
setcolor(0);
outtextxy(65,66,"CHUONG TRINH DIEU KHIEN BO NGUON");
outtextxy(187,91,"(0 - 25.5V / 2A)");
setcolor(15);
outtextxy(62,63,"CHUONG TRINH DIEU KHIEN BO NGUON");
setcolor(14);
outtextxy(184,89,"(0 - 25.5V / 2A)");
settextstyle(0,0,1);
NutNoi(550,455,630,477,7,4); // nut TRÔÏ GIUÙP
outtextxy(560,463,"TRO GIUP");
NutNoi(420,455,520,477,7,4); // nut GIÔÙI THIEÄU
outtextxy(430,463,"GIOI THIEU");
NutNoi(10,130,630,200,7,4);
NutNoi(10,210,630,280,7,4);
NutNoi(10,290,630,450,7,4);
NutNoi(518,85,570,110,7,3); // nut THOAÙT
outtextxy(525,95,"THOAT");
NutNoi(25,310,125,370,7,3) ;
my_bar(30,315,120,365,9) ; //1
NutNoi(135,310,235,370,7,3);
my_bar(140,315,230,365,9); //2
NutNoi(245,310,345,370,7,3);
my_bar(250,315,340,365,9); //3
NutNoi(25,380,125,440,7,3) ;
my_bar(30,385,120,435,9) ; //4
NutNoi(135,380,235,440,7,3);
my_bar(140,385,230,435,9); //5
NutNoi(245,380,345,440,7,3);
my_bar(250,385,340,435,9); //6
NutNoi(355,310,435,440,7,3);
int poly1[]={30,328,33,325,33,355,75,325,75,355,
117,325,117,355,120,352};
int poly2[]={140,355,180,325,220,355,230,350};
int poly3[]={250,352,253,355,253,325,295,355,295,
325,337,355,337,325,340,328};
int poly4[]={30,425,50,425,100,395,120,395};
int poly5[]={140,395,160,395,210,425,230,425};
int poly6[]={250,425,258,425,258,395,273,395,273,
425,288,425,288,395,303,395,303,425,
318,425,318,395,333,395,333,425,340,425};
setcolor(14);
drawpoly(8,poly1); // Veõ caùc nuùt daïng soùng
drawpoly(4,poly2);
drawpoly(8,poly3);
drawpoly(4,poly4);
drawpoly(4,poly5);
drawpoly(14,poly6); // Heát caùc nuùt daïng soùng
setcolor(BLACK); // baét ñaàu veõ nuùt STOP.
setfillstyle(1,RED);
circle(395,390,30);
floodfill(395,390,BLACK);
my_bar(372,382,417,398,15); // heát nuùt STOP.
Nut_Chim(425,140,570,190,7); // nuùt chìm hieån thò soá ñieän aùp.
NutNoi(250,140,350,190,7,3); // Veõ nuùt giaù trò
int poly7[]={265,165,325,165,325,160,335,170,
325,180,325,175,265,175,275,170,265,165};
drawpoly(9,poly7);
setcolor(BLACK);
setfillstyle(1,YELLOW);
drawpoly(9,poly7);
floodfill(300,168,BLACK);
outtextxy(34*W_CHAR,8*H_SIZE+2,"GIA TRI");// heát nuùt giaù trò
NutTG1(80,160,30,1);
NutTG2(150,160,30,1);
outtextxy(8*W_CHAR+4,8*H_SIZE+2,"THAY DOI DIEN AP");
NutTG1(450,310,30,1);
NutTG2(490,310,30,1);
NutTG1(450,360,30,1);
NutTG2(490,360,30,1);
NutTG1(450,410,30,1);
NutTG2(490,410,30,1);
outtextxy(55*W_CHAR,17*H_SIZE-7,"DIEN AP MAX(V)");
outtextxy(55*W_CHAR,19*H_SIZE+5,"BUOC DIEN AP(V)");
outtextxy(58*W_CHAR,22*H_SIZE+1,"TOC DO(S)");
Nut_Chim(550,310,620,340,7); // hieån thò bieân ñoä max
Nut_Chim(550,360,620,390,7); // hieån thò böôùc ñieän aùp
Nut_Chim(550,410,620,440,7); // hieån thò toác ñoä
rectangle(371 ,318 ,417 ,335 );
outtextxy(47*W_CHAR+3,18*H_SIZE,"STOP");
outtextxy(31*W_CHAR,12*H_SIZE+5,"CAC DIEN AP CHUAN ");
outtextxy(16*W_CHAR+6,17*H_SIZE-7,"CAC DANG SONG");
outtextxy(7*W_CHAR,15*H_SIZE-2,"0V ");
outtextxy(69*W_CHAR,15*H_SIZE-2,"25.5V ");
}
void Doi_tt_Nut_Stop()
{
doi_tt2(355,310,435,440,0);
setcolor(BLACK);
setfillstyle(1,RED);
circle(396,391,30);
floodfill(396,391,BLACK);
my_bar(373,383,418,399,15);
rectangle(372,319,418,336);
outtextxy(47*W_CHAR+4,18*H_SIZE+1,"STOP");
delay(200);
doi_tt2(355,310,435,440,1);
setcolor(BLACK);
setfillstyle(1,RED);
circle(395,390,30);
floodfill(395,390,BLACK);
my_bar(372,382,417,398,15);
rectangle(371,318,417,335);
outtextxy(47*W_CHAR+3,18*H_SIZE,"STOP");
}
void main(void)
{
int tam;
int chon=0;
if (!InitMouse())
{
printf("Chua cai dat Mouse driver!!! Chuong trinh ngung");
return;
}
InitGraph();
Gioi_Thieu();
Giaodien();
ShowMouse();
outp(0x306,0x00);
outp(ADD,0x00);
sound(3500);
delay(50);
nosound();
do
{
doi(dienap);
inchuoi(chuoi);
doi_1(dienapmax);
inchuoi_1(chuoi,317,310,340);
doi_1(buocdienap);
inchuoi_1(chuoi,367,360,390);
doi_1(tocdo);
inchuoi_1(chuoi,417,410,440);
ShowMouse();
menu(cn,10,5,31,chon);
sound(3500);
delay(50);
nosound();
switch (chon)
{
case 0: // nuùt 0V
{
dienap=0;
outp(ADD,0);
doi_tt(cn,5,31,chon);
HideMouse();
break;
}
case 1: // nuùt 1.5V
{
int t1,ss1,s1;
dienap=1.5;
outp(ADD,15);
doi_tt(cn,5,31,chon);
HideMouse();
t1=inp(ADD);
while (t1<15)
{
ss1=15-t1;
s1=15+ss1;
outp(ADD,s1);
t1=inp(ADD);
}
break;
}
case 2: // nuùt 3V
{
int t2,ss2,s2;
dienap=3;
outp(ADD,30);
doi_tt(cn,5,31,chon);
HideMouse();
t2=inp(ADD);
while (t2<30)
{
ss2=30-t2;
s2=30+ss2;
outp(ADD,s2);
t2=inp(ADD);
}
break;
}
case 3: // nuùt 5V
{
int t3,ss3,s3;
dienap=5;
outp(ADD,50);
doi_tt(cn,5,31,chon);
HideMouse();
t3=inp(ADD);
while (t3<50)
{
ss3=50-t3;
s3=50+ss3;
outp(ADD,s3);
t3=inp(ADD);
}
break;
}
case 4: // nuùt 9V
{
int t4,ss4,s4;
dienap=9;
outp(ADD,90);
doi_tt(cn,5,31,chon);
HideMouse();
t4=inp(ADD);
while (t4<90)
{
ss4=90-t4;
s4=90+ss4;
outp(ADD,s4);
t4=inp(ADD);
}
break;
}
case 5: // nuùt 12V
{
int t5,ss5,s5;
dienap=12;
outp(ADD,120);
doi_tt(cn,5,31,chon);
HideMouse();
t5=inp(ADD);
while (t5<120)
{
ss5=120-t5;
s5=120+ss5;
outp(ADD,s5);
t5=inp(ADD);
}
break;
}
case 6: // nuùt 15V
{
int t6,ss6,s6;
dienap=15;
outp(ADD,150);
doi_tt(cn,5,31,chon);
HideMouse();
t6=inp(ADD);
while (t6<150)
{
ss6=150-t6;
s6=150+ss6;
outp(ADD,s6);
t6=inp(ADD);
}
break;
}
case 7: // nuùt 18V
{
int t7,ss7,s7;
dienap=18;
outp(ADD,180);
doi_tt(cn,5,31,chon);
HideMouse();
t7=inp(ADD);
while (t7<180)
{
ss7=180-t7;
s7=180+ss7;
outp(ADD,s7);
t7=inp(ADD);
}
break;
}
case 8: // nuùt 24V
{
int t8,ss8,s8;
dienap=24;
outp(ADD,240);
doi_tt(cn,5,31,chon);
HideMouse();
t8=inp(ADD);
while (t8<240)
{
ss8=240-t8;
s8=240+ss8;
outp(ADD,s8);
t8=inp(ADD);
}
break;
}
case 9: // nuùt 25.5V
{
int t9,ss9,s9;
dienap=25.5;
outp(ADD,255);
doi_tt(cn,5,31,chon);
HideMouse();
t9=inp(ADD);
while (t9<255)
{
ss9=255-t9;
s9=255+ss9;
outp(ADD,s9);
t9=inp(ADD);
}
break;
}
case 11: // nuùt giaûm ñieän aùp
{
sound(3500);
delay(10);
nosound();
NutTG1(80,160,30,0);
delay(100);
NutTG1(80,160,30,1);
if (dienap>0)
{
dienap=dienap-0.1;
doi(dienap);
inchuoi(chuoi);
}
if (dienap<=0)
{
dienap=0;
doi(dienap);
inchuoi(chuoi);
}
break;
}
case 12: // nuùt taêng ñieän aùp
{
sound(3500);
delay(50);
nosound();
NutTG2(150,160,30,0);
delay(100);
NutTG2(150,160,30,1);
if (dienap<25.5)
{
dienap=dienap+0.1;
doi(dienap);
inchuoi(chuoi);
}
if (dienap>=25.5)
{
dienap=25.5;
doi(dienap);
inchuoi(chuoi);
}
break;
}
case 13: // nuùt giaûm ñieän aùp max
{
sound(3500);
delay(10);
nosound();
NutTG1(450,310,30,0);
delay(100);
NutTG1(450,310,30,1);
if (dienapmax>buocdienap)
{
dienapmax=dienapmax-0.1;
doi_1(dienapmax);
inchuoi_1(chuoi,317,310,340);
}
if (dienapmax<=buocdienap)
{
dienapmax=buocdienap;
doi_1(dienapmax);
inchuoi_1(chuoi,317,310,340);
}
break;
}
case 14: // nuùt taêng ñieän aùp max
{
sound(3500);
delay(10);
nosound();
NutTG2(490,310,30,0);
delay(100);
NutTG2(490,310,30,1);
if (dienapmax<25.5)
{
dienapmax=dienapmax+0.1;
doi_1(dienapmax);
inchuoi_1(chuoi,317,310,340);
}
if (dienapmax>=25.5)
{
dienapmax=25.5;
doi_1(dienapmax);
inchuoi_1(chuoi,317,310,340);
}
break;
}
case 15: // nuùt giaûm böôùc ñieän aùp
{
sound(3500);
delay(10);
nosound();
NutTG1(450,360,30,0);
delay(100);
NutTG1(450,360,30,1);
if (buocdienap>0.1)
{
buocdienap=buocdienap-0.1;
doi_1(buocdienap);
inchuoi_1(chuoi,367,360,390);
}
if (buocdienap<=0.1)
{
buocdienap=0.1;
doi_1(buocdienap);
inchuoi_1(chuoi,367,360,390);
}
break;
}
case 16: // nuùt taêng böôùc ñieän aùp
{
sound(3500);
delay(10);
nosound();
NutTG2(490,360,30,0);
delay(100);
NutTG2(490,360,30,1);
if (buocdienap<2.5)
{
if ((dienapmax<2.5)&&(dienapmax==buocdienap))
{
dienapmax=dienapmax+0.1;
doi_1(dienapmax);
inchuoi_1(chuoi,317,310,340);
}
buocdienap=buocdienap+0.1;
doi_1(buocdienap);
inchuoi_1(chuoi,367,360,390);
}
if (buocdienap>=2.5)
{
buocdienap=2.5;
doi_1(buocdienap);
inchuoi_1(chuoi,367,360,390);
dienapmax=2.5;
doi_1(dienapmax);
inchuoi_1(chuoi,317,310,340);
}
break;
}
case 17: // nuùt giaûm toác ñoä
{
sound(3500);
delay(10);
nosound();
NutTG1(450,410,30,0);
delay(100);
NutTG1(450,410,30,1);
if (tocdo>0.5)
{
tocdo=tocdo-0.1;
doi_1(tocdo);
inchuoi_1(chuoi,417,410,440);
}
if (tocdo<=0.5)
{
tocdo=0.5;
doi_1(tocdo);
inchuoi_1(chuoi,417,410,440);
}
break;
}
case 18: // nuùt taêng toác ñoä
{
sound(3500);
delay(10);
nosound();
NutTG2(490,410,30,0);
delay(100);
NutTG2(490,410,30,1);
if (tocdo<25)
{
tocdo=tocdo+0.1;
doi_1(tocdo);
inchuoi_1(chuoi,417,410,440);
}
else tocdo=25;
break;
}
case 19: // nuùt STOP
{
sound(3500);
delay(50);
nosound();
Doi_tt_Nut_Stop();
dienap=0;
outp(ADD,0);
doi(dienap);
inchuoi(chuoi);
break;
}
case 20: // nuùt daïng soùng 1
{
int temp1,ax,ay,stop=0;
long int dem=0;
int poly1[]={30,328,33,325,33,355,75,325,
75,355,117,325,117,355,120,352};
int poly11[]={31,329,34,326,34,356,76,326,
76,356,118,326,118,356,121,353};
doi_tt1(25,310,125,370,8,poly11,0);
delay(200);
doi_tt1(25,310,125,370,8,poly1,1);
ShowMouse();
while( !stop )
{
lpEvent=GetEvent();
if (lpEvent->Msg==M_LEFT)
{
ax=lpEvent->Posx;ay=lpEvent->Posy;
Release(M_LEFT);
if ((ax>=355)&&(ax=310)&&(ay<=440))
//Toa do nut Stop
{
stop=1;
HideMouse();
Doi_tt_Nut_Stop();
ShowMouse();
}
}
dienap=0;
while(dienap<dienapmax)
{
if (dem<=tocdo*2500000)
{
dem++;
}
else
{
dem=0;
dienap=dienap+buocdienap;
doi(dienap);
inchuoi(chuoi);
tem1=dienap*10;
outp(ADD,tem1);
}
}
}
break;
}
case 21: // nuùt daïng soùng 2
{
long int dem=0;
int ax,ay,temp21,temp22,stop=0;
int poly2[]={140,355,180,325,220,355,230,350};
int poly22[]={141,356,181,326,221,356,231,351};
doi_tt1(135,310,235,370,4,poly22,0);
delay(200);
doi_tt1(135,310,235,370,4,poly2,1);
dienap=0;
doi(dienap);
inchuoi(chuoi);
outp(ADD,0);
ShowMouse();
while(!stop)
{
lpEvent=GetEvent();
if (lpEvent->Msg==M_LEFT)
{
ax=lpEvent->Posx;ay=lpEvent->Posy;
Release(M_LEFT);
if ((ax>=355)&&(ax=310)&&(ay<=440))
//Toa do nut Stop
{
stop=1;
HideMouse();
Doi_tt_Nut_Stop();
ShowMouse();
}
}
dienap=0;
doi(dienap);
inchuoi(chuoi);
//outp(ADD,0);
while (dienap<dienapmax)
{
if (dem<=tocdo*1700000)
{
dem++;
}
else
{
dem=0;
dienap=dienap+buocdienap;
if (dienap>=dienapmax) dienap=dienapmax;
doi(dienap);
inchuoi(chuoi);
temp21=dienap*10;
outp(ADD,temp21);
}
}
dienap=dienapmax;
doi(dienap);
inchuoi(chuoi);
temp5=dienap*10;
outp(ADD,temp5);
while (dienap > 0)
{
if (dem<=tocdo*1700000)
{
dem++;
}
else
{
dem=0;
dienap=dienap-buocdienap;
if (dienap<=0) dienap=0;
doi(dienap);
inchuoi(chuoi);
temp22=dienap*10;
outp(ADD,temp22);
}
}
}
break;
}
case 22: // nuùt daïng soùng 3
{
long int dem=0;
int temp3,ax,ay,stop=0;
int poly3[]={250,352,253,355,253,325,295,355,
295,325,337,355,337,325,340,328};
int poly33[]={251,353,254,356,254,326,296,356,
296,326,338,356,338,326,341,329};
doi_tt1(245,310,345,370,8,poly33,0);
delay(200);
doi_tt1(245,310,345,370,8,poly3,1);
ShowMouse();
while(!stop)
{
lpEvent=GetEvent();
if (lpEvent->Msg==M_LEFT)
{
ax=lpEvent->Posx;ay=lpEvent->Posy;
Release(M_LEFT);
if ((ax>=355)&&(ax=310)&&(ay<=440))
//Toa do nut Stop
{
stop=1;
HideMouse();
Doi_tt_Nut_Stop();
ShowMouse();
}
}
dienap=dienapmax;
doi(dienap);
inchuoi(chuoi);
temp3=dienap*10;
outp(ADD,temp3);
while (dienap>0)
{
if (dem<=tocdo*2500000)
{
dem++;
}
else
{
dem=0;
dienap=dienap-buocdienap;
doi(dienap);
inchuoi(chuoi);
temp3=dienap*10;
outp(ADD,temp3);
if (dienap<=0)
{
dienap=0;
doi(dienap);
inchuoi(chuoi);
outp(ADD,0);
}
}
}
}
break;
}
case 23: // nuùt daïng soùng 4
{
long int dem=0;
int temp4;
int poly4[]={30,425,50,425,100,395,120,395};
int poly44[]={31,426,51,426,101,396,121,396};
doi_tt1(25,380,125,440,4,poly44,0);
delay(200);
doi_tt1(25,380,125,440,4,poly4,1);
dienap=0;
doi(dienap);
inchuoi(chuoi);
outp(ADD,0);
while (dienap<dienapmax)
{
if (dem<=tocdo*1700000)
{
dem++;
}
else
{
dem=0;
dienap=dienap+buocdienap;
if (dienap>=dienapmax) dienap=dienapmax;
doi(dienap);
inchuoi(chuoi);
temp4=dienap*10;
outp(ADD,temp4);
}
}
break;
}
case 24: // nuùt daïng soùng 5
{
int temp5;
long int dem=0;
int poly5[]={140,395,160,395,210,425,230,425};
int poly55[]={141,396,161,396,211,426,231,426};
doi_tt1(135,380,235,440,4,poly55,0);
delay(200);
doi_tt1(135,380,235,440,4,poly5,1);
dienap=dienapmax;
doi(dienap);
inchuoi(chuoi);
temp5=dienap*10;
outp(ADD,temp5);
while (dienap > 0)
{
if (dem<=tocdo*1700000)
{
dem++;
}
else
{
dem=0;
dienap=dienap-buocdienap;
if (dienap<=0) dienap=0;
doi(dienap);
inchuoi(chuoi);
temp5=dienap*10;
outp(ADD,temp5);
}
}
break;
}
case 25: // nuùt daïng soùng 6
{
int temp6,ax,ay,stop=0;
int flag=0;
int poly6[]={250,425,258,425,258,395,273,395,
273,425,288,425,288,395,303,395,303,425,
318,425,318,395,333,395,333,425,340,425};
int poly66[]={251,426,259,426,259,396,274,396,
274,426,289,426,289,396,304,396,304,426,
319,426,319,396,334,396,334,426,341,426};
long int dem=0;
doi_tt1(245,380,345,440,14,poly66,0);
delay(200);
doi_tt1(245,380,345,440,14,poly6,1);
ShowMouse();
while(!stop)
{
lpEvent=GetEvent();
if (lpEvent->Msg==M_LEFT)
{
ax=lpEvent->Posx;ay=lpEvent->Posy;
Release(M_LEFT);
if ((ax>=355)&&(ax=310)&&(ay<=440))
//Toa do nut Stop
{
stop=1;
HideMouse();
Doi_tt_Nut_Stop();
ShowMouse();
}
}
if (dem<=tocdo*170000)
{
dem++;
}
else
{
dem=0;
flag=!flag;
if (flag)
{
doi(dienapmax);
inchuoi(chuoi);
temp6=dienapmax*10;
outp(ADD,temp6);
}
else
{
doi(0);
inchuoi(chuoi);
outp(ADD,0);
}
}
}
break;
}
case 26: // nuùt GIAÙ TRÒ
{
sound(3500);
delay(10);
nosound();
doi_tt3(250,140,350,190,0);
delay(200);
doi_tt3(250,140,350,190,1);
tam=dienap*10;
outp(ADD,tam);
break;
}
case 27: // nuùt TRÔÏ GIUÙP
{
sound(3500);
delay(10);
nosound();
Help();
Giaodien();
break;
}
case 28: // nuùt Thoaùt treân goùc traùi maøn hình
{
sound(3500);
delay(10);
nosound();
thuhep("LUAN VAN TOT NGHIEP - KHOA :
1995 - 2000 - LOP : 95KDD ");
closegraph();
return;
}
case 29: // Nuùt THOAÙT
{
sound(3500);
delay(10);
nosound();
thuhep("LUAN VAN TOT NGHIEP - KHOA :
1995 - 2000 - LOP : 95KDD ");
closegraph();
return;
}
case 30: // Nuùt GIÔÙI THIEÄU
{
sound(3500);
delay(10);
nosound();
Gioi_Thieu();
Giaodien();
break;
}
case 31: // phím ESC
{
sound(3500);
delay(10);
nosound();
thuhep("LUAN VAN TOT NGHIEP - KHOA :
1995 - 2000 - LOP : 95KDD ");
closegraph();
return;
}
}
} while (1);
}