久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
功能電子表單片機程序(不用時鐘芯片)
[打印本頁]
作者:
ripple123
時間:
2019-8-7 16:26
標題:
功能電子表單片機程序(不用時鐘芯片)
#include "reg52.h"
#include "matrix_key.h"
#define keynumber P1
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
extern unsigned char key_backvalue;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit led1=P2^0;
sbit led7=P2^6;
sbit out_break=P3^3;
unsigned char sec=45,min=59,hour=23;
unsigned char qq,ww;
char num=0;
u8 DisplayData[8];
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
bit set=0,set_hour=0,set_min=0,hour_unit=0,min_unit=0,limit=0,min_flag1=0,min_flag2=0,hour_flag1=0,hour_flag2=0;
/*******************************************************************************
* 函 數 名 : delay
* 函數功能 : 延時函數,i=1時,大約延時10us
*******************************************************************************/
extern void delay(u16 i)
{
while(i--);
}
void backspace() //退格
{
if(min_flag1&&min_flag2)
{
min_unit=1;set_min=0;min_flag2=0;
}
if(min_flag1&&min_flag2==0)
{
min_unit=0;set_min=1;
}
//
if(hour_flag1&&hour_flag2)
{
hour_unit=1;set_hour=0;hour_flag2=0;
}
if(hour_flag1&&hour_flag2==0)
{
hour_unit=0;set_hour=1;
}
}
void Timer0Init()
{
TMOD|=0X11;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH1=0XFC; //給定時器賦初值,定時1ms
TL1=0X18;
ET1=1;//打開定時器1中斷允許
EA=1;//打開總中斷
TR1=1;//打開定時器
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
}
void datapros()
{
DisplayData[0] = smgduan[hour/10]; //時
DisplayData[1] = smgduan[hour%10];
DisplayData[2] = 0x40;
DisplayData[3] = smgduan[min/10]; //分
DisplayData[4] = smgduan[min%10];
DisplayData[5] = 0x40;
DisplayData[6] = smgduan[sec/10]; //秒
DisplayData[7] = smgduan[sec%10];
}
void main()
{
Timer0Init();
PT0=1;
PX1=0;
while(1)
{
scan();
if(key_backvalue==31)
{
qq=hour;
ww=min;
set=1;
TR1=0;
}
if(set) //設置
{
scan();
switch(key_backvalue)
{
case(11):led1=0;key_backvalue=0x00; set_hour=1;min_unit=0;break;
case(14):led1=0;key_backvalue=0x00; set_min=1;hour_unit=0; break;
case(23):TR1=1;led1=1;min_flag1=0;min_flag2=0;hour_unit=0;min_unit=0;set_hour=0;set_min=0;break;
case(17): hour=qq;min=ww;TR1=1;led1=1;min_flag1=1;min_flag2=0;hour_unit=0;min_unit=0;set_hour=0;set_min=0;break;
}
if(set_hour) //設置時
{
scan();
switch(key_backvalue)
{
case(1): key_backvalue=0x00;hour=(10+hour%10);hour_unit=1;set_hour=0;limit=1;hour_flag1=1;break;
case(2): key_backvalue=0x00;hour=(20+hour%10);hour_unit=1;set_hour=0;hour_flag1=1;break;
case(22):key_backvalue=0x00;hour=hour%10; hour_unit=1;set_hour=0;limit=1;hour_flag1=1;break;
}
}
if(hour_unit&&(limit==0))
{
scan();
switch(key_backvalue)
{
case(22):key_backvalue=0x00; hour=hour/10*10;hour_flag2=1;break;
case(1):key_backvalue=0x00; hour=(hour/10*10+1);hour_flag2=1;break;
case(2):key_backvalue=0x00; hour=(hour/10*10+2);hour_flag2=1;break;
case(3):key_backvalue=0x00; hour=(hour/10*10+3);hour_flag2=1;break;
case(4):key_backvalue=0x00; hour=(hour/10*10+4);hour_flag2=1;break;
}
scan();
if(key_backvalue==21)
{
backspace();
}
}
if(hour_unit&&limit)
{
scan();
switch(key_backvalue)
{
case(22):key_backvalue=0x00; hour=hour/10*10;hour_unit=0;limit=0;hour_flag2=1;break;
case(1):key_backvalue=0x00; hour=(hour/10*10+1);limit=0;hour_flag2=1;break;
case(2):key_backvalue=0x00; hour=(hour/10*10+2);limit=0;hour_flag2=1;break;
case(3):key_backvalue=0x00; hour=(hour/10*10+3);limit=0;hour_flag2=1;break;
case(4):key_backvalue=0x00; hour=(hour/10*10+4);limit=0;hour_flag2=1;break;
case(5):key_backvalue=0x00; hour=(hour/10*10+5);limit=0;hour_flag2=1;break;
case(6):key_backvalue=0x00; hour=(hour/10*10+6);limit=0;hour_flag2=1;break;
case(7):key_backvalue=0x00; hour=(hour/10*10+7);limit=0;hour_flag2=1;break;
case(8):key_backvalue=0x00; hour=(hour/10*10+8);limit=0;hour_flag2=1;break;
case(9):key_backvalue=0x00; hour=(hour/10*10+9);limit=0;hour_flag2=1;break;
}
scan();
if(key_backvalue==21)
{
backspace();
}
}
if(set_min==1) //設置分
{
scan();
switch(key_backvalue)
{
case(22):key_backvalue=0x00;min=min%10;min_unit=1;set_min=0;break;
case(1):key_backvalue=0x00; min=(min%10+10);min_unit=1;set_min=0;min_flag1=1;break;
case(2):key_backvalue=0x00; min=(min%10+20);min_unit=1;set_min=0;min_flag1=1;break;
case(3):key_backvalue=0x00; min=(min%10+30);min_unit=1;set_min=0;min_flag1=1;break;
case(4):key_backvalue=0x00; min=(min%10+40);min_unit=1;set_min=0;min_flag1=1;break;
case(5):key_backvalue=0x00; min=(min%10+50);min_unit=1;set_min=0;min_flag1=1;break;
}
scan();
if(key_backvalue==21)
{
backspace();
}
}
if(min_unit)
{
scan();
switch(key_backvalue)
{
case(22):key_backvalue=0x00; min=min/10*10;min_flag2=1;break;
case(1):key_backvalue=0x00; min=(min/10*10+1);min_flag2=1;break;
case(2):key_backvalue=0x00; min=(min/10*10+2);min_flag2=1;break;
case(3):key_backvalue=0x00; min=(min/10*10+3);min_flag2=1;break;
case(4):key_backvalue=0x00; min=(min/10*10+4);min_flag2=1;break;
case(5):key_backvalue=0x00; min=(min/10*10+5);min_flag2=1;break;
case(6):key_backvalue=0x00; min=(min/10*10+6);min_flag2=1;break;
case(7):key_backvalue=0x00; min=(min/10*10+7);min_flag2=1;break;
case(8):key_backvalue=0x00; min=(min/10*10+8);min_flag2=1;break;
case(9):key_backvalue=0x00; min=(min/10*10+9);min_flag2=1;break;
}
}
scan();
if(key_backvalue==21)
{
backspace();
}
}
}
}
void Timer0() interrupt 3
{
static u16 i;
unsigned char o=0;
TH1=0XFC; //給定時器賦初值,定時1ms
TL1=0X18;
i++;
if(i==1000)
{
i=0;
sec++;
if(sec>59)
{
sec=0;min++;
if(min>59)
{
min=0;hour++;
if(hour>23)
{
hour=0;
}
}
}
}
}
void DigDisplay()interrupt 1
{
u8 i;
static u16 o;
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
o++;
if(o==15)
{
datapros();
for(i=0;i<8;i++)
{
if(set_hour&&i==7)continue;
if(hour_unit&&i==6)continue;
if(set_min&&i==4)continue;
if(min_unit&&i==3)continue;
switch(i) //位選,選擇點亮的數碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//顯示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//顯示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//顯示第7位
}
P0=DisplayData[7-i];//發送數據
delay(100); //間隔一段時間掃描
P0=0x00;//消隱
}
}
if(o==30)
{
o=0;
for(i=0;i<8;i++)
{
switch(i) //位選,選擇點亮的數碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//顯示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//顯示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//顯示第7位
}
P0=DisplayData[7-i];//發送數據
delay(100); //間隔一段時間掃描
P0=0x00;//消隱
}
}
}
#include"matrix_key.h"
unsigned char key_backvalue;
void scan()
{
unsigned int k=0;
keynumber=0x0f;
if(keynumber!=0x0f)
{
delay(1000);
keynumber=0x0f;
switch(keynumber)
{
case(0x07):key_backvalue=1;break;
case(0x0b):key_backvalue=2;break;
case(0x0d):key_backvalue=3;break;
case(0x0e):key_backvalue=11;break;
}
keynumber=0xf0;
switch(keynumber)
{
case(0x70):key_backvalue=key_backvalue;break;
case(0xb0):key_backvalue=key_backvalue+3;break;
case(0xd0):key_backvalue=key_backvalue+6;break;
case(0xe0):key_backvalue=key_backvalue+20;break;
}
}
while((k<50)&&(keynumber!=0xf0))
{
delay(200);
k++;
}
}
#ifndef __matrix_key_H_
#define __matrix_key_H_
#include<reg52.h>
#define keynumber P1
void delay(unsigned int i);
extern void scan();
#endif
純手打,實現電子表的一般功能
作者:
ripple123
時間:
2019-8-7 17:42
用的普中的51開發板,按鍵左上角九個鍵是123456789,右邊從上到下的功能依次是調整時,調整分,取消調整(恢復調整前的時間),開始設置。最后一行的功能分別是確認調整,數字0,無意義。制作不易,,
作者:
aatcs
時間:
2019-9-1 08:26
沒有matrix_key.h頭文件
作者:
lindeijun1
時間:
2022-5-7 08:07
有意思,看看先
作者:
zxxay
時間:
2022-5-16 09:11
這種沒有流程圖,沒有函數,變量功能注釋的代碼看著累死。。。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品久久久久aaaa
|
亚洲成人精品一区
|
中文字幕日韩专区
|
亚洲国产精品自拍
|
羞羞视频免费观看
|
欧美精品一区二区在线观看
|
午夜网
|
99久久精品免费看国产小宝寻花
|
中文字幕一区二区三区日韩精品
|
成人午夜电影在线观看
|
成人在线观看欧美
|
欧美日韩中文在线
|
天堂久久av
|
久久国产精品久久国产精品
|
国产成人免费视频网站高清观看视频
|
婷婷桃色网
|
a在线视频
|
中文天堂在线一区
|
亚洲一二三在线观看
|
亚洲视频在线看
|
国产1页
|
一区二区在线看
|
精品一区二区三区四区在线
|
91xxx在线观看
|
欧美日韩在线观看视频
|
日本a视频
|
日本精品视频在线
|
成人精品一区二区
|
av网站在线播放
|
91视频在线观看免费
|
成人国产网站
|
日韩视频在线观看中文字幕
|
亚洲在线一区二区三区
|
久久久精彩视频
|
国产一区二区三区在线看
|
一本岛道一二三不卡区
|
成人免费福利
|
国产黄视频在线播放
|
91中文
|
欧美亚洲成人网
|
精品视频一区二区三区在线观看
|