hiện tại mình đang làm mạch cửa tự động dùng PIR203D trên proteus mô phỏng ok hết mà khi làm mạch thật thì không chạy ( chân 24,25 vdk 89c52 mình thấy luôn ở mức 1 không về mức 0 được,nên opto pc 817 không hoạt động kiểu đóng mở được). Ở dưới là mạch mô phỏng của mình, mọi người góp ý dùm mình với, mình làm bài tập này sắp nộp rồi.
Thông báo
Collapse
No announcement yet.
cần giúp đỡ về mạch vdk 8051 điều khiển động cơ DC
Collapse
X
-
#include <REGX52.H>
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include <string.h>
// Dinh nghia chan Dieu Khien
#define K1 P1_0
#define K2 P1_1
#define K3 P1_2
#define K4 P1_3
#define K5 P1_4
// Dinh nghia chan LCD
#define RS P2_0
#define RW P2_1
#define EN P2_2
#define LCDdata P0
#define BF P0_7
// Dinh nghia chan Led
#define LED1 P2_3
#define LED2 P2_4
// Khai bao chuoi hien thi
unsigned char code string1[]
unsigned char code string2[]
unsigned char i,j,k;
/*********HAM DELAY***********/
void delay(unsigned char ms)
{
for(i =0;i<ms;i++)
{for(j=0;j<125;j++){;}
}
}
//=======================================
void tre(unsigned int t)
{
unsigned int i;
for(i=0;i<=t;i++);
}
/*************HAM CHO***************/
void wait(void)
{
RS=0;//thanh ghi lenh
RW=1;//doc du lieu tu lcd
LCDdata=0xff;//gia tri 11111111 // khoi dong ngo vao
while(BF) //kiem tra co ban
{
EN =0;//dua xung thap en cao de chot
EN =1;//dua xung len cao
}
}
////////////////thiet lap Dieu khien LCD//////////////
void LCDcontrol(unsigned char x)
{
RS = 0;//chon thanh ghi lenh
RW =0;//ghi du lieu len lcd
LCDdata =x;
EN=1; //dua xung cao xuong thap de mo
EN=0;
wait();//doi LCD san sang
}
//////////////////Khoi tao LCD////////////
void LCDinit(void)
{
LCDcontrol(0x30);
tre(500);
LCDcontrol(0x30);
tre(100);
LCDcontrol(0x30);
LCDcontrol(0x38);//2 dong va ma tran 5x7
LCDcontrol(0x0e);//bat man hinh,bat con tro
LCDcontrol(0x01);//xoa man hinh
}
///////////////Thiet lap du lieu co LCD/////////
void LCDwrite(unsigned char c)
{
RS=1;//Ghi du lieu
RW=0;//ghi du lieu len LCD
LCDdata=c;
EN=1;
EN=0;
tre(50);
}
///////////////////
void LCDwrites(unsigned char*s)
{
unsigned char data lens,count;
lens=strlen(s);
for(count=0;count<lens;count++)
{
LCDwrite(*(s+count));
}
}
//////////////HAM HIEN THI CHUOI KY TU//////////////
void SendString2LCD(unsigned char code *p)
{
unsigned char i=0;
while(p[i]!=0)
{
LCDwrite(p[i]);
i++;
delay(200);
}
}
/////////////////HAM HIEN THI DONG CHU///////////////////
void DisplayText(void)
{
// Dich con tro den vi tri thu 1, dong thu nhat
LCDcontrol(0x80);
SendString2LCD(string1);
// Dich con tro den dau dong thu hai
LCDcontrol(0xC0);
SendString2LCD(string2);
}
/////////////// XOA LCD///////////////////
void LCDclear(void)
{
LCDcontrol(0x01);
wait();
}
////////////// HIEN THI 1 SO LEN LCD < 100
void putnum(unsigned char val)
{
if(val<10){
LCDwrite(val+48);
}else if(val<100){
LCDwrite(val/10+48);
LCDwrite(val%10+48);
}
}
//////////////////HIEN THI SO LEN LCD > 100
void LCD_putnum(int num)
{
unsigned char nghin,tram,chuc,donv;
nghin=num/1000;
tram=(num%1000)/100;
chuc
num%1000)%100)/10;
donv
num%1000)%100)%10;
LCDwrite(nghin+48);
LCDwrite(tram+48);
LCDwrite(chuc+48);
LCDwrite(donv+48);
}
//////////////////HAM PHIM BAM DIEU KHIEN/////////////////////
void dieukhien_hn(void)
{
if(K1==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" WELLCOM ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" DH13TD ");
delay(100);
LED1=1;
}
else{LED1=0;}
if(K1==1)
{
LED2=1;
}
else{LED2=0;}
}
//===============================
void main(void)
{
LCDcontrol(0x01);
LCDinit();//Khoi tao LCD
LCDcontrol(0x82); // dua con tro den vi tri thu 4 dong 1
LCDwrites("HAI LONG");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites("CUA TU DONG");
/*LCDclear();
LCDcontrol(0x0f);//nhap nhay con tro
DisplayText();//viet chuoi ky tu */
while(1)//vong lap vo han
{
dieukhien_hn();
}
}
Comment
-
LCD trên proteus thì chạy bình thường, còn trên mạch thật mình chưa lắp vô.Nguyên văn bởi tanh_ta Xem bài viếtLCD có chạy k? Hay không có gì chạy cả
Comment
-
Nguyên văn bởi caoson_vnatr Xem bài viếtchưa bàn về code và các phần khác của mạch, riêng opto lắp thế k đủ để dẫn được, vì dòng xuất con 89xx ra nhỏ, bác nên lắp lại cho xuất ra mức 0 nhé. Sau đó mới test tiếp các phần khác/
bác xem em sửa lại thế có được không? hay bác cho em xin cái ví dụ đi.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi Tuyenvc345
-
Channel: Hỗ trợ học tập
Hôm qua, 18:05 -
-
Trả lời cho Giúp mình vẽ sơ đồ và phân tích nguyên lý làm việc của khảo sát các mạch nguồn ổn áp vớibởi Tuyenvc345
-
Channel: Hỗ trợ học tập
Hôm qua, 18:04 -
-
bởi bqvietDiễn đàn vốn vắng, muốn vào viết bài trả lời chút nhưng cứ thấy luồng nào thành viên này mở thì cũng đồng thời xuất hiện ở Otofun, thế là chùn tay ... Thôi thì dientuvietnam không thể so sánh được về độ phổ cập, biết thân biết phận vậy.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 17:49 -
-
bởi chinhnguyen9So sánh sóng 2 mạch nguồn Push-pull
· Sóng vuông giửa 2 cực D của mạch Pushpull trong module inverter 24-220V sine giả của TQ. Mạh điện này khá đặc biêt ở chổ, không thấy mạch snubber mà hiêu quả triêt sóng hài quá tốt dù hoạt...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 14:27 -
-
bởi chinhnguyen9Mạch điên bếp tù gộm 2 khối:
Khối điêu khiển:
-Thiết lập công suất nấu
-Thiết lập thời gian nấu
-Kiểm tra có đặt nồi hay không, đúng loại hay không?
-Có quá nhiệt không?
Khối công suất:
- Nắn+ lọc điên AC ra 310VDC +loọc nhiểu...-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 14:05 -
-
bởi ittcHi các bác, sau khi được vài lời khuyên thì em có vào lướt web để xem vài mẫu máy, thì ở phần thông số kỹ thuật của máy, thấy họ để vài thông số sau thì em không rành lắm, nhờ các bác giải thích hộ em được không, cụ thể như hình...
-
Channel: Điện tử gia dụng
15-03-2026, 18:34 -
Up code lên xem sao?

Comment