以前发过一个用51单片机做的定时开关,用的40脚的89C52芯片.一是体积太大,而是不需要那么多的IO。所以决定把程序移植到体积小一些的单片机,最后选择了28脚的STC15F204EA,一是利用单片机的推挽输出直接驱动共阴数码管显示,省去了驱动三极管。并且使用单片机内部自带的晶振,体积大大缩小,电路板面积只有25*100MM。
/STC15F204EA 4位共阳数码管定时器
#include "STC15F2K.h"
#define KeyPort P1/定义按键在P1
unsigned char KeyV,TempKeyV,num;
//定义数码管
sbit DS2=P3^7; //数码管第2位 分十位
sbit DS3=P3^6; //数码管第3位 分个位
sbit DS4=P3^5; //数码管第3十位
sbit DS5=P3^4; // 数码管第4 秒个位
//定义按键
sbit STAR=P1^1; /// 启动
sbit STOP=P1^3; /// 停止
sbit PA=P1^2; /// 时间加
sbit PB=P1^0; /// 时间减
//定义输出
sbit JDQ=P1^5; // 继电器
sbit FMQ=P1^6; // 蜂鸣器
sbit LED1=P1^7; // LED指示灯 开始
sbit LED2=P1^4; // LED指示灯 停止
unsigned int js;
unsigned int ds=100,x,y;//倒计时初始时间,100=1分钟
unsigned char jsflag;
static unsigned int i;
unsigned char code LEDDis[]={
0xBF,/*0*/
0x86,/*1*/
0xDB,/*2*/
0xCF,/*3*/
0xE6,/*4*/
0xED,/*5*/
0xFD,/*6*/
0x87,/*7*/
0xFF,/*8*/