蓝桥杯单片机学习过程记录(二十三)第五届国赛多功能事件记录器
这套题基本涵盖了所有的基础知识点,串口通信部分没写,也不算是没写,就写了一点点字符串读取,具体原理还不懂,eeprom部分可以简化
用到的内容:
独立按键、小灯
数码管、定时器
IIC读取RB2和光敏电阻
EEPROM的写入读取
温度传感器DS18B20
时钟芯片DS1302
/*
-----------------------------------
第五届国赛多功能事件记录器
2020.3.2
串口部分未完成
其余部分完成EEPROM部分自动存储完成
问题:
IIC通信中rb2和光敏电阻的获取是反的,03得到了光敏电阻,01得到了rb2阻值
-----------------------------------
*/
#include<STC15F2K60S2.H>
#include<ds1302.h>
#include<onewire.h>
#include<iic.h>
sbit s5=P3^2;
sbit s4=P3^3;
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
int shidu;
bit jiange;
unsigned char eep[5][6];
unsigned char time0_t,close_t,close_temp,read_temp,eep_count;
unsigned char flag_yemian,flag_mode,flag_close;
unsigned char time_init[]={
55,59,23,0,0,0,0};
unsigned char time_read[7];
unsigned char wendu,dianya,urdat,gm,eep_temp;
unsigned char seg[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6,0x89};
unsigned char yi,er,san,si,wu,liu,qi,ba;
void delayms(int ms);
void allinit();
void display_12(yi,er);
void display_34(san,si);
void display_56(wu,liu);
void display_78(qi,ba);
void DS1302_READ();
void DS1302_INIT();
unsigned char onewire_read();
unsigned char iic_rb2(unsigned char add);
void Timer0Init(void);
void uart_init();
void sendstring(unsigned char *str);
void uart_working();
void key_scan();
unsigned char eeprom_read(unsigned char add);
void eeprom_write(unsigned char add,unsigned char dat);
void eep_input();
//void eep_output();
void main(){
allinit();
DS1302_INIT();
uart_init();
Timer0Init(); EA=1;ET0=1;ES=1;
yi=10;er=10;san=10;si=10;wu=10;liu=10;qi=10;ba=10;
sendstring("hello\r\n");
close_temp=iic_rb2(0x03);
while(1){
//eep_output();
uart_working();
DS1302_READ();
wendu=onewire_read();
gm=iic_rb2(0x03);
//对靠近物体进行判断
if(gm<(close_temp-10)){
flag_close=1;
P2=0X80;led3=0;
}