用c语言写一个独立按键按下显示时间
时间: 2023-03-09 15:43:53 浏览: 105
我可以为您提供一个示例代码:#include <stdio.h>
#include <time.h>
int main()
{
time_t currentTime;
char* cTimeString;
// 获取当前时间
currentTime = time(NULL);
// 格式化时间字符串
cTimeString = ctime(¤tTime);
printf("当前时间是: %s",cTimeString);
return 0;
}
相关问题
写一段C语言实现80c51独立按键控制数码管依次显示一串数字
好的,以下是C语言代码实现:
```c
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit key=P3^3; // 定义独立按键连接的引脚
sbit dula=P2^6; // 数码管段选1连接的引脚
sbit wela=P2^7; // 数码管位选连接的引脚
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, // 数码管0~7的显示码
0x80,0x90 // 数码管8,9的显示码
};
void delay(uint i) // 延时函数
{
while(i--);
}
void main(void)
{
uint i = 0;
while(1)
{
if(key == 0) // 检测按键是否按下
{
delay(1000); // 延时一段时间,防止按键抖动
if(key == 0) // 再次检测按键是否按下
{
P0 = table[i]; // 显示i对应的数码管段码
dula = 0; // 数码管段选1输出低电平
dula = 1; // 数码管段选1输出高电平,将段码送到数码管
delay(1000); // 延时一段时间,显示一段时间后,数码管不显示
P0 = 0xff; // P0口输出高电平,数码管不显示
dula = 0; // 数码管段选1输出低电平
dula = 1; // 数码管段选1输出高电平,数码管不显示
wela = 0; // 数码管位选输出低电平
wela = 1; // 数码管位选输出高电平,准备显示下一个数码管上的数字
i++; // i加1,显示下一个数字
if(i == 10) // 如果i等于10,显示完所有数字,i清0重新开始显示
{
i = 0;
}
}
}
}
}
```
以上代码实现的功能为:检测独立按键是否被按下,如果检测到按键被按下,就依次显示数字0~9。其中 P0 口控制数码管的段选,dula控制数码管的段选1,wela控制数码管的位选。具体实现细节可以参考代码注释。
写一段C语言实现80c51独立按键控制数码管依次显示储存的一串数字
以下是C语言实现80c51独立按键控制数码管依次显示储存的一串数字的代码:
#include<reg52.h> //头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
sbit key = P1^0; //按键复位
sbit dula = P2^6; //段锁锁存器1
sbit wela = P2^7; //位锁锁存器2
uchar ds1, ds2; //两个数码管的值
uint ms; //定时器的延时时间
void delayms(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=112;j>0;j--);
}
void display(uint num) //显示函数
{
uchar ge,shi,bai,qian; //定义个十百千位的值
ge = num % 10; //取个位的值
shi = num / 10 % 10; //取十位的值
bai = num / 100 % 10; //取百位的值
qian = num / 1000 % 10; //取千位的值
if(ds1 == shi) //第一个数码管显示十位
{
wela = 0xfe; //位锁锁存器2置低
P0 = 0x3f; //段锁锁存器1置0,使数码管不显示
dula = 0; //开启锁存器1
dula = 1; //锁定锁存器1
wela = 0xff; //开启锁存器2
ds1 = ge; //存储个位的值
}
else //第一个数码管显示百位
{
wela = 0xfd; //位锁锁存器2置低
P0 = 0x3f; //段锁锁存器1置0,使数码管不显示
dula = 0; //开启锁存器1
dula = 1; //锁定锁存器1
wela = 0xff; //开启锁存器2
ds1 = shi; //存储十位的值
}
//第二个数码管显示千位
wela = 0xfb; //位锁锁存器2置低
P0 = 0x3f; //段锁锁存器1置0,使数码管不显示
dula = 0; //开启锁存器1
dula = 1; //锁定锁存器1
wela = 0xff; //开启锁存器2
ds2 = bai; //存储百位的值
}
void main()
{
TMOD = 0x01; //定时器T0的模式设置,用时钟计时
TH0 = 0xfc; //定时器高位初始化
TL0 = 0x67; //定时器低位初始化
ET0 = 1; //打开定时器0中断
EA = 1; //打开总中断
TR0 = 1; //启动定时器T0
wela = 0xff; //位锁锁存器2置1,初始化位
ds1 = ds2 = 0; //初始化数码管的值
while(1)
{
if(key == 0) //按键按下
{
delayms(5); //延时消抖
if(key == 0) //再次确认按键按下
{
ms++; //定时器的延时时间加1
if(ms == 10000) //如果达到了设定的延时时间
{
ms = 0; //重置定时器的延时时间
display(1234); //显示储存的一串数字
}
}
while(!key); //等待按键松开
}
}
}
void timer0() interrupt 1 //定时器0中断函数
{
TH0 = 0xfc; //重新加载高位
TL0 = 0x67; //重新加载低位
ms++; //定时器的延时时间加1
if(ms == 1000) //如果达到了设定的延时时间
{
ms = 0; //重置定时器的延时时间
display(1234); //显示储存的一串数字
}
}