• 方案介紹
    • 1.? 簡(jiǎn)介
    • 2.? 主要功能
    • 3.? 源程序(Keil5)
    • 4.? 仿真proteus8.6
    • 5.? 設(shè)計(jì)報(bào)告
    • 6.? 資料清單
    • 7.? 資料獲取鏈接
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于51單片機(jī)的1602萬(wàn)年歷設(shè)計(jì)

04/14 09:22
927
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

單片機(jī)仿真設(shè)計(jì)合集資料獲取.pdf

共1個(gè)文件

資料清單:C程序+仿真+設(shè)計(jì)報(bào)告+使用說(shuō)明+元件清單+操作視頻

仿真版本:Proteus8.6及以上版本

程序編譯:Keil5 C51

編程語(yǔ)言:C語(yǔ)言

設(shè)計(jì)編號(hào):【J01】

1.? 簡(jiǎn)介

? 本文提出了一種基于51單片機(jī)的簡(jiǎn)易電子萬(wàn)年歷。此萬(wàn)年歷在硬件方面主要采用AT89C51單片機(jī)作為主控核心,由DS1302時(shí)鐘芯片提供時(shí)鐘,DS18B20芯片顯示溫度、LCD1602液晶顯示屏顯示,同時(shí)電子萬(wàn)年歷還具有時(shí)間校準(zhǔn)、鬧鐘提醒等功能。

2.? 主要功能

a.通過(guò)LCD1602顯示年月日、時(shí)分秒、溫度、星期、鬧鐘等信息。

b.通過(guò)獨(dú)立按鍵設(shè)置年月日、時(shí)分秒、鬧鐘。

c.通過(guò)DS1302時(shí)鐘芯片提供系統(tǒng)時(shí)鐘。

d.通過(guò)DS18B20芯片提供實(shí)時(shí)溫度。

e.通過(guò)蜂鳴器提示鬧鐘狀態(tài)。

3.? 源程序(Keil5)

本設(shè)計(jì)采用keil5 C51軟件(內(nèi)附安裝包)實(shí)現(xiàn)程序設(shè)計(jì)。如需用keil4打開程序,可自行通過(guò).c和.h文件新建工程即可。

#include <reg52.h>	         //調(diào)用單片機(jī)頭文件
#define uchar unsigned char  //無(wú)符號(hào)字符型 宏定義	變量范圍0~255
#define uint  unsigned int	 //無(wú)符號(hào)整型 宏定義	變量范圍0~65535
#include "eeprom52.h"
#include "nongli.h"
#include "intrins.h"

bit flag_200ms ;
bit flag_100ms ;
sbit beep = P3^7;	  //蜂鳴器定義
bit flag_beep_en;
uint clock_value;     //用作鬧鐘用的

sbit dq   = P3^1;	  //18b20 IO口的定義


uint temperature ;    //溫度變量
uchar flag_nl;        //農(nóng)歷 陽(yáng)歷顯示標(biāo)志位


uchar menu_1,menu_2;



uchar key_time,flag_value;      //用做連加的中間變量
bit key_500ms  ;
uchar n_nian,n_yue,n_ri;		//農(nóng)歷顯示的函數(shù)



#include "ds1302.h"
#include "lcd1602.h"



/******************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eeprom中******************/
void write_eeprom()
{
	SectorErase(0x2000);
	byte_write(0x2000, fen1);
	byte_write(0x2001, shi1);
	byte_write(0x2002, open1);
	byte_write(0x2058, a_a);	
}

/******************把數(shù)據(jù)從單片機(jī)內(nèi)部eeprom中讀出來(lái)*****************/
void read_eeprom()
{
	fen1  = byte_read(0x2000);
	shi1  = byte_read(0x2001);
	open1  = byte_read(0x2002);
	a_a      = byte_read(0x2058);
}

/**************開機(jī)自檢eeprom初始化*****************/
void init_eeprom()
{
	read_eeprom();		//先讀
	if(a_a != 1)		//新的單片機(jī)初始單片機(jī)內(nèi)問(wèn)eeprom
	{
		fen1  = 3;
		shi1  = 8;
		open1  = 1;
		a_a = 1;
		write_eeprom();	   //保存數(shù)據(jù)
	}	
}

/***********************18b20初始化函數(shù)*****************************/
void init_18b20()
{
	bit q;
	dq = 1;				//把總線拿高
	delay_uint(1);	    //15us
	dq = 0;				//給復(fù)位脈沖
	delay_uint(80);		//750us
	dq = 1;				//把總線拿高 等待
	delay_uint(10);		//110us
	q = dq;				//讀取18b20初始化信號(hào)
	delay_uint(20);		//200us
	dq = 1;				//把總線拿高 釋放總線
}

/*************寫18b20內(nèi)的數(shù)據(jù)***************/
void write_18b20(uchar dat)
{
	uchar i;
	for(i=0;i<8;i++)
	{					 //寫數(shù)據(jù)是低位開始
		dq = 0;			 //把總線拿低寫時(shí)間隙開始 
		dq = dat & 0x01; //向18b20總線寫數(shù)據(jù)了
		delay_uint(5);	 // 60us
		dq = 1;			 //釋放總線
		dat >>= 1;
	}	
}

4.? 仿真proteus8.6

? 本設(shè)計(jì)采用proteus8.6軟件(內(nèi)附安裝包)實(shí)現(xiàn)仿真設(shè)計(jì),如下圖所示。proteus軟件一般存在高低版本兼容問(wèn)題,該仿真是通過(guò)proteus8.6導(dǎo)出的,所以請(qǐng)盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。

陽(yáng)歷界面:

陰歷界面:

時(shí)鐘設(shè)置:

鬧鐘設(shè)置:

5.? 設(shè)計(jì)報(bào)告

設(shè)計(jì)報(bào)告主要包括硬件電路、軟件設(shè)計(jì)、仿真調(diào)試等等,僅供參考。

6.? 資料清單

設(shè)計(jì)資料主要包括C程序+仿真+設(shè)計(jì)報(bào)告+使用說(shuō)明+元件清單+操作視頻等。

7.? 資料獲取鏈接

百度網(wǎng)盤下載鏈接:【J01】百度網(wǎng)盤下載鏈接

更多單片機(jī)仿真設(shè)計(jì)合集:單片機(jī)仿真設(shè)計(jì)合集

  • 單片機(jī)仿真設(shè)計(jì)合集資料獲取.pdf
    下載

相關(guān)推薦

方案定制

去合作
方案開發(fā)定制化,2000+方案商即時(shí)響應(yīng)!