Forwarded from عکس نگار
✨ برنامه نویسی پروژه ESM121
🔷🔶 توضیحات خط به خط برنامه به زودی
//@AVR_ESMelectronic
#include <mega8.h>
#include <delay.h>
#asm
.equ __lcd_port=0x12 ;// PORTD
#endasm
#include <lcd.h>
#define c1 PINB.4
#define c2 PINB.5
#define c3 PINB.6
#define c4 PINB.7
flash char row[]={0xfe,0xfd,0xfb,0xf7};
flash char data_key[]={
'1','2','3','A',
'4','5','6','B',
'7','8','9','C',
'*','0','#','D'};
unsigned char ac,table;
unsigned int r;
//________________________________________
void keypad(){
lcd_gotoxy(0,1);
lcd_putsf("~");
while (1){
for (r=0;r<4;r++){
ac=4;
PORTB=row[r];
DDRB=0x0f;
if (c1==0) ac=0;
if (c2==0) ac=1;
if (c3==0) ac=2;
if (c4==0) ac=3;
if (!(ac==4)){
table=data_key[(r*4)+ac];
lcd_putchar(table);
while (c1==0){}
while (c2==0){}
while (c3==0){}
while (c4==0){}
delay_ms(50);
}
}
}
}
//_________________________________________
void main(){
PORTB=0xff;
DDRB=0x0f;
lcd_init(16);
lcd_gotoxy(1,0);
lcd_putsf("ESM electronic");
keypad();
while(1){
};
}
🆔https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
🔷🔶 توضیحات خط به خط برنامه به زودی
//@AVR_ESMelectronic
#include <mega8.h>
#include <delay.h>
#asm
.equ __lcd_port=0x12 ;// PORTD
#endasm
#include <lcd.h>
#define c1 PINB.4
#define c2 PINB.5
#define c3 PINB.6
#define c4 PINB.7
flash char row[]={0xfe,0xfd,0xfb,0xf7};
flash char data_key[]={
'1','2','3','A',
'4','5','6','B',
'7','8','9','C',
'*','0','#','D'};
unsigned char ac,table;
unsigned int r;
//________________________________________
void keypad(){
lcd_gotoxy(0,1);
lcd_putsf("~");
while (1){
for (r=0;r<4;r++){
ac=4;
PORTB=row[r];
DDRB=0x0f;
if (c1==0) ac=0;
if (c2==0) ac=1;
if (c3==0) ac=2;
if (c4==0) ac=3;
if (!(ac==4)){
table=data_key[(r*4)+ac];
lcd_putchar(table);
while (c1==0){}
while (c2==0){}
while (c3==0){}
while (c4==0){}
delay_ms(50);
}
}
}
}
//_________________________________________
void main(){
PORTB=0xff;
DDRB=0x0f;
lcd_init(16);
lcd_gotoxy(1,0);
lcd_putsf("ESM electronic");
keypad();
while(1){
};
}
🆔https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
🔳 کد برنامه ESM122
//@AVR_ESMelectronic
#include ᐸmega16.h>
#include ᐸstdio.h>
#include ᐸdelay.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include ᐸlcd.h>
#define Up PIND.0
#define Down PIND.1
#define Enter PIND.2
#define high_LED PORTA.1
unsigned char compare=0,set=0xff;
float temp;
//__________________________________________
void display(){
char lcd_buf[32];
sprintf(lcd_buf,"Temp=%3.1f\xdfC\nHigh Temp=%i",temp,compare);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(lcd_buf);
lcd_gotoxy(13,1);
if(high_LED==1) lcd_putsf("on ");
if(high_LED==0) lcd_putsf("off");
}
//_________________________________________
interrupt [ADC_INT] void adc_isr(void){
unsigned int adc_data;
adc_data=ADCW;
temp=adc_data*2.56/1024;
temp=temp*100;
if(temp>=set) high_LED=1;
else high_LED=0;
}
//_________________________________________up
void inc_set_temp(){
if(compareᐸ99) compare++;
}
//__________________________________________Down
void dec_set_temp(){
if(compare!=0) compare--;
}
//__________________________________________
void main(){
PORTD=0XFF;
DDRD=0X00;
PORTA.1=0;
DDRA.1=1;
ACSR=0XC0;
SFIOR=0X00;
ADMUX=0XC0;
ADCSRA=0X8F;
lcd_init(16);
#asm("sei")
ADCSRA=0XCF;
while(1){
display();
delay_ms(250);
ADCSRA=0XCF;
if(Up==0) inc_set_temp();
if(Down==0) dec_set_temp();
if(Enter==0) set=compare;
};
}
🆔 https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
//@AVR_ESMelectronic
#include ᐸmega16.h>
#include ᐸstdio.h>
#include ᐸdelay.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include ᐸlcd.h>
#define Up PIND.0
#define Down PIND.1
#define Enter PIND.2
#define high_LED PORTA.1
unsigned char compare=0,set=0xff;
float temp;
//__________________________________________
void display(){
char lcd_buf[32];
sprintf(lcd_buf,"Temp=%3.1f\xdfC\nHigh Temp=%i",temp,compare);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(lcd_buf);
lcd_gotoxy(13,1);
if(high_LED==1) lcd_putsf("on ");
if(high_LED==0) lcd_putsf("off");
}
//_________________________________________
interrupt [ADC_INT] void adc_isr(void){
unsigned int adc_data;
adc_data=ADCW;
temp=adc_data*2.56/1024;
temp=temp*100;
if(temp>=set) high_LED=1;
else high_LED=0;
}
//_________________________________________up
void inc_set_temp(){
if(compareᐸ99) compare++;
}
//__________________________________________Down
void dec_set_temp(){
if(compare!=0) compare--;
}
//__________________________________________
void main(){
PORTD=0XFF;
DDRD=0X00;
PORTA.1=0;
DDRA.1=1;
ACSR=0XC0;
SFIOR=0X00;
ADMUX=0XC0;
ADCSRA=0X8F;
lcd_init(16);
#asm("sei")
ADCSRA=0XCF;
while(1){
display();
delay_ms(250);
ADCSRA=0XCF;
if(Up==0) inc_set_temp();
if(Down==0) dec_set_temp();
if(Enter==0) set=compare;
};
}
🆔 https://telegram.me/joinchat/BKznVz-h5UTfoA5DzTMtDw
✔️ کد برنامه نویسی پروژه ESM132
این برنامه در محیط Arduino
#include<LiquidCrystal.h>
LiquidCrystal lcd(6,7,8,9,10,11);
#define Fan 3
#define Light 4
#define TV 5
int temp=0,i=0;
int led=13;
char str[15];
void setup()
{
lcd.begin(16,2);
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(Fan, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(TV, OUTPUT);
lcd.setCursor(0,0);
lcd.print("GSM Control Home");
lcd.setCursor(0,1);
lcd.print(" Automaton ");
delay(2000);
lcd.clear();
lcd.print("Esm Electronic");
delay(1000);
lcd.setCursor(0,1);
lcd.print("System Ready");
Serial.println("AT+CNMI=2,2,0,0,0");
delay(500);
Serial.println("AT+CMGF=1");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fan Light TV ");
lcd.setCursor(0,1);
lcd.print("OFF OFF OFF ");
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Fan Light TV");
if(temp==1)
{
check();
temp=0;
i=0;
delay(1000);
}
}
void serialEvent()
{
while(Serial.available())
{
if(Serial.find("#A."))
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
while (Serial.available())
{
char inChar=Serial.read();
str[i++]=inChar;
if(inChar=='*')
{
temp=1;
return;
}
}
}
}
}
void check()
{
if(!(strncmp(str,"tv on",5)))
{
digitalWrite(TV, HIGH);
lcd.setCursor(13,1);
lcd.print("ON ");
delay(200);
}
else if(!(strncmp(str,"tv off",6)))
{
digitalWrite(TV, LOW);
lcd.setCursor(13,1);
lcd.print("OFF ");
delay(200);
}
else if(!(strncmp(str,"fan on",5)))
{
digitalWrite(Fan, HIGH);
lcd.setCursor(0,1);
lcd.print("ON ");
delay(200);
}
else if(!(strncmp(str,"fan off",7)))
{
digitalWrite(Fan, LOW);
lcd.setCursor(0,1);
lcd.print("OFF ");
delay(200);
}
else if(!(strncmp(str,"light on",8)))
{
digitalWrite(Light, HIGH);
lcd.setCursor(7,1);
lcd.print("ON ");
delay(200);
}
else if(!(strncmp(str,"light off",9)))
{
digitalWrite(Light, LOW);
lcd.setCursor(7,1);
lcd.print("OFF ");
delay(200);
}
else if(!(strncmp(str,"all on",6)))
{
digitalWrite(Light, HIGH);
digitalWrite(Fan, HIGH);
digitalWrite(TV, HIGH);
lcd.setCursor(0,1);
lcd.print("ON ON ON ");
delay(200);
}
else if(!(strncmp(str,"all off",7)))
{
digitalWrite(Light, LOW);
digitalWrite(Fan, LOW);
digitalWrite(TV, LOW);
lcd.setCursor(0,1);
lcd.print("OFF OFF OFF ");
delay(200);
}
}
این برنامه در محیط Arduino
#include<LiquidCrystal.h>
LiquidCrystal lcd(6,7,8,9,10,11);
#define Fan 3
#define Light 4
#define TV 5
int temp=0,i=0;
int led=13;
char str[15];
void setup()
{
lcd.begin(16,2);
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(Fan, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(TV, OUTPUT);
lcd.setCursor(0,0);
lcd.print("GSM Control Home");
lcd.setCursor(0,1);
lcd.print(" Automaton ");
delay(2000);
lcd.clear();
lcd.print("Esm Electronic");
delay(1000);
lcd.setCursor(0,1);
lcd.print("System Ready");
Serial.println("AT+CNMI=2,2,0,0,0");
delay(500);
Serial.println("AT+CMGF=1");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fan Light TV ");
lcd.setCursor(0,1);
lcd.print("OFF OFF OFF ");
}
void loop()
{
lcd.setCursor(0,0);
lcd.print("Fan Light TV");
if(temp==1)
{
check();
temp=0;
i=0;
delay(1000);
}
}
void serialEvent()
{
while(Serial.available())
{
if(Serial.find("#A."))
{
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
while (Serial.available())
{
char inChar=Serial.read();
str[i++]=inChar;
if(inChar=='*')
{
temp=1;
return;
}
}
}
}
}
void check()
{
if(!(strncmp(str,"tv on",5)))
{
digitalWrite(TV, HIGH);
lcd.setCursor(13,1);
lcd.print("ON ");
delay(200);
}
else if(!(strncmp(str,"tv off",6)))
{
digitalWrite(TV, LOW);
lcd.setCursor(13,1);
lcd.print("OFF ");
delay(200);
}
else if(!(strncmp(str,"fan on",5)))
{
digitalWrite(Fan, HIGH);
lcd.setCursor(0,1);
lcd.print("ON ");
delay(200);
}
else if(!(strncmp(str,"fan off",7)))
{
digitalWrite(Fan, LOW);
lcd.setCursor(0,1);
lcd.print("OFF ");
delay(200);
}
else if(!(strncmp(str,"light on",8)))
{
digitalWrite(Light, HIGH);
lcd.setCursor(7,1);
lcd.print("ON ");
delay(200);
}
else if(!(strncmp(str,"light off",9)))
{
digitalWrite(Light, LOW);
lcd.setCursor(7,1);
lcd.print("OFF ");
delay(200);
}
else if(!(strncmp(str,"all on",6)))
{
digitalWrite(Light, HIGH);
digitalWrite(Fan, HIGH);
digitalWrite(TV, HIGH);
lcd.setCursor(0,1);
lcd.print("ON ON ON ");
delay(200);
}
else if(!(strncmp(str,"all off",7)))
{
digitalWrite(Light, LOW);
digitalWrite(Fan, LOW);
digitalWrite(TV, LOW);
lcd.setCursor(0,1);
lcd.print("OFF OFF OFF ");
delay(200);
}
}
💻 برنامه نوشته شده توسط متین صالحیان
#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);
}
}
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
/*****************************************************
@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;
}
}