標(biāo)題:
點(diǎn)陣時(shí)鐘單片機(jī)仿真+程序+pcb文件
[打印本頁]
作者:
heicad
時(shí)間:
2016-3-11 20:44
標(biāo)題:
點(diǎn)陣時(shí)鐘單片機(jī)仿真+程序+pcb文件
0.png
(33.8 KB, 下載次數(shù): 128)
下載附件
2016-3-11 20:43 上傳
1.png
(35.46 KB, 下載次數(shù): 106)
下載附件
2016-3-11 20:43 上傳
51單片機(jī)仿真+程序+pcb文件下載:
點(diǎn)陣時(shí)鐘.rar
(590.57 KB, 下載次數(shù): 139)
2016-3-11 20:44 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
// A B C D 對應(yīng)P2.0; P2.1 ; P2.2; P2.3
//------------------------------------
#include <reg52.h>
#include <def.h>
#include <word_s.h>
#include <ds1302.h>
#include <ds18b20.h>
void Put_Wdispram(uchar code *WORDS[][8]) //,uchar first_word
{
uchar i;
disword[0] = &NO_WORDS[12];
for(i=1;i<25;i++)
{
disword[i] = &WORDS[i-1]; //first_word+
}
}
void Put_Hdispram()
{
uchar i;
for(i=0;i<10;i++)
{
h_dispram[i] = *(disword[i+start_word]+hang); //
}
}
void Move_Left()
{
uchar i;
for(i=0;i<9;i++)
{
h_dispram[i] = (h_dispram[i] << (move_times)) | (h_dispram[i+1] >> (8-move_times));
}
}
void Move_Right()
{
uchar i;
for(i=9;i>0;i--)
{
h_dispram[i] = (h_dispram[i] >> (move_times)) | (h_dispram[i-1] << (8-move_times));
}
}
void RL_Move(){
//
switch(MSG_MV){
case MSG_MV_L: //左移
Move_Left();
break;
case MSG_MV_R: //右移
Move_Right();
break;
case MSG_NONE:
break;
default:
break;
}
}
void Move_Up(){
//
uchar i,j,m,n;
for(m=0;m<16;m++) //m 屏數(shù)
{
for(n=0;n<8;n++)
{
for(j=0;j<16-m;j++) //上移
{
for(i=0;i<10;i++) //i 行 字節(jié)
{
h_dispram[i] = *(disword[i]+m+j); // m+j
}
Show_Line();
// delay(); //看需要
}
for(j=16-m;j<16;j++)
{
for(i=0;i<10;i++)
{
h_dispram[i] = *(disword[i+8]+m+j-16); //m+j-16
}
Show_Line();
// delay(); //看需要
}
}
}
}
void Move_Down()
{
uchar i,j,m,n;
for(m=0;m<16;m++)
{
for(n=0;n<8;n++)
{
for(j=0;j<m;j++)
{
for(i=0;i<10;i++)
{
h_dispram[i] = *(disword[i+8]+15-m+j); //
}
Show_Line();
//delay(); //看需要
}
for(j=m;j<16;j++)
{
for(i=0;i<10;i++)
{
h_dispram[i] = *(disword[i]-m+j); //0x00
}
Show_Line();
//delay(); //看需要
}
}
}
}
void UD_Move(){
//
switch(MSG_MV){
case MSG_MV_U: //上移
Move_Up();
break;
case MSG_MV_D: //下移
Move_Down();
break;
case MSG_NONE:
break;
default:
break;
}
}
void Show_Line(){
uchar m;
OE=1;
for(m =0;m<8;m++)
{
SendData = h_dispram[m+1];
SendByte();
}
delay(); //
RowsCan(); //行掃描
STB = 0;
STB = 1; //上升沿?cái)?shù)據(jù)鎖存
OE = 0;
}
void Show_sWord(){
int m,i;//
hang = 0;
for(m=0;m<14;m++){
for(i=0;i<16;i++){
Put_Hdispram(); //把第i行放入行緩沖
Show_Line();
//delay(); //看需要
}
}
}
void Show_Move_Word(uchar code *WORDS[][8]){
int m,i;
while(1){
for(m=0;m<6;m++){ //若要上下移動 m=16
//hang = 0;
for(i=0;i<16;i++){
Put_Hdispram(); //把第i行放入行緩沖
RL_Move(); //是否要左右移動
Show_Line();
//delay(); //看需要
}
//UD_Move(); //是否要上下移動
}
//========================================
//測試左移右移 切換時(shí)有跳變。
// if(MSG_MV){
move_times++;
if((move_times == 9) && (MSG_MV == MSG_MV_L)){
move_times = 1;
Put_Wdispram(WORDS);
start_word++;
switch(STATE){
case STA_gTEMP:
Read_Temperature();
Disp_Temperature(); //
Put_gTEMP(); //
if(start_word > (sizeof(TMP_WORDS)/16 - 8))
MSG_MV = MSG_MV_R;
break;
case STA_gWORD:
if(start_word > (sizeof(MY_WORDS)/16 - 8))
MSG_MV = MSG_MV_R;
default:
break;
}
if(start_word > (sizeof(TMP_WORDS)/16 - 4))
MSG_MV = MSG_MV_R;
}
else if((move_times == 9) && (MSG_MV == MSG_MV_R)){
move_times = 1;
Put_Wdispram(WORDS); //
start_word-- ;
switch(STATE){
case STA_gTEMP:
Disp_Temperature(); //
Put_gTEMP();
break;
default:
break;
}
if(start_word < 1){
MSG_MV = MSG_MV_L;
return;
}
}
// }
}
}
void Show_All_Word(){
int m,i;
//MSG_MV = MSG_MV_L;
for(start_word = 0;start_word < 8;start_word++){
for(move_times = 0; move_times < 8;move_times++){
for(m=0;m<4;m++){ //若要上下移動 m=16
for(i=0;i<16;i++){
Put_Hdispram(); //把第i行放入行緩沖
RL_Move(); //是否要左右移動
Show_Line();
}
}
}
}
}
//------------------------------------
//----------字發(fā)送子程序-----------
void SendByte(void)
{
uchar m;
for(m=0;m<8;m++)
{
CLK = 0;
Red = (SendData & 0x80); //紅屏顯示
// Greed = (SendData & 0x80); //綠屏顯示
SendData =SendData<<1;
CLK = 1; //移位時(shí)鐘上升沿
}
}
//-----------------------------------
//----------行掃描子程序-------------
void RowsCan(void)
{
P3 = P3 & 0xf0;
P3 = (P3 | hang)<<1;
hang++;
if (hang>=16)
{
hang =0x00;
}
}
void initial(void)
{
OE = 1;
Red = 1;
Greed = 1;
SendData = 0x00;
hang = 0x00;
}
void Put_Adispram(uchar a){
uchar i;
//第一屏"今天是:"
disword[a+1] = &NO_WORDS[12][0]; //空格
for(i=0;i<6;i++)
disword[a+i+2] = &TIME_WORDS[i][0];
disword[a+8] = &NO_WORDS[11][0]; //":"
//第二屏
//disword[4] = &TIME_WORDS[];
}
//將年份放入到顯示緩存
//需要參數(shù):緩沖區(qū)首地址下標(biāo)
void Put_Ydispram(uchar i){
disword[i+1] = &NO_WORDS[12][0];
if(Time.Year < 30 && !HIDE){
disword[i+2] = &NO_WORDS[2][0];
disword[i+3] = &NO_WORDS[0][0];
}
else if(!HIDE){
disword[i+2] = &NO_WORDS[1][0];
disword[i+3] = &NO_WORDS[9][0];
}
disword[i+4] = &NO_WORDS[Time.Year>>4][0];
disword[i+5] = &NO_WORDS[Time.Year&0x0f][0];
disword[i+6] = &TIME_WORDS[6][0];
disword[i+7] = &TIME_WORDS[7][0]; //年
disword[i+8] = &NO_WORDS[12][0];
}
//將星期放入到顯示緩存
//參數(shù):緩沖區(qū)首地址下標(biāo)
void Put_Kdispram(uchar i){
disword[i+1] = &NO_WORDS[12][0];
disword[i+2] = &TIME_WORDS[12][0];
disword[i+3] = &TIME_WORDS[13][0]; //星期
disword[i+4] = &TIME_WORDS[14][0];
disword[i+5] = &TIME_WORDS[15][0];
if(STATE== STA_CHG &&HIDE){
disword[i+6] = &NO_WORDS[12][0]; //
disword[i+7] = &NO_WORDS[12][0]; //
}
else{
disword[i+6] = &WEEK_WORDS[Time.Week*2-2][0]; //
disword[i+7] = &WEEK_WORDS[Time.Week*2-1][0]; //
}
disword[i+8] = &NO_WORDS[12][0];
}
//將日期放入到顯示緩存
//參數(shù):緩沖區(qū)首地址下標(biāo)
void Put_Ddispram(uchar i){
disword[i+1] = &NO_WORDS[Time.Month>>4][0]; //小時(shí)高位
disword[i+2] = &NO_WORDS[ Time.Month&0x0f][0]; //小時(shí)地位
disword[i+3] = &TIME_WORDS[8][0]; //-
disword[i+4] = &TIME_WORDS[9][0]; //分鐘高位
disword[i+5] = &NO_WORDS[ Time.Day>>4][0]; //分鐘地位
disword[i+6] = &NO_WORDS[Time.Day&0x0f][0]; //-
disword[i+7] = &TIME_WORDS[10][0]; //秒高位
disword[i+8] = &TIME_WORDS[11][0]; //秒地位
}
//將時(shí)間放入到顯示緩存
//參數(shù):緩沖區(qū)首地址下標(biāo)
void Put_Tdispram(uchar i){
disword[i+1] = &NO_WORDS[Time.Hour>>4][0]; //小時(shí)高位
disword[i+2] = &NO_WORDS[ Time.Hour&0x0f][0]; //小時(shí)低位
disword[i+3] = &NO_WORDS[ 11 ]; //-
disword[i+4] = &NO_WORDS[Time.Minute>>4][0]; //分鐘高位
disword[i+5] = &NO_WORDS[ Time.Minute&0x0f][0]; //分鐘低位
disword[i+6] = &NO_WORDS[ 11 ]; //-
disword[i+7] = &NO_WORDS[Time.Second>>4][0]; //秒高位
disword[i+8] = &NO_WORDS[ Time.Second&0x0f][0]; //秒低位
}
//===================================
//*****關(guān)于溫度檢測部分*****
void Put_gTEMP(){
// uchar i;
// Put_Wdispram(TMP_WORDS,0);
disword[6] = &NO_WORDS[temp_ram[3]]; //百位
disword[7] = &NO_WORDS[temp_ram[2]]; //十位
disword[8] = &NO_WORDS[temp_ram[1]]; //個位
disword[10]=&NO_WORDS[temp_ram[0]]; //小數(shù)
disword[12] = &NO_WORDS[12]; //空格
disword[13] = &NO_WORDS[12]; //空格
//
}
void Put_sTEMP(uchar i){
disword[i+0] = &NO_WORDS[12]; //空格
disword[i+1] = &NO_WORDS[12];//&NO_WORDS[temp_ram[3]][0]; //百位
disword[i+2] = &NO_WORDS[temp_ram[2]]; //十位
disword[i+3] = &NO_WORDS[temp_ram[1]]; //個位
disword[i+4] = &TMP_WORDS[8][0]; //小數(shù)點(diǎn)
disword[i+5] = &NO_WORDS[temp_ram[0]]; //小數(shù)
disword[i+6] = &NO_WORDS[12]; //空格
disword[i+7] = &TMP_WORDS[10];
disword[i+8] = &NO_WORDS[12]; //空格
}
void Put_Cpyrt(uchar i){
uchar m;
for(m=0;m<8;m++)
disword[i+1+m] = &CPYRT_WORDS[m];
}
void Show_Cpyrt()
{
uchar i;
for(i=1;i<9;i++)
disword[i] = &NO_WORDS[12];
Put_Cpyrt(8);
Move_Up();
Put_Cpyrt(0);
Put_Tdispram(8);
Move_Down();
}
//========================
//參數(shù)i:放入第幾屏緩存
//參數(shù)j:詩歌第幾頁
//========================
void Put_Song(uchar i,uchar j){
uchar m;
for(m=0;m<8;m++)
disword[i+1+m] = &SONG_WORDS[j+m];
}
//顯示詩歌
void Show_Song(){
uchar i;
Put_Song(8,0);
Move_Up();
for(i=0;i<3;i++){
Put_Song(0,i*8);
Put_Song(8, (i+1)*8);
Move_Up();
}
Put_Song(0, 3*8);
Put_Tdispram(8);
Move_Up();
}
//======================
//*滾動顯示所有信息*
//======================
void Show_All_Info(){
Put_Adispram(8);
Move_Down(); //切換效果
Put_Adispram(0);
Put_Ydispram(8); //XXXX年
Show_All_Word();
Put_Ydispram(0); //XXXX年
Put_Ddispram(8);
Show_All_Word();
Put_Ddispram(0);
Put_Kdispram(8);
Show_All_Word();
Read_Temperature();
Disp_Temperature();
Put_Kdispram(0);
Put_Tdispram(8);
Show_All_Word();
Read_Temperature();
Disp_Temperature();
Put_Tdispram(0);
Put_sTEMP(8);
Show_All_Word();
Read_TIME();
Put_sTEMP(0);
Put_Tdispram(8);
Move_Up();
}
//=================
//****校時(shí)函數(shù)****
//=================
void Change_Time(){
//
MSG_MV = MSG_MV_L;
move_times = 0;
start_word=0;
TMP_TIME = Time.Hour;
TR1 = 1; //開啟定時(shí)器1閃爍
do{
switch(CHANGE){
case CHG_HOUR:
case CHG_MIN:
case CHG_SEC:
Put_Tdispram(0);
break;
case CHG_MON:
case CHG_DAY:
Put_Ddispram(0);
break;
case CHG_WEEK:
Put_Kdispram(0);
break;
case CHG_YEAR:
Put_Ydispram(0);
break;
default:
break;
}
Show_sWord();
//if(!key_done)
// ReadKey1();
}while(ReadKey1() != KEY3_S && exit < 10); //MSG_KEY
Change_obj(); //保證退出校時(shí)無隱身
HIDE = 0;
key_done = 0;
//key_done = 1; //按鍵事件處理完成
TR1 = 0; //關(guān)閉定時(shí)器1閃爍
}
//==================
//****對象切換****
//==================
void Change_obj(){
switch(CHANGE){
case CHG_HOUR:
if(Time.Hour == 0xcc)
Time.Hour = TMP_TIME;
TMP_TIME = Time.Minute;
break;
case CHG_MIN:
if(Time.Minute == 0xcc)
Time.Minute = TMP_TIME;
TMP_TIME = Time.Second;
break;
case CHG_SEC:
if(Time.Second == 0xcc)
Time.Second = TMP_TIME;
TMP_TIME = Time.Month;
break;
case CHG_MON:
if(Time.Month == 0xcc)
Time.Month = TMP_TIME;
TMP_TIME = Time.Day;
break;
case CHG_DAY:
if(Time.Day == 0xcc)
Time.Day = TMP_TIME;
TMP_TIME = Time.Week;
break;
case CHG_WEEK:
if(Time.Week == 0xcc)
Time.Week = TMP_TIME;
TMP_TIME = Time.Year;
break;
case CHG_YEAR:
if(Time.Year == 0xcc)
Time.Year = TMP_TIME;
TMP_TIME = Time.Hour;
break;
default:
break;
}
}
//==================
//****加加函數(shù)****
//功能: 0x19 ++ =0x20
//==================
uchar Add_num(char *num){
++(*num);
if(((*num) & 0x0f) == 0x0a){
*num += 0x10;
*num &= 0xf0;
}
return *num;
}
//==================
//****校時(shí)加加****
//==================
void Add_Time(){
switch(CHANGE){
case CHG_HOUR:
if(HIDE){
if(Add_num(&TMP_TIME) == 0x24)
TMP_TIME= 0;
}
else{
if(Add_num(&Time.Hour) == 0x24)
Time.Hour = 0;
}
break;
case CHG_MIN:
if(HIDE){
if(Add_num(&TMP_TIME) == 0x60)
TMP_TIME= 0;
}
else{
if(Add_num(&Time.Minute) == 0x60)
Time.Minute= 0;
}
break;
case CHG_SEC:
if(HIDE){
if(Add_num(&TMP_TIME) == 0x60)
TMP_TIME= 0;
}
else{
if(Add_num(&Time.Second) == 0x60)
Time.Second = 0;
}
break;
case CHG_MON:
if(HIDE){
if(Add_num(&TMP_TIME) == 0x13)
TMP_TIME= 0;
}
else{
if(Add_num(&Time.Month) == 0x13)
Time.Month= 1;
}
break;
case CHG_DAY:
if(HIDE){
if(Add_num(&TMP_TIME) == 0x32)
TMP_TIME= 0;
}
else{
if(Add_num(&Time.Day) == 0x32)
Time.Day= 0;
}
break;
case CHG_WEEK:
if(HIDE){
if(Add_num(&TMP_TIME) == 0x08)
TMP_TIME= 1;
}
else{
if(Add_num(&Time.Week) == 0x08)
Time.Week= 1;
}
break;
case CHG_YEAR:
if(HIDE){
if(Add_num(&TMP_TIME) == 0xa0)
TMP_TIME = 0;
}
else{
if(Add_num(&Time.Year) == 0xa0)
Time.Year = 0;
}
//if(Add_num(&Time.Year) == 0x24)
// Time.Year= 0;
break;
default:
break;
}
}
//==================
//****減減函數(shù)****
//功能: 0x20 -- =0x19
//==================
uchar Cut_num(char *num){
--(*num);
if(((*num)&0x0f) == 0x0f){
//*num -= 0x10;
*num &= 0xf9;
}
//if((*num == 0xf9)
//*num = 0x99;
return *num;
}
//==================
//****校時(shí)減減****
//==================
void Cut_Time(){
switch(CHANGE){
case CHG_HOUR:
if(HIDE){
if(Cut_num(&TMP_TIME) == 0xf9)
TMP_TIME= 0x23;
}
else{
if(Cut_num(&Time.Hour) == 0xf9)
Time.Hour = 0x23;
}
break;
case CHG_MIN:
if(HIDE){
if(Cut_num(&TMP_TIME) == 0xf9)
TMP_TIME= 0x59;
}
else{
if(Cut_num(&Time.Minute) == 0xf9)
Time.Minute= 0x59;
}
break;
case CHG_SEC:
if(HIDE){
if(Cut_num(&TMP_TIME) == 0xf9)
TMP_TIME= 0x59;
}
else{
if(Cut_num(&Time.Second) == 0xf9)
Time.Second = 0x59;
}
break;
case CHG_MON:
if(HIDE){
if(Cut_num(&TMP_TIME) == 0xf9)
TMP_TIME= 0x12;
}
else{
if(Cut_num(&Time.Month) == 0xf9)
Time.Month= 0x12;
}
break;
case CHG_DAY:
if(HIDE){
if(Cut_num(&TMP_TIME) == 0xf9)
TMP_TIME= 0x31;
}
else{
if(Cut_num(&Time.Day) == 0xf9)
Time.Day= 0x31;
}
break;
case CHG_WEEK:
if(HIDE){
if(Cut_num(&TMP_TIME) == 0xf9)
TMP_TIME= 0x7;
}
else{
if(Cut_num(&Time.Week) == 0xf9)
Time.Week= 0x7;
}
break;
case CHG_YEAR:
if(HIDE){
if(Cut_num(&TMP_TIME) == 0xf9)
TMP_TIME= 0x99;
}
else{
if(Cut_num(&Time.Year) == 0xf9)
Time.Year = 0x99;
}
//if(Cut_num(&Time.Year) == 0x99)
// Time.Year= 0;
break;
default:
break;
}
}
//======按鍵======
uchar ReadKey(){
//
if(!key_done){
switch(MSG_KEY){
case KEY0_S:STATE = STA_sTIME;
break;
case KEY1_S:STATE = STA_gWORD; //STA_sWEEK
break;
case KEY2_S:STATE = STA_gTEMP;
break;
case KEY3_S:STATE = STA_gTIME;
break;
case KEY0_L:STATE = STA_CHG;
break;
case KEY1_L:STATE = STA_SONG;
break;
case KEY2_L:STATE = STA_gTEMP;
break;
case KEY3_L:STATE = STA_gWORD; //STA_sTIME
break;
default: break;
}
}
key_done = 1; //按鍵事件處理完成
return MSG_KEY;
}
//=======================
//****校時(shí)按鍵處理****
//=======================
uchar ReadKey1(){
//
if(!key_done){
switch(MSG_KEY){
case KEY0_S: //切換校時(shí)對象
case KEY0_L:
exit = 0;
TR1 = 0; //關(guān)閉定時(shí)器1閃爍
Change_obj();
if(CHANGE++ >= CHG_YEAR)
CHANGE = CHG_HOUR;
TR1 = 1; //開啟定時(shí)器1閃爍
break;
case KEY1_S: //加加
case KEY1_L:
exit = 0;
TR1 = 0; //關(guān)閉定時(shí)器1閃爍
Add_Time();
TR1 = 1; //開啟定時(shí)器1閃爍
break;
case KEY2_S: //減減
case KEY2_L:
exit = 0;
TR1 = 0; //關(guān)閉定時(shí)器1閃爍
Cut_Time();
TR1 = 1; //開啟定時(shí)器1閃爍
break;
case KEY3_L:
case KEY3_S:
return KEY3_S;
default: break;
}
}
key_done = 1; //按鍵事件處理完成
return 0;
}
//===========================
void Tinit(){
TMOD = 0x11;
TH0 = 0xD8;
TL0 = 0xF0;
TH1 = 0x42;
TL1 = 0xCA;
TR0 = 1;
//TR1 = 1;
ET0 = 1;
ET1 = 1;
EA = 1;
}
timer0() interrupt 1{
TH0 = 0xb1;
TL0 = 0xe0;
if(P1 != 0xff) {//若有鍵按下
cur_key_val = P1&0x0f; //記錄按鍵值
if(key_times < 150)
key_times++;
else{
key_keep_times++; //長按連擊
if(key_keep_times >= 10){ //10 1秒連擊10次
key_keep_times = 0;
MSG_KEY = 0x10 | cur_key_val;
key_done = 0; //按鍵事件復(fù)位
}
}
}else{
if(key_times > 2 && key_times < 100 && key_done){ //短按鍵
MSG_KEY = cur_key_val;
key_done = 0; //按鍵事件復(fù)位
}
else if(key_times >= 100 && key_done){ //長按鍵
MSG_KEY = 0x10 | cur_key_val;
key_done = 0; //按鍵事件復(fù)位
}
key_times = 0;
key_keep_times = 0;
}
}
timer1() interrupt 3{
if(STATE == STA_CHG){
TH1 = 0x42;
TL1 = 0xCA;
if(hide_times++ == 8){
HIDE = 0; //顯示
switch(CHANGE){
case CHG_HOUR:
Time.Hour =TMP_TIME;
break;
case CHG_MIN:
Time.Minute = TMP_TIME;
break;
case CHG_SEC:
Time.Second = TMP_TIME;
break;
case CHG_MON:
Time.Month = TMP_TIME;
break;
case CHG_DAY:
Time.Day = TMP_TIME;
break;
case CHG_WEEK:
Time.Week = TMP_TIME;
break;
case CHG_YEAR:
Time.Year = TMP_TIME;
break;
default:
break;
}
}
if(hide_times > 17){
hide_times = 0;
HIDE = 1; //隱藏
exit++;
switch(CHANGE){
case CHG_HOUR:
TMP_TIME = Time.Hour;
Time.Hour = 0xcc;
break;
case CHG_MIN:
TMP_TIME = Time.Minute;
Time.Minute = 0xcc;
break;
case CHG_SEC:
TMP_TIME = Time.Second;
Time.Second = 0xcc;
break;
case CHG_MON:
TMP_TIME = Time.Month;
Time.Month = 0xcc;
break;
case CHG_DAY:
TMP_TIME = Time.Day;
Time.Day = 0xcc;
break;
case CHG_WEEK:
TMP_TIME = Time.Week;
Time.Week = 0xcc;
break;
case CHG_YEAR:
TMP_TIME = Time.Year;
Time.Year = 0xcc;
break;
default:
break;
}
}
}
}
void Compute_State()
{
switch(Time.Second)
{
case 0x1:
//STATE = STA_gTIME;
break;
case 0x2:
STATE = STA_sYEAR;
break;
case 0x15:
STATE = STA_sTEMP;
break;
case 0x31:
STATE = STA_sDATE;
break;
case 0x40:
STATE = STA_sWEEK;
break;
case 0x50:
STATE = STA_sTEMP;
break;
default:
break;
}
if(Time.Minute%2 == 0 && Time.Second == 0)
STATE = STA_gTIME;
if((Time.Minute&0x0f)%5 == 0 && Time.Second == 30)
STATE = STA_gTEMP;
if((Time.Minute&0x0f) == 7 && Time.Second == 0)
STATE = STA_gWORD;
if((Time.Minute&0x0f) == 3 && Time.Second == 0)
STATE = STA_SONG;
}
//**********************************
//;---------主程序循環(huán)--------------
//**********************************
void main()
{
int i;
initial();
Tinit();
Init_DS1302();
Read_TIME(); //讀取時(shí)間
Read_Temperature();
Show_Cpyrt();
//start_time();
//write_time1302();
//MSG_MV = MSG_MV_L;
//STATE=STA_sTIME;
STATE=STA_SONG;
while(1)
{
ReadKey();
switch(STATE){
case STA_gTIME:
//添加代碼
MSG_MV = MSG_MV_L;
move_times = 0;
start_word=0;
Read_TIME(); //讀取時(shí)間
Show_All_Info();
MSG_KEY = KEY0_S; //回到時(shí)間畫面
key_done = 0;
break;
case STA_gTEMP:
Put_Wdispram(TMP_WORDS); //,start_word++
Read_Temperature();
Disp_Temperature();
Put_gTEMP();
Move_Down();
Show_Move_Word(TMP_WORDS);
MSG_KEY = KEY0_S; //回到時(shí)間畫面
key_done = 0;
break;
case STA_gWORD:
//添加代碼
Put_Wdispram(MY_WORDS); //,start_word++
Move_Down();
Show_Move_Word(MY_WORDS);
MSG_KEY = KEY0_S; //回到時(shí)間畫面
key_done = 0;
break;
case STA_sTIME:
//添加代碼
MSG_MV = MSG_MV_L;
move_times = 0;
start_word=0;
Read_TIME(); //讀取時(shí)間
Put_Tdispram(0);
Show_sWord();
Compute_State();
break;
case STA_sDATE:
//添加代碼
MSG_MV = MSG_MV_L;
move_times = 0;
start_word=0;
Read_TIME(); //讀取時(shí)間
Put_Ddispram(8);
Move_Down();
Put_Ddispram(0);
for(i=0;i<8;i++)
Show_sWord();
Read_TIME();
Put_Tdispram(8);
Move_Up();
MSG_KEY = KEY0_S; //回到時(shí)間畫面
key_done = 0;
break;
case STA_sWEEK:
//添加代碼
MSG_MV = MSG_MV_L;
move_times = 0;
start_word=0;
Read_TIME(); //讀取時(shí)間
Put_Kdispram(8);
Move_Up(); //Move_Down();
for(i=0;i<8;i++){
Read_TIME(); //讀取時(shí)間
Put_Kdispram(0);
Show_sWord();
}
Read_TIME();
Put_Tdispram(8);
Move_Down(); //Move_Up();
MSG_KEY = KEY0_S; //回到時(shí)間畫面
key_done = 0;
break;
case STA_sYEAR:
MSG_MV = MSG_MV_L;
move_times = 0;
start_word=0;
Read_TIME(); //讀取時(shí)間
Put_Ydispram(8);
Move_Down();
for(i=0;i<8;i++){
Read_TIME(); //讀取時(shí)間
Put_Ydispram(0);
Show_sWord();
}
Read_TIME();
Put_Tdispram(8);
Move_Up();
MSG_KEY = KEY0_S; //回到時(shí)間畫面
key_done = 0;
break;
case STA_sTEMP:
//添加代碼
MSG_MV = MSG_MV_L;
move_times = 0;
start_word=0;
Read_Temperature();
Disp_Temperature();
Put_sTEMP(8);
Move_Up(); //Move_Down();
for(i=0;i<8;i++) {
Read_Temperature();
Disp_Temperature();
Put_sTEMP(0);
Show_sWord();
}
Read_TIME();
Put_Tdispram(8);
Move_Down(); //Move_Up();
MSG_KEY = KEY0_S; //回到時(shí)間畫面
key_done = 0;
break;
case STA_sWORD:
//添加代碼
break;
case STA_CHG:
//校時(shí)模式
Change_Time();
write_time1302();
Read_TIME();
Put_Tdispram(8);
Move_Up();
MSG_KEY = KEY0_S;
break;
case STA_SONG:
MSG_MV = MSG_MV_L;
move_times = 0;
start_word=0;
Show_Song();
MSG_KEY = KEY0_S;
key_done = 0;
break;
default:
break;
}
}
}
復(fù)制代碼
作者:
binyv
時(shí)間:
2018-1-7 01:17
DIY有意,做個來玩玩
作者:
qxdqx
時(shí)間:
2018-1-20 06:04
很好!我有一個屏,又不會寫程序,一直沒有合適的程序。
作者:
lids
時(shí)間:
2018-1-22 09:56
仿真溫度怎么顯示55.9不變,仿真里面調(diào)18B20,顯示不變
作者:
hjc110
時(shí)間:
2018-6-4 22:27
有沒有效果圖
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1