main.h
/**
* 51单片机项目:多功能记录仪
* 文件名:main.h
*/
#ifndef _MAIN_H
#define _MAIN_H
typedef struct msg {
uint8_t hour; //时
uint8_t minute; //分
uint8_t second; //秒
uint8_t tempIntPart; //温度
uint8_t humidity; //湿度
uint8_t resTime; //物品停留时间
} msg_t;
typedef void (* pFn)(); //定义函数指针类型
void keyAction(uint8_t keyCode);
void Serial_receive();
void dispMode0();
void dispMode1();
void dispMode2();
void LEDupdate();
void LED3toggle();
#endif
main.c
/**
* 51单片机项目:多功能记录仪
* 工作模式0:自动传输模式(上电默认)
* 工作模式1:自动记录模式
* 用户操作:
* (1)按键S5切换工作模式
* (2)按键S4切换显示模式
* (3)当记录仪工作在两种模式下时,只有当用户发送字符"AAASSS"给单片机,
* 单片机才把数据传送给上位机显示。
*
* 文件名:main.c
*/
#include <stc15f2k60s2.h>
#include <string.h>
#include "stdint.h"
#include "timer.h"
#include "digitalTube.h"
#include "independentKey.h"
#include "Serial.h"
#include "I2C.h"
#include "EEPROM.h"
#include "PCF8591.h"
#include "OneWire.h"
#include "DS18B20.h"
#include "DS1302.h"
#include "main.h"
sbit LED_1 = P0^0;
sbit LED_2 = P0^1;
sbit LED_3 = P0^2;
volatile bit flag200ms = 0, flag300ms = 0, flag1s = 0;
pFn code disptr[3] = { dispMode0, dispMode1, dispMode2 };
uint8_t disptrIndex = 0;
bit workingMode = 0; //为0表示自动传输模式;为1表示自动记录模式
msg_t message;
uint8_t SerialBuf[7], SerialBufIndex = 0;
vo