久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機數碼管計時器原程序
[打印本頁]
作者:
szdawei
時間:
2018-8-6 14:30
標題:
單片機數碼管計時器原程序
計時器原程序
//A:0,B:7,C:2,D:4,E:5,F:1,G:6,H:3共陰
#include<STC10F.h>
sbit port_led1 =P3^0;
sbit port_led2 =P3^1;
sbit port_led3 =P3^2;
sbit port_led4 =P3^3;
sbit port_relay =P3^4;
sbit port_led0 =P3^5;
sbit port_key =P3^7;
#define time_set0 5
//-----------------------------------------------
// 表格
//-----------------------------------------------
const unsigned char frg[16] = {
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
//-----------------------------------------------
unsigned char windows;
unsigned char num0;
unsigned char num1;
unsigned char num2;
unsigned char num3;
unsigned char num4;
unsigned long data_time; //倒計時顯示寄存器
unsigned long data_set; //時間設定
unsigned long data_check; //數據交換
unsigned char time_ms0;
unsigned char time_ms1;
unsigned char data_wei;
unsigned char soon_key;
unsigned char at24_l;
unsigned char at24_h;
unsigned char address_h; //擦除高地址
unsigned char address_l; //擦除低地址
unsigned char wob_ok;
unsigned char wob_wei;
unsigned char wob_inc;
unsigned char wob_dec;
unsigned char time_fanhui; //設定完畢自動返回計時
unsigned char data_alarm; //報警間隔計時
unsigned char long_win; //蜂鳴器響的次序
unsigned char data_buzzer; //蜂鳴器響的時間
bit flag_alarm;
bit flag_buzzer;
bit flag_set; //設定閃爍的標志
bit flag_ok;
bit flag_wei;
bit flag_inc;
bit flag_inc_check;
bit flag_dec;
bit flag_dec_check;
bit flag_soon; //長按的標志
bit flag_close; //按鍵閉合的標志
bit flag_write; //燒寫的標志
//-----------------------------------------------
//定時中斷0
//-----------------------------------------------
void Timer0(void) interrupt 1
{
TH0=0x3c;
TL0=0xb0; //50ms
//-----------------------------------------
if(windows==0&&data_time==0)
{
time_fanhui++;
if(time_fanhui>40)
{
// windows=0;
// flag_write=1;
time_fanhui=0;
data_time=data_set;
// time_ms0=0;
port_relay=1;
//flag_alarm=0;
port_led0=1;
// flag_set=0; //停止閃爍
// data_wei=0; //再設定時仍然從個位開始
}
}
//---------------------------------------
if (flag_inc_check==0 && flag_dec_check==0)
{
flag_close=0;
flag_soon=0;
soon_key=0;
}
//---------------------------------------
if(windows==0)
{
if(data_time==0)
{
port_relay=0;
//flag_alarm=1;
port_led0=0;
}
else
{
time_ms0++;
if(time_ms0>=20)
{
time_ms0=0;
data_time--;
}
}
}
//---------------------------------------
if(windows==1)
{
if(flag_soon==0)
{
if(flag_close==1)
{
soon_key++;
if(soon_key==30)
{
flag_soon=1;
data_wei=0;
}
}
}
else
{
flag_inc=0;
flag_dec=0;
}
}
//-------------------------------------------------
time_ms1++;
if(time_ms1>=5)
{
time_ms1=0;
if(windows==1)
{
flag_set=~flag_set;
}
}
}
//-----------------------------------------------
//定時中斷1
//-----------------------------------------------
void Timer1(void) interrupt 3
{
TH1=0xd8;
TL1=0xf0; //10ms
}
//---------------------------------------------------------
//1ms延時
//---------------------------------------------------------
void delay_1ms(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=75;y>0;y--);
}
//---------------------------------------------------------
//ISP功能禁止
void ISP_DISABLE(void)
{
ISP_CONTR=0;
ISP_CMD =0;
ISP_TRIG =0;
}
//字節讀取
unsigned char BYTE_READ(unsigned char isp_addh_buf,unsigned char isp_addl_buf)
{
ISP_CONTR=0x83;
ISP_CMD =0x01;
ISP_ADDRH=isp_addh_buf;
ISP_ADDRL=isp_addl_buf;
EA=0;
ISP_TRIG=0x5a;
ISP_TRIG=0xa5;
EA=1;
ISP_DISABLE();
return ISP_DATA;
}
//字節編程
void BYTE_PROGRAM(unsigned char isp_addh_buf,unsigned char isp_addl_buf,unsigned char isp_data_buf)
{
ISP_CONTR=0x83;
ISP_CMD =0x02;
ISP_ADDRH=isp_addh_buf;
ISP_ADDRL=isp_addl_buf;
ISP_DATA=isp_data_buf;
EA=0;
ISP_TRIG=0x5a;
ISP_TRIG=0xa5;
EA=1;
ISP_DISABLE();
}
//扇區擦除
void SECTOR_ERASE(void)
{
ISP_CONTR=0x83;
ISP_CMD =0x03;
//ISP_ADDRH=0x00;
//ISP_ADDRL=0x00;
ISP_ADDRH=address_h;
ISP_ADDRL=address_l;
EA=0;
ISP_TRIG=0x5a;
ISP_TRIG=0xa5;
EA=1;
ISP_DISABLE();
}
//---------------------------------------------------------
//設定鍵
//---------------------------------------------------------
void key_ok(void)
{
P1=0xfe;
delay_1ms(1);
if(port_key==0&&flag_ok==0)
{
wob_ok++;
if(wob_ok>10)
{
wob_ok=0;
flag_ok=1;
time_fanhui=0;
windows++;
if(windows>1)
{
windows=0;
flag_write=1;
if(data_time>0)
{
data_time=data_set;
time_ms0=0;
port_relay=1;
//flag_alarm=0;
port_led0=1;
}
flag_set=0; //停止閃爍
data_wei=0; //再設定時仍然從個位開始
}
}
}
else
{
if(port_key==1)
{
wob_ok=0;
flag_ok=0;
}
}
}
//---------------------------------------------------------
//位移鍵
//---------------------------------------------------------
void key_wei(void)
{
P1=0xfb;
delay_1ms(1);
if(port_key==0&&flag_wei==0&&windows==1)
{
wob_wei++;
if(wob_wei>10)
{
wob_wei=0;
flag_wei=1;
time_fanhui=0;
data_wei++;
if(data_wei>3)
{
data_wei=0;
}
}
}
else
{
if(port_key==1)
{
wob_wei=0;
flag_wei=0;
}
}
}
//---------------------------------------------------------
//加
//---------------------------------------------------------
void key_inc(void)
{
P1=0xbf;
delay_1ms(1);
if(port_key==0&&flag_inc==0)
{
wob_inc++;
if(wob_inc>10)
{
wob_inc=0;
flag_inc=1;
flag_inc_check=1;
time_fanhui=0;
flag_close=1;
if(windows==1)
{
if(data_wei==0)
{
if(data_set<9999)
{
data_set++;
}
}
else if(data_wei==1)
{
if(data_set<9989)
{
data_set=data_set+10;
}
else
{
data_set=9999;
}
}
else if(data_wei==2)
{
if(data_set<9899)
{
data_set=data_set+100;
}
else
{
data_set=9999;
}
}
else if(data_wei==3)
{
if(data_set<8999)
{
data_set=data_set+1000;
}
else
{
data_set=9999;
}
}
}
}
}
else
{
if(port_key==1)
{
wob_inc=0;
flag_inc=0;
flag_inc_check=0;
}
}
}
//---------------------------------------------------------
//減
//---------------------------------------------------------
void key_dec(void)
{
P1=0xef;
delay_1ms(1);
if(port_key==0&&flag_dec==0)
{
wob_dec++;
if(wob_dec>10)
{
wob_dec=0;
flag_dec=1;
flag_dec_check=1;
time_fanhui=0;
flag_close=1;
if(windows==1)
{
if(data_wei==0)
{
if(data_set>0)
{
data_set--;
}
}
else if(data_wei==1)
{
if(data_set>=10)
{
data_set=data_set-10;
}
else
{
data_set=0;
}
}
else if(data_wei==2)
{
if(data_set>=100)
{
data_set=data_set-100;
}
else
{
data_set=0;
}
}
else if(data_wei==3)
{
if(data_set>=1000)
{
data_set=data_set-1000;
}
else
{
data_set=0;
}
}
}
}
}
else
{
if(port_key==1)
{
wob_dec=0;
flag_dec=0;
flag_dec_check=0;
}
}
}
//---------------------------------------------------------
void data_write(void)
{
if(flag_write==1)
{
address_h=0x00;
address_l=0x00;
SECTOR_ERASE();
at24_l=data_set;
at24_h=data_set>>8;
BYTE_PROGRAM(0x00,0x00,at24_h);
BYTE_PROGRAM(0x00,0x01,at24_l);
flag_write=0;
}
}
//-----------------------------------------------
// 顯示程序
//-----------------------------------------------
void disp_loop(void)
{
if(windows==0)
{
data_check=data_time;
}
else if(windows==1)
{
data_check=data_set;
}
if(flag_set==0||data_wei!=3)
{
num0 = data_check/1000;
P1 = frg[num0];
port_led1=0;
port_led2=1;
port_led3=1;
port_led4=1;
delay_1ms(4);
port_led1=1;
port_led2=1;
port_led3=1;
port_led4=1;
delay_1ms(1);
}
if(flag_set==0||data_wei!=2)
{
num1 = (data_check%1000)/100;
P1 = frg[num1];
port_led1=1;
port_led2=0;
port_led3=1;
port_led4=1;
delay_1ms(4);
port_led1=1;
port_led2=1;
port_led3=1;
port_led4=1;
delay_1ms(1);
}
if(flag_set==0||data_wei!=1)
{
num2 = (data_check%100)/10;
P1 = frg[num2];
port_led1=1;
port_led2=1;
port_led3=0;
port_led4=1;
delay_1ms(4);
port_led1=1;
port_led2=1;
port_led3=1;
port_led4=1;
delay_1ms(1);
}
if(flag_set==0||data_wei!=0)
{
num3 = data_check%10;
P1 = frg[num3];
port_led1=1;
port_led2=1;
port_led3=1;
port_led4=0;
delay_1ms(4);
port_led1=1;
port_led2=1;
port_led3=1;
port_led4=1;
delay_1ms(1);
}
}
//---------------------------------------------------------
//初始化
//---------------------------------------------------------
void SysInit(void)
{
P1M0=0xff; //p1,0設定為開漏
P1M1=0x00; //p1,1-p1,7設定為推挽輸出
P3M0=0x7f;
P3M1=0x00; //推挽輸出
TMOD=0x11; //T0/T1=16BIT MODE
TH0=0xF8;
TL0=0x2F; //2ms
TH1=0x3c;
TL1=0xb0; //50ms
ET0=1; //開T0中斷
ET1=1; //開T1中斷
EA=1; //開總中斷
TR0=1; //啟動T0
TR1=1; //開啟T1
port_relay=1;
port_led0=1;
}
void main(void)
{
SysInit();
at24_h=BYTE_READ(0x00,0x00);
at24_l=BYTE_READ(0x00,0x01);
data_set=at24_h;
data_set=data_set<<8;
data_set=data_set+at24_l;
if(data_set>9999)
{
data_set=30;
}
data_time=data_set;
while(1)
{
disp_loop();
key_ok();
key_wei();
key_inc();
key_dec();
data_write();
}
}
復制代碼
定時器(2秒再重復).rar
2018-8-6 14:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
36.6 KB, 下載次數: 6, 下載積分: 黑幣 -5
作者:
admin
時間:
2018-8-7 00:34
補全原理圖即可獲得100黑幣
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美αv
|
老妇激情毛片免费
|
国产一区二区中文字幕
|
久久这里有精品
|
国产精品a免费一区久久电影
|
中文字幕免费
|
欧美日韩亚洲国产综合
|
韩国精品在线
|
一区二区精品
|
97超碰成人
|
91视频在线观看免费
|
电影91久久久
|
黄色成人国产
|
成人性生交大片免费看r链接
|
特黄特色大片免费视频观看
|
热re99久久精品国99热观看
|
精品国产乱码一区二区三
|
99免费在线观看
|
日日干天天操
|
宅男噜噜噜66一区二区
|
久久久久久久久久毛片
|
国产成人麻豆免费观看
|
日韩综合网
|
国产一级电影在线
|
91精品久久久久久久久
|
亚洲自拍偷拍免费视频
|
免费在线观看一区二区三区
|
一级一级一级毛片
|
精品久久久久久中文字幕
|
国产黄色小视频
|
亚洲一区二区三区四区五区中文
|
精品一区二区三区在线视频
|
亚洲视频观看
|
日韩精品一区二区在线
|
国产区免费视频
|
99视频
|
91亚洲国产成人久久精品网站
|
久久精品电影
|
久久伊人久久
|
亚洲美女网站
|
亚洲精品国产电影
|