找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 500|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

沒(méi)學(xué)過(guò)該怎么在1602里面加定時(shí)器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1147078 發(fā)表于 2025-4-8 23:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
新作業(yè)用定時(shí)器定時(shí),做一個(gè)電子時(shí)鐘,時(shí)間從23:59:56開(kāi)始計(jì)時(shí),并在lcd1602上顯示,顯示要求:第一行顯示:Time:第二行顯示:23:59:56
不懂就問(wèn),是不是就是加一個(gè)定時(shí)器0?
#include <reg51.h>
sbit e=P2^7;
sbit rs=P2^6;
sbit rw=P2^5;
void delayms(int ms)
{int i,j;

for (j=0;j<ms;j++)
  for(i=0;i<333;i++);
}

bit checkbusy()
{bit stat;
rs=0;
rw=1;
e=0;
delayms(1);
e=1;
delayms(1);
stat=P0&0x80;
e=0;
delayms(1);
return stat;
}
void lcdcom(char com)
{while (checkbusy());
rs=0;
rw=0;
e=0;
delayms(1);
P0=com;
e=1;delayms(1);
e=0;delayms(1);
}
void lcddat(char dat)
{while (checkbusy());
rs=1;//寫(xiě)數(shù)據(jù)
rw=0;
e=0;
delayms(1);
P0=dat;
e=1;delayms(1);
e=0;delayms(1);
}

void main()
{ lcdcom(0x01);
  lcdcom(0x06);
  lcdcom(0x0e);
  lcdcom(0x38);

  lcdcom(0x80);
  lcddat('T');
  lcddat('I');
  lcddat('M');
  lcddat('E');

  lcdcom(0xC3);
  lcddat('3');
  lcddat('6');

  while(1);
}這是我現(xiàn)在寫(xiě)的代碼,滿足了條件1

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:69038 發(fā)表于 2025-4-9 14:32 | 只看該作者
是的,你要開(kāi)一個(gè)計(jì)數(shù)定時(shí)器,用于計(jì)時(shí)。
從23:59:56開(kāi)始,每秒減1個(gè)秒計(jì)數(shù)。。直到時(shí)分秒均為0停止。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1146851 發(fā)表于 2025-4-9 15:31 | 只看該作者
用的是單片機(jī)8051?可以用定時(shí)器間隔例如每 50ms 觸發(fā)一次中斷,每 20 次中斷(即 1 秒)更新一次時(shí)間來(lái)進(jìn)行日,時(shí),分,秒的轉(zhuǎn)換
回復(fù)

使用道具 舉報(bào)

地板
ID:462827 發(fā)表于 2025-4-9 22:57 | 只看該作者
是的,開(kāi)個(gè)定時(shí)中斷來(lái)走時(shí)分秒,然后在主函數(shù)的while(1)循環(huán)里更新顯示時(shí)間即可
回復(fù)

使用道具 舉報(bào)

5#
ID:1147078 發(fā)表于 2025-4-10 18:21 | 只看該作者
已解決
謝謝大家
回復(fù)

使用道具 舉報(bào)

6#
ID:584814 發(fā)表于 2025-4-12 20:00 | 只看該作者
通常所指的1602是顯示用的,里面加不了定時(shí)器。
問(wèn)的沒(méi)頭沒(méi)尾,解決后也不傳結(jié)果供參考,好像不是要討論而是來(lái)免費(fèi)進(jìn)貨的
回復(fù)

使用道具 舉報(bào)

7#
ID:1147078 發(fā)表于 2025-4-15 09:11 | 只看該作者
man1234567 發(fā)表于 2025-4-12 20:00
通常所指的1602是顯示用的,里面加不了定時(shí)器。
問(wèn)的沒(méi)頭沒(méi)尾,解決后也不傳結(jié)果供參考,好像不是要討論而 ...

沒(méi)有吧,在里面程序里加了個(gè)定時(shí)器就好了。也沒(méi)有免費(fèi)進(jìn)貨啊,不然我一點(diǎn)代碼都不打直接問(wèn)得了。#include <REGX51.H>
#include "1602.h"

struct Time {
    char hour;
    char minute;
    char second;
};

struct Time currentTime = {23, 59, 56};  // 初始時(shí)間將在 main() 里設(shè)置
int Count = 0;

void Timer0_Init() {
    TMOD &= 0xF0; // 設(shè)置定時(shí)器0模式1
    TMOD |= 0x01;
    TH0 = 0xFC;
    TL0 = 0x18;
    ET0 = 1; // 允許定時(shí)器0中斷
    EA = 1;  // 開(kāi)總中斷
    TR0 = 1; // 啟動(dòng)定時(shí)器0
}

void UpdateTimeDisplay() {
    char timeStr[9];
   
    // 格式化時(shí)間字符串
    timeStr[0] = currentTime.hour / 10 + '0';
    timeStr[1] = currentTime.hour % 10 + '0';
    timeStr[2] = ':';
    timeStr[3] = currentTime.minute / 10 + '0';
    timeStr[4] = currentTime.minute % 10 + '0';
    timeStr[5] = ':';
    timeStr[6] = currentTime.second / 10 + '0';
    timeStr[7] = currentTime.second % 10 + '0';
    timeStr[8] = '\0';
   
    LCD_ShowString(2, 1, timeStr);
}

void Timer0_ISR() interrupt 1 {
    TH0 = 0xFC; // 重新加載初值
    TL0 = 0x18;
   
    Count++;
    if (Count >= 1000) { // 1秒到
        Count = 0;
        currentTime.second++;
        
        // 處理秒進(jìn)位
        if (currentTime.second >= 60) {
            currentTime.second = 0;
            currentTime.minute++;
            
            // 處理分鐘進(jìn)位
            if (currentTime.minute >= 60) {
                currentTime.minute = 0;
                currentTime.hour++;
               
                // 處理小時(shí)進(jìn)位
                if (currentTime.hour >= 24) {
                    currentTime.hour = 0;
                }
            }
        }
        
        UpdateTimeDisplay(); // 更新顯示
    }
}

void main()
{
        LCD_Init();
        LCD_ShowString(1,1,"TIME:");

        Timer0_Init();


        UpdateTimeDisplay();


        while(1)
        {

        }
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表