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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1909|回復: 0
打印 上一主題 下一主題
收起左側

求大神幫忙修改一下紅外搖控C程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:139788 發表于 2016-12-15 00:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以下為修正LCD1602時鐘C程,鍵盤操作函數已刪除,增加修改為紅外搖控操作,

(STC90C51)
以下為紅外鍵值碼:

電源開關鍵:       12H     賦值到IO口動作,LCD1602要顯示(ON~OFF)狀態
直流電機反轉鍵:   DAH     賦值到IO口動作,
直流電機正轉鍵:   1FH     同上

LCD1602時鐘程序

#include<reg51.h>
#include "LCD.h"
#include"ds1302.h"
#include"DS18B20.h"
//溫度顯示函數
void display(int temp)         
{
           float tp;  
        if(temp< 0)                                //當溫度值為負數
          {        LcdWriteCom(0x88+0x40);                //寫地址 80表示初始地址
            LcdWriteData('-');                 //顯示正
                 //因為讀取0的溫度是實際溫度的補碼,所以減1,再取反求出原碼
                temp=temp-1;
                temp=~temp;
                tp=temp;
                temp=tp*0.0625*100+0.5;        
                //留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
                //后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
                //算加上0.5,還是在小數點后面。

          }
        else
          {        LcdWriteCom(0x88+0x40);                //寫地址 80表示初始地址
            LcdWriteData('+');                 //顯示正               
            tp=temp;//因為數據處理有小數點所以將溫度賦給一個浮點型變量
                //如果溫度是正的那么,那么正數的原碼就是補碼它本身
                temp=tp*0.0625*100+0.5;        
                //留兩個小數點就*100,+0.5是四舍五入,因為C語言浮點數轉換為整型的時候把小數點
                //后面的數自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
                //算加上0.5,還是在小數點后面。
        }
        TIME[8] = temp / 10000;
        TIME[9] = temp % 10000 / 1000;
    TIME[10] = temp % 1000 / 100 ;
    TIME[11] = temp % 100 / 10;
    TIME[12] = temp % 10;
        LcdWriteCom(0x89+0x40);                  //寫地址 80表示初始地址
        LcdWriteData('0'+TIME[8]); //百位
        
        LcdWriteCom(0x8a+0x40);                 //寫地址 80表示初始地址
        LcdWriteData('0'+TIME[9]); //十位
        
        LcdWriteCom(0x8b+0x40);                //寫地址 80表示初始地址
        LcdWriteData('0'+TIME[10]); //個位
        
        LcdWriteCom(0x8c+0x40);                //寫地址 80表示初始地址
        LcdWriteData('.');                 //顯示 ‘.’
        
        LcdWriteCom(0x8d+0x40);                 //寫地址 80表示初始地址
        LcdWriteData('0'+TIME[11]); //顯示小數位
        
        LcdWriteCom(0x8e+0x40);                 //寫地址 80表示初始地址
        LcdWriteData('0'+TIME[12]); //顯示小數位   
         
}
//時鐘顯示函數
void LcdDisplay()
{
        LcdWriteCom(0x80+0X40);
        LcdWriteData('0'+TIME[2]/16);                                //時
        LcdWriteData('0'+(TIME[2]&0x0f));                                 
        LcdWriteData('-');
        LcdWriteData('0'+TIME[1]/16);                                //分
        LcdWriteData('0'+(TIME[1]&0x0f));        
        LcdWriteData('-');
        LcdWriteData('0'+TIME[0]/16);                                //秒
        LcdWriteData('0'+(TIME[0]&0x0f));

        LcdWriteCom(0x80);
        LcdWriteData('2');
        LcdWriteData('0');
        LcdWriteData('0'+TIME[6]/16);                        //年
        LcdWriteData('0'+(TIME[6]&0x0f));
        LcdWriteData('-');
        LcdWriteData('0'+TIME[4]/16);                        //月
        LcdWriteData('0'+(TIME[4]&0x0f));
        LcdWriteData('-');
        LcdWriteData('0'+TIME[3]/16);                        //日
        LcdWriteData('0'+(TIME[3]&0x0f));
        LcdWriteCom(0x8D);
        LcdWriteData('0'+(TIME[5]&0x07));        //星期                        
}
//主函數
void main()
{
        Int0Configuration();
        LcdInit();                         //初始化LCD1602
        Delay10ms();
    Ds1302Init();                  //初始化DS1302
        LcdWriteCom(0x8f+0x40);        //寫地址 80表示初始地址
        LcdWriteData('C');         
        
        while(1)
        {                  
                  
                 
                 
                 
                 display( Ds18b20ReadTemp());
                  
                 if(SetState==0)
                {
                        Ds1302ReadTime();
                                       
                }
                        else
                        {                 keycontrol();

                        }        
                                                   
                        LcdDisplay();
                                                
        }
}
/*******************************************************************************
* 函數名         : Int0Configuration()
* 函數功能                   : 配置外部中斷0
* 輸入           : 無
* 輸出                  : 無
*******************************************************************************/
//打開外部中斷0
void Int0Configuration()
{
        //設置INT0
        IT0=1;//跳變沿觸發方式(下降沿)
        EX0=1;//打開INT0的中斷允許。
        EA=1;//打開總中斷
        
}
//外部中斷0執行函數
void Int0() interrupt 0                 
{
        Delay10ms();

        if(K3==0)
        {
                SetState=~SetState;
                SetPlace=0;
            Ds1302Init(); //初始化DS1302        
        }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久欧洲 | 精品久久影院 | 精品美女久久久久久免费 | 国产精品视频一区二区三区 | 热99在线| 亚洲三区在线观看 | 天天操夜夜操 | 色999视频 | 欧美国产精品久久久 | 奇色影视 | 亚洲精色 | 毛片大全 | 国产综合精品 | 水蜜桃久久夜色精品一区 | 久久久福利 | 亚洲毛片在线观看 | 精品国产乱码一区二区三 | 午夜影院在线观看免费 | 国产1区2区在线观看 | 天天干天天玩天天操 | 九九热在线免费视频 | 国产真实精品久久二三区 | 成人免费视频 | 九九久久精品视频 | 亚洲国产视频一区二区 | 性一交一乱一伦视频免费观看 | 91大神在线资源观看无广告 | 黄色在线免费网站 | 最近免费日本视频在线 | 91成人在线 | 国产精品中文字幕在线 | 色视频欧美 | 九九视频在线观看视频6 | 色爱综合网 | 成人午夜免费网站 | 国产农村妇女精品一区 | 在线观看中文字幕亚洲 | 91精品91久久久 | 日本在线观看视频 | 国产高清在线观看 | 国产成人免费视频网站视频社区 |