• 大小: 40KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: C/C++
  • 标签: 单片机  c语言  

资源简介

西北工业大学电子实习——电子表(C语言) 1.P1口做数码管数据输出接口,P2口做数码管选择接口; 2.在八位数码管上分别显示:小时-分钟-秒 3.K1设置小时加,K2设置小时减,K3设置分钟加,K4设置分钟减。

资源截图

代码片段和文件信息

#include

#define uchar unsigned char
#define uint  unsigned int
#define DATA P1             //将P1口定义为数码管数据接口
#define SELECT P2           //将P2口定义为数码管选择口

uchar table[]={0x3F0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x40};  //显示的数字数组,0 1 2 3 4 5 6 7 8 9 -
uchar select[]={0x010x020x040x080x100x200x400x80};                //选择数码管数组,1 2 3 4 5 6 7 8

sbit k1 = P3^2;
sbit k2 = P3^3;
//hour

sbit k3 = P3^4;
sbit k4 = P3^5;
//minute

bit flag_1 flag_2 flag_3 flag_4 flag_5 flag_6;

uchar hour minute second;

void delay()
{
uint i = 1000;
while(i--);
}

void init()
{
P0M1 = 0x00;
P0M0 = 0xff;
P1M1 = 0x00;
P1M0 = 0xff;
P2M1 = 0x00;
P2M0 = 0xff;

AUXR &= 0x7F;
TMOD &= 0xf0;
TL0 = 0xC0;
TH0 = 0x63;
TR0 = 1;
ET0 = 1;
EA = 1;
}

void display()
{
//second
SELECT = select[0];
DATA = table[second%10];
delay();
SELECT = select[1];
DATA = table[second/10];
delay();
SELECT = select[2];
DATA = table[10];
delay();

//minute
SELECT = select[3];
DATA = table[minute%10];
delay();
SELECT = select[4];
DATA = table[minute/10];
delay();
SELECT = select[5];
DATA = table[10];
delay();

//hour
SELECT = select[6];
DATA = table[hour%10];
delay();
SELECT = select[7];
DATA = table[hour/10];
delay();

}

void set_time()
{
//hour+
if(k1 == 0)
{
if(flag_1 == 0)
{
flag_1 = 1;
if(hour + 1 == 24)
hour = 0;
else
hour++;
}
}
if(k1 == 1)
{
flag_1 = 0;
}
//hour-
if(k2 == 0)
{
if(flag_2 == 0)
{
flag_2 = 1;
if(hour)
hour--;
else
hour = 23;
}
}
if(k2 == 1)
{
flag_2 = 0;
}
//minute+
if(k3 == 0)
{
if(flag_3 == 0)
{
flag_3 = 1;
if(minute + 1 == 60)
{
minute = 0;
if(hour + 1 == 24)
hour = 0;
else
hour++;
}
else
minute++;
}
}
if(k3 == 1)
{
flag_3 = 0;
}
//minute-
if(k4 == 0)
{
if(flag_4 == 0)
{
flag_4 = 1;
if(!minute)
{
minute = 59;
if(hour)
hour--;
else
hour = 23;
}
else
minute--;
}
}
if(k4 == 1)
{
flag_4 = 0;
}
}

void timer0() interrupt 1
{
uchar t0;
t0++;
if(t0 == 50)
{
t0 = 0;
second++;
if(second == 60)
{
second = 0;
minute++;
if(minute == 60)
{
minute = 0;
hour++;
if(hour ==24)
{
hour = 0;
}
}
}
}
}

void main()
{
init();
while(1)
{
display();
set_time();
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      24497  2005-01-01 05:44  电子表\led

     文件        947  2005-01-01 05:44  电子表\led.build_log.htm

     文件       1611  2005-01-01 05:44  电子表\led.hex

     文件         39  2005-01-01 05:44  电子表\led.lnp

     文件       6519  2005-01-01 05:44  电子表\led.LST

     文件      12819  2005-01-01 05:44  电子表\led.M51

     文件      25074  2005-01-01 05:44  电子表\led.OBJ

     文件        618  2020-05-28 10:58  电子表\led.plg

    .......     70521  2005-01-01 06:24  电子表\led.uvgui.Adimin

     文件       5341  2005-01-01 05:02  电子表\led.uvopt

     文件      13932  2005-01-01 05:02  电子表\led.uvproj

     文件      55622  2020-05-28 10:56  电子表\led_uvopt.bak

     文件          0  2020-05-28 10:54  电子表\led_uvproj.bak

     文件       6376  2009-05-07 14:37  电子表\STARTUP.A51

     文件      14049  2005-01-01 05:44  电子表\STARTUP.LST

     文件        749  2005-01-01 05:44  电子表\STARTUP.OBJ

     文件      19040  2016-09-22 20:10  电子表\STC8A.h

     文件       2593  2020-09-19 22:13  电子表\led.c

     目录          0  2005-01-01 06:01  电子表

----------- ---------  ---------- -----  ----

               260347                    19


评论

共有 条评论