蓝桥杯单片机学习过程记录(二十六)第七届国赛电压、频率采集设备
N555方波这部分没写,准备重新理解一下,其余部分都已经完成,遇到了两个问题,一是时钟芯片,调整时,记得调整完后重新初始化一下,二是采集电压波动时,由正常到高,有正常到低时的判断频率调整一下。
应用的内容:
数码管、矩阵按键、
IIC_Rb2电压采集
EEPROM的写入读取
DS1302时钟芯片
定时器
/*
--------------------------------
第七届频率电压采集
频率没写,其余部分写完。
2020.3.8
--------------------------------
*/
#include<STC15F2K60S2.H>
#include<ds1302.h>
#include<iic.h>
char s11_count_h,s11_count_m,s11_count_s,count_h,count_m;
unsigned int time0_t,dianya,dianya_h,dianya_m,dianya_temp;
unsigned char flag_yemian,flag_time0,s4_count,dianya_count;
unsigned char seg[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
unsigned char yi,er,san,si,wu,liu,qi,ba;
unsigned char time_init[]={
55,59,23,0,0,0,0};
unsigned char time_read[7];
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 allinit();
void key_scan();
void ds1302_init();
void ds1302_read();
void Timer0Init(void);
unsigned char iic_rb2_read();
void eeprom_write(unsigned char add,unsigned char dat);
unsigned char eeprom_read(unsigned char add);
void dianya_pd();
void main(){
allinit();
ds1302_init();
Timer0Init();EA=1;ET0=1;
while(1){
//eeprom上下限读取
dianya_h=eeprom_read(0x01);dianya_h=dianya_h+count_h;
dianya_m=eeprom_read(0x02);dianya_m=dianya_m+count_m;
//电压读取Rb2及转换
dianya=iic_rb2_read()*1.96;
//时钟读取及设置
ds1302_read();
time_read[2]=(time_read[2]+s11_count_h)%24;
time_read[1]=(time_read[1]+s11_count_m)%60;
time_read[0]=(time_read[0]+s11_count_s)%60;
//时钟显示界面
if(flag_yemian==0){
//时闪烁
if(s4_count==1 & flag_time0==1){
yi=11;er=11;san=10;si=time_read[1]/10;wu=time_read[1]%10;liu=10;qi=time_read[0]/10;ba=time_read[0]%10;
}
//分闪烁
else if(s4_count==2& flag_time0==1){
yi=time_read[2]/10;er=time_read[2]%10;san=10;si=11;wu=11;liu=10;qi=time_read[0]/10;ba=time_read[0]%10;
}
//秒闪烁
else if(s4_count==3& flag_time0==1){
yi