资源简介
西北工业大学电子实习——电子表(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
- 上一篇:LeetCode 题解
- 下一篇:模拟ATM机存取款管理设计.rar
相关资源
- stm32库函数代码自动生成器V1.2
- 单片机电子密码锁
- 单片机程序(附初级、中级、高级共
- 按键可调万年历(单片机程序)
- 51单片机数码管四层电梯模拟系统
- C语言嵌入式Modbus协议栈,支持主站和
- 基于51单片机的温控系统
- 51单片机protues文件(KST-51.DSN)
- C语言封装的HttpClient接口
- C语言课设计算器
- C语言 学生兴趣管理系统
- c语言实现火车订票系统(控制台)源
- 模拟笔记本电脑(C语言实现)
- c语言实现竞技比赛打分系统
- KMP算法C语言程序
- Linux c语言 学生成绩管理系统
- 弹跳的小球(test.c)
- 林锐—高质量C编程
- 基于c语言的通讯录系统
- 51单片机交通灯设计
- 基于51单片机的简易计算器
- C语言全套课件与教学资料-哈工大
- 计算机二级C语言真题.docx
- C语言实现 设备信息管理系统
- GBT 28169-2011 嵌入式软件 C语言编码规范
- C语言标准库函数大全.chm
- C语言常用代码(分章节)
- c语言课程设计:客房登记系统源码
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
评论
共有 条评论