Điều khiển tốc độ và góc quay động cơ, hiển thị bằng lcd

68 18 0
Điều khiển tốc độ và góc quay động cơ, hiển thị bằng lcd

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

621 TRƯỜNG ĐẠI HỌC VINH KHOA ĐIỆN TỬ - VIỄN THÔNG -    - ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài: ĐIỀU KHIỂN TỐC ĐỘ VÀ GÓC QUAY ĐỘNG CƠ, HIỆN THỊ BẰNG LCD Người hướng dẫn : Người thực : Lớp : Khóa học : ThS NGUYỄN PHÚC NGỌC PHAN XUÂN TRƯỜNG 51K1 - ĐTVT 2010 - 2015 NGHỆ AN - 2015 LỜI CẢM ƠN Trong suốt q trình học tập hồn thành đồ án tốt nghiệp này, em nhận hướng dẫn, giúp đỡ thầy cô, anh chị bạn Với lịng kính trọng biết ơn sâu sắc em xin bày tỏ lời cảm ơn chân thành tới: Ban giám hiệu trường Đại học Vinh, khoa Điện tử Viễn Thông Thầy, Cô giảng dạy tạo điều kiện thuận lợi cho em suốt q trình học tập hồn thành đồ án tốt nghiệp Đặc biệt, em xin tỏ lòng biết ơn sâu sắc đến thầy ThS Nguyễn Phúc Ngọc hết lòng giúp đỡ, dạy bảo, động viên tạo điều kiện thuận lợi cho em suốt q trình học tập hồn thành đồ án tốt nghiệp Sau ba tháng tìm hiểu thi cơng, em hồn thành đồ án tốt nghiệp tạo sản phẩm thật Tuy nhiên thời gian chuẩn bị khơng nhiều với kiến thức cịn hạn hẹp, đồ án khơng tránh khỏi sai sót, em mong nhận ý kiến đóng góp thầy khoa Em xin chúc thầy cơ, anh chị tồn thể bạn bè sức khỏe dồi dào, đạt nhiều thành công công việc, học tập nghiên cứu Nghệ An, tháng năm 2015 Sinh viên thực Phan Xuân Trường MỞ ĐẦU Hiện nay, hệ thống dây chuyền tự động nhà máy, xí nghiệp sử dụng rộng rãi, vận hành có độ tin cậy cao Vấn đề quan trọng dây chuyền sản suất điều chỉnh tốc độ động hay đảo chiều quay động để nâng cao suất Với hệ truyền động điện chiều ứng dụng nhiều yêu cầu điều chỉnh cao, với phát triển không ngừng kỹ thuật điện tử kỹ thuật vi điện tử Hệ truyền động chiều điều chỉnh đồng thời tốc độ góc quay động trở thành giải pháp tốt cho hệ thống có u cầu chất lượng cao Vì vậy, lựa chọn đồ án tốt nghiệp với đề tài “ Điều khiển tốc độ góc quay động cơ, hiển thị LCD” Đồ án thực việc điều khiển động thông qua vi điều khiển, đề tài nghiên cứu việc ổn định tốc độ động điện chiều Trong giới hạn thời gian nghiên cứu cho phép, đề tài phát triển hệ thống điều khiển đơn giản Nội dung đồ án trình bày ba chương: Chương 1: Tổng quan hệ thống đo điều khiển tốc độ động Chương trình bày kiến thức động điện phương pháp thay đổi tốc độ động điện Chương 2: Giới thiệu vi điều khiển 8051 Chương vào tìm hiểu vi điều khiển 8051 linh kiện dùng để thi công sản phẩm Chương 3: Thi công mạch đánh giá sai số Chương tìm hiểu sơ qua vi điều khiển dùng mạch 89S52 quy trình thi cơng để tạo sản phẩm Sau trình bày ngun nhân sai số sản phẩm thiết kế Một lần em xin chân thành cảm ơn hướng dẫn giúp đỡ tận tình thầy Nguyễn Phúc Ngọc thầy cô khoa điện tử viễn thông tạo điều kiện thuận lợi cho em hoàn thành đề tài Sinh viên thực PHAN XUÂN TRƯỜNG TÓM TẮT ĐỒ ÁN Đồ án thực việc điều khiển tốc độ góc quay động thơng qua vi điều khiển 8051, đề tài nghiên cứu việc ổn định tốc độ động điện chiều, hệ truyền động chiều điều chỉnh đồng thời tốc độ góc quay động Trong giới hạn thời gian nghiên cứu cho phép, đề tài phát triển hệ thống điều khiển đơn giản Các thiết bị giám sát điều khiển tiêu tốn lượng mang lại lợi ích kinh tế hiệu sử dụng cao Sau ba tháng thực hiện, em hoàn thành sản phẩm Mạch điều khiển tốc độ động góc quay theo ý người sử dụng ABSTRACT The thesis performance controlled adjustable speed and angle of rotation of the motor via the control 8051, so deep research on steady speed DC motors, DC transmissions adjustable speed and angle of rotation of the motor.In limited studies allow subject developed a simple control system Devices are monitored and controlled consumes very little energy will bring economic benifit and high efficiency After three months of performance, I have completed the product The circuit is controlled adjustable speed and angle of rotation of the motor of the user MỤC LỤC TRANG LỜI CẢM ƠN…………………………………………………………………………2 MỞ ĐẦU TÓM TẮT ĐỒ ÁN DANH MỤC HÌNH VẼ .7 DANH MỤC BẢNG BIỂU CHƯƠNG I - TỔNG QUAN VỀ HỆ THỐNG ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ .9 1.1 Tổng quan động điện 1.1.1 Cơ chế sinh lực quay động điện 1.1.2.Cấu tạo 10 1.1.3 Các thông số định mức 13 1.1.4 Nguyên lý làm việc động điện chiều: .13 1.1.5 Phương trình đặc tính đặc tính điện: .14 1.2 Điều khiển tốc độ: 17 1.2.1 Các phương pháp điều chỉnh tốc độ động cơ: .18 1.2.2 Các đặc tính đảo chiều quay: 23 1.2.3 Các tiêu chất lượng: .24 1.2.4 Phạm vi điều chỉnh D: 24 1.2.5 Độ trơn điều chỉnh: 25 1.2.6 Sai số tốc độ: .25 1.2.7 Chỉ tiêu kinh tế: 25 CHƯƠNG II - GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 8051 25 2.1 Định hướng thiết kế: .26 2.2 Tổng quan vi xử lý 8051: 28 2.2.1 Sơ đồ khối : 28 2.2.2 Sơ đồ chức chân vi điều khiển 8051: 30 2.2.3 Tổ chức nhớ: 32 2.2.4 Thanh ghi ghi chức đặc biệt (SFR= Special Function Registers): 35 2.2.5 Phầm mềm lập trình vi điều khiển: 36 2.3 Khối hiển thị: 37 2.4 Khối nhập giá trị: 39 2.5 Khối nguồn: 39 2.6 Mạch đảo chiều động cơ: 40 2.7 IC UNL2803: 41 CHƯƠNG III - THIẾT KẾ MẠCH VÀ ĐÁNH GIÁ SAI SỐ 41 3.1 Giới thiệu vi điều khiển AT89S52: 42 3.2 Sơ đồ khối: 49 3.3 Sơ đồ nguyên lý: .49 3.4 Lưu đồ thuật toán: 50 3.5 Thiết kế mạch thực tế: 51 3.6 Nguyên nhân gây sai số mạch: 51 3.7 Ứng dụng……………………………………………………………………… 54 KẾT LUẬN 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC .56 DANH MỤC HÌNH VẼ Trang Hình 1.1: Mặt cắt dọc động điện 10 Hình 1.2: Sơ đồ nối dây động kích từ song song .14 Hình 1.3: Sơ đồ nối dây động kích từ độc lập 14 Hình 1.4: Đặc tính điện động chiều kích từ độc lập 16 Hình 1.5: Đặc tình động điện chiều kích từ độc lập 17 Hình 1.6: Điều chỉnh độ rộng xung PWM .18 Hình 1.7: Dạng sóng dịng áp động 19 Hình 1.8: Sơ đồ điều chỉnh tốc độ động điện chiều 20 Hình 1.9: Đặc tình điều chỉnh tốc độ động cách thay đổi điện trở phụ phần ứng 20 Hình 1.10: Sơ đồ điều chỉnh tốc độ ĐMđl cánh thay đổi từ thơng Φ 21 Hình 1.12: Sơ đồ điều chỉnh tốc độ ĐMdl cách thay đổi Uư 22 Hình 1.13: Đặc tính điều chỉnh tốc độ ĐMdl cách thay đổi điện áp phần ứng Uư 23 Hình 1.14: Sơ đồ hãm ngược cách đảo Uư 24 Hình 1.15: Xác định phạm vi điều chỉnh động ĐMdl 25 Hình 2.1: Cấu tạo 8051 .28 Hình 2.2: Sơ đồ chân vi mạch 8051 31 Hình 2.3: Sơ đồ tổ chức nhớ .33 Hình 2.4: Sơ đồ tổ chức 128 byte thấp ram họ 8051 34 Hình 2.5: Màn hình LCD .37 Hình 2.6: Khối phím bấm 39 Hình 2.7: Mạch nguồn 39 Hình 2.9: Phần mạch đảo chiều động 40 Hình 2.10: Sơ đồ chân ULN 2803 41 Hình 3.1: Vi điều khiển AT89S52 42 Hình 3.2: Sơ đồ chân vi điều khiển AT89S52 .44 DANH MỤC BẢNG BIỂU Trang Bảng 2.1: Chức chân vi điều khiển 8051 31 Bảng 2.2: Trạng thái reset ghi .36 Bảng 2.3: Chức chân LCD .37 Bảng 2.4: Bảng thông số ULN 2403 .41 Bảng 3.1: Chức ghi PSW 47 CHƯƠNG I TỔNG QUAN VỀ HỆ THỐNG ĐIỀU KHIỂN TỐC ĐỘ ĐỘNG CƠ 1.1 Tổng quan động điện Động điện chiều động điện hoạt động với dòng điện chiều Động điện chiều ứng dụng rộng rãi ứng dụng dân dụng công nghiệp Cấu tạo động gồm có phần: stator đứng yên rotor quay so với stator Phần cảm (phần kích từ-thường đặt stator) tạo từ trường mạch từ, xuyên qua vòng dây quấn phần ứng (thường đặt rotor) Khi có dịng điện chạy mạch phần ứng, dẫn phần ứng chịu tác động lực điện từ theo phương tiếp tuyến với mặt trụ rotor, làm cho rotor quay Tùy theo cách mắc cuộn dây rotor stator mà người ta có loại động sau: -Động kích từ độc lập: Cuộn dây kích từ (cuộn dây stator) cuộn dây phần ứng (rotor) mắc riêng rẽ nhau, cấp nguồn riêng biệt -Động kích từ nối tiếp: Cuộn dây kích từ mắc nối tiếp với cuộn dây phần ứng Đối với loại động kích từ độc lập, người ta thay cuộn dây kích từ nam châm vĩnh cửu, ta có loại động điện chiều dùng nam châm vĩnh cửu Đây loại động sử dụng đồ án [2] 1.1.1 Cơ chế sinh lực quay động điện Khi có dòng điện chạy qua cuộn dây quấn xung quanh lõi, cạnh phía bên cực dương bị tác động lực hướng lên, cạnh đối diện lại bị tác động lực hướng xuống theo nguyên lý bàn tay trái Fleming Các lực gây tác động quay lên cuộn dây làm cho rotor quay Để làm cho rotor quay liên tục chiều, cổ góp điện làm chuyển mạch dịng điện sau vị trí ứng với 1/2 chu kỳ Nhưng vấn đề mặt cuộn dây song song với đường sức từ trường, nghĩa lực quay động cuộn dây lệch 90 o so với phương ban đầu rotor quay theo qn tính Trong máy điện chiều lớn, người ta có nhiều cuộn dây nối nhiều phiến góp khác cổ góp Nhờ dịng điện lực quay liên tục không bị thay đổi theo vị trí khác rotor Phương trình động chiều: E= K Ω V= E + số Rư.Iư M= K.Φ số Iư Với: Φ: Từ thông cực(Wb) Iư: dòng điện phản ứng (A) V: Điện áp phản ứng (V) Rư: Điện trở phản ứng (Ohm) Ω : tốc độ động cơ(rad/s) M: moment động (Nm) K: số, phụ thuộc cấu trúc động 1.1.2.Cấu tạo Động điện chiều gồm có hai phần chính: 10 Hình 1.1: Mặt cắt dọc động điện Cấu tạo: 1- võ máy ( gông từ ) 2- cực từ 3- dây quấn cực từ 4- cực từ phụ 5- dây quấn cực từ phụ 6- dây quấn phần ứng 10 KẾT LUẬN Sau ba tháng nghiên cứu thực đề tài với bảo tận tình thầy giáo khoa điện tử viễn thông đặc biệt thầy Nguyễn Phúc Ngọc với nỗ lực thân, em hồn thành cơng việc mà đề tài tốt nghiệp yêu cầu Sản phẩm thiết kế điều khiển tốc độ góc quay động theo ý làm mạch với sai số nhỏ Ưu điểm sản phẩm điều khiển tốc độ mạch chạy tốt với sai số nhỏ Nhưng trường hợp điều khiển góc quay mạch xảy sai số với mức chênh lệch giá trị khoảng 1– 3o / vòng Trong trình làm đề tài em tích luỹ thêm số kiến thức để nâng cao trình độ chun mơn Tuy nhiên với thời gian có hạn nên đề tài nghiên cứu có nhiều chỗ cịn hạn chế sai sót định, sản phẩm chưa hoàn hảo mặt chất lượng hình thức… Trong thời gian làm đồ án, em cố gắng nỗ lực song khơng tránh khỏi thiếu sót Em mong nhận góp ý xây dựng thầy khoa để đồ án em hồn thiện phát triển Một lần em xin chân thành cảm ơn thầy Nguyễn Phúc Ngọc thầy cô giáo khoa Điện tử - Viễn thông giúp đỡ em hoàn thành tốt đồ án tốt nghiệp 54 TÀI LIỆU THAM KHẢO [1] Đặng Văn Đào – Lê Văn Doanh, Giáo trình Kỹ thuật điện, Nhà Xuất Bản khoa học kỹ thuật Hà Nội, 2006 [2] Vũ Quang Hồi, Trang bị điện- điện tử công nghiệp, Nhà Xuất Bản Giáo dục, 2000 [3] Tống Văn On, Họ vi điều khiển 8051, Nhà Xuất Bản Lao động – Xã hội, Hà Nội, 2004 [4] Phạm Quang Trí, Giáo trình vi xử lý, Trường ĐHCN TP.HCM, 2005 [5] Nguyễn Quang Hùng - Trần Ngọc Bình, Động bước, Nhà Xuất Bản KHKT, 2003 [6] Webside diễn đàn điện tử Việt Nam www.dientuvietnam.net Truy nhập lần cuối ngày 19/1/2015 [7] Webside www.alldatasheet.com Truy nhập lần cuối ngày 17/1/2015 55 PHỤ LỤC Code chương trình // Mo PhongDlg.cpp : implementation file // #include "stdafx.h" #include "Mo Phong.h" #include "Mo PhongDlg.h" #include"math.h" #include "stdlib.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = FILE ; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL // Implementation protected: 56 // DDX/DDV support //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // No message handlers //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMoPhongDlg dialog CMoPhongDlg::CMoPhongDlg(CWnd* pParent /*=NULL*/) : CDialog(CMoPhongDlg::IDD, pParent) { //{{AFX_DATA_INIT(CMoPhongDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMoPhongDlg::DoDataExchange(CDataExchange* pDX) 57 { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMoPhongDlg) DDX_Control(pDX, IDC_LED1, m_led1); DDX_Control(pDX, IDC_LED10, m_led10); DDX_Control(pDX, IDC_LED2, m_led2); DDX_Control(pDX, IDC_LED3, m_led3); DDX_Control(pDX, IDC_LED4, m_led4); DDX_Control(pDX, IDC_LED5, m_led5); DDX_Control(pDX, IDC_LED6, m_led6); DDX_Control(pDX, IDC_LED7, m_led7); DDX_Control(pDX, IDC_LED8, m_led8); DDX_Control(pDX, IDC_LED9, m_led9); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CMoPhongDlg, CDialog) //{{AFX_MSG_MAP(CMoPhongDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_HANGCHUC, OnHangchuc) ON_BN_CLICKED(IDC_HANGDONVI, OnHangdonvi) ON_BN_CLICKED(IDC_HANGNGHIN, OnHangnghin) ON_BN_CLICKED(IDC_HANGTRAM, OnHangtram) ON_BN_CLICKED(IDC_HANGVAN, OnHangvan) ON_BN_CLICKED(IDC_PAUSE, OnPause) ON_BN_CLICKED(IDC_RESET, OnReset) ON_BN_CLICKED(IDC_REVERSE, OnReverse) ON_WM_TIMER() ON_BN_CLICKED(IDC_START, OnStart) ON_WM_DESTROY() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) 58 //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMoPhongDlg message handlers BOOL CMoPhongDlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About " menu item to system menu // IDM_ABOUTBOX must be in the system command range ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here m_1=0; m_2=m_3=m_4=m_5=m_6=m_7=m_8=m_9=m_10=0; m_led1.SetWindowText("0"); 59 m_led2.SetWindowText("0"); m_led3.SetWindowText("0"); m_led4.SetWindowText("0"); m_led5.SetWindowText("0"); m_led6.SetWindowText("0"); m_led7.SetWindowText("0"); m_led8.SetWindowText("0"); m_led9.SetWindowText("0"); m_led10.SetWindowText("0"); m_degree=0; temp=TRUE; t=0; // m_vong=0; return TRUE; // return TRUE unless you set the focus to a control } void CMoPhongDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon For MFC applications using the document/view model, // this is automatically done for you by the framework void CMoPhongDlg::OnPaint() { 60 if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CClientDC pDC(this); OnDraw(&pDC); CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window HCURSOR CMoPhongDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CMoPhongDlg::OnHangchuc() { if(m_4==9) m_4=0; else 61 m_4++; CString s; s.Format("%d",m_4); m_led4.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnHangdonvi() { if(m_5==9) m_5=0; else m_5++; CString s; s.Format("%d",m_5); m_led5.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnHangnghin() { if(m_2==9) m_2=0; else m_2++; CString s; s.Format("%d",m_2); m_led2.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnHangtram() { if(m_3==9) m_3=0; else m_3++; CString s; 62 s.Format("%d",m_3); m_led3.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnHangvan() { if(m_1==9) m_1=0; else m_1++; CString s; s.Format("%d",m_1); m_led1.SetWindowText(s); m_vong=m_1*10000+m_2*1000+m_3*100+m_4*10+m_5; } void CMoPhongDlg::OnPause() { KillTimer(1); } void CMoPhongDlg::OnReset() { m_1=m_2=m_3=m_4=m_5=m_6=m_7=m_8=m_9=m_10=0; // thiet lap ve khong m_led1.SetWindowText("0"); m_led2.SetWindowText("0"); m_led3.SetWindowText("0"); m_led4.SetWindowText("0"); m_led5.SetWindowText("0"); m_led6.SetWindowText("0"); m_led7.SetWindowText("0"); m_led8.SetWindowText("0"); 63 m_led9.SetWindowText("0"); m_led10.SetWindowText("0"); KillTimer(1); } void CMoPhongDlg::OnReverse() { if(temp==TRUE) temp=FALSE; else { temp=TRUE; } } void CMoPhongDlg::OnDraw(CDC *pDC) { CRect rectWin; GetWindowRect(rectWin); rectWin.top+=32; CWnd*pWnd=GetDlgItem(IDC_DISPLAY); CRect rectD; pWnd->GetWindowRect(rectD); int cx,cy; cx=rectD.CenterPoint().x; cy=rectD.CenterPoint().y; cx-=rectWin.left; cy-=rectWin.top; CBrush brush(RGB(0,255,0)); CBrush * oldBrush=pDC->SelectObject(&brush); CPen *pen=new CPen(PS_SOLID,1,RGB(0,0,255)); CPen*oldPen =pDC->SelectObject(pen); pDC->Ellipse(cx-50,cy-50,cx+50,cy+50); CPen*pen1=new CPen(PS_SOLID,3,RGB(255,0,0)); 64 CPen*oldPen1 =pDC->SelectObject(pen1); double angle; angle =m_degree*3*3.14/180; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); angle+=3.14/3; pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); pDC->MoveTo(cx,cy); pDC->LineTo(cx+(int)(50*sin(angle)),cy-(int)(50*cos(angle))); pDC->SelectObject(oldBrush); pDC->SelectObject(oldPen); pDC->SelectObject(oldPen1); } void CMoPhongDlg::OnTimer(UINT nIDEvent) { if(temp==TRUE) { m_degree++; if(m_degree>=120) m_degree=0; 65 } else { m_degree ; if(m_degree

Ngày đăng: 25/08/2021, 15:33

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan