单片机c语言线译码,单片机C语言时钟源码

这是一个关于51单片机的时钟程序,详细介绍了如何将程序从开发板移植到自定义电路,并提供了完整的电路图链接。程序包含数码管显示、按键操作、蜂鸣器发声等功能,通过中断服务实现定时更新和扫描。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此程序是在51hei单片机开发板上面做的,如需要移植到自己的电路上,修改相应的端口即可,开发板完整的电路图下载:  点这里 (注意:只需要看相关部分即可,其他部分可以忽略)

//****80c52***时钟程序

//***手把手教你学单片开发板***

//**2012/9/7***23:02***

# include

typedef unsigned char uint8;

typedef unsigned int  uint16;

typedef unsigned long uint32;

uint8 block[]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90};//显示数组

uint8 a[6];

uint16 counter=0;

uint32 sec=0;

#definetr 40  //发声值

bitMS    = 1;    //状态字;

sbitADDR0 = P1^0; //A0****

sbitADDR1 = P1^1; //A1*****

sbitADDR2 = P1^2; //A2*****

sbitADDR3 = P1^3; //E1|E2**

sbitENLED = P1^4; //E3****38译码器

sbitBUZZ  = P1^6; //蜂鸣器

sbit    keyout1 = P2^3; //按键公共端

sbitkeyin1  = P2^4; //k1 长安0.1S进入时间调节;

sbitkeyin2  = P2^5;//k2 时间调节断码选择

sbitkeyin3  = P2^6;//k3 调节时间加

sbitkeyin4  = P2^7; //k4 调节时间减

void refresh_LS();//数码管扫描函数

void timer1_int();//定时器1中断函数

void keying();//按键读取函数

void display();//数码管显示函数

void buzzer();//蜂鸣器发声函数

void delay(uint16 n);//延时函数

main()

{

keyout1 = 0;

keyin1 = 1; keyin2 = 1; keyin3 = 1; keyin4 = 1;

ENLED = 0; ADDR3 = 1;

timer1_int();

display();

while(1)

{

if(keyin1 == 0)

{

delay(100000);

if(keyin1 == 0)

{

MS = ~MS;

buzzer();

while(!keyin1);

}

}

if(MS == 0)keying();

}

}

void buzzer()

{

static  uint8 i=0;

for(i=0;i

{

BUZZ =~BUZZ;

delay(100);

}

BUZZ = 1;

}

void delay(uint16 n)

{

while(n--);

}

void timer1_int()

{

TMOD |= 0X10;

TMOD &= 0xdf;

TH1   = 0xfc;

TL1   = 0x67;

TR1   = 1;

EA    = 1;

ET1   = 1;

}

void interrupt_tiner1() interrupt 3

{

TH1 = 0xfc;

TL1 = 0x67;

counter++;

if(counter == 1000)

display();

refresh_LS();

}

void display()

{

counter = 0;

if(sec>=86400)sec=0;

a[0] = 0x7f&block[sec%10];

a[1] = block[sec/10%6];

a[2] = 0x7f&block[sec/60%10];

a[3] = block[sec/600%6];

a[4] = 0x7f&block[sec/3600%10];

a[5] = block[sec/36000%3];

if(MS ==1)sec++;

}

void keying()

{

static uint8 i=0,y,y1;

if(keyin2 == 0)

{

i+=2;

if(i == 6)i=0;

delay(500);

}

else if(keyin3 == 0)

{

if(i == 0)sec++;

else

if(i == 2)sec+=60;

else

if(i == 4)sec+=3600;

delay(1000);

}

else if(keyin4 == 0)

{

if(i == 0)sec--;

else

if(i == 2)sec-=60;

else

if(i == 4)sec-=3600;

delay(500);

}

display();

if((keyin1 == 0)||(keyin2 == 0)||(keyin3 == 0)||(keyin4 == 0))buzzer();

while((keyin1 == 0)||(keyin2 == 0)||(keyin3 == 0)||(keyin4 == 0));

y    = a[i];

y1   = a[i+1];

a[i] = 0xff;

a[i+1]=0xff;

delay(5000);

a[i]  = y;

a[i+1]=y1;

delay(5000);

}

void refresh_LS()

{

static uint8 j=0;

switch(j)

{

case 0: ADDR0 = 0; ADDR1 = 0; ADDR2 = 0; P0=a[0]; j++; break;

case 1: ADDR0 = 1; ADDR1 = 0; ADDR2 = 0; P0=a[1]; j++; break;

case 2: ADDR0 = 0; ADDR1 = 1; ADDR2 = 0; P0=a[2]; j++; break;

case 3: ADDR0 = 1; ADDR1 = 1; ADDR2 = 0; P0=a[3]; j++; break;

case 4: ADDR0 = 0; ADDR1 = 0; ADDR2 = 1; P0=a[4]; j++; break;

case 5: ADDR0 = 1; ADDR1 = 0; ADDR2 = 1; P0=a[5]; j=0; break;

default: break;

}

}

内容概要:本文档主要介绍了Intel Edge Peak (EP) 解决方案,涵盖从零到边缘高峰的软件配置和服务管理。EP解决方案旨在简化客户的入门门槛,提供一系列工具和服务,包括Edge Software Provisioner (ESP),用于构建和缓存操作系统镜像和软件栈;Device Management System (DMS),用于远程集群或本地集群管理;以及Autonomous Clustering for the Edge (ACE),用于自动化边缘集群的创建和管理。文档详细描述了从软件发布、设备制造、运输、安装到最终设备激活的全过程,并强调了在不同应用场景(如公共设施、工业厂房、海上油井和移动医院)下的具体部署步骤和技术细节。此外,文档还探讨了安全设备注册(FDO)、集群管理、密钥轮换和备份等关键操作。 适合人群:具备一定IT基础设施和边缘计算基础知识的技术人员,特别是负责边缘设备部署和管理的系统集成商和运维人员。 使用场景及目标:①帮助系统集成商和客户简化边缘设备的初始配置和后续管理;②确保设备在不同网络环境下的安全启动和注册;③支持大规模边缘设备的自动化集群管理和应用程序编排;④提供详细的密钥管理和集群维护指南,确保系统的长期稳定运行。 其他说明:本文档是详细描述了Edge Peak技术及其应用案例。文档不仅提供了技术实现的指导,还涵盖了策略配置、安全性和扩展性的考虑,帮助用户全面理解和实施Intel的边缘计算解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值