📄 main.c
字号:
b.ucWeek=6;
}
};break;//位选择周
}
Time_display2();
}
/*************************************************************************************************/
/*8位数据从74HC164的串行输入端输入,从输出端并行输出,显示的是断码*/
/*************************************************************************************************/
void senddata(uchar dd) {
uchar j;
for (j=0;j<=7;j++) {
SCK=0;
if(dd&0x01)SDA=1;
else SDA=0;
SCK=1;
dd=dd>>1;
}
}
/****************************************************************************************************/
/*动态扫描显示程序*/
/****************************************************************************************************/
void Time_display1(void)//显示时分秒
{
uchar num;
if(display_config<5){
num= a.ucSec&0b00001111;
senddata(szdm[num]); //秒显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
num= (a.ucSec>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第2位
OSTimeDly(10);
senddata(szdm[12]); //显示中间横杠
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num= a.ucMin&0b00001111; //分钟显示
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
num= (a.ucMin>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
senddata(szdm[12]); //显示中间横杠
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第6位
OSTimeDly(10);
num=a.ucHour&0b00001111; //小时显示
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第7位
OSTimeDly(10);
num= (a.ucHour>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
OSTimeDly(10);
senddata(szdm[11]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
}
if(display_config==5){ senddata(szdm[11]); //显示黑屏
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1; //位选,选择右面第8位
}
if((display_config>5)&(display_config<=7)){
num=a.ucDay&0b00001111;
senddata(szdm[num]); //日显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
num= (a.ucDay>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第2位
OSTimeDly(10);
num= a.ucMonth&0b00001111; //显示月
senddata(szdm[num]); //显示中间横杠
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
senddata(szdm[10]); //显示小数点
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num=(a.ucMonth>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
senddata(szdm[10]); //显示小数点
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
num= a.ucYear&0b00001111; //显示年
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
num= (a.ucYear>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第6位
OSTimeDly(10);
senddata(szdm[0]); //显示数字0
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第7位
OSTimeDly(10);
senddata(szdm[2]); //显示数字2
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
OSTimeDly(10);
senddata(szdm[11]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
}
if(display_config>=8){
senddata(szdm[11]);//显示黑屏
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1; //位选,选择右面第8位
OSTimeDly(10);
}
}
void Time_display2(void){ //调试显示时间
uchar num;
if(keyn<=3)
{
if(keyn==1)
{
if(FF==2)
{
num= b.ucSec&0b00001111;
senddata(szdm[num]); //秒显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
num= (b.ucSec>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第2位
OSTimeDly(10);
senddata(szdm[12]); //显示中间横杠
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
};
num= b.ucMin&0b00001111; //分钟显示
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
num= (b.ucMin>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
senddata(szdm[12]); //显示中间横杠
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第6位
OSTimeDly(10);
num=b.ucHour&0b00001111; //小时显示
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第7位
OSTimeDly(10);
num= (b.ucHour>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
OSTimeDly(10);
senddata(szdm[11]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
}
if(keyn==2)
{
if(FF==2)
{
num= b.ucMin&0b00001111; //分钟显示
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
num= (b.ucMin>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
senddata(szdm[12]); //显示中间横杠
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第6位
OSTimeDly(10);
};
num= b.ucSec&0b00001111;
senddata(szdm[num]); //秒显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
num= (b.ucSec>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第2位
OSTimeDly(10);
senddata(szdm[12]); //显示中间横杠
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num=b.ucHour&0b00001111; //小时显示
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第7位
OSTimeDly(10);
num= (b.ucHour>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
OSTimeDly(10);
senddata(szdm[11]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
}
if(keyn==3)
{
if(FF==2)
{
num=b.ucHour&0b00001111; //小时显示
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第7位
OSTimeDly(10);
num= (b.ucHour>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
OSTimeDly(10);
senddata(szdm[11]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
};
num= b.ucSec&0b00001111;
senddata(szdm[num]); //秒显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
num= (b.ucSec>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第2位
OSTimeDly(10);
senddata(szdm[12]); //显示中间横杠
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num= b.ucMin&0b00001111; //分钟显示
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
num= (b.ucMin>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
senddata(szdm[12]); //显示中间横杠
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第6位
OSTimeDly(10);
}
}
if((keyn>=4)&(keyn<=7))
{
if(keyn==4)
{
if(FF==2)
{
num= b.ucDay&0b00001111;
senddata(szdm[num]); //日期,日显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
num= (b.ucDay>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第2位
OSTimeDly(10);
};
senddata(szdm[10]); //显示小数点
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num= b.ucMonth&0b00001111;
senddata(szdm[num]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num= (b.ucMonth>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
senddata(szdm[10]); //显示小数点
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
num= b.ucYear&0b00001111;
senddata(szdm[num]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
num= (b.ucYear>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第6位
OSTimeDly(10);
senddata(szdm[0]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第7位
OSTimeDly(10);
senddata(szdm[2]); //日期,月显示
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
OSTimeDly(10);
senddata(szdm[11]);//显示黑屏
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1; //位选,选择右面第8位
OSTimeDly(10);
}
if(keyn==5)
{
if(FF==2){
senddata(szdm[10]); //显示小数点
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num= b.ucMonth&0b00001111;
senddata(szdm[num]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num= (b.ucMonth>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
};
num= b.ucDay&0b00001111;
senddata(szdm[num]); //日期,日显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
num= (b.ucDay>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第2位
OSTimeDly(10);
senddata(szdm[10]); //显示小数点
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
num= b.ucYear&0b00001111;
senddata(szdm[num]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
num= (b.ucYear>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第6位
OSTimeDly(10);
senddata(szdm[0]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第7位
OSTimeDly(10);
senddata(szdm[2]); //日期,月显示
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
OSTimeDly(10);
senddata(szdm[11]);//显示黑屏
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1; //位选,选择右面第8位
OSTimeDly(10);
}
if(keyn==6)
{
if(FF==2)
{
senddata(szdm[10]); //显示小数点
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
num= b.ucYear&0b00001111;
senddata(szdm[num]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第5位
OSTimeDly(10);
num= (b.ucYear>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=1;//位选,选择右面第6位
OSTimeDly(10);
senddata(szdm[0]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第7位
OSTimeDly(10);
senddata(szdm[2]); //日期,月显示
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1;//位选,选择右面第8位
OSTimeDly(10);
senddata(szdm[11]); //显示黑屏
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=1; //位选,选择右面第8位
OSTimeDly(10);
};
num= b.ucDay&0b00001111;
senddata(szdm[num]); //日期,日显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
num= (b.ucDay>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第2位
OSTimeDly(10);
senddata(szdm[10]); //显示小数点
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num= b.ucMonth&0b00001111;
senddata(szdm[num]); //日期,月显示
PTDD_PTDD1=1;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第3位
OSTimeDly(10);
num= (b.ucMonth>>4)&0b00001111;
senddata(szdm[num]);
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
senddata(szdm[11]); //显示黑屏
PTDD_PTDD1=0;PTDD_PTDD0=0;PTBD_PTBD3=0;//位选,选择右面第4位
OSTimeDly(10);
}
if(keyn==7)
{
if(FF==2)
{
num=b.ucWeek&0b00001111;
senddata(szdm[num]); //日期,星期显示
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
senddata(szdm[11]); //显示黑屏
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
};
senddata(szdm[11]); //显示黑屏
PTDD_PTDD1=1;PTDD_PTDD0=1;PTBD_PTBD3=0;//位选,选择右面第1位
OSTimeDly(10);
}
}
}
void Delay_ms(void){//显示延时函数
int i;
int j;
for(i=0;i<=5;i++){
for(j=0;j<=200;j++);
}
}
void Delay_key(void){
int i;
int j;
for(i=0;i<=80;i++){
for(j=0;j<=500;j++);
}
}
void key_display(void){
if(PTBD_PTBD0==0) {TPM2SC_TOIE=1;}
if(PTBD_PTBD1==0) {TPM2SC_TOIE=1;}
if(PTBD_PTBD2==0) {TPM2SC_TOIE=1;}
if(PTAD_PTAD1==0) {TPM2SC_TOIE=1;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -