日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c语言编辑电子实时时钟,可以调整时间的电子时钟-C语言

發(fā)布時(shí)間:2023/12/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言编辑电子实时时钟,可以调整时间的电子时钟-C语言 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用stc89c52單片機(jī),電路很簡(jiǎn)單,采用八位共陽(yáng)數(shù)碼管,p0口為數(shù)碼管的段選,p2口為位選. 通過(guò)key1-key3來(lái)調(diào)整時(shí)間

重點(diǎn):

1、函數(shù)的模塊化

2、中斷#include#define uchar unsigned char

#define uint unsigned int

sbit p2_0=P2^0;

sbit p2_1=P2^1;

sbit p2_2=P2^2;

sbit p2_3=P2^3;

sbit p2_4=P2^4;

sbit p2_5=P2^5;

sbit p2_6=P2^6;

sbit p2_7=P2^7;

sbit key0=P3^2;

sbit key1=P3^3;

sbit key2=P3^4;

sbit key3=P3^5;

sbit p17=P1^7;

uint t=0;

uint key=0;

uchar set=0;

uchar second=00,minter=55,hour=11;

uchar second_1,second_2,minter_1,minter_2,hour_1,hour_2;

const uchar tab[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf} ; //0~~9數(shù)碼表

void delay() //延時(shí)延時(shí)子程序

{ uint i;

for(i=0;i<240;i++);

}

void time_0(void) interrupt 1 using 0 //內(nèi)部定時(shí)器0內(nèi)部定時(shí)50ms

{

TH0=0x3c;

TL0=0xb0;

t++; // t是記定時(shí)次數(shù)

}

void display(uchar secondd,uchar minterr,uchar hourr) //顯示始終時(shí)間的子程序

{

second_1=secondd/10;

second_2=secondd%10;

minter_1=minterr/10;

minter_2=minterr%10;

hour_1=hourr/10;

hour_2=hourr%10;

P0=tab[second_2];

p2_0=0;

delay();

p2_0=1;

P0=tab[second_1];

p2_1=0;

delay();

p2_1=1;

p2_2=0;

P0=0xbf;

delay();

p2_2=1;

P0=tab[minter_2];

p2_3=0;

delay();

p2_3=1;

P0=tab[minter_1];

p2_4=0;

delay();

p2_4=1;

p2_5=0;

P0=0xbf;

delay(); //延時(shí) 是為了使— “——”顯示出來(lái),否則時(shí)間太快,—

p2_5=1;

P0=tab[hour_2];

p2_6=0;

delay();

p2_6=1;

P0=tab[hour_1];

p2_7=0;

delay();

p2_7=1;

}

void time()

{

//定時(shí)1s的時(shí)間是否到?

if(t==19) //1s到,則加一秒

{ t=0;

second++;

if(second==60) // 是否為60秒 ,是秒清零,分加一秒,不到則跳出

{

second=0;

minter++;

if(minter==60) // 分是否為60分,是 ,分清零,時(shí)加一;不是則跳出

{ minter=0;

hour++;

if(hour==24)

{

hour=0;

}

}

}

}

display(second,minter,hour); //調(diào)用顯示函數(shù) 來(lái)顯示時(shí)間時(shí)間

}

uint scan_key() //調(diào)整時(shí)間 按鍵 掃描 函數(shù)

{ //延時(shí)

delay(); //判斷 如果按鍵 按key3下則返回1 來(lái)調(diào)用 調(diào)整時(shí)間函數(shù),不為零則返回0 不變不調(diào)整

if(key0==0)

set=1;

if(key0==1)

set=0;

return set;

}

void set_time() //調(diào)整時(shí)間函數(shù)

{ uchar m;

if(key1==0) delay(); //調(diào)整小時(shí),確定key1健按下

if(key1==0) hour++; // x小時(shí)數(shù)遞增

if(hour==24) hour=0; //小時(shí)數(shù)到24,從零開(kāi)始

for(m=0;m<20;m++) //循環(huán)20次

{ time(); //調(diào)用顯示函數(shù) 來(lái)顯示時(shí)間時(shí)間

}

if(key2==0) delay(); //調(diào)整分鐘

if(key2==0) minter++;

if(minter==60) minter=0;

delay();

time(); //調(diào)用時(shí)間函數(shù) 來(lái)顯示時(shí)間時(shí)間

if(key0==0)

time();

}

void main() //主函數(shù) 設(shè)定 內(nèi)部時(shí)間定時(shí)

{

TMOD=0X01;

TH0=0X10;

TL0=0X00;

EA=1;

ET0=1;

TR0=1;

P2=0xff;

while(1)

{

if(key0==0) // p判斷 調(diào)整時(shí)間的按鍵是否按下 即 是否需要 調(diào)整時(shí)間

{

p17=0;

delay();

delay();

delay();

p17=1;

delay();

delay();

key=scan_key();

}

switch(key)

{ //定時(shí)1s的時(shí)間是否到?

case 0: time(); break;

case 1: set_time();break;

default :break;

}

}

}

總結(jié)

以上是生活随笔為你收集整理的c语言编辑电子实时时钟,可以调整时间的电子时钟-C语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。