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
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Cho tới thời điểm này, quả thật Đình Thường đây quá thất vọng, không hào hứng với Suno-AI lắm bởi ra lệnh Creat mấy chục lần với các thay đổi thì mới chọn được 2 bản hát đúng giai điệu tầm 80% để cắt ghép tạo thành bài hát...
-
Channel: Tâm tình dân kỹ thuật
hôm nay, 17:01 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Kính chào cả nhà, nhân dịp Tết đang về, sắp 23 tháng chạp rồi, xin gởi lời chúc xuân qua bài hát sau ạ:
Bao nhiêu hân hoan
Chúc Mừng Năm Mới, xuân sang!
Nơi nơi hát vang
nâng chén vui chúc câu An Lành.
Vạn Sự đều Hanh Thông,
Rạng...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 16:46 -
-
bởi ittcChán quá các bác, em nhạt nhẽo quá nên tán em nào cũng tạch, tuyệt vọng vô cùng, nay lại được mấy anh đồng nghiệp cty đối tác mách cho em gái kia sinh năm 2K đầu, em chả biết nhóm đối tượng này phải tán ra sao bây giờ ?
Tính ra em...-
Channel: Tâm tình dân kỹ thuật
hôm nay, 00:18 -
-
bởi bqvietCó thể, ví dụ phần phản hồi gồm vi mạch cách ly quang, zener thứ cấp, transistor và điện trở phản hồi dòng ... Bất kỳ linh kiện nào nhóm đó hỏng dẫn tới mất đường phản hồi. TNY chính hãng phát hiện được chuyện đó nhưng linh kiện...
-
Channel: Điện tử công suất
Hôm qua, 18:36 -
-
bởi Nexus 6Pcho e hỏi, khi mạch có linh kiện nào đó hư thì có làm hỏng led đắt tiền (osram) không?
-
Channel: Điện tử công suất
Hôm qua, 10:42 -
-
bởi chinhnguyen9· Thí nghiệm 1 (Mạch boost, Vcc=12V, kích bằng dao động PƯM, duty 10%):
* Không có snubber + không tải: Xuất hiện hiện tượng dao động tắt dần tại cực D Mosfet (ringing). Hình 1 cho thấy trong chu kỳ đầu, điện áp spike lên tới hàng trăm V, điện...-
Channel: Hướng dẫn sử dụng diễn đàn
04-02-2026, 09:16 -
-
bởi Nexus 6Pe dùng KiCad 9.0 và đã xuất được file PDF mạch in gòi bác...
-
Channel: Điện tử công suất
03-02-2026, 16:25 -
-
bởi bqvietBấm chuột vào các tệp sẽ bật ra chương trình tương ứng. Nên dùng bản KiCAD sau
https://kicad-downloads.s3.cern.ch/a...ll_version.exe-
Channel: Điện tử công suất
03-02-2026, 14:57 -
-
bởi Nexus 6Pe cài KiCAD 2012 khi mở ra nó chỉ hiện ntn...
-
Channel: Điện tử công suất
03-02-2026, 11:20 -
-
bởi bqvietThực tế bạn nào không tải được tệp nén thiết kế thì căn cứ theo ảnh sơ đồ mạch có thể vẽ lại sơ đồ bằng chương trình EDA nào đó rồi làm mạch được mà. Càng thêm quen thuộc với sơ đồ. Sau đó tùy ý chuyển sang TinySwitch-III hoặc TinySwitch-4.
-
Channel: Điện tử công suất
02-02-2026, 21:13 -

Comment