欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)+LCD12864指針數(shù)字切換萬(wàn)年歷程序
[打印本頁(yè)]
作者:
MeuiosJom
時(shí)間:
2020-4-26 22:08
標(biāo)題:
單片機(jī)+LCD12864指針數(shù)字切換萬(wàn)年歷程序
電路圖在附件
制作出來(lái)的實(shí)物圖如下:
O~6{HOP%(2WP_I9OAF%%Y@B.png
(128 KB, 下載次數(shù): 51)
下載附件
2020-4-26 22:08 上傳
單片機(jī)源程序如下:
/*
*******************************************************************************
* “冬松電子工作室” 傾情奉獻(xiàn)
*
* 配套 LCD12864電子萬(wàn)年歷時(shí)鐘電路板
*
* 文 件 名:calendarMain.c
* 描 述: LCD12864電子萬(wàn)年歷時(shí)鐘工程主文件
* 功 能:初始化定時(shí)器0,及中斷服務(wù)程序(用于鬧鐘),主函數(shù)調(diào)用
* 咨詢電話:135-91697612
*******************************************************************************
*/
#include "clock.h"
#include "calendar.h"
#include "key.h"
#include "lcd.h"
#include "zhen.h"
#include "sensor.h"
uchar alarmStyle; //定義蜂鳴器報(bào)警方式
/****************************************************************************/
sbit bell=P1^0; //定義蜂鳴器端口
/****************************************************************************
* 名稱:void Timer0_Initial(void)
* 功能:初始化timer0
* 入口函數(shù):無(wú)
* 出口函數(shù):無(wú)
****************************************************************************/
void Timer0_Initial(void)
{
TMOD=0x01; //Timer0工作方式1定時(shí)
TH0 =0x4c;
TL0 =0x00; //定時(shí)50 ms
ET0 =1; //Timer0開(kāi)中斷
TR0 =1; //timer0啟動(dòng)
}
/*****************************************************************************
* 名稱: Timer0_Overflow() inturrupt 1
* 功能: 中斷服務(wù)程序 1.整點(diǎn)報(bào)時(shí) 三聲嘟嘟的聲音 2.鬧鐘報(bào)時(shí),持續(xù)一分鐘
* 入口參數(shù):無(wú)
* 出口參數(shù):無(wú)
*****************************************************************************/
void Timer0_Overflow() interrupt 1
{
TH0 = 0x4c;
TL0 = 0x00; //延時(shí) 50 ms
bell=~bell; //進(jìn)入中斷,蜂鳴器取反,達(dá)到蜂鳴器間歇工作目的
}
/******************************************************************************
* 函數(shù)名稱: main()
* 功 能: 主函數(shù)
* 入口參數(shù): 無(wú)
* 出口參數(shù): 無(wú)
********************************************************************************/
void main()
{
uchar clock_time[7] = {0x00,0x11,0x20,0x01,0x02,0x01,0x16}; //定義時(shí)間變量 秒 分 時(shí) 日 月 周 年
uchar alarm_time[3]; //鬧鐘設(shè)置 alarm_time[0]:分鐘 alarm_time[1]:小時(shí)
uchar temperature[2];//定義溫度變量temperature[0]為低8位,temperature[1]為高8位
uchar i, j;
uchar CALL[3]; //存儲(chǔ)三畫(huà)面狀態(tài)(開(kāi)和閉)數(shù)組
// bell = 1;
// lcd = 1;
// psb = 1; //12864采用并口輸出方式
// cs2 = 0;
Timer0_Initial(); //初始化定時(shí)器0
v_Lcd12864Init_f(); //12864初始化
port = 0xFF; //釋放P0端口
Lcd_Write_Command(0x36); //采用擴(kuò)充指令集,繪圖開(kāi),清除模擬指針畫(huà)面字符
delay_1ms(2); //延時(shí)2ms
Lcd_Write_Command(0x36); //采用擴(kuò)充指令集,繪圖開(kāi),需設(shè)定兩次,先改DL,再改RE
delay_1ms(2); //延時(shí)2ms
cls(); //清屏,為顯示做準(zhǔn)備
key_init(); //初始化鍵盤(pán)掃描程序變量
// Set1302(clock_time); //時(shí)鐘初試化
CALL1[0] = R1302(0xc7); //讀取DS1302的RAM中 畫(huà)面一 狀態(tài)值
CALL1[1] = R1302(0xc9); //讀取DS1302的RAM中 畫(huà)面二 狀態(tài)值
CALL1[2] = R1302(0xcb); //讀取DS1302的RAM中 畫(huà)面三 狀態(tài)值
if(((CALL1[0]==1)||(CALL1[1]==1))&&(CALL1[2]==0)) //第一、二個(gè)畫(huà)面
{
frame_and_scale_f(); //繪制出邊框,和刻度
}
alarmStyle=0x00; //初始化報(bào)警方式,此時(shí)不報(bào)警
EA = 0; //關(guān)閉總中斷
while( 1 )
{
CALL[0] = R1302(0xc1); //讀取DS1302的RAM中 分 鬧鐘值
CALL[1] = R1302(0xc3); //讀取DS1302的RAM中 時(shí) 鬧鐘值
CALL[2] = R1302(0xc5); //讀取DS1302的RAM中 開(kāi)和閉 狀態(tài)值
CALL1[0] = R1302(0xc7); //重新讀取DS1302的RAM中 畫(huà)面一 狀態(tài)值
CALL1[1] = R1302(0xc9); //重新讀取DS1302的RAM中 畫(huà)面二 狀態(tài)值
CALL1[2] = R1302(0xcb); //重新讀取DS1302的RAM中 畫(huà)面三 狀態(tài)值
Get1302(clock_time); //獲取 秒 分 時(shí) 日 月 周 年 的時(shí)鐘數(shù)據(jù)
Lcd_Clock(clock_time); //時(shí)鐘顯示
Sensor_Fresh(temperature); //溫度更新,讀取溫度
Lcd_Temperature(temperature); //顯示溫度
Conversion(0,clock_time[6],clock_time[4],clock_time[3]); //輸入BCD陽(yáng)歷數(shù)據(jù),輸出BCD陰歷數(shù)據(jù)
Conver_week(0,clock_time[6],clock_time[4],clock_time[3]);//輸入BCD陽(yáng)歷數(shù)據(jù),輸出BCD星期數(shù)據(jù)
if(KEY_FUNC==Key_Scan()) //如果按鍵作值KEY_FUNC(0x08)與按鍵掃描Key_Scan()數(shù)對(duì)比相等(也是0x08),
{
while(KEY_FUNC==Key_Scan()); //KEY_FUNC和Key_Scan()的值相等,就在這里等待,按鍵抬起就執(zhí)行下面語(yǔ)句,
Key_Function(clock_time, alarm_time); //則進(jìn)入功能選擇菜單
}
if(KEY_UP == Key_Scan()) //如果按鍵作值KEY_UP(0x01)與按鍵掃描Key_Scan()數(shù)對(duì)比相等(也是0x01),
{
lcd = 1; //打開(kāi)液晶背光燈
}
if(KEY_DOWN == Key_Scan()) //如果按鍵作值KEY_DOWN(0x02)與按鍵掃描Key_Scan()數(shù)對(duì)比相等(也是0x02),
{
lcd = 0; //關(guān)閉液晶背光燈
}
if(((CALL1[0]==1)||(CALL1[1]==1))&&(CALL1[2]==0)) //第一、二個(gè)畫(huà)面
{
frame_and_scale_f(); //繪制出邊框,和刻度
zhizhen();
}
if(((CALL1[0]==0)||(CALL1[1]==0))&&(CALL1[2]==1)) //第三個(gè)畫(huà)面
{
Lcd_Write_Command(0x34); //采用擴(kuò)充指令集,繪圖關(guān)
Lcd_Write_Command(0x30); //基本指令集
}
if((*clock_time==0x59)&&(*(clock_time+1)==0x59)) //比較秒和分?jǐn)?shù)據(jù)到59,整點(diǎn)報(bào)時(shí)
{
EA = 1; //打開(kāi)總中斷
bell = 0; //打開(kāi)蜂鳴器
}
else
{
EA = 0; //關(guān)閉總中斷
bell = 1; //關(guān)閉蜂鳴器
}
//鬧鐘報(bào)警
i = clock_time[1]; //分鐘數(shù)據(jù)傳遞給變量 i
j = clock_time[2]; //小時(shí)數(shù)據(jù)傳遞給變量 j
i = bcd_hex(i); //分鐘數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制數(shù)
j =bcd_hex(j); //小時(shí)數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制數(shù)
//不轉(zhuǎn)換鬧鐘調(diào)整數(shù)據(jù)和DS1302鬧鈴存儲(chǔ)的鬧鐘數(shù)據(jù)不同,鬧鐘不響
if(CALL[2] == 0) //如果鬧鐘狀態(tài)是 “開(kāi)”
{
if(( CALL[0] == i)&&( CALL[1] == j)) //時(shí)鐘分鐘和小時(shí)與DS13202存儲(chǔ)的鬧鐘值相吻合,
{
EA = 1; //打開(kāi)總中斷
bell = 0; //打開(kāi)蜂鳴器
}
}
else //否則鬧鐘狀態(tài)是 “關(guān)”
{
EA = 0; //關(guān)閉總中斷
bell = 1; //關(guān)閉蜂鳴器
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
指針數(shù)字切換萬(wàn)年歷.rar
(114.42 KB, 下載次數(shù): 216)
2020-4-26 22:07 上傳
點(diǎn)擊文件名下載附件
原理圖
下載積分: 黑幣 -5
作者:
yyzf998
時(shí)間:
2020-5-2 11:07
感謝分享!最近正想學(xué)習(xí)一下LC方面的知識(shí)。謝謝了!
作者:
消減
時(shí)間:
2020-10-26 21:37
感謝分享!最近正想學(xué)習(xí)一下LC方面的知識(shí)。謝謝了!
作者:
啤酒瓶子老大
時(shí)間:
2021-3-7 15:49
收藏一下。有空也學(xué)習(xí)學(xué)習(xí)指針鐘。
作者:
usaboy
時(shí)間:
2021-3-8 00:07
download for study, thank you so much.
作者:
hxl666
時(shí)間:
2021-6-15 16:29
附件里是只有電路圖嗎
作者:
啤酒瓶子老大
時(shí)間:
2021-6-18 00:53
1302的電源有一個(gè)穩(wěn)壓二極管是什么作用?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1