欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
簡單的51單片機的可調的電子時鐘程序
[打印本頁]
作者:
帆布鞋男孩呀
時間:
2022-4-7 15:27
標題:
簡單的51單片機的可調的電子時鐘程序
0.png
(56.11 KB, 下載次數: 37)
下載附件
2022-4-7 15:51 上傳
單片機源程序如下:
#include "reg52.h"
typedef unsigned int u16; //重新定義關鍵字
typedef unsigned char u8;
u8 code segment[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; //定義位碼0~7
u8 code dofly_DuanMa[10={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; // 顯示段碼值0~9
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
u8 hour, minute,second,count,TempData[8],Key_Num;
void Delay_1us(u8 i) //延時函數1us
{
while (i--);
}
void Dig_Display() //數碼管顯示函數
{
u8 i;
for (i=0;i<8;i++){
switch (i){
case 7:
LSA=0;LSB=0;LSC=0;break;
case 6:
LSA=1;LSB=0;LSC=0;break;
case 5:
LSA=0;LSB=1;LSC=0;break;
case 4:
LSA=1;LSB=1;LSC=0;break;
case 3:
LSA=0;LSB=0;LSC=1;break;
case 2:
LSA=1;LSB=0;LSC=1;break;
case 1:
LSA=0;LSB=1;LSC=1;break;
case 0:
LSA=1;LSB=1;LSC=1;break;
}
P0=TempData[i];
Delay_1us(100);
P0=0x00;
}
}
void Init_Timer0(void) //中斷函數初始化
{
TH0=(65532-5000)/256; //賦初始值
TL0=(65532-5000)%256;
TMOD=0x01; //定時器0以工作方式1工作
ET0=1;
TR0=1;
EA=1;
}
void Init_Exten0(void)
{
EX0=1;
EA=1;
IT0=0;
}
void Timer_Interrupt0(void) interrupt 1 //定時器0中斷
{
TH0=(65532-5000)/256; //賦初始值
TL0=(65532-5000)%256;
count++;
if (count == 140){
count = 0;
second++;
if (second == 60){
second = 0;
minute++;
if (minute == 60){
minute = 0;
hour++;
if (hour == 24){
hour = 0;
}
}
}
}
}
void Key_Scan() // 鍵盤掃描程序
{
if(k1==0){
Delay_1us(1000);
if(k1==0){
Key_Num=1;
}
while(!k1);
}
if(k2==0){
Delay_1us(1000);
if(k2==0){
Key_Num=2;
}
while(!k2);
}
if(k3==0){
Delay_1us(1000);
if(k3==0){
Key_Num=3;
}
while(!k3);
}
if(k4==0){
Delay_1us(1000);
if(k4==0){
Key_Num=4;
}
while(!k4);
}
}
void Key_Control() //鍵盤的控制
{
TempData[0=dofly_DuanMa[0];
TempData[1=dofly_DuanMa[0];
TempData[2=0x40;
TempData[3=dofly_DuanMa[0];
TempData[4=dofly_DuanMa[0];
TempData[5=0x40;
TempData[6=dofly_DuanMa[0];
TempData[7=dofly_DuanMa[0];
switch(Key_Num){
case 1:
hour++;if(hour==24)hour=0;Key_Num=0; //正常時間 小時 加1
break;
case 2:
hour--;if(hour==255)hour=23;Key_Num=0; //正常時間 小時減1
break;
case 3:
minute++;if(minute==60)minute=0;Key_Num=0; //分鐘加1
break;
case 4:
minute--;if(minute==255)minute=59;Key_Num=0; //分鐘減1
break;
}
}
Dig_Now_Display() //數碼管刷新
{
TempData[0=dofly_DuanMa[hour/10];
TempData[1=dofly_DuanMa[hour%10];
TempData[2=0x40;
TempData[3=dofly_DuanMa[minute/10];
TempData[4=dofly_DuanMa[minute%10];
TempData[5=0x40;
TempData[6=dofly_DuanMa[second/10];
TempData[7=dofly_DuanMa[second%10];
Dig_Display();
}
void main(){
Init_Timer0();
while(1){
Key_Scan();
Key_Control();
Dig_Now_Display();
Dig_Display();
}
}
復制代碼
作者:
good1230
時間:
2022-4-19 12:11
求 仿真!!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1