|
制作出來(lái)的實(shí)物圖如下:
1537984762.jpg (2.07 MB, 下載次數(shù): 59)
下載附件
2023-2-23 17:09 上傳
電路原理圖如下:
1.png (49.35 KB, 下載次數(shù): 54)
下載附件
2023-2-23 17:07 上傳
protel99畫的PCB圖如下:(51hei附件中可下載工程文件)
51hei.png (22.65 KB, 下載次數(shù): 45)
下載附件
2023-2-24 03:00 上傳
/*------------------------程序說(shuō)明----------------------------*/
/*---本程序運(yùn)行在STC8G1K08中----------------------------------*/
/*---時(shí)間設(shè)置步長(zhǎng)為一分鐘-------------------------------------*/
/*---可以根據(jù)需要更改變量K的判斷值修改時(shí)間步長(zhǎng)----------------*/
/*---上電后先循環(huán)點(diǎn)亮數(shù)碼管、發(fā)光管,檢測(cè)完成初始化-----------*/
/*---每按一下按鍵,則定時(shí)時(shí)間增加不同時(shí)間步長(zhǎng)-----------------*/
/*---充電過(guò)程中紅色指示燈閃爍表示正在充電---------------------*/
/*---充電完成關(guān)閉紅色指示燈表示充電完成-----------------------*/
/*---充電中或完成后可以重新通過(guò)按鍵設(shè)置定時(shí)時(shí)間-------------------*/
/*---延時(shí)上電和延時(shí)斷電選擇功能,按下Key1再通電實(shí)現(xiàn)延時(shí)上電功能設(shè)置---*/
//#include "STC8xxxx.H"//<STC8G.h>
#include "Config.H"
#define uchar unsigned char
#define uint unsigned int
sbit JDQ=P5^4; //繼電器(高電平充電,低電平不充電)
sbit KEY1 = P3^0;
sbit KEY2 = P3^1;
sbit RED_flash=P5^5; //充電中指示燈閃爍
enum {OFF = 1, ON = 0};
enum {JDQ_OFF = 0, JDQ_ON = 1};
void key();
bit delay_OnOff=1; //延時(shí)上電和延時(shí)斷電選擇位,開(kāi)機(jī)檢查Key1設(shè)置此位,0表示延時(shí)上電,1表示延時(shí)斷電。
uchar i;
uint t = 0; //按鍵計(jì)數(shù)變量
uint k = 0; //計(jì)時(shí)計(jì)數(shù)變量
uint m = 0; //閃爍計(jì)數(shù)變量
uint T0_flag = 0; //定時(shí)器運(yùn)行后不為0
void LED_Init() //狀態(tài)指示燈檢測(cè) 初始化
{
RED_flash=ON;
Delay_ms(300);
RED_flash=OFF;
}
/******定時(shí)器0初始化,12T自動(dòng)重裝模式,定時(shí)60毫秒******/
void InitTimer0() //60ms定時(shí)器
{
TMOD = 0x01;
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
EA = 1; //開(kāi) 總中斷
ET0 = 1; //開(kāi) 定時(shí)器T0中斷
// TR0 = 1; //開(kāi)啟 定時(shí)器T0
}
/*--------------------------主函數(shù)------------------------------*/
void main()
{
P3M0 = 0x00;
P3M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
delay_OnOff=KEY1; //延時(shí)斷電或延時(shí)上電選擇。0:延時(shí)上電,1:延時(shí)斷電。先長(zhǎng)按KEY1不松再通電有效
JDQ = JDQ_OFF; //關(guān)閉繼電器,等待開(kāi)始充電。
LED_Init(); //狀態(tài)指示燈檢測(cè) 初始化
Light_Level_Set(4); //設(shè)置亮度等級(jí)1-8級(jí)
for(i=0;i<10;i++) //測(cè)試顯示屏
{
AiP650_DisPlay(1,i);
AiP650_DisPlay(2,i);
AiP650_DisPlay(3,i);
AiP650_DisPlay(4,i);
Delay_ms(400);
}
// i=0;
AiP650_CLR();
Delay_ms(500);
InitTimer0(); //定時(shí)器初始化
TR0 = 0; //關(guān)閉 定時(shí)器T0
t=0; //上電默認(rèn)充電時(shí)間
while(1)
{
key(); //循環(huán)按鍵函數(shù)
AiP650_DisPlayFourNum(t); //顯示數(shù)字
if(delay_OnOff==1) //延時(shí)斷電模式,定時(shí)充電未啟動(dòng)
{
if(t==0)
{
JDQ = JDQ_OFF; //斷開(kāi)繼電器,停止充電
TR0 = 0; //停止定時(shí)器
RED_flash=OFF;
}
else
{
TR0 = 1; //啟動(dòng)定時(shí)器
JDQ = JDQ_ON;
}
}
if(delay_OnOff==0) //延時(shí)通電模式,定時(shí)充電未啟動(dòng)
{
if(t==0&&T0_flag==0)
{
JDQ = JDQ_OFF; //
TR0 = 0; //停止定時(shí)器
RED_flash=ON;
}
else if(t!=0)
{
TR0 = 1; //啟動(dòng)定時(shí)器
JDQ = JDQ_OFF;
}
else
{
TR0 = 0; //停止定時(shí)器
JDQ = JDQ_ON;
}
}
if(k>=1000) //按鍵設(shè)定時(shí)間增量 30000半小時(shí)時(shí)間 60000一小時(shí) 1000一分鐘
{
k = 0;
t-=1; //減去一分鐘
}
Delay_ms(25);
}
}
/*---定時(shí)器T0中斷函數(shù)---*/
void Timer0() interrupt 1
{
TH0=(65536-60000)/256; //賦初值
TL0=(65536-60000)%256;
k++; //
m++; //
T0_flag++;
if(T0_flag > 1000) //
{
T0_flag = 1;
}
/*---充電過(guò)程中指示燈閃爍---*/
if(m > 8) //每480ms充電指示燈閃爍一次
{
m = 0;
RED_flash = ~RED_flash; //取反實(shí)現(xiàn)閃爍
}
}
void key() //按鍵操作
{
if(KEY1==0) //有鍵按下
{
Delay_ms(150);
t+=30;
if(t>600)
t = 0;
}
if(KEY2==0) //按下按鍵加一
{
Delay_ms(150);
t+=1;
if(t>600)
t = 1;
}
}
|
-
-
Keil5程序.7z
2023-2-24 03:01 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
46.36 KB, 下載次數(shù): 94, 下載積分: 黑幣 -5
-
-
protel PCB文件.7z
2023-2-24 03:01 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
26.94 KB, 下載次數(shù): 75, 下載積分: 黑幣 -5
評(píng)分
-
查看全部評(píng)分
|