单片机设计_万能万年历(AT89C51、LCD240128、DS18B20、DS1302)

想要更多项目私wo!!!

一、电路设计

        此电路由单片机最小系统板、LCD240*128液晶显示模块、DS18B20测温模块、DS1302时钟模块和红外接收模块组成。

二、运行结果

 三、部分代码

#include <reg52.h>
#include <absacc.h>
#include <intrins.h>

#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=' ';
		}
	}
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值