90 درصد برنامه تون مشکل داره ..... و پایه 5 lcd رو به زمین وصل کنید شاید حل شد
نمایش نسخه قابل چاپ
90 درصد برنامه تون مشکل داره ..... و پایه 5 lcd رو به زمین وصل کنید شاید حل شد
پايه rw روي lcd رو گراند كن.
با سلام و عرض ادب خدمت دوستان گرامی
من یه پروژه دارم که باید روز شنبه ارائه بدم و یه برنامه نویسی کوچیک داره که بیشترشو با مطالعه این کتاب مفید فهمیدم فقط چند تا سطر هست که منظور برنامه نویس رو متوجه نشدم
از دوستان خواهش میکنم اگر اطلاعاتی دارید به من کمک کنید
با تشکر فراوان
اون قسمتهایی که متوجه نشدم رو به رنگ قرمز مینویسم
pic 16f877
#include <finalmt8870.h>
#INT_EXT
void EXT_isr(void)
{
}
#define LCD_ENABLE_PIN PIN_B5
#define LCD_RS_PIN PIN_B7
#define LCD_RW_PIN PIN_B6
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B3
#define LCD_DATA6 PIN_B2
#define LCD_DATA7 PIN_B1
#include <lcd.c>
void main()
{
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
lcd_init();
unsigned int8 reza=0;
#bit pina0 = reza.0
#bit pina1 = reza.1
#bit pina2 = reza.2
#bit pina3 = reza.3
lcd_putc("motor off");
pwm_set_duty_percent(0);
while(TRUE)
{
reza=0;
pina0=input(PIN_A0);
pina1=input(PIN_A1);
pina2=input(PIN_A2);
pina3=input(PIN_A3);
switch(reza) {
case 1 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(0);
break;
}
case 2 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(100);
break;
}
case 3 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(200);
break;
}
case 4 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(300);
break;
}
case 5 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(400);
break;
}
case 6 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(500);
break;
}
case 7 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(600);
break;
}
case 8 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(700);
break;
}
case 9 :{
printf(lcd_putc,"\f\ level= %u",reza);
pwm_set_duty_percent(1000);
break;
}
}
delay_ms(100);
}
}
ببخشید هر کاری می کنم علامتا اینجا برعکس میشه
از دوستان یه خواهش دیگه هم دارم . فایلی که تو پروتوز شبیه سازی کردم و دیتا شیتش یکی دوتا ارور داره نمیدونم از کجاست چون تازه کارم. اونام آدرسشون رو میذارم اگر کسی تونست کمکم کنه ممنون
[Dear Guest/Member you can't see link before replyclick here to register]
[Dear Guest/Member you can't see link before replyclick here to register]
#INT_EXT
void EXT_isr(void)
{
}
این کد یک تابع وقفه خارجی هست.
به این معنی که بعد از اینکه وقفه خارجی اتفاق می افتد برنامه می رود و تمامی دستورات داخل تابع را اجرا می کند.
--------------------
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
این کدها هم وقفه خارجی و وقفه را فعال می کند
-----------
void main()
{
این کد که برای شروع برنامه هست و به صورت defult توی تمامی برنامه های میکرو هست.(یعنی یک تابعی هست که هیچ مقداری رو برمی گرداند)
----------
unsigned int8 reza=0;
این کد که معرفی یک متغییر از نوع integer 8 بیتی هست که وقتی unsigned ابتدای اون اومده یعنی قسمت مثبت مد نظر هست.(متغییر رضا کلا که 8 بیت هست همش رو صفر کرده)
---
;
#bit pina0 = reza.0
#bit pina1 = reza.1
#bit pina2 = reza.2
#bit pina3 = reza.3
این کد هم که اومده از بیت صفر تا سه رو با مقدار رضا از 0 تا 3 مقدار دهی کرده
-----------
بقیشم برید کتاب بخونید و لطف کنید بدون مطالعه قبلی پست نگذارید.
با تشکر
بسیار ممنونم از لطفتون.
خیلی زحمت کشیدید
من بخاطر این کدها کل کتاب رو خونده بودم فقط مفهوم این چندتا برام واضح نبود چون تازه کارم
درهر صورت ممنونم از لطفتون
ممنون خیلی جالب بود.