/*@AVR_ESMelectronic*/
#include ᐸmega32.h>
#include ᐸdelay.h>
#include ᐸalcd.h>
void nafar1()
{
lcd_clear();
lcd_putsf("nafar 1");
PORTB.0=1;
delay_ms(3000);
PORTB.0=0;
lcd_clear();
}
void nafar2()
{
lcd_clear();
lcd_putsf("nafar 2");
PORTB.1=1;
delay_ms(3000);
PORTB.1=0;
lcd_clear();
}
void nafar3()
{
lcd_clear();
lcd_putsf("nafar 3");
PORTB.2=1;
delay_ms(3000);
PORTB.2=0;
lcd_clear();
}
void main(void)
{
PORTD=7;
DDRD=0;
DDRB=7;
lcd_init(16);
while (1)
{
lcd_gotoxy(0,0);
lcd_putsf("start...!");
if (PIND.0==0)nafar1();
if (PIND.1==0)nafar2();
if (PIND.2==0)nafar3();
}
}
#include ᐸmega32.h>
#include ᐸdelay.h>
#include ᐸalcd.h>
void nafar1()
{
lcd_clear();
lcd_putsf("nafar 1");
PORTB.0=1;
delay_ms(3000);
PORTB.0=0;
lcd_clear();
}
void nafar2()
{
lcd_clear();
lcd_putsf("nafar 2");
PORTB.1=1;
delay_ms(3000);
PORTB.1=0;
lcd_clear();
}
void nafar3()
{
lcd_clear();
lcd_putsf("nafar 3");
PORTB.2=1;
delay_ms(3000);
PORTB.2=0;
lcd_clear();
}
void main(void)
{
PORTD=7;
DDRD=0;
DDRB=7;
lcd_init(16);
while (1)
{
lcd_gotoxy(0,0);
lcd_putsf("start...!");
if (PIND.0==0)nafar1();
if (PIND.1==0)nafar2();
if (PIND.2==0)nafar3();
}
}
🔘 جواب اصلی #چالش_شماره2
✅ توسط مهندس محسن فیض الهی (برنامه نویس درجه یک و بی ادعا)
/*@AVR_ESMelectronic*/
#include ᐸmega16.h>
#include ᐸdelay.h>
#include ᐸstdio.h>
#include ᐸalcd.h>
bit F;
char lcd[32];
unsigned char m=0,s=0,c=0;
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
s++;
if(s==60){
s=0;
m++;
}
if(m==60){
m=0;
c++;
}
if(c==12){
c=0;
}
sprintf(lcd,"%2d:%2d:%2d",c,m,s);
lcd_gotoxy(4,0);
lcd_puts(lcd);
}
void main(void)
{
DDRB=0X01;
PORTB=0X02;
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x40;
lcd_init(16);
lcd_putsf("Enter Start");
while (1)
{
if(PINB.1==0){
delay_ms(20);
while(PINB.1==0);
lcd_clear();
#asm("sei")
}
if(c==2 && m==10 && s==50)
F=1;
if(c==3 && m==10 && s==50)
F=0;
if(c==5 && m==10 && s==50)
F=1;
if(c==6 && m==10 && s==50)
F=0;
if(c==8 && m==10 && s==50)
F=1;
if(c==9 && m==10 && s==50)
F=0;
if(c==11 && m==10 && s==50)
F=1;
if(c==12 && m==10 && s==50)
F=0;
PORTB.0=F;
}
}
✅ توسط مهندس محسن فیض الهی (برنامه نویس درجه یک و بی ادعا)
/*@AVR_ESMelectronic*/
#include ᐸmega16.h>
#include ᐸdelay.h>
#include ᐸstdio.h>
#include ᐸalcd.h>
bit F;
char lcd[32];
unsigned char m=0,s=0,c=0;
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
s++;
if(s==60){
s=0;
m++;
}
if(m==60){
m=0;
c++;
}
if(c==12){
c=0;
}
sprintf(lcd,"%2d:%2d:%2d",c,m,s);
lcd_gotoxy(4,0);
lcd_puts(lcd);
}
void main(void)
{
DDRB=0X01;
PORTB=0X02;
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x40;
lcd_init(16);
lcd_putsf("Enter Start");
while (1)
{
if(PINB.1==0){
delay_ms(20);
while(PINB.1==0);
lcd_clear();
#asm("sei")
}
if(c==2 && m==10 && s==50)
F=1;
if(c==3 && m==10 && s==50)
F=0;
if(c==5 && m==10 && s==50)
F=1;
if(c==6 && m==10 && s==50)
F=0;
if(c==8 && m==10 && s==50)
F=1;
if(c==9 && m==10 && s==50)
F=0;
if(c==11 && m==10 && s==50)
F=1;
if(c==12 && m==10 && s==50)
F=0;
PORTB.0=F;
}
}
💻 برنامه نوشته شده توسط متین صالحیان
#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>
#define START PINB.1
#define RELAY PORTB.0
char s,m,h,day,lcd_buffer[9];
bit flag_start=0,count;
interrupt [TIM2_OVF] void timer2_ovf_isr(void){
if(flag_start==1)s++;
}
void main(void){
{
PORTB=0x02;
DDRB=0x01;
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x40;
lcd_init(16);
#asm("sei")
}
while (1){
if(!START){delay_ms(50);if(!START)flag_start=1;}
if(flag_start){
if(s>=60){s=0;m++;}
if(m>=60){m=0;h++;}
if(h>=24){h=0;day++;}
if(h==2 && m==10 && s==50){RELAY=1;count=1;}
if(count==1 && ((h-2)%3)==1 && m==10 && s==50)RELAY=0;
if(count==1 && ((h-2)%3)==0 && m==10 && s==50)RELAY=1;
}
sprintf(lcd_buffer,"%2d:%2d:%2d",h,m,s);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer);
}
}
💢 توضیحات خط به خط این برنامه فردا خدمت دوستان ارائه می گردد💢
#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>
#define START PINB.1
#define RELAY PORTB.0
char s,m,h,day,lcd_buffer[9];
bit flag_start=0,count;
interrupt [TIM2_OVF] void timer2_ovf_isr(void){
if(flag_start==1)s++;
}
void main(void){
{
PORTB=0x02;
DDRB=0x01;
ASSR=0x08;
TCCR2=0x05;
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x40;
lcd_init(16);
#asm("sei")
}
while (1){
if(!START){delay_ms(50);if(!START)flag_start=1;}
if(flag_start){
if(s>=60){s=0;m++;}
if(m>=60){m=0;h++;}
if(h>=24){h=0;day++;}
if(h==2 && m==10 && s==50){RELAY=1;count=1;}
if(count==1 && ((h-2)%3)==1 && m==10 && s==50)RELAY=0;
if(count==1 && ((h-2)%3)==0 && m==10 && s==50)RELAY=1;
}
sprintf(lcd_buffer,"%2d:%2d:%2d",h,m,s);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer);
}
}
💢 توضیحات خط به خط این برنامه فردا خدمت دوستان ارائه می گردد💢
✔️ توضیحات خط به خط برنامه آقای متین صالحیان👇
#include ᐸmega16.h>
//کتابخانه مربوط به میکرو کنترلر
#include ᐸalcd.h>
//کتابخانه مربوط به lcd
#include ᐸstdio.h>
//کتابخونه ورودی و خروحی های استاندارد
#include ᐸdelay.h>
//وقفه
#define START PINB.1
//تعیین کردن پین b.1 به عنوان کلید استارت
#define RELAY PORTB.0
//تعیین کردن پورت b.0 بعنوان رله
//متغیر ها
char s,m,h,day,lcd_buffer[9];
bit flag_start=0,count;
//وقفه تايمر 2
//اين وقفه هر 1 ثانيه يکبار فراخواني ميشود
interrupt [TIM2_OVF] void timer2_ovf_isr(void){
//در صورتي که اجازه شمارش داشتي يک عدد به ثانيه اضافه کن
if(flag_start==1)s++;
}
void main(void){
{
// تعريف کردن پورت B.0 به عنوان خروجي
//فعال کردن pull up براي پين B.1
PORTB=0x02;
DDRB=0x01;
//مقدار دهي به رجيستر هاي مربوط تايمر
ASSR=0x08;
TCCR2=0x05; //تقسيم فرکانسي مربوط به تايمر 2
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x40;//وقفه هاي مربوط به تايمر
lcd_init(16);
#asm("sei") //فعال سازي وقفه هاي کلي
}
while (1){
// درصورتي که کليد استارت زده شد فلک استارت را برابر 1 ميکنيم
//اين فلگ در وقفه تايمر وجود داشت و به ما اجازه ميداد که شمارش را انجام بدهيم يا نه
if(!START){delay_ms(50);if(!START)flag_start=1;}
if(flag_start){//درصورتي که اجازه شمارش داشتيم
//مقدار دهي به متغير هاي ثاني دقيقه و ساعت
if(s>=60){s=0;m++;}
if(m>=60){m=0;h++;}
if(h>=24){h=0;day++;}
//اولين روشن شدن راس ساعت 2:10:50 اتفاق ميوفتد ، در صورتي که به اين زمان رسيديم رله را فعال کن
//پس از فعال سازي رله بيت شمارش را فعال کن تا تايمر به صورت اتوماتيک رله را فعال و غير فعال کند
if(h==2 && m==10 && s==50){RELAY=1;count=1;}
//با کمي دقت ميتوانيم به اين فرمول برسيم :
// اگر ساعت -2 مضربي از 3 باشد بايد رله را فعال کرد
// اگر ساعت -2 ، مضربي از 3 با باقي مانده 1 باشد بايد رله را غير فعال کرد
// يعني : (h-2)/3 = 3x+y ->
//xخارج قسمت و y باقي مانده است ، در صورتي که h-2 مضربي از 3 باشد y برابر 0 ميشود و در غير اين صورت عددي برابر 1 ويا 2 ميشود
//نکته : دستور % اين باقيمانده را محاسبه ميکند
//پس اگر (h-2)%3)==1 رله را غيرفعال کن
// اگر (h-2)%3)==0 رله را فعال کن
if(count==1 && ((h-2)%3)==1 && m==10 && s==50)RELAY=0;
if(count==1 && ((h-2)%3)==0 && m==10 && s==50)RELAY=1;
}
//ساعت ، دقيقه و ثانيه را نمايش بده
sprintf(lcd_buffer,"%2d:%2d:%2d",h,m,s);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer);
}
}
#include ᐸmega16.h>
//کتابخانه مربوط به میکرو کنترلر
#include ᐸalcd.h>
//کتابخانه مربوط به lcd
#include ᐸstdio.h>
//کتابخونه ورودی و خروحی های استاندارد
#include ᐸdelay.h>
//وقفه
#define START PINB.1
//تعیین کردن پین b.1 به عنوان کلید استارت
#define RELAY PORTB.0
//تعیین کردن پورت b.0 بعنوان رله
//متغیر ها
char s,m,h,day,lcd_buffer[9];
bit flag_start=0,count;
//وقفه تايمر 2
//اين وقفه هر 1 ثانيه يکبار فراخواني ميشود
interrupt [TIM2_OVF] void timer2_ovf_isr(void){
//در صورتي که اجازه شمارش داشتي يک عدد به ثانيه اضافه کن
if(flag_start==1)s++;
}
void main(void){
{
// تعريف کردن پورت B.0 به عنوان خروجي
//فعال کردن pull up براي پين B.1
PORTB=0x02;
DDRB=0x01;
//مقدار دهي به رجيستر هاي مربوط تايمر
ASSR=0x08;
TCCR2=0x05; //تقسيم فرکانسي مربوط به تايمر 2
TCNT2=0x00;
OCR2=0x00;
TIMSK=0x40;//وقفه هاي مربوط به تايمر
lcd_init(16);
#asm("sei") //فعال سازي وقفه هاي کلي
}
while (1){
// درصورتي که کليد استارت زده شد فلک استارت را برابر 1 ميکنيم
//اين فلگ در وقفه تايمر وجود داشت و به ما اجازه ميداد که شمارش را انجام بدهيم يا نه
if(!START){delay_ms(50);if(!START)flag_start=1;}
if(flag_start){//درصورتي که اجازه شمارش داشتيم
//مقدار دهي به متغير هاي ثاني دقيقه و ساعت
if(s>=60){s=0;m++;}
if(m>=60){m=0;h++;}
if(h>=24){h=0;day++;}
//اولين روشن شدن راس ساعت 2:10:50 اتفاق ميوفتد ، در صورتي که به اين زمان رسيديم رله را فعال کن
//پس از فعال سازي رله بيت شمارش را فعال کن تا تايمر به صورت اتوماتيک رله را فعال و غير فعال کند
if(h==2 && m==10 && s==50){RELAY=1;count=1;}
//با کمي دقت ميتوانيم به اين فرمول برسيم :
// اگر ساعت -2 مضربي از 3 باشد بايد رله را فعال کرد
// اگر ساعت -2 ، مضربي از 3 با باقي مانده 1 باشد بايد رله را غير فعال کرد
// يعني : (h-2)/3 = 3x+y ->
//xخارج قسمت و y باقي مانده است ، در صورتي که h-2 مضربي از 3 باشد y برابر 0 ميشود و در غير اين صورت عددي برابر 1 ويا 2 ميشود
//نکته : دستور % اين باقيمانده را محاسبه ميکند
//پس اگر (h-2)%3)==1 رله را غيرفعال کن
// اگر (h-2)%3)==0 رله را فعال کن
if(count==1 && ((h-2)%3)==1 && m==10 && s==50)RELAY=0;
if(count==1 && ((h-2)%3)==0 && m==10 && s==50)RELAY=1;
}
//ساعت ، دقيقه و ثانيه را نمايش بده
sprintf(lcd_buffer,"%2d:%2d:%2d",h,m,s);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer);
}
}
#include <lpc213x.h>
void delay_ms(unsigned int n){
n=n*2000;
while(n--);
}
int main(){
IO0DIR=0xff;
while(1){
IO0SET=0XFF;
delay_ms(1000);
IO0CLR=0x00;
delay_ms(1000);
}
}
void delay_ms(unsigned int n){
n=n*2000;
while(n--);
}
int main(){
IO0DIR=0xff;
while(1){
IO0SET=0XFF;
delay_ms(1000);
IO0CLR=0x00;
delay_ms(1000);
}
}
#include ᐸmega16.h>
#include ᐸalcd.h>
#include ᐸdelay.h>
int i=0,j=0,k=0;
void main(void)
{
lcd_init(16);
while (1)
{
lcd_clear();
lcd_gotoxy(3,0);
lcd_putsf("loading");
for(i=0;iᐸk+1;i++){
lcd_gotoxy(10+i,0);
lcd_putsf(".");
}
k++;
if(k==3)k=0;
for(i=0;iᐸj+1;i++){
lcd_gotoxy(i,1);
lcd_putchar(255);
}
j++;
delay_ms(500);
if(j==16)j=0;
}
}
🇮🇷⚡️ @AVR_ESMelectronic ⚡️
#include ᐸalcd.h>
#include ᐸdelay.h>
int i=0,j=0,k=0;
void main(void)
{
lcd_init(16);
while (1)
{
lcd_clear();
lcd_gotoxy(3,0);
lcd_putsf("loading");
for(i=0;iᐸk+1;i++){
lcd_gotoxy(10+i,0);
lcd_putsf(".");
}
k++;
if(k==3)k=0;
for(i=0;iᐸj+1;i++){
lcd_gotoxy(i,1);
lcd_putchar(255);
}
j++;
delay_ms(500);
if(j==16)j=0;
}
}
🇮🇷⚡️ @AVR_ESMelectronic ⚡️
ESMELECTRONIC.IR
✅ #پروژه طراحی و راه اندازی استپر موتور ✨اطلاعات و کلیه فایلهای مورد نیاز به همراه برنامه نویسی و جزوه آموزشی👇👇 🇮🇷⚡️ @AVR_ESMelectronic ⚡️
💢برنامه نویسی
/*****************
@AVR_ESMELECTRONIC
******************/
#include <mega16.h>
#include <delay.h>
void main(void)
{
int i,j;
DDRB=0xFF;
PORTB=0x00;
while (1)
{
for(i=1;i<=25;i++)
{
for(j=1;j<=8;j=j*2)
{
PORTB=~j;
delay_ms(200);
}
}
for(i=1;i<=25;i++)
{
for(j=8;j>=1;j=j/2)
{
PORTB=~j;
delay_ms(200);
}
}
};
}
/*****************
@AVR_ESMELECTRONIC
******************/
#include <mega16.h>
#include <delay.h>
void main(void)
{
int i,j;
DDRB=0xFF;
PORTB=0x00;
while (1)
{
for(i=1;i<=25;i++)
{
for(j=1;j<=8;j=j*2)
{
PORTB=~j;
delay_ms(200);
}
}
for(i=1;i<=25;i++)
{
for(j=8;j>=1;j=j/2)
{
PORTB=~j;
delay_ms(200);
}
}
};
}
/********************
@AVR_ESMELECTRONIC
*********************/
#include ᐸmega16.h>
#include ᐸalcd.h>
#include ᐸdelay.h>
int i=0,j=0;
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
lcd_init(16);
while (1)
{
for(i=0,j=12;iᐸ13,j>0;j--,i++)
{
lcd_clear();
lcd_gotoxy(i,0);
lcd_putsf("ESM");
lcd_gotoxy(j,1);
lcd_putsf("ELEC");
delay_ms(250);
}
for(i=12,j=0;i>0,jᐸ13;i--,j++)
{
lcd_clear();
lcd_gotoxy(i,0);
lcd_putsf("ESM");
lcd_gotoxy(j,1);
lcd_putsf("ELEC");
delay_ms(250);
}
}
}
@AVR_ESMELECTRONIC
*********************/
#include ᐸmega16.h>
#include ᐸalcd.h>
#include ᐸdelay.h>
int i=0,j=0;
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
lcd_init(16);
while (1)
{
for(i=0,j=12;iᐸ13,j>0;j--,i++)
{
lcd_clear();
lcd_gotoxy(i,0);
lcd_putsf("ESM");
lcd_gotoxy(j,1);
lcd_putsf("ELEC");
delay_ms(250);
}
for(i=12,j=0;i>0,jᐸ13;i--,j++)
{
lcd_clear();
lcd_gotoxy(i,0);
lcd_putsf("ESM");
lcd_gotoxy(j,1);
lcd_putsf("ELEC");
delay_ms(250);
}
}
}
ESMELECTRONIC.IR
اطلاعات برنامه نویسی این پروژه درحال تکمیل است و بزودی در اختیار دوستان قرار خواهد گرفت
#include <mega16.h>
#include <stdio.h>
#define Lamp1 PORTC.0
#define Lamp2 PORTC.1
#define Lamp3 PORTC.2
#define Lamp4 PORTC.3
#define Lamp5 PORTC.4
#define Lamp6 PORTC.5
#define Lamp7 PORTC.6
#define Lamp8 PORTC.7
char val;
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
while (1)
{
// Place your code here
val=getchar();
if(val=='1'){
Lamp1=1;
}else
if(val=='2'){
Lamp2=1;
}else
if(val=='3'){
Lamp3=1;
}else
if(val=='4'){
Lamp4=1;
}else
if(val=='5'){
Lamp5=1;
}else
if(val=='6'){
Lamp6=1;
}else
if(val=='7'){
Lamp7=1;
}else
if(val=='8'){
Lamp8=1;
}
else
if(val=='9'){
Lamp1=1;
Lamp2=1;
Lamp3=1;
Lamp4=1;
Lamp5=1;
Lamp6=1;
Lamp7=1;
Lamp8=1;
}else
if(val=='A'){
Lamp1=0;
}else
if(val=='B'){
Lamp2=0;
}else
if(val=='C'){
Lamp3=0;
}else
if(val=='D'){
Lamp4=0;
}else
if(val=='E'){
Lamp5=0;
}else
if(val=='F'){
Lamp6=0;
}else
if(val=='G'){
Lamp7=0;
}else
if(val=='H'){
Lamp8=0;
}else
if(val=='I'){
Lamp1=0;
Lamp2=0;
Lamp3=0;
Lamp4=0;
Lamp5=0;
Lamp6=0;
Lamp7=0;
Lamp8=0;
}
}
}
#include <stdio.h>
#define Lamp1 PORTC.0
#define Lamp2 PORTC.1
#define Lamp3 PORTC.2
#define Lamp4 PORTC.3
#define Lamp5 PORTC.4
#define Lamp6 PORTC.5
#define Lamp7 PORTC.6
#define Lamp8 PORTC.7
char val;
void main(void)
{
PORTC=0x00;
DDRC=0xFF;
PORTD=0x00;
DDRD=0x00;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
while (1)
{
// Place your code here
val=getchar();
if(val=='1'){
Lamp1=1;
}else
if(val=='2'){
Lamp2=1;
}else
if(val=='3'){
Lamp3=1;
}else
if(val=='4'){
Lamp4=1;
}else
if(val=='5'){
Lamp5=1;
}else
if(val=='6'){
Lamp6=1;
}else
if(val=='7'){
Lamp7=1;
}else
if(val=='8'){
Lamp8=1;
}
else
if(val=='9'){
Lamp1=1;
Lamp2=1;
Lamp3=1;
Lamp4=1;
Lamp5=1;
Lamp6=1;
Lamp7=1;
Lamp8=1;
}else
if(val=='A'){
Lamp1=0;
}else
if(val=='B'){
Lamp2=0;
}else
if(val=='C'){
Lamp3=0;
}else
if(val=='D'){
Lamp4=0;
}else
if(val=='E'){
Lamp5=0;
}else
if(val=='F'){
Lamp6=0;
}else
if(val=='G'){
Lamp7=0;
}else
if(val=='H'){
Lamp8=0;
}else
if(val=='I'){
Lamp1=0;
Lamp2=0;
Lamp3=0;
Lamp4=0;
Lamp5=0;
Lamp6=0;
Lamp7=0;
Lamp8=0;
}
}
}
#include <mega8.h>
#include <delay.h>
#define BUT_A PINB.0
#define BUT_B PINB.1
#define BUT_C PINB.2
#define LED_A PORTD.0
#define LED_B PORTD.1
#define LED_C PORTD.2
void main(void)
{
unsigned int d;
PORTB=0x07;
DDRB=0x00;
PORTD=0x00;
DDRD=0x07;
while (1)
{
if(BUT_A==0)
{
delay_ms(50);
LED_A = !LED_A;
while(BUT_A==0);
}
if(BUT_B==0)
{
delay_ms(50);
LED_B = !LED_B;
while(BUT_B==0);
}
if(BUT_C==0)
{
d=0;
while(BUT_C==0)
{
delay_ms(1);
if(++d>1999) break;
}
if(d>1999) LED_C=1;
else LED_C=0;
while(BUT_C==0);
}
}
}
https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
#include <delay.h>
#define BUT_A PINB.0
#define BUT_B PINB.1
#define BUT_C PINB.2
#define LED_A PORTD.0
#define LED_B PORTD.1
#define LED_C PORTD.2
void main(void)
{
unsigned int d;
PORTB=0x07;
DDRB=0x00;
PORTD=0x00;
DDRD=0x07;
while (1)
{
if(BUT_A==0)
{
delay_ms(50);
LED_A = !LED_A;
while(BUT_A==0);
}
if(BUT_B==0)
{
delay_ms(50);
LED_B = !LED_B;
while(BUT_B==0);
}
if(BUT_C==0)
{
d=0;
while(BUT_C==0)
{
delay_ms(1);
if(++d>1999) break;
}
if(d>1999) LED_C=1;
else LED_C=0;
while(BUT_C==0);
}
}
}
https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
#include <mega32.h>
#include <delay.h>
//PORTD.0=A;PORTD.1=B;PORTD.2=C; OUTPUT
//PORTB.0=A;PORTB.1=B;PORTB.2=C; INPUT
void delay (void);
int i,s,j,d=0,a=0,b=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if(PINB.2==0){
TCNT0=0x06;
i++;
if(i>=125&&PINB.2==0){s++;i=0;}//i>=125...1 s generate //f=8mhz//n=256//
if(s==2){PORTD.2=1;s=0;j=1;} }//2 s
if(j==1&&PINB.2==1){d=1;j=0;}
}
void main(void)
{
PORTD=0x00;
DDRD=0xFF;
PORTB=0x00;
DDRB=0x00;
TCCR0=0x00;
TCNT0=0x06;
OCR0=0x00;
TIMSK=0x01;
#asm("sei")
while (1)
{
if(PINB.0==0&&a==0){PORTD.0=1;a=1;delay_ms(300);}
if(PINB.0==0&&a==1){PORTD.0=0;delay_ms(300);a=0;}
if(PINB.1==0&&b==0){PORTD.1=1;b=1;delay_ms(300);}
if(PINB.1==0&&b==1){PORTD.1=0;delay_ms(300);b=0;}
if(PINB.2==0&&d==0)delay();
if(PINB.2==0&&d==1){PORTD.2=0x00;d=0;delay_ms(300);}
}
}void delay (void)
{ TCCR0=0x04;
TCNT0=0x06;
while(!TIFR&0x01);
TIFR=TIFR|0X01;
}
https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
#include <delay.h>
//PORTD.0=A;PORTD.1=B;PORTD.2=C; OUTPUT
//PORTB.0=A;PORTB.1=B;PORTB.2=C; INPUT
void delay (void);
int i,s,j,d=0,a=0,b=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if(PINB.2==0){
TCNT0=0x06;
i++;
if(i>=125&&PINB.2==0){s++;i=0;}//i>=125...1 s generate //f=8mhz//n=256//
if(s==2){PORTD.2=1;s=0;j=1;} }//2 s
if(j==1&&PINB.2==1){d=1;j=0;}
}
void main(void)
{
PORTD=0x00;
DDRD=0xFF;
PORTB=0x00;
DDRB=0x00;
TCCR0=0x00;
TCNT0=0x06;
OCR0=0x00;
TIMSK=0x01;
#asm("sei")
while (1)
{
if(PINB.0==0&&a==0){PORTD.0=1;a=1;delay_ms(300);}
if(PINB.0==0&&a==1){PORTD.0=0;delay_ms(300);a=0;}
if(PINB.1==0&&b==0){PORTD.1=1;b=1;delay_ms(300);}
if(PINB.1==0&&b==1){PORTD.1=0;delay_ms(300);b=0;}
if(PINB.2==0&&d==0)delay();
if(PINB.2==0&&d==1){PORTD.2=0x00;d=0;delay_ms(300);}
}
}void delay (void)
{ TCCR0=0x04;
TCNT0=0x06;
while(!TIFR&0x01);
TIFR=TIFR|0X01;
}
https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
#include <1.h>
int1 i=0;
int1 u=0;
//int1 p=0;
void main()
{
while(TRUE)
{
if(input(pin_a0)==0){
delay_ms(10);
if(input(pin_a0)==0){
i++;
switch (i){
case 0: output_low(pin_b0);
break;
case 1: output_high(pin_b0);
break; }
while(input(pin_a0)==0); }}
///
if(input(pin_a1)==0){
delay_ms(10);
if(input(pin_a1)==0){
u++;
switch (u){
case 0: output_low(pin_b1);
break;
case 1: output_high(pin_b1);
break;}
while(input(pin_a1)==0);}}
if(input(pin_a2)==0){
//output_low(pin_b2);
// p++;
delay_ms(20);
if(input(pin_a2)==0){
if(input(pin_a2)==0 && output_high(pin_b2) ){
output_low(pin_b2);
delay_ms(250);
}
if(input(pin_a2)==0){
// p++;
delay_ms(1400);
output_high(pin_b2);
while(input(pin_a2)==0);
}}}
// while(output_high(pin_b2)){
// if(input(pin_a2)==0) output_low(pin_b2); //}
https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
int1 i=0;
int1 u=0;
//int1 p=0;
void main()
{
while(TRUE)
{
if(input(pin_a0)==0){
delay_ms(10);
if(input(pin_a0)==0){
i++;
switch (i){
case 0: output_low(pin_b0);
break;
case 1: output_high(pin_b0);
break; }
while(input(pin_a0)==0); }}
///
if(input(pin_a1)==0){
delay_ms(10);
if(input(pin_a1)==0){
u++;
switch (u){
case 0: output_low(pin_b1);
break;
case 1: output_high(pin_b1);
break;}
while(input(pin_a1)==0);}}
if(input(pin_a2)==0){
//output_low(pin_b2);
// p++;
delay_ms(20);
if(input(pin_a2)==0){
if(input(pin_a2)==0 && output_high(pin_b2) ){
output_low(pin_b2);
delay_ms(250);
}
if(input(pin_a2)==0){
// p++;
delay_ms(1400);
output_high(pin_b2);
while(input(pin_a2)==0);
}}}
// while(output_high(pin_b2)){
// if(input(pin_a2)==0) output_low(pin_b2); //}
https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
/*****************************************************
@AVR_ESMELECTRONIC
WWW.ESMELECTRONIC.COM
*****************************************************/
#include <mega32a.h>
#include <stdio.h>
#include <delay.h>
#include <alcd.h>
#define write_data PORTC.1
#define read_data PINC.1
#define data_line DDRC.1
#define sck PORTC.0
#define sck_line DDRC.0
#define output 1
#define input 0
#define ack 0
#define nack 1
#define Measure_Temperature 0x03
#define Measure_Humidity 0x05
#define Read_Status_Register 0x07
#define Write_Status_Register 0x06
#define Soft_Reset 0x1E
//@AVR_ESMELECTRONIC
char buffer[16];
const float c1=-2.0468; //12bit
const float c2=0.0367; //12bit
const float c3=0.0000015955; //12bit
const float t1=0.01; //12bit
const float t2=0.00008; //12bit
const float d1=-40.1; //14bit
const float d2=0.01; //14bit
//@AVR_ESMELECTRONIC
float SOT,SORH;
float Temperature;
float RH_linear,RH_true;
//@AVR_ESMELECTRONIC
unsigned int read_sht(unsigned char cmd)
{
unsigned char i,CRC,m=128;
unsigned int sht_data;
data_line=output;
sck_line=output;
delay_ms(2);
//reset sequence
write_data=1;
sck=0;
delay_us(10);
for(i=0;i<10;i++)
{
sck=1;
delay_us(10);
sck=0;
delay_us(10);
}
//transmission START
write_data=1;
sck=1;
delay_us(10);
write_data=0;
sck=0;
delay_us(10);
sck=1;
delay_us(10);
write_data=1;
sck=0;
delay_us(10);
//Transmit command
for(i=0;i<8;i++)
{
if(m&cmd)
write_data=1;
else
write_data=0;
delay_us(5);
sck=1;
delay_us(10);
sck=0;
delay_us(10);
m»=1;
}
//Check acknowledge
data_line=input;
sck=1;
delay_us(10);
if(read_data==nack);
return 0;
sck=0;
delay_us(10);
while(read_data==ack);
// Wait until data is ready
while(read_data==1);
//Get MSB byte
for(i=0;i<8;i++)
{
sht_data«=1;
sck=1;
delay_us(10);
if(read_data==1)
sck=0;
delay_us(10);
}
//Send acknowledge
data_line=output;
write_data=ack;
delay_us(5);
sck=1;
delay_us(10);
sck=0;
delay_us(10);
//Get LSB byte
data_line=input;
for(i=0;i<8;i++)
{
sht_data«=1;
sck=1;
delay_us(10);
if(read_data==1)
sck=0;
delay_us(10);
}
//@AVR_ESMELECTRONIC
//Send acknowledge
data_line=output;
write_data=ack;
delay_us(5);
sck=1;
delay_us(10);
sck=0;
delay_us(10);
//Get CRC-8
data_line=input;
for(i=0;i<8;i++)
{
CRC«=1;
sck=1;
delay_us(10);
if(read_data==1)
CRC|=1;
sck=0;
delay_us(10);
}
//Skip acknowledge to end transmission
data_line=output;
sck=1;
delay_us(10);
sck=0;
delay_us(10);
return sht_data;
}
//@AVR_ESMELECTRONIC
void main(void)
{
//Characters/line:16
lcd_init(16);
while(1)
{
//place your code here
lcd_clear();
lcd_gotoxy(0,0);
sprintf(buffer,"Temp:%3.1fC",Temperature);
lcd_puts(buffer);
lcd_gotoxy(0,1);
sprintf(buffer,"Humidity:%3.1f%%",RH_true-3);
lcd_puts(buffer);
delay_ms(1000);
SOT=read_sht(Measure_Temperature);
delay_ms(200);
SORH=read_sht(Measure_Humidity);
Temperature=d1+d2*SOT;
RH_linear=c1+c2*SORH+c3*SORH*SORH;
RH_true=(Temperature-25)*(t1+t2*SORH)+RH_linear;
}
}
@AVR_ESMELECTRONIC
WWW.ESMELECTRONIC.COM
*****************************************************/
#include <mega32a.h>
#include <stdio.h>
#include <delay.h>
#include <alcd.h>
#define write_data PORTC.1
#define read_data PINC.1
#define data_line DDRC.1
#define sck PORTC.0
#define sck_line DDRC.0
#define output 1
#define input 0
#define ack 0
#define nack 1
#define Measure_Temperature 0x03
#define Measure_Humidity 0x05
#define Read_Status_Register 0x07
#define Write_Status_Register 0x06
#define Soft_Reset 0x1E
//@AVR_ESMELECTRONIC
char buffer[16];
const float c1=-2.0468; //12bit
const float c2=0.0367; //12bit
const float c3=0.0000015955; //12bit
const float t1=0.01; //12bit
const float t2=0.00008; //12bit
const float d1=-40.1; //14bit
const float d2=0.01; //14bit
//@AVR_ESMELECTRONIC
float SOT,SORH;
float Temperature;
float RH_linear,RH_true;
//@AVR_ESMELECTRONIC
unsigned int read_sht(unsigned char cmd)
{
unsigned char i,CRC,m=128;
unsigned int sht_data;
data_line=output;
sck_line=output;
delay_ms(2);
//reset sequence
write_data=1;
sck=0;
delay_us(10);
for(i=0;i<10;i++)
{
sck=1;
delay_us(10);
sck=0;
delay_us(10);
}
//transmission START
write_data=1;
sck=1;
delay_us(10);
write_data=0;
sck=0;
delay_us(10);
sck=1;
delay_us(10);
write_data=1;
sck=0;
delay_us(10);
//Transmit command
for(i=0;i<8;i++)
{
if(m&cmd)
write_data=1;
else
write_data=0;
delay_us(5);
sck=1;
delay_us(10);
sck=0;
delay_us(10);
m»=1;
}
//Check acknowledge
data_line=input;
sck=1;
delay_us(10);
if(read_data==nack);
return 0;
sck=0;
delay_us(10);
while(read_data==ack);
// Wait until data is ready
while(read_data==1);
//Get MSB byte
for(i=0;i<8;i++)
{
sht_data«=1;
sck=1;
delay_us(10);
if(read_data==1)
sck=0;
delay_us(10);
}
//Send acknowledge
data_line=output;
write_data=ack;
delay_us(5);
sck=1;
delay_us(10);
sck=0;
delay_us(10);
//Get LSB byte
data_line=input;
for(i=0;i<8;i++)
{
sht_data«=1;
sck=1;
delay_us(10);
if(read_data==1)
sck=0;
delay_us(10);
}
//@AVR_ESMELECTRONIC
//Send acknowledge
data_line=output;
write_data=ack;
delay_us(5);
sck=1;
delay_us(10);
sck=0;
delay_us(10);
//Get CRC-8
data_line=input;
for(i=0;i<8;i++)
{
CRC«=1;
sck=1;
delay_us(10);
if(read_data==1)
CRC|=1;
sck=0;
delay_us(10);
}
//Skip acknowledge to end transmission
data_line=output;
sck=1;
delay_us(10);
sck=0;
delay_us(10);
return sht_data;
}
//@AVR_ESMELECTRONIC
void main(void)
{
//Characters/line:16
lcd_init(16);
while(1)
{
//place your code here
lcd_clear();
lcd_gotoxy(0,0);
sprintf(buffer,"Temp:%3.1fC",Temperature);
lcd_puts(buffer);
lcd_gotoxy(0,1);
sprintf(buffer,"Humidity:%3.1f%%",RH_true-3);
lcd_puts(buffer);
delay_ms(1000);
SOT=read_sht(Measure_Temperature);
delay_ms(200);
SORH=read_sht(Measure_Humidity);
Temperature=d1+d2*SOT;
RH_linear=c1+c2*SORH+c3*SORH*SORH;
RH_true=(Temperature-25)*(t1+t2*SORH)+RH_linear;
}
}
ESMELECTRONIC.IR
💠مدار راه اندازی با میکروکنترلر 📍 #MPU6050 سنسور ژیروسکوپ 🔶برنامه نویسی فردا خدمت دوستان ارائه میگردد 🇮🇷 https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
🔶در این برنامه با استفاده از کتابخانه MPU6050 میخواهیم زوایای Z,Y,X را از طریق شتاب سنج اندازه گیری کنیم البته با توجه به داشتن سنسور دما میتوان علاوه بر اندازه گیری زوایا دما را نیز اندازه گرفت
/****************************************************
@AVR_ESMELECTRONIC
WWW.ESMELECTRONIC.COM
*****************************************************/
#include <mega32a.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#include <alcd.h>
#include "LIB\MPU6050 LIB\MPU6050.h"
#include <I2C.h>
unsigned char lcd_buf[16];
void main(void)
{
//I2C Port:PORTC
//Bit Rate: 100 khz
i2c_init();
lcd_init(16);
MPU6050_Test_I2C();
MPU6050_init();
while(1)
{
lcd_clear();
lcd_gotoxy(4,0);
lcd_putsf("MPU6050");
delay_ms(100);
lcd_gotoxy(0,1);
sprintf(lcd_buf,"ANGLE:%1.0f,%1.0f,%1.0f",accel_angle[X],accel_angle[Y],accel_angle[Z]);
//@AVR_ESMELECTRONIC
Get_Temp_Val();
Get_AvrgAccel_val();
Get_Accel_Angles();
delay_ms(500);
}
}
/****************************************************
@AVR_ESMELECTRONIC
WWW.ESMELECTRONIC.COM
*****************************************************/
#include <mega32a.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#include <alcd.h>
#include "LIB\MPU6050 LIB\MPU6050.h"
#include <I2C.h>
unsigned char lcd_buf[16];
void main(void)
{
//I2C Port:PORTC
//Bit Rate: 100 khz
i2c_init();
lcd_init(16);
MPU6050_Test_I2C();
MPU6050_init();
while(1)
{
lcd_clear();
lcd_gotoxy(4,0);
lcd_putsf("MPU6050");
delay_ms(100);
lcd_gotoxy(0,1);
sprintf(lcd_buf,"ANGLE:%1.0f,%1.0f,%1.0f",accel_angle[X],accel_angle[Y],accel_angle[Z]);
//@AVR_ESMELECTRONIC
Get_Temp_Val();
Get_AvrgAccel_val();
Get_Accel_Angles();
delay_ms(500);
}
}
💻برنامه نویسی مدار بالا در محیط کدویژن
/****************************************************
WWW.ESMELECTRONIC.COM
*****************************************************/
#include ᐸmega32a.h>
#include ᐸdelay.h>
#include ᐸalcd.h>
void main(void)
{
PORTA=0X00;
DDRA=0X00;
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(“TCRT5000”);
while(1)
{
if(PINA.7==0)
{
lcd_gotoxy(0,1);
lcd_putsf(“TCRT5000”);
lcd_gotoxy(0,1);
lcd_putsf(“»»»»”);
delay_ms(100);
}
if(PINA.7==1)
{
lcd_gotoxy(0,0);
lcd_putsf(“TCRT5000”);
lcd_gotoxy(0,1);
lcd_putsf(“……..”);
delay_ms(100);
}
}
}
باتشکر از حسن توجه شما عزیزان
موفق و پیروز باشید
🇮🇷 https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
/****************************************************
WWW.ESMELECTRONIC.COM
*****************************************************/
#include ᐸmega32a.h>
#include ᐸdelay.h>
#include ᐸalcd.h>
void main(void)
{
PORTA=0X00;
DDRA=0X00;
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf(“TCRT5000”);
while(1)
{
if(PINA.7==0)
{
lcd_gotoxy(0,1);
lcd_putsf(“TCRT5000”);
lcd_gotoxy(0,1);
lcd_putsf(“»»»»”);
delay_ms(100);
}
if(PINA.7==1)
{
lcd_gotoxy(0,0);
lcd_putsf(“TCRT5000”);
lcd_gotoxy(0,1);
lcd_putsf(“……..”);
delay_ms(100);
}
}
}
باتشکر از حسن توجه شما عزیزان
موفق و پیروز باشید
🇮🇷 https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw