các anh ơi giúp em với.....!!!!.e kỳ này phải làm đồ án vi điều khiển:đề là:thiết kế volmetter đo điện áp với 3 thang đo 0-0.25v,0-25v,0-250v,hiển thị trên màn hình LCD..đó đồ án của e đó,:e hỏi xem có anh nào biêt về cai này không thì giúp đỡ e với về phần lập trình..........e thanks các bác trước...
Thông báo
Collapse
No announcement yet.
giup' do
Collapse
X
-
bạn nắn tính hiệu nhận từ AC ra DC, rồi đưa vào ADC lấy tín hiệu số đưa qua VĐK - ở đây dùng VDK Pic là tiện lợi nhất - thế rồi mình giải mã hiển thị lên LCD thôiNhận thiết kế và làm mạch in đồ án điện tử:
Nick:doandientu
Mail:
Phone: 0904078671 (A.Danh)
Add:18 - Phan Chu Trinh - Q.9
Web: my.opera.com/doandientu
-
em nho cac bac giup do
#include<reg52.h>
#include<stdio.h>
#include<math.h>
sbit INTR_ADC=P1^0;
sbit RD_ADC=P1^1;
sbit WR_ADC=P1^2;
sbit RS = P1^3;
sbit RW= P1^4;
sbit EN= P1^5;
sbit a = P0^0;
sbit a1 = P0^1;
sbit a2 = P0^2;
char x;
unsigned char y;
int t;
float v;
unsigned char message[32];
void delay30ms(void) // ham tre trong LCD
{
TMOD=0x10;
TH1=35535/256;
TL1=35535%256;
TR1=1;
while(!TF1);
TR1=TF1=0;
}
void delay(unsigned long int m) // tre
{
unsigned long int i;
for(i=0;i<m;++i);
}
void busy_flag(void) //co busy
{
P3=0xff; // P2 o muc cao
RS=0; // chon thanh ghi lenh
RW=1; // doc du lieu tu LCD
do // thuc hien cong viec
{
EN=1; // dua chan cho phep len cao
delay(80);
EN=0; // ha chan cho phep xuong thap
x=P3;
x=x&0x80; // (khong hieu)
}
while(x==0x80); // cho den khi D7 = 1 LCD ban
}
void write_command(unsigned char LCD_command) // thanh ghi lenh
{
busy_flag(); // kiem tra co ban
P3=LCD_command; // gan P2 = lcd conman
RS=0; // Chon thanh ghi lenh
RW=0; // dua du lieu vao LCD
EN=1; // dua chan cho phep len cao
delay(80);
EN=0;
delay(80);
}
void write_data(unsigned char LCD_data) // thanh ghi du lieu
{
busy_flag();
if(LCD_data!='\n')
{
P3=LCD_data;
}
else
{
write_command(0xC0);
return;
}
RS=1;
RW=0;
EN=1;
delay(80);
EN=0;
delay(80);
}
void write_string(char *s)
{
while(*s)
{
write_data(*s);
s++;
}
}
void init(void) //khoi tao LCD
{
write_command(0x03);
write_command(0x38);
write_command(0x06);
write_command(0x0e);
}
void chuyendoi(void)
{
RD_ADC=0;
WR_ADC=0;
for(t=1;t<=2;t++)
WR_ADC=1;
while (!INTR_ADC);
y = P2;
}
void v250(void)
{
if(a==0)
v
float)(y*5)/255)*50;
}
void v25(void)
{
if(a1==0)
v
float)(y*5)/255)*5;
}
void v2.5 (void)
{
if(a2==0)
{v
float)(y*5)/255);
if(v > 2.5)
v=0;
} }
void hienthi(void)
{
sprintf(&message[0]," \n volt = %0.2f V ",v);
write_string(&message[0]);
}
void main(void)
{
delay30ms();
init();
P2=0xff;
write_command(0x01);
write_command(0x80);
sprintf(&message[0]," LOP DT3_K2 \n *DO AN MON VDK*");
delay30ms();
write_command(0x01);
write_command(0x80);
sprintf(&message[0],"DIEN AP DO DUOC:");
write_string(&message[0]);
while(1)
{
chuyendoi();
v250();
v25();
v2.5();
/*write_command(0x01);*/
/*write_command(0x80); */
/*write_command(0xc0); */
hienthi();
delay30ms();
}
}
Đó là chương trình do e thử viết bằng Keil C đó e chạy nhưng mà nó không đúng,nhất là cái phần mà để chuyển đổi đó e viết nhưng mà nó bị sai và em không hiểu về phần này lắm,bác nào mà biết được rõ về phần này chỉ giáo cho em vơi.....ma thầy giáo e yêu cầu dùng họ 8051 co chứ không phải là họ Pic đau cá bác ah......còn về mạch in và mach nguyên lý nữa bác nào biết chỉ giáo cho e........e THANKs!!!!!!!!1
Comment
-
#include<REGX51.H>
#include<stdio.h>
sbit int_adc=P2^3;
sbit rw_adc=P2^4;
sbit rd_adc=P2^5;
sbit EN_lcd=P2^2;
sbit RW_lcd=P2^1;
sbit RS_lcd=P2^0;
sbit THANG1=P1^0;
sbit THANG2=P1^1;
sbit THANG3=P1^2;
unsigned char x;
float volt;
void delay(unsigned int time)
{
unsigned int i;
for(i=0;i<time;++i);
}
void busy_flag(void)
{
P0=0xff;
RW_lcd=1;
RS_lcd=0;
do
{
EN_lcd=1;
delay(50);
EN_lcd=0;
x=P0;
x=x&&0x80; //giu lai bit D7 de so sanh
}
while(x==0x80);// cho bit D7 bang 0 thi thoat
}
void write_command( unsigned char lcd_command)
{
busy_flag();
P0=lcd_command;
RW_lcd=0;
RS_lcd=0;
EN_lcd=1;
delay(50);
EN_lcd=0;
delay(50);
}
void write_data(unsigned char lcd_data)
{
busy_flag();
P0=lcd_data;
RW_lcd=0;
RS_lcd=1;
EN_lcd=1;
delay(50);
EN_lcd=0;
delay(50);
}
void write_string(char *s)
{
while(*s)
{
write_data(*s);
s++;
}
}
void thiet_lap_ban_dau(void)
{
write_command(0x03);//dua con tro ve vi tri dau dong
write_command(0x038);//2dong,font 5*7
write_command(0x06);//dich con tro sang phai
write_command(0x0e);//bat hien thi,con tro nhap nhay
}
void hienthi()
{
int tram,chuc,donvi,phan,phan1,phan2;
int n;
n=(int)(volt*100);
tram=n/10000;
chuc=(n%10000)/1000;
donvi
n%10000)%1000)/100;
phan
n%10000)%1000)%100;
phan1=phan/10;
phan2=phan%10;
if(tram!=0)
write_data(48+tram);
if((tram!=0)&&(chuc==0)&&(donvi==0))
write_data(48);
if((tram!=0)&&(chuc==0)&&(donvi!=0))
write_data(48);
if(chuc!=0)
write_data(48+chuc);
if((donvi!=0)||(phan1!=0)||(phan2!=0))
{
write_data(48+donvi);
write_data('.');
write_data(48+phan1);
write_data(48+phan2);
}
if((donvi==0)&&(phan1==0)&&(phan2==0))
write_data(48);
}
void main(void)
{
thiet_lap_ban_dau();
P3=0xff;
while(1)
{
write_command(0x01);//xoa man hinh
write_command(0x80);//tro ve dau dong thu nhat
write_string("DIEN AP:");
rd_adc=0;//cong dem 3 trang thai o dau ra Dout luon mo
rw_adc=0;//bat dau bien doi
delay(3);
rw_adc=1;
while(int_adc==0);
x=P3;
if(THANG1==0)
{
volt=(float)(x*5)/255;
if((volt<0)||(volt>2.5))
{
write_command(0xc0);//tro ve dau dong thu hai
write_string(" KHONG DO DUOC ");
delay(50000);
}
else
{
hienthi();
write_string("V");
write_command(0xc0);//tro ve dau dong thu hai
write_string("--HAN-THANG-TU--");
delay(50000);
}
}
if(THANG2==0)
{
volt=(float)(x*50)/255;
if((volt<0)||(volt>25))
{
write_command(0xc0);//tro ve dau dong thu hai
write_string(" KHONG DO DUOC ");
delay(50000);
}
else
{
hienthi();
write_string("V");
write_command(0xc0);//tro ve dau dong thu hai
write_string("--HAN-THANG-TU--");
delay(50000);
}
}
if(THANG3==0)
{
volt=(float)(x*500)/255;
if((volt<0)||(volt>250))
{
write_command(0xc0);//tro ve dau dong thu hai
write_string(" KHONG DO DUOC ");
delay(50000);
}
else
{
hienthi();
write_string("V");
write_command(0xc0);//tro ve dau dong thu hai
write_string("--HAN-THANG-TU--");
delay(50000);
}
}
}
}
Comment
Bài viết mới nhất
Collapse
-
bởi lvhnHãng nào tùy thích thôi bác! bây giờ các hãng đều hỗ trợ xem qua máy tính hay điện thoại đều được. Gắn Trước tiên mua về cắm nguồn set ip hết xong hãy lắp lên, cam poe chỉ cần 4 lõi là hoạt động bình thường nên 1 dây kéo cho 2 cam vẫn ok
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 15:49 -
-
Trả lời cho Tìm bạn thân quen cũ.bởi lvhnNhớ không nhầm thì lúc còn đi học có gặp chú 1 lần cf bãi xe Nguyễn Kim, giờ quán cf đó nghỉ bán rồi
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 15:44 -
-
Trả lời cho Thắc mắc pin 21v ?bởi lvhnCon số đấy biểu thị gần đúng thôi, cái đồng hồ đó có đảm bảo chính xác hay không? pin có cục lên 4v4 vẫn bình thường. Cái gì cũng có sai số trong phạm vi không quá lớn thì không ảnh hưởng gì đâu, bàn ngay ngón ngắn ngón dài mà
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 15:32 -
-
Trả lời cho Amply bị rò DC 22 voltbởi lvhnThay mấy con transisto nhỏ đầu vào, thường vi sai lỗi hay bị. Khám tổng quát chân các linh kiện xem có bị rỉ sét nhiều không?
-
Channel: Điện thanh
Hôm qua, 15:24 -
-
bởi dinhthuong92Mạch này hiệu suất ra led đạt khoảng 90.7% tại 12V in, 40W out.
-
Channel: Nguồn!
27-07-2026, 10:15 -
-
bởi dinhthuong92Có lẽ nguồn viết bài này chỉ mang tính định tính để nói rằng cần thay đổi tổng trở tải để có Pmax chứ trình bày chưa chi tiết và thấu đáo một cách định lượng. Công thức tổng quát phải có mặt L mới được, và nói là "tổng...
-
Channel: Nguồn!
27-07-2026, 10:09 -
-
Trả lời cho [Chia sẻ] Tổng hợp các công ty AI Việt Nam đang làm gì thật sự — Từ voicebot, computer vision đến AI agentsbởi nguyendinhvanCàng ngày, CNTT càng trở nên lôi thôi , rách việc.
Cái AI và Ge... trên trình duyệt chỉ tổ làm vướng mắt, mất thì gian.
Tôi toàm phải mất cộng tắt nó đi.-
Channel: Xu hướng, nhu cầu và thị trường
25-07-2026, 14:59 -
-
bởi trung30000Em có con amply 12 sò D 718 và e688 , biến áp 15A, 30v 0 30 v, một kênh thì hoạt động bình thường, kênh còn lại nổ bụp bụp, sột sột, đèn tín hiệu nhảy lên vạch max, khoảng 4 đến 5 giây, sau đó đèn tín hiệu trả về mức không, Em thấy như...
-
Channel: Điện thanh
24-07-2026, 13:50 -
-
Trả lời cho Tìm hiểu máy hàn lăn (Rolling Welding)bởi hoang_3ibác cần thì liên hệ Em: mayhanhaivuong.com (0903238399)...
-
Channel: Điện tử công nghiệp
24-07-2026, 10:58 -
-
Trả lời cho Công thức tính định luật kirchhoffbởi abcnewmemberGiải bằng hệ phương trình bật nhất 3 ẩn.
...
-
Channel: Hỗ trợ học tập
23-07-2026, 14:52 -

Comment