毕设成品 单片机万能万年历(AT89C51、LCD240128、DS18B20、DS1302)

一、电路设计

此电路由单片机最小系统板、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=' ';
    		}
    	}
    }


项目获取:

https://gitee.com/feifei1122/simulation-project

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值