单片机/MCU论坛
登录
直播中
包能胜
10年用户
47经验值
擅长:可编程逻辑 测量仪表 嵌入式技术 连接器 光电显示 存储技术 接口/总线/驱动 控制/MCU RF/无线
私信
关注
[文章]
简易可调电子表
电子表
该程序简单明了 也可能存在不足之处 欢迎指正
#include
char code table[] = {0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
char num,miao,fen,shi,tt,num;
***it dula=P2^6;
***it wela=P2^7;
***it k0=P3^4; //功能键
***it k1=P3^5; //加
***it k2=P3^6; //减
/*************延时函数*************/
void delay (int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/************显示时分秒函数*******/
void display_sfm(char add0,char add1,char add3,char add4,char add6,char add7,char miao,char fen,char shi)
{
dula=1;
P0=table[miao%10];
dula=0;
P0=0xff;
wela=1;
P0=table1[add0];
wela=0;
delay(1);
dula=1;
P0=table[miao/10];
dula=0;
P0=0xff;
wela=1;
P0=table1[add1];
wela=0;
delay(1);
dula=1;
P0=table[fen%10];
dula=0;
P0=0xff;
wela=1;
P0=table1[add3];
wela=0;
delay(1);
dula=1;
P0=table[fen/10];
dula=0;
P0=0xff;
wela=1;
P0=table1[add4];
wela=0;
delay(1);
dula=1;
P0=table[shi%10];
dula=0;
P0=0xff;
wela=1;
P0=table1[add6];
wela=0;
delay(1);
dula=1;
P0=table[shi/10];
dula=0;
P0=0xff;
wela=1;
P0=table1[add7];
wela=0;
delay(1);
}
/*********显示时分秒之间的间隔-函数********/
void display_jiange()
{
dula=1;
P0=0x40;
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay(1);
dula=1;
P0=0x40;
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(1);
}
/***********初始化函数**********/
void init()
{
num=0;
miao=50;
fen=58;
shi=23;
TMOD=0x01;
TH0=(65530-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
/********按键函数***********/
void keyscan()
{
if(k0==0) //功能键按下
{
delay(5);
if(k0==0)
{
while(!k0);
delay(5);
while(!k0);
num++;
if(num==5)
num=1;
}
switch(num)
{
case 1:TR0=0; //功能键按一下:关闭定时,led1亮,调节秒钟
P1=0xfe;break;
case 2:P1=0xfd;break;//功能键按两下:led2亮,调节分钟
case 3:P1=0xfb;break;//功能键按三下:led3亮,调节时钟
case 4:TR0=1; //功能键按四下:灯全灭,定时开启
P1=0xff;break;
default:break;
}
}
if(num!=0)
{
if(k1==0) //加键按下
{
delay(5);
if(k1==0)
{
while(!k1);
delay(5);
while(!k1);
if(num==1) //秒加
{
miao++;
if(miao==60)
miao=0;
}
if(num==2) //分加
{
fen++;
if(fen==60)
fen=0;
}
if(num==3) //时加
{
shi++;
if(shi==24)
shi=0;
}
}
}
if(k2==0)
{
delay(5);
if(k2==0) //减键按下
{
while(!k2);
delay(5);
while(!k2);
if(num==1) //秒减
{
miao--;
if(miao==-1)
miao=59;
}
if(num==2) //分减
{
fen--;
if(fen==-1)
fen=59;
}
if(num==3) //时减
{
shi--;
if(shi==-1)
shi=23;
}
}
}
}
}
/*********定时函数***********/
void
ti
mer0() interrupt 1
{
TH0=(65530-50000)/256;
TL0=(65535-50000)%256 ;
tt++;
}
void main()
{
init();
while(1)
{
display_jiange();
keyscan();
if(tt==18)
{
tt=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
}
}
display_sfm(0,1,3,4,6,7,miao,fen,shi);
}
}
回帖
(1)
许攸
2020-5-23 14:12:59
单片机怎么配合传感器制作出适用于鱼塘的智能水位系统啊
单片机怎么配合传感器制作出适用于鱼塘的智能水位系统啊
举报
更多回帖
rotate(-90deg);
回复
相关帖子
电子表
电子表
的工作原理
41259
简单
电子表
4219
单片机
电子表
14
基于51的
电子表
源代码
16
基于STM32的简单
电子表
的实现
25
基于EWB的
电子表
电路的设计及仿真
95
电子表
格是如何影响数字货币的
1561
电子表
的原理
8914
用
电子表
屏幕看视频
3467
dbm与mw的换算
电子表
0
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分