蓝桥杯单片机学习过程记录(十六)第八届电子钟

蓝桥杯单片机学习过程记录(十六)第八届电子钟


这届做的时间好像有点久,在中间关于时钟显示页面并设置这一步停了好久,后来设置了三个变量,得出了显示较为不错的结果,稍后去研究以下大佬们的代码学习学习。
还有一个问题是定时器的问题,定时器0的定时跟时钟差不多,但是定时器1就很有问题,40次却跟200差不多,不知道哪里的问题。
内容:
数码管、小灯
独立按键、定时器
温度传感器ds18b20
时钟芯片ds1302
主函数:

//第八届电子钟
#include<STC15F2K60S2.H>
#include<intrins.h>
#include<onewire.h>
#include<ds1302.h>
sbit s7=P3^0;
sbit s6=P3^1;
sbit s5=P3^2;
sbit s4=P3^3;
unsigned char count_1,tt_1;
unsigned char count,tt;
unsigned char init_time[]={
   50,59,23,0,0,0,0};
char time[7],time_temp[7],time_result[7];
char time_set[]={
   0,0,0};
unsigned char flag_yemian,flag_set,flag_set_1,flag_led;
unsigned char seg[]={
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};
unsigned char yi,er,san,si,wu,liu,qi,ba;
unsigned char wendu;
void allinit();
void delayms(int ms);
void display_12(yi,er);
void display_34(san,si);
void display_56(wu,liu);
void display_78(qi,ba);
void Timer0Init(void);
void Timer1Init(void);
void key_scan();
void ds1302_init();
void ds1302_read();
void time1();
void time2();
void time3();
void time4();
void time1_1();
unsigned char ds18b02_get();
void main(){
   
 allinit();
 ds1302_init();
 Timer0Init();
 Timer1Init();
 EA=1;ET0=1;ET1=1;
 yi=10;er=10;san=10;si=10;wu=10;liu=10;qi=10;ba=10;
 while(1){
   
  wendu=ds18b02_get();
  ds1302_read();
  key_scan();
  //时钟显示页面
  if(flag_yemian==0){
   
   //进行时钟的换算
   time_result[2]=time[2]+time_temp[2];
   time_result[1]=time[1]+time_temp[1];
   time_result[0]=time[0]+time_temp[0];
   //进行判断,是否在边界。
   time1_1();
   //时钟显示
   //正常
   if(flag_set==0){
     
    yi=time_result[2]/10;er=time_result[2]%10;san=10;si=time_result[1]/10;wu=time_result[1]%10;liu=10;qi=time_result[0]/10;ba=time_result[0]%10;
   }
   //设置时
   else if(flag_set==1){
   
    if(count==0){
   
     yi=time_result[2]/10;er=time_result[2]%10;san=10;si=time_result[1]/10;wu=time_result[1]%10;liu=10;qi=time_result[0]/10;ba=time_result[0]%10;
    }
    else if(count==1){
   
     yi=11;er=11;san=10;si=time_result[1]/10;wu=time_result[1]%10;liu=10;qi=time_result[0]/10;ba=time_result[0]%10;
    }
   }
   //设置分
   else 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值