娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月08日(星期日)

正在發生

2020年12月08日 | 基于51單片機的可調數字時鐘程序

發布者:碼農創想家 來源: 51hei關鍵字:51單片機  可調數字時鐘  定時器  中斷方式 手機看文章 掃描二維碼
隨時隨地手機看文章

使用51單片機內部定時器中斷方式一計算時間,在LCD1602液晶顯示小時、分鐘、秒,并且可以使用按鍵調整小時和分鐘,每次到整點時整點報時。


代碼如下:


//=============================================================

//功能描述:液晶顯示時鐘,可調時間,準備整點時報時

//MCU:STC89C51,晶振頻率:11.0592MHz

//=============================================================

#include  

#include  

#include  


sbit RS=P2^0;    //寄存器選擇位,將RS位定義為P2.0引腳

sbit RW=P2^1;    //讀寫選擇位,將RW位定義為P2.1引腳

sbit E=P2^2;     //使能信號位,將E位定義為P2.2引腳

sbit BF=P0^7;    //忙碌標志位,,將BF位定義為P0.7引腳

sbit k1=P1^0;    //按鍵調小時加

sbit k2=P1^1;    //按鍵調小時減

sbit k3=P1^2;    //按鍵調分鐘加

sbit k4=P1^3;    //按鍵調分鐘減

sbit beep=P1^4;  //蜂鳴器


unsigned char code digit[ ]={"0123456789"}; //定義字符數組顯示數字

unsigned char code string[ ]={"Weather:Sunny"}; //定義字符數組顯示提示信息

unsigned char count;   //定義變量統計中斷累計次數

unsigned char s,m,h;   //定義變量儲存秒、分鐘和小時

/*==================================================

函數功能:延時

(3j+2)*i=(3×33+2)×10=1010(微秒),可以認為是1毫秒

==================================================*/

void delay1ms()        //@11.0592MHz

{

   unsigned char i,j;        

         for(i=0;i<10;i++)

          for(j=0;j<33;j++);                 

}


void delay100ms()                //@11.0592MHz

{

        unsigned char i, j;

        i = 180;

        j = 73;

        do

        {

                while (--j);

        } while (--i);

}


/*==================================================

函數功能:延時若干毫秒

==================================================*/

void delay(unsigned char n)

{

   unsigned char i;

         for(i=0;i         delay1ms();

}


/*==================================================

函數功能:蜂鳴器發出聲音

==================================================*/

void sound(){

         beep=0;

         delay100ms();

         beep=1;

         delay100ms();

}


/*==================================================

函數功能:判斷液晶模塊的忙碌狀態

==================================================*/

unsigned char BusyTest(void)

  {

    bit result;

                RS=0;       //根據規定,RS為低電平,RW為高電平時,可以讀狀態

    RW=1;

    E=1;        //E=1,才允許讀寫

    _nop_();   //空操作

    _nop_();

    _nop_();

    _nop_();   //空操作四個機器周期,給硬件反應時間        

    result=BF;  //將忙碌標志電平賦給result

    E=0;         //將E恢復低電平

    return result;

  }

/*==================================================

函數功能:將模式設置指令或顯示地址寫入液晶模塊

==================================================*/

void WriteInstruction (unsigned char dictate)

{   

   while(BusyTest()==1); //如果忙就等待

         RS=0;                  //根據規定,RS和R/W同時為低電平時,可以寫入指令

         RW=0;   

         E=0;                   //E置低電平(根據表8-6,寫指令時,E為高脈沖,

                          // 就是讓E從0到1發生正跳變,所以應先置"0"

         _nop_();

         _nop_();             //空操作兩個機器周期,給硬件反應時間

         P0=dictate;            //將數據送入P0口,即寫入指令或地址

         _nop_();

         _nop_();

         _nop_();

         _nop_();               //空操作四個機器周期,給硬件反應時間

         E=1;                   //E置高電平

         _nop_();

         _nop_();

         _nop_();

         _nop_();               //空操作四個機器周期,給硬件反應時間

          E=0;                  //當E由高電平跳變成低電平時,液晶模塊開始執行命令

}

/*==================================================

函數功能:指定字符顯示的實際地址

==================================================*/

void WriteAddress(unsigned char x)

{

     WriteInstruction(x|0x80); //顯示位置的確定方法規定為"80H+地址碼x"

}

/*==================================================

函數功能:將數據(字符的標準ASCII碼)寫入液晶模塊

==================================================*/

void WriteData(unsigned char y)

{

    while(BusyTest()==1);  

          RS=1;           //RS為高電平,RW為低電平時,可以寫入數據

          RW=0;

          E=0;            //E置低電平(根據表8-6,寫指令時,E為高脈沖,

                       // 就是讓E從0到1發生正跳變,所以應先置"0"

          P0=y;           //將數據送入P0口,即將數據寫入液晶模塊

          _nop_();

          _nop_();

           _nop_();

     _nop_();       //空操作四個機器周期,給硬件反應時間

          E=1;          //E置高電平

          _nop_();

          _nop_();

          _nop_();

          _nop_();        //空操作四個機器周期,給硬件反應時間

          E=0;            //當E由高電平跳變成低電平時,液晶模塊開始執行命令

}

/*==================================================

函數功能:對LCD的顯示模式進行初始化設置

==================================================*/

void LcdInitiate(void)

{

  delay(15);             //延時15ms,首次寫指令時應給LCD一段較長的反應時間

  WriteInstruction(0x38);  //顯示模式設置:16×2顯示,5×7點陣,8位數據接口

        delay(5);               //延時5ms ,給硬件一點反應時間

  WriteInstruction(0x38);

        delay(5);

        WriteInstruction(0x38); //連續三次,確保初始化成功

        delay(5);

        WriteInstruction(0x0c);  //顯示模式設置:顯示開,無光標,光標不閃爍

        delay(5);

        WriteInstruction(0x06);  //顯示模式設置:光標右移,字符不移

        delay(5);

        WriteInstruction(0x01);  //清屏幕指令,將以前的顯示內容清除

        delay(5);


}

/*==================================================

函數功能:顯示小時、調整小時時間                          

==================================================*/

void DisplayHour()

{

  unsigned char i,j;

        if(k1==0)           //按鈕k1按下時

                delay(10);        //延時消抖

        if(k1==0)            //判斷k1按下

        {

                while(!k1);         //k1狀態取反

                h++;               //小時數增加

        }

        if(k2==0)            //按鈕k2按下時

                delay(10);         //延時消抖

        if(k2==0)            //判斷k1按下

        {

                while(!k2);        //k2狀態取反

                if(h/10==0&&h%10==0)  //判斷時間是否在24小時上

                {

                h=24;                 //當小時在24小時

                h--;                  //小時數減少為23

                }

                else

                        h--;                //小時數減少

        }

        i=h/10;                //取整運算,求得十位數字

        j=h%10;                //取余運算,求得各位數字

  WriteAddress(0x44);   //寫顯示地址,將十位數字顯示在第2行第5列

        WriteData(digit[i]);  //將十位數字的字符常量寫入LCD

        WriteData(digit[j]);  //將個位數字的字符常量寫入LCD


}

/*==================================================

函數功能:顯示分鐘、調整分鐘時間                           

==================================================*/

void DisplayMinute()

{

  unsigned char i,j;

  i=m/10;                //取整運算,求得十位數字

        j=m%10;                //取余運算,求得各位數字

                if(k3==0)             //按鈕k3按下時

[1] [2]
關鍵字:51單片機  可調數字時鐘  定時器  中斷方式 引用地址:基于51單片機的可調數字時鐘程序

上一篇:基于單片機的帶溫度顯示的電子鐘
下一篇:溫濕度傳感器sht20 STC15單片機驅動程序

推薦閱讀

在當今這么一個世界正在被改變的背景下,閱讀一些關于人工智能的書籍,對于科學、全面、準確地學習、領會習近平總書記關于發展人工智能及其應用的思想,提高對新一輪變革中的行業趨勢的觀察能力,當然是及時而有益的。人類終將繼續決定機器的能力《人工智能簡史》(原名《與機器人共舞》,浙江人民出版社出版)作者、紐約時報高級科技記者約翰·馬爾科夫專...
(文章來源:投中網) 在中國,工業機器人被看做是最好的領域,因為中國已經連續6年成為全球最大的工業機器人應用市場,但同時市場的主要份額還被外企緊緊地攥在手里。國產工業機器人要在未來競爭中占據一席之地,則必須斷臂求生,不能繼續國產替代的老路。人工智能時代,工業機器人渴望被改變。在國內積極發展的態勢下,工業機器人智能化一觸即發。 ...
檢測電感的參數需要用專門儀器(如電感電容電橋、Q表等),在不具備專用儀器的情況下,可用萬用表測試,大概判斷電感的好壞。當懷疑印制電路板上電感開路或短路時,可用萬用表RX1擋,在斷電的狀態下測試電感兩端直流電阻。一般高頻電感阻值為零點幾歐到幾歐,低頻電感阻值為幾百歐至幾千歐,中頻電感器阻值為幾歐到幾十歐。測試時要注意,有的電感線圈圈數...
中國儲能網訊:“通過建設虛擬電廠平臺,我們實現負荷側可調節資源全時段可觀、可測、可調,為超大城市電網負荷側資源常態參與調度運行奠定了基礎。這是落實國務院《2030年前碳達峰行動方案》的重要實踐。”深圳供電局副總經理章彬表示。 由南方電網深圳供電局、南方電網科學研究院聯合研發,國內首個網地一體虛擬電廠運營管理平臺(以下簡稱“虛擬電廠...

史海拾趣

問答坊 | AI 解惑

關于OPDM---技術及原理

OFDM(正交頻分復用)技術實際上是MCM(Multi-Carrier Modulation,多載波調制)的一種。其主要思想是:將信道分成若干正交子信道,將高速數據信號轉換成并行的低速子數據流,調制到在每個子信道上進行傳輸。正交信號可以通過在接收端采用相關技術來 ...…

查看全部問答∨

DSP開發100問

DSP開發100問 一。時鐘和電源 問:DSP的電源設計和時鐘設計應該特別注意哪些方面?外接晶振選用有源的好還是無源的 好? 答:時鐘一般使用晶體,電源可用TI的配套電源。外接晶振用無源的好。 問:TMS320LF2407的A/D轉換精度保證措施。 答:參 ...…

查看全部問答∨

顏色識別傳感器

本帖最后由 paulhyde 于 2014-9-15 09:44 編輯  …

查看全部問答∨

請教做過“倒車影像系統”的兄弟

我現在在做畢業設計,涉及到倒車影像中的“倒車軌跡的繪制”(想把不同轉角下的車輛倒車軌跡都繪制好放入flash中供單片機調用)。想了好幾天,沒有合適的辦法繪制倒車軌跡,請指點一二。謝謝。 郵箱 shangqi2010@163.com  感激不盡。…

查看全部問答∨

各位老師,我是新手,請教Plc931直接ad轉換的問題

我在公司里做畢業設計,采用lpc931單片機,想把一個十六位的數字量用單片機的Pwm功能給轉換成模擬量,pwm輸出采用rc濾波,但具體的c程序該怎么寫呢?請指教!!…

查看全部問答∨

LDO沒有輸出電容

New LDO Offers High Speed Performance without Output Capacitor The new XC6503 series from Torex, integrates internal phase compensation circuitry, removing the need for expensive output capacitors and dramatically ...…

查看全部問答∨

關于MAP文件問題

我的MAP里面有個地方產生啦多余的4K RAM,誰知道是什么問題嗎?----------------------------------------------------------  ======================CODE  Relative segment, address: 0800246C  ...…

查看全部問答∨

新型測試儀器如何減少機架所占空間

Andrew Armutat 產品市場部 吉時利儀器公司   減少機架所占空間。新的吉時利SMU采用了2U[1]高的半機架設計,大大提高了機架密度。在實際情況下,基于該設計的自動化系統容量很容易集成幾個到16個通道,甚至于128通道[2]也是有可能的 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 平湖市| 凤台县| 安丘市| 鄂托克旗| 泗洪县| 长岛县| 平潭县| 乡宁县| 恩施市| 岗巴县| 花莲县| 武邑县| 芦山县| 木兰县| 武鸣县| 察哈| 桐庐县| 丹寨县| 应用必备| 宝丰县| 河间市| 临澧县| 洮南市| 铜梁县| 洪湖市| 溧水县| 绿春县| 额济纳旗| 开平市| 洪江市| 凤翔县| 巴彦淖尔市| 岳阳市| 崇明县| 定兴县| 无锡市| 乐亭县| 保亭| 临朐县| 黄大仙区| 镇巴县|