久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
以ARDUINO為核心的微電腦時控開關程序和Proteus仿真(v1)
[打印本頁]
作者:
With_commands
時間:
2019-6-14 20:18
標題:
以ARDUINO為核心的微電腦時控開關程序和Proteus仿真(v1)
上一帖:
http://m.zg4o1577.cn/bbs/dpj-162303-1.html
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(39.57 KB, 下載次數: 100)
下載附件
2019-6-14 22:53 上傳
0.png
(6.54 KB, 下載次數: 110)
下載附件
2019-6-14 22:54 上傳
單片機源程序如下:
#include <EEPROM.h>
#include <LiquidCrystal.h>
#include <DS1302.h>
LiquidCrystal lcd(2,3,4,5,6,7); //LCD定義
DS1302 rtc(A3,A2,A1); //DS1302定義
typedef unsigned char uchar;
//數據存儲位置
#define switch_on_hour 0x00
#define switch_on_min 0x01
#define switch_off_hour 0x02
#define switch_off_min 0x03
//按鍵
#define t_set 8
#define io_set 9
#define up 10
#define down 11
uchar switch_on_hour_tmp,switch_on_min_tmp,
switch_off_hour_tmp,switch_off_min_tmp;Time t; //定義數據存儲位置臨時區
#define relay A0
//開/關字符
const uchar switch_on_char[]={
B01000,
B01100,
B01000,
B01000,
B01000,
B01000,
B01000,
B00000
};
const uchar switch_off_char[]={
B01000,
B01000,
B00100,
B00010,
B00000,
B01000,
B01000,
B00000
};
void timeset()
{
uchar hour_tmp,min_tmp,sec_tmp;
t=rtc.getTime();
hour_tmp=t.hour;
min_tmp=t.min;
sec_tmp=t.sec;
lcd.clear();
while(1){
lcd.setCursor(0,0);
lcd.print("Time Hour");
lcd.setCursor(0,1);
lcd.print(hour_tmp%100/10,DEC);
lcd.print(hour_tmp%10,DEC);
if(digitalRead(up)==0){
delayMicroseconds(10); //消抖
if(digitalRead(up)==0){
while(!digitalRead(up));
++hour_tmp;
}
}
if(digitalRead(down)==0){
delayMicroseconds(10); //消抖
if(digitalRead(down)==0){
while(!digitalRead(down));
--hour_tmp;
}
}
if(hour_tmp==255)hour_tmp=23;
if(hour_tmp==24)hour_tmp=0;
if(digitalRead(t_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(t_set)==0){
while(!digitalRead(t_set));
while(1){
lcd.setCursor(0,0);
lcd.print("Time Minute");
lcd.setCursor(0,1);
lcd.print(min_tmp%100/10,DEC);
lcd.print(min_tmp%10,DEC);
if(digitalRead(up)==0){
delayMicroseconds(10); //消抖
if(digitalRead(up)==0){
while(!digitalRead(up));
++min_tmp;
}
}
if(digitalRead(down)==0){
delayMicroseconds(10); //消抖
if(digitalRead(down)==0){
while(!digitalRead(down));
--min_tmp;
}
}
if(min_tmp==255)min_tmp=59;
if(min_tmp==60)min_tmp=0;
if(digitalRead(t_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(t_set)==0){
while(!digitalRead(t_set));
while(1){
lcd.setCursor(0,0);
lcd.print("Time Second");
lcd.setCursor(0,1);
lcd.print(sec_tmp%100/10,DEC);
lcd.print(sec_tmp%10,DEC);
if(digitalRead(up)==0){
delayMicroseconds(10); //消抖
if(digitalRead(up)==0){
while(!digitalRead(up));
++sec_tmp;
}
}
if(digitalRead(down)==0){
delayMicroseconds(10); //消抖
if(digitalRead(down)==0){
while(!digitalRead(down));
--sec_tmp;
}
}
if(sec_tmp==255)sec_tmp=59;
if(sec_tmp==60)sec_tmp=0;
if(digitalRead(t_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(t_set)==0){
while(!digitalRead(t_set));
rtc.setTime(hour_tmp,min_tmp,sec_tmp);
lcd.clear();
return;
}
}
}
}
}
}
}
}
}
}
void ioset()
{
onset();
offset();
}
void onset()
{
uchar hour_tmp,min_tmp;
hour_tmp=EEPROM.read(switch_on_hour);
min_tmp=EEPROM.read(switch_on_min);
lcd.clear();
while(1){
lcd.setCursor(0,0);
lcd.print("SwitchOn Hour");
lcd.setCursor(0,1);
lcd.print(hour_tmp%100/10,DEC);
lcd.print(hour_tmp%10,DEC);
if(digitalRead(up)==0){
delayMicroseconds(10); //消抖
if(digitalRead(up)==0){
while(!digitalRead(up));
++hour_tmp;
}
}
if(digitalRead(down)==0){
delayMicroseconds(10); //消抖
if(digitalRead(down)==0){
while(!digitalRead(down));
--hour_tmp;
}
}
if(hour_tmp==255)hour_tmp=23;
if(hour_tmp==24)hour_tmp=0;
if(digitalRead(io_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(io_set)==0){
while(!digitalRead(io_set));
while(1){
lcd.setCursor(0,0);
lcd.print("SwitchOn Minute");
lcd.setCursor(0,1);
lcd.print(min_tmp%100/10,DEC);
lcd.print(min_tmp%10,DEC);
if(digitalRead(up)==0){
delayMicroseconds(10); //消抖
if(digitalRead(up)==0){
while(!digitalRead(up));
++min_tmp;
}
}
if(digitalRead(down)==0){
delayMicroseconds(10); //消抖
if(digitalRead(down)==0){
while(!digitalRead(down));
--min_tmp;
}
}
if(min_tmp==255)min_tmp=59;
if(min_tmp==60)min_tmp=0;
if(digitalRead(io_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(io_set)==0){
while(!digitalRead(io_set));
EEPROM.write(switch_on_hour,hour_tmp);
EEPROM.write(switch_on_min,min_tmp);
lcd.clear();
return;
}
}
}
}
}
}
}
void offset()
{
uchar hour_tmp,min_tmp;
hour_tmp=EEPROM.read(switch_off_hour);
min_tmp=EEPROM.read(switch_off_min);
lcd.clear();
while(1){
lcd.setCursor(0,0);
lcd.print("SwitchOff Hour");
lcd.setCursor(0,1);
lcd.print(hour_tmp%100/10,DEC);
lcd.print(hour_tmp%10,DEC);
if(digitalRead(up)==0){
delayMicroseconds(10); //消抖
if(digitalRead(up)==0){
while(!digitalRead(up));
++hour_tmp;
}
}
if(digitalRead(down)==0){
delayMicroseconds(10); //消抖
if(digitalRead(down)==0){
while(!digitalRead(down));
--hour_tmp;
}
}
if(hour_tmp==255)hour_tmp=23;
if(hour_tmp==24)hour_tmp=0;
if(digitalRead(io_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(io_set)==0){
while(!digitalRead(io_set));
while(1){
lcd.setCursor(0,0);
lcd.print("SwitchOff Minute");
lcd.setCursor(0,1);
lcd.print(min_tmp%100/10,DEC);
lcd.print(min_tmp%10,DEC);
if(digitalRead(up)==0){
delayMicroseconds(10); //消抖
if(digitalRead(up)==0){
while(!digitalRead(up));
++min_tmp;
}
}
if(digitalRead(down)==0){
delayMicroseconds(10); //消抖
if(digitalRead(down)==0){
while(!digitalRead(down));
--min_tmp;
}
}
if(min_tmp==255)min_tmp=59;
if(min_tmp==60)min_tmp=0;
if(digitalRead(io_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(io_set)==0){
while(!digitalRead(io_set));
EEPROM.write(switch_off_hour,hour_tmp);
EEPROM.write(switch_off_min,min_tmp);
lcd.clear();
return;
}
}
}
}
}
}
}
void setup() //初始化并顯示字符
{
rtc.halt(false);
rtc.writeProtect(false);
lcd.begin(16,2);
lcd.createChar(0,switch_on_char);
lcd.createChar(1,switch_off_char);
pinMode(t_set,INPUT_PULLUP);
pinMode(io_set,INPUT_PULLUP);
pinMode(up,INPUT_PULLUP);
pinMode(down,INPUT_PULLUP);
pinMode(relay,OUTPUT);
digitalWrite(relay,HIGH);
lcd.setCursor(0,0);
lcd.print("The With");
lcd.setCursor(0,1);
lcd.print("Commands");
delay(2000);
lcd.clear();
lcd.print("Enjoy");
lcd.setCursor(0,1);
lcd.print("Program Life");
delay(2000);
lcd.clear();
}
void loop()
{
t=rtc.getTime();
lcd.setCursor(4,0);
lcd.print(rtc.getTimeStr());
switch_on_hour_tmp=EEPROM.read(switch_on_hour);
switch_on_min_tmp=EEPROM.read(switch_on_min);
switch_off_hour_tmp=EEPROM.read(switch_off_hour);
switch_off_min_tmp=EEPROM.read(switch_off_min);
lcd.setCursor(1,1);
lcd.write((uchar)0);
lcd.print(":");
lcd.print(switch_on_hour_tmp%100/10,DEC);
lcd.print(switch_on_hour_tmp%10,DEC);
lcd.print(":");
lcd.print(switch_on_min_tmp%100/10,DEC);
lcd.print(switch_on_min_tmp%10,DEC);
lcd.write((uchar)1);
lcd.print(":");
lcd.print(switch_off_hour_tmp%100/10,DEC);
lcd.print(switch_off_hour_tmp%10,DEC);
lcd.print(":");
lcd.print(switch_off_min_tmp%100/10,DEC);
lcd.print(switch_off_min_tmp%10,DEC);
if(digitalRead(t_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(t_set)==0){
while(!digitalRead(t_set));
timeset();
}
}
if(digitalRead(io_set)==0){
delayMicroseconds(10); //消抖
if(digitalRead(io_set)==0){
while(!digitalRead(io_set));
ioset();
}
}
if(t.hour==switch_on_hour_tmp){
if(t.min==switch_on_min_tmp){
digitalWrite(relay,LOW);
}
}
if(t.hour==switch_off_hour_tmp){
if(t.min==switch_off_min_tmp){
digitalWrite(relay,HIGH);
}
}
}
復制代碼
所有資料51hei提供下載:
TimeSwitch.zip
(64.44 KB, 下載次數: 28)
2019-6-14 20:18 上傳
點擊文件名下載附件
程序文件
下載積分: 黑幣 -5
作者:
With_commands
時間:
2019-6-15 15:03
視頻演示:
https://v.youku.com/v_show/id_XNDIyODg0MjE5Ng==.html?spm=a2hzp.8253876.0.0&f=52203768
作者:
xiaotian426
時間:
2020-2-20 16:46
"DS1302.h "從哪里能下載?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
一区二区三区视频在线
|
久久精品国产亚洲
|
日韩精品一区二区三区四区
|
九色porny自拍视频
|
精品国产一区二区三区免费
|
久久亚洲欧美日韩精品专区
|
久在线
|
国产欧美精品一区二区三区
|
精品欧美视频
|
大伊人久久
|
日本欧美国产在线观看
|
亚洲高清在线
|
日韩欧美一级片
|
国产精品不卡一区二区三区
|
欧美日韩国产一区二区三区不卡
|
国产精品一区在线
|
欧美在线精品一区
|
91黄在线观看
|
久久亚洲一区二区三区四区
|
国产成人精品久久二区二区
|
97超碰在线免费
|
国产伦一区二区三区四区
|
丁香五月网久久综合
|
九九久久免费视频
|
色婷婷九月
|
日韩精品色网
|
精品一区二区久久久久久久网站
|
奇米av
|
国产精品综合色区在线观看
|
91福利网
|
精品久久久久一区二区国产
|
超碰激情
|
精品国产乱码久久久久久图片
|
久久久久久久久蜜桃
|
亚州精品天堂中文字幕
|
成人黄色电影在线观看
|
欧美激情一区二区三级高清视频
|
日本欧美国产在线
|
国产精品久久久久久吹潮
|
日韩中文在线
|
国产一区二区三区网站
|