久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+LCD1602與74hc595連接顯示定時 程序問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:951265 發(fā)表于 2023-3-31 20:17 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我用定時器T0進行定時,但是1602從24開始計時,如果我把LCD_String(1,1,"TIME:");刪除就可以從0開始,有沒有大佬看看
這是我的程序

/**********************************
包含頭文件
**********************************/
#include <reg52.h>
#include "LCD1602.h"
/**********************************
PIN口定義
**********************************/
sbit LCD1602_SHCP=P0^0;
sbit LCD1602_DS=P0^1;
sbit LCD1602_STCP=P0^2;
sbit LCD1602_E=P0^5;
sbit LCD1602_RW=P0^4;
sbit LCD1602_RS=P0^3;

/**********************************

/*******************************************************************************
* 函 數(shù) 名         : LCD1602_DATAPINS
* 函數(shù)功能                : 更改74HC595連接LCD1602的數(shù)據(jù)
* 輸    入         : value
* 輸    出         : 無
*******************************************************************************/   
void LCD1602_DATAPINS(uchar value)
{
    uchar i;
    for(i=0;i<8;i++)
    {
        LCD1602_DS=value&0x80;//取數(shù)據(jù)高位
        if(LCD1602_DS==0x80){ //判斷數(shù)據(jù)高位是否為1
            LCD1602_DS=1;//如果高位為1,DS置1
        }
        else{
            LCD1602_DS=0;//否則DS置0
        }
        LCD1602_SHCP=0;
        LCD1602_SHCP=1;//上升沿使這一位寫入移位寄存器
        value<<=1;//數(shù)據(jù)左移1位,數(shù)據(jù)的第7位變?yōu)樽罡呶,循環(huán)第8次時數(shù)據(jù)的最低位也變成最高位
    }
    LCD1602_STCP=0;
    LCD1602_STCP=1;//給STCP一個上升沿,將for循環(huán)中輸入的數(shù)據(jù)移入輸出鎖存寄存器,刷新輸出數(shù)據(jù)
}
/*******************************************************************************
* 函 數(shù) 名         : LcdWriteCom
* 函數(shù)功能             : 向LCD寫入一個字節(jié)的命令
* 輸    入         : com
* 輸    出         : 無
*******************************************************************************/
void LcdWriteCom(uchar com)      //寫入命令
{
    LCD1602_E = 0;     //使能
    LCD1602_RS = 0;       //選擇發(fā)送命令
    LCD1602_RW = 0;       //選擇寫入
   
    LCD1602_DATAPINS(com);     //放入命令
    Lcd1602_Delay1ms(1);        //等待數(shù)據(jù)穩(wěn)定

    LCD1602_E = 1;              //寫入時序
    Lcd1602_Delay1ms(5);      //保持時間
    LCD1602_E = 0;
}
/****************************************************************************
* 函 數(shù) 名         : LcdWriteData
* 函數(shù)功能             : 向LCD寫入一個字節(jié)的數(shù)據(jù)
* 輸    入         : dat
* 輸    出         : 無
*******************************************************************************/                  
void LcdWriteData(uchar dat)            //寫入數(shù)據(jù)
{
    LCD1602_E = 0;    //使能清零
    LCD1602_RS = 1;    //選擇輸入數(shù)據(jù)
    LCD1602_RW = 0;    //選擇寫入

    LCD1602_DATAPINS(dat); //寫入數(shù)據(jù)
    Lcd1602_Delay1ms(1);

    LCD1602_E = 1;   //寫入時序
    Lcd1602_Delay1ms(5);   //保持時間
    LCD1602_E = 0;
}

/**
  * @brief  LCD1602初始化函數(shù)
  * @param  無
  * @retval 無
  */
void LCD_Init()
{
    LcdWriteCom(0x38);//八位數(shù)據(jù)接口,兩行顯示,5*7點陣
    LcdWriteCom(0x0c);//顯示開,光標(biāo)關(guān),閃爍關(guān)
    LcdWriteCom(0x06);//數(shù)據(jù)讀寫操作后,光標(biāo)自動加一,畫面不動
    LcdWriteCom(0x01);//光標(biāo)復(fù)位,清屏
}

/**
* @brief  LCD1602顯示一個字符
  * @param  無
  * @retval 無
  */
void LCD_Char(unsigned char line,unsigned char column,unsigned char dat)
{
    if(line==1)
    {
        LcdWriteCom(0x80+column);
    }
    if(line==2)
    {
        LcdWriteCom(0xC0+column);
    }
    LcdWriteData(dat);
}

/**
* @brief  LCD1602顯示字符串
  * @param  無
  * @retval 無
  */
void LCD_String(unsigned char line,unsigned char column,unsigned char *p)
{
    unsigned char a;
    if(line==1)
    {
        a=0x80;
    }
    if(line==2)
    {
        a=0xC0;
    }
    a=a+column;
    LcdWriteCom(a);
    while(1)
    {
        if(*p == '\0') break;
        LcdWriteData(*p);
        p++;
    }
}

/**
* @brief  LCD1602顯示字符串
  * @param  無
  * @retval 無
  */
void LCD_Num(unsigned char line,unsigned char column,unsigned int dat)
{
//    LCD_Char(line,column,dat/100+'0');
    LCD_Char(line,column+1,dat/10%10+'0');
    LCD_Char(line,column+2,dat%10+'0');
}


#include <REGX52.H>
#include "time.h"

unsigned char sec,min,hour;
unsigned char cnt=0;

void T0_init(void)
{
    TMOD &=0xf0;
    TMOD |=0x01;//T0,方式1
    TR0=1;
    TH0=(47104)/256;
    TL0=(47104)%256;
   
    TF0=0;
    ET0=1;
    EA=1;
    PT0=1;
}

void T0_IRQ(void) interrupt 1   //50ms,20次1s
{
    TH0=(47104)/256;
    TL0=(47104)%256;
    cnt++;
    if(cnt==20)
    {
        cnt=0;
        sec++;
        if(sec==60)
        {
            sec=0;
            min++;
            if(min==60)
            {
                min=0;
                hour++;
                if(hour==24)
                {
                    hour=0;
                }
            }
        }
    }
}






void main()
{
    uint i,m;
    uchar j,k;
    T0_init();
    LCD_Init();
    while(1)
    {
            Delay(10);
            LCD_String(1,1,"TIME:");
            LCD_Num(1,6,sec);
            LCD_String(2,1,"HEAT:");




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

使用道具 舉報

沙發(fā)
ID:384109 發(fā)表于 2023-4-2 08:05 | 只看該作者
時間變量沒有初始化
回復(fù)

使用道具 舉報

板凳
ID:951265 發(fā)表于 2023-4-3 10:01 | 只看該作者
人中狼 發(fā)表于 2023-4-2 08:05
時間變量沒有初始化

unsigned int sec=0,min=0,hour=0;
這樣初始化以后還是從24開始計時,大佬知道怎么回事嗎
回復(fù)

使用道具 舉報

地板
ID:229502 發(fā)表于 2023-4-11 22:25 | 只看該作者
void LCD1602_DATAPINS(uchar value),這個函數(shù)是hc595串轉(zhuǎn)并給lcd1602的D0~D7.樓主仿真里沒有hc595.
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 伊人伊人| 中文字幕第一页在线 | 国产精品久久免费观看 | 欧美午夜一区二区三区免费大片 | 人成在线 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 日本又色又爽又黄又高潮 | 亚洲免费一 | 午夜男人视频 | 亚洲欧美日韩国产综合 | 欧州一区二区三区 | 一区二区视频在线观看 | 97操操| 一级欧美一级日韩片 | 中文字幕一区二区三区在线乱码 | 天天久久| 懂色av蜜桃av| 欧美国产精品一区二区三区 | 天天综合网天天综合色 | 小h片免费观看久久久久 | 久久精品国产久精国产 | 一区二区三区视频在线观看 | 久久99精品久久久久久噜噜 | 中文一级片 | 精品日韩一区二区三区av动图 | 亚洲综合天堂 | 在线播放中文字幕 | 国产亚洲欧美在线 | 国产成人a亚洲精品 | 欧美久久久久久久 | 国产精品久久影院 | 亚洲毛片在线观看 | 在线观看免费高清av | www国产亚洲精品久久网站 | 久久精品国产99国产精品 | 精品亚洲一区二区三区 | 亚洲少妇综合网 | 国产中文字幕av | 午夜理伦三级理论三级在线观看 | 精品久久香蕉国产线看观看亚洲 | 亚洲精品乱码久久久久久9色 |