单片机的最后一更哟,myhead.h中包括需要用到的头文件的申明以及单片机引脚的申明,all.c在lcd屏幕上显示选项
myhead.h
#ifndef _MYHEAD_H
#define _MYHEAD_H
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#include "./delay/delay.h"
#include "./lcd/lcd.h"
#include "./led/led.h"
#include "./key/key.h"
#include "./digital_light/digital.h"
#include "./uart/uart.h"
#include "./iic/iic.h"
#include "./AD_DA/AD_DA.h"
#include "./ds1302/ds1302.h"
#include "./ds18b20/ds18b20.h"
#include "./key8/key8.h"
//key
#define KEYPORT P0
//led
#define LEDPORT P3
//lcd
#define LCDPORT P0
#define LCD_WRITE_DATA 1
#define LCD_WRITE_COM 0
sbit RS = P2^4;
sbit RW = P2^5;
sbit E = P2^6;
//digital
#define PORT P1
sbit bit_select = P2^0;
sbit seg_select = P2^1;
extern xdata unsigned char ch[10];
extern xdata unsigned char flag;
extern xdata unsigned char segdata[10];
extern xdata unsigned char bitdata[8];
extern xdata unsigned char tempdata[8];
extern xdata unsigned char hour;
extern xdata unsigned char min;
extern xdata unsigned char sec;
extern xdata unsigned char alarm_hour;
extern xdata unsigned char alarm_min;
extern xdata unsigned char alarm_sec;
//iic
#define SUCC 0
#define ERR 1
sbit SCL = P2^2;
sbit SDA = P2^3;
sbit beep = P3^7;
extern bit ack;//定义位变量1,0
//ds1302
sbit RST = P2^0;
sbit SCK = P2^1;
sbit IO = P2^2;
//ds18b20
sbit ds = P2^7;
//key8
sbit start = P3^2;
sbit rst = P3^3;
#endif
all.c
#include "myhead.h"
void main()
{
unsigned char keynum;
lcd_init();
lcd_inter1();
while(1)
{
keynum = key_scan();
switch(keynum)
{
case 0x7e:
{
lcd_test();
led();
delay_s(2);
lcd_init();
lcd_inter1();
break;
}
case 0xbe:
{
lcd_test();
digital();
delay_s(2);
lcd_init();
lcd_inter1();
break;
}
case 0xde:
{
lcd_test();
uart();
delay_s(2);
lcd_init();
lcd_inter1();
break;
}
case 0xee:
{
lcd_test();
delay_ms(100);
iic();
delay_s(2);
lcd_init();
lcd_inter1();
break;
}
case 0x7d:
{
lcd_test();
key8();
delay_s(2);
lcd_init();
lcd_inter2();
break;
}
case 0xbd:
{
lcd_test();
delay_s(2);
DA();
delay_s(2);
lcd_init();
lcd_inter2();
break;
}
case 0xdd:
{
lcd_test();
delay_s(3);
ds1302();
delay_s(2);
lcd_init();
lcd_inter2();
break;
}
case 0xed:
{
lcd_test();
delay_s(2);
ds18b20();
delay_s(2);
lcd_init();
lcd_inter2();
break;
}
case 0xb7:
{
lcd_init();
lcd_inter1();
break;
}
case 0xd7:
{
lcd_init();
lcd_inter2();
break;
}
}
}
}