一、电路设计
此电路由单片机最小系统板、LCD240*128液晶显示模块、DS18B20测温模块、DS1302时钟模块和红外接收模块组成。
二、运行结果
三、部分代码
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar idata nz[5][3]={{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0}},nz_op=0,nz_flag=0;//五组闹钟
//uchar idata zt[1][2]={0,0};
uchar zdjs=0,cdds=10,cdds_flag=0;
uchar year_moon,month_moon,day_moon;//农历
uchar dis_flag;//用于判断其它设置
uchar dis_other_flag=0;
uchar key_beep_op=0xff,nongli_op=0xff,jieri_op=0xff;//各个设置默认为开
uchar jieri_flag=0;//节日标志位,用于判断有无节日
bit ssok=0;
bit shengri_bit; // 生日标志位
uchar t; //定义静态小时更新用数据变量
sbit IR_RE=P3^2;
bit IR_OK; //红外接收成功标志位
uchar data IRcode[4]; //存放红外接收数据,IRcode[4]中存放的是发射过来的红外键值
volatile uchar workcode; //经过处理返回的纯数字红外编码
/*定义按键----------------------------------------------------------------------*/
sbit key1 = P1^0; //按键K1-设置
sbit key2 = P1^1; //按键K2-确认、返回
sbit key3 = P1^2; //按键K3-加
sbit key4 = P1^3; //按键K4-减
sbit lcd_led= P2^6; //LED灯
sbit buzzer = P2^7; //蜂鸣器
#include "shengming.h"
#include "Num1632.h"
#include "HZ16.h"
#include "displaytime.h"
#include "MSP240128.h"
#include "nongli.h"
#include "DS1302.h"
#include "ds18b20.h"
#include "changyong.h"
#include "keydone.h"
void main()
{
main_init(); //主程序初始化
LcdInit(); //液晶初始化
LcdClear(); //清屏
ds1302_init(); //时间芯片初始化
ds1820rst(); //ds1820复位
keydone(); //键盘扫描
}
/**********************************************************
主程序初始化
**********************************************************/
void main_init(void)
{
buzzer=0; //开蜂鸣器
delayms(30); //延时
buzzer=1; //关蜂鸣器
lcd_led=0; //液晶背光
IR_RE=1; //红外接收头
IT0=1; //INT0为负边沿触发, (1:负边沿触发,0:低电平触发)
EX0=1; //外部中断INT0开, (1:开,0:关 )
EA=1; //开所有中断
CE=0; //液晶使能
key1= 1; //A 键盘初始化为高
key2= 1; //B
key3= 1; //C
key4= 1; //D
}
/**********************************************************
定时中断0用于倒数10秒自动退出菜单
**********************************************************/
void chk_main(void) interrupt 1
{
TH0=0x3c;
TL0=0xb0;
zdjs++;
if(zdjs==20)
{
zdjs=0;
cdds--; //用于倒数10秒自动退出菜单
if(cdds==255)
{
cdds_flag=1;
cdds=' ';
}
}
}