久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機實時時鐘 仿真電路原理圖程序 ds1302+lcd1602
[打印本頁]
作者:
gaoweijie
時間:
2019-4-23 15:38
標題:
單片機實時時鐘 仿真電路原理圖程序 ds1302+lcd1602
實時時鐘 仿真電路原理圖程序
可以直接拿去用
0.png
(13.01 KB, 下載次數: 16)
下載附件
2019-4-23 17:53 上傳
單片機源程序如下:
/*******************************************************************************
* 實驗名: 用單片機實現的實時時鐘系統研究
* 使用的IO:
* 實驗效果 :1602顯示時鐘
* 注意 :
*******************************************************************************/
#include<reg51.h>
#include"lcd.h"
#include"ds1302.h"
sbit SET_KEY=P3^7;
sbit ADD_KEY=P3^6;
sbit SUB_KEY=P3^5;
sbit DETERMINE_KEY=P3^4;
unsigned char Set_Step = 0;
#define NormalRun 0
#define SetYear 1
#define SetMon 2
#define SetDay 3
#define SetHour 4
#define SetMin 5
#define SetSec 6
#define SetWeek 7
void LcdDisplay();
extern unsigned char TIME[7]; //加入全局變量
void Key_Scan();
/*******************************************************************************
* 函數名 : main
* 函數功能 : 主函數
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void main()
{
Set_Step = NormalRun;
LcdInit();
//Ds1302Init();
while(1)
{
Key_Scan();
if(Set_Step == NormalRun)
{
Ds1302ReadTime();
LcdDisplay();
}
}
}
/*******************************************************************************
* 函數名 : LcdDisplay()
* 函數功能 : 顯示函數
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void LcdDisplay()
{
LcdWriteCom(0x80+0X40);
LcdWriteData('0'+TIME[2]/16); //時
LcdWriteData('0'+((TIME[2]%16)&0x0f));
LcdWriteData(':');
LcdWriteData('0'+TIME[1]/16); //分
LcdWriteData('0'+((TIME[1]%16)&0x0f));
LcdWriteData(':');
LcdWriteData('0'+TIME[0]/16); //秒
LcdWriteData('0'+((TIME[0]%16)&0x0f));
LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16); //年
LcdWriteData('0'+((TIME[6]%16)&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16); //月
LcdWriteData('0'+((TIME[4]%16)&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16); //日
LcdWriteData('0'+((TIME[3]%16)&0x0f));
LcdWriteCom(0x8D);
LcdWriteData('W'); //星期
if(TIME[5]==1)
LcdWriteData('7');
else
LcdWriteData('0'+((TIME[5]-1)&0x07)); //星期
}
void Key_Scan()
{
if(SET_KEY == 0)
{
Delay10us(5000);
if(SET_KEY == 0)
{
LcdWriteCom(0x0f);//顯示光標
switch(Set_Step)
{
case NormalRun:
LcdWriteCom(0x83); //設置光標
Set_Step = SetYear;
break;
case SetYear:
LcdWriteCom(0x86); //設置光標
Set_Step = SetMon;
break;
case SetMon:
LcdWriteCom(0x89); //設置光標
Set_Step = SetDay;
break;
case SetDay:
LcdWriteCom(0xc1); //設置光標
Set_Step = SetHour;
break;
case SetHour:
LcdWriteCom(0xc4); //設置光標
Set_Step = SetMin;
break;
case SetMin:
LcdWriteCom(0xc7); //設置光標
Set_Step = SetSec;
break;
case SetSec:
LcdWriteCom(0x8E); //設置光標
Set_Step = SetWeek;
break;
case SetWeek:
LcdWriteCom(0x83); //設置光標
Set_Step = SetYear;
break;
}
}
}
if(Set_Step == NormalRun)
return ;
if(ADD_KEY == 0)
{
Delay10us(5000);
if(ADD_KEY == 0)
{
if(Set_Step == SetYear)
{
if(TIME[6] == 0x99)
TIME[6] = 0x0;
else
{
TIME[6]=(TIME[6]/16)*10+(TIME[6]%16);
TIME[6]=TIME[6]+1;
TIME[6]=(TIME[6]/10)*16+(TIME[6]%10);
}
LcdDisplay();
LcdWriteCom(0x83); //設置光標
}
else if(Set_Step == SetMon)
{
if(TIME[4] == 0x12)
TIME[4] = 0x1;
else
{
TIME[4]=(TIME[4]/16)*10+(TIME[4]%16);
TIME[4]=TIME[4]+1;
TIME[4]=(TIME[4]/10)*16+(TIME[4]%10);
}
LcdDisplay();
LcdWriteCom(0x86); //設置光標
}
else if(Set_Step == SetDay)
{
TIME[3]=(TIME[3]/16)*10+(TIME[3]%16);
TIME[3]=TIME[3]+1;
TIME[3]=(TIME[3]/10)*16+(TIME[3]%10);
LcdDisplay();
LcdWriteCom(0x89); //設置光標
}
else if(Set_Step == SetHour)
{
if(TIME[2] == 0x23)
TIME[2] = 0x0;
else
{
TIME[2]=(TIME[2]/16)*10+(TIME[2]%16);
TIME[2]=TIME[2]+1;
TIME[2]=(TIME[2]/10)*16+(TIME[2]%10);
}
LcdDisplay();
LcdWriteCom(0xc1); //設置光標
}
else if(Set_Step == SetMin)
{
if(TIME[1] == 0x59)
TIME[1] = 0x0;
else
{
TIME[1]=(TIME[1]/16)*10+(TIME[1]%16);
TIME[1]=TIME[1]+1;
TIME[1]=(TIME[1]/10)*16+(TIME[1]%10);
}
LcdDisplay();
LcdWriteCom(0xc4); //設置光標
}
else if(Set_Step == SetSec)
{
if(TIME[0] == 0x59)
TIME[0] = 0x0;
else
{
TIME[0]=(TIME[0]/16)*10+(TIME[0]%16);
TIME[0]=TIME[0]+1;
TIME[0]=(TIME[0]/10)*16+(TIME[0]%10);
}
LcdDisplay();
LcdWriteCom(0xc7); //設置光標
}
else if(Set_Step == SetWeek)
{
if(TIME[5] == 7)
TIME[5] = 1;
else
TIME[5] = TIME[5]+1;
LcdDisplay();
LcdWriteCom(0x8E); //設置光標
}
}
}
if(SUB_KEY == 0)
{
Delay10us(5000);
if(SUB_KEY == 0)
{
if(Set_Step == SetYear)
{
if(TIME[6] == 0x00)
TIME[6] = 0x99;
else
{
TIME[6]=(TIME[6]/16)*10+(TIME[6]%16);
TIME[6]=TIME[6]-1;
TIME[6]=(TIME[6]/10)*16+(TIME[6]%10);
}
LcdDisplay();
LcdWriteCom(0x83); //設置光標
}
else if(Set_Step == SetMon)
{
if(TIME[4] == 0x01)
TIME[4] = 0x12;
else
{
TIME[4]=(TIME[4]/16)*10+(TIME[4]%16);
TIME[4]=TIME[4]-1;
TIME[4]=(TIME[4]/10)*16+(TIME[4]%10);
}
LcdDisplay();
LcdWriteCom(0x86); //設置光標
}
else if(Set_Step == SetDay)
{
TIME[3]=(TIME[3]/16)*10+(TIME[3]%16);
TIME[3]=TIME[3]-1;
TIME[3]=(TIME[3]/10)*16+(TIME[3]%10);
LcdDisplay();
LcdWriteCom(0x89); //設置光標
}
else if(Set_Step == SetHour)
{
if(TIME[2] == 0x00)
TIME[2] = 0x23;
else
{
TIME[2]=(TIME[2]/16)*10+(TIME[2]%16);
TIME[2]=TIME[2]-1;
TIME[2]=(TIME[2]/10)*16+(TIME[2]%10);
}
LcdDisplay();
LcdWriteCom(0xc1); //設置光標
}
else if(Set_Step == SetMin)
{
if(TIME[1] == 0x00)
TIME[1] = 0x59;
else
{
TIME[1]=(TIME[1]/16)*10+(TIME[1]%16);
TIME[1]=TIME[1]-1;
TIME[1]=(TIME[1]/10)*16+(TIME[1]%10);
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
實時時鐘.rar
(318.13 KB, 下載次數: 23)
2019-4-23 15:37 上傳
點擊文件名下載附件
仿真電路原理圖
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
超碰在线播
|
99精品一区二区三区
|
av性色
|
国产精品日韩一区
|
国产免费拔擦拔擦8x高清
|
国产97人人超碰caoprom
|
在线播放一区二区三区
|
日韩欧美亚洲
|
日韩av电影院
|
亚洲国产精品久久久久秋霞不卡
|
日韩在线一区二区三区
|
韩国理论电影在线
|
国产精品久久久
|
亚洲精品一区二区三区在线观看
|
91精品在线播放
|
亚洲看片网站
|
欧美一区二区三区视频在线观看
|
久久精品久久久
|
久久久网
|
久热爱
|
久草在线在线精品观看
|
国产欧美日韩一区
|
欧美二三区
|
免费国产精品久久久久久
|
91偷拍精品一区二区三区
|
午夜播放器在线观看
|
午夜免费福利片
|
一区二区视屏
|
精品一二区
|
国产精品v
|
欧美一区2区三区3区公司
|
91九色婷婷
|
久久成人一区
|
噜噜噜噜狠狠狠7777视频
|
日本在线播放一区二区
|
黄a免费看
|
一区二区三区免费观看
|
成人三级视频在线观看
|
欧美午夜精品久久久久免费视
|
日韩av美女电影
|
伊人在线视频
|