51單片機(jī)時(shí)鐘,鬧鐘,溫度,農(nóng)歷仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
123.png (42.76 KB, 下載次數(shù): 53)
下載附件
2019-6-16 13:48 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (22.26 KB, 下載次數(shù): 53)
下載附件
2019-6-16 21:36 上傳
0.png (2.85 KB, 下載次數(shù): 47)
下載附件
2019-6-16 21:36 上傳
單片機(jī)源程序如下:
#include<reg52.h> #include <string.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char #define wd 1 //定義是否有溫度功能 =0時(shí)無溫度,=1時(shí)有溫度
#define yh 0x80 //LCD第一行的初始位置,因?yàn)?/font>LCD1602字符地址首位D7恒定為1(100000000=80) #define er 0x80+0x40 //LCD第二行初始位置(因?yàn)榈诙械谝粋(gè)字符位置地址是0x40)
//液晶屏的與C51之間的引腳連接定義(顯示數(shù)據(jù)線接C51的P0口) sbit en=P2^6; sbit rw=P2^5; //如果硬件上rw接地,就不用寫這句和后面的rw=0了 sbit rs=P2^4;
//校時(shí)按鍵與C51的引腳連接定義
sbit menu=P3^0; //菜單鍵 sbit set=P3^1; //設(shè)置鍵 sbit add=P3^2; //加鍵 sbit dec=P3^3; //減鍵 sbit ensure=P3^4; //確認(rèn)鍵
sbit DQ=P2^0; // sbit buzzer=P1^4; //蜂鳴器,通過三極管8550驅(qū)動(dòng),端口低電平響
sbit led=P2^4; //LCD背光開關(guān) bit led1=1;
unsigned char temp_miao; unsigned char bltime; //背光亮的時(shí)間
//DS1302時(shí)鐘芯片與C51之間的引腳連接定義 sbit IO=P1^1; sbit SCLK=P1^2; sbit RST=P1^0;
uchar a,miao,shi,fen,ri,yue,nian,week,setn,temp; uint flag; //flag用于讀取頭文件中的溫度值,和顯示溫度值 bit c_moon;
ucharnz_shi=12,nz_fen=0,nz_miao=0,setNZn; //定義鬧鐘變量 uchar shangyimiao,bsn,temp_hour; //記錄上一秒時(shí)間 uchar T_NL_NZ; //計(jì)數(shù)器 bit timerOn=0; //鬧鐘啟用標(biāo)志位 bit baoshi=0; //整點(diǎn)報(bào)時(shí)標(biāo)志位 bit p_r=0; //平年/潤(rùn)年 =0表示平年,=1表示潤(rùn)年 data ucharyear_moon,month_moon,day_moon,week;
sbit ACC0=ACC^0; sbit ACC7=ACC^7; /************************************************************ ACC累加器=A ACC.0=E0H
ACC.0就是ACC的第0位。Acc可以位尋址。
累加器ACC是一個(gè)8位的存儲(chǔ)單元,是用來放數(shù)據(jù)的。但是,這個(gè)存儲(chǔ)單元有其特殊的地位, 是單片機(jī)中一個(gè)非常關(guān)鍵的單元,很多運(yùn)算都要通過ACC來進(jìn)行。以后在學(xué)習(xí)指令時(shí), 常用A來表示累加器。但有一些地方例外,比如在PUSH指令中,就必須用ACC這樣的名字。 一般的說法,A代表了累加器中的內(nèi)容、而ACC代表的是累加器的地址。 ***************************************************************/
//********陽歷轉(zhuǎn)換陰歷表************************************
|