hi, chào mọi người.
em đang làm cái vol kế sử dụng 89c52 với ADC0808 để đo điện áp 0 đến 50v DC.
em đang trong quá trình chạy mô phỏng, và khi làm mô phỏng thì em chưa hiển thị điện điện áp lên LCD, theo như chạy mô phỏng thì em đoán ADC chưa gữi tín hiện cho VDK nên chưa hiển thị được.
anh/chị xem giúp em có sai chỗ nào không ạ !
file mô phỏng :http://upfile.vn/download/b71dd64b-7...e-f86419c8750d
file code :http://upfile.vn/download/e8bb3073-4...f-bccd17b692f5
sơ đồ mạch :http://i.upanh.com/rcbrgd
Đây là code của em :
em đang làm cái vol kế sử dụng 89c52 với ADC0808 để đo điện áp 0 đến 50v DC.
em đang trong quá trình chạy mô phỏng, và khi làm mô phỏng thì em chưa hiển thị điện điện áp lên LCD, theo như chạy mô phỏng thì em đoán ADC chưa gữi tín hiện cho VDK nên chưa hiển thị được.
anh/chị xem giúp em có sai chỗ nào không ạ !
file mô phỏng :http://upfile.vn/download/b71dd64b-7...e-f86419c8750d
file code :http://upfile.vn/download/e8bb3073-4...f-bccd17b692f5
sơ đồ mạch :http://i.upanh.com/rcbrgd
Đây là code của em :
Code:
#include<AT89x52.h> #define LCD P2 #define RS P0_5 #define RW P0_6 #define E P0_7 #define KA P3_0 #define KB P3_1 #define KC P3_2 #define ALE P3_3 #define START P3_4 unsigned int ADC ; unsigned char j,tr,ch,dv; unsigned char mtr,mch,mdv; unsigned char code hang1[16]={"hello"}; unsigned char code hang2[16]={"HOANG DUC"}; void delay(unsigned int x) { unsigned int y; for(y=0;y<x;y++){}; } //================================================== // ham ma ki tu void mdk() { RS=0; RW=0; E=1; E=0; delay(200); } //======================================= // ham ma dieu khien void mkt() { RS=1; RW=0; E=1; E=0; delay(200); } //===================================== //ham khoi tao LCD void khoitao_lcd() { LCD=0x38; mdk(); LCD=0x38; mdk(); delay(200); LCD=0x06; mdk(); delay(200); LCD=0x0c; mdk(); delay(200); LCD=0x01; mdk(); } //================================= // chuyen doi gia tri ADC sang ma ASCII void giaima_lcd() { dv= ADC%10; ADC = ADC/10; ch= ADC%10; tr = ADC/10; dv= dv +0x30; ch= ch +0x30; tr= tr +0x30; } //============================================= //hien thi 2 hang ki tu co dinh void hienthi_lcd() { unsigned char i; LCD=0x80; mdk(); for(i=0;i<16;i++) { LCD=hang1[i]; mkt(); } LCD=0xc0; mdk(); for(i=0;i<16;i++) { LCD=hang2[i]; mkt(); } } //=================================== // hien thi dien ap ra LCD void hienthi_dienap() { LCD=0xCD; mdk(); LCD= tr; mkt(); LCD= ch; mkt(); LCD= dv; mkt(); } //======================================================= // cho phep ADC chuyen doi void chuyedoi_adc() { START=1; ALE=1; START=0; ALE=0; } //============================================== //chuong trinh chinh void main() { // unsigned char i; khoitao_lcd(); hienthi_lcd(); KA=0; KB=0; KC=0; while(1) { ADC=P1; giaima_lcd(); hienthi_dienap(); } }
Comment