在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51hei開(kāi)發(fā)板+手機(jī)TFT彩屏+1302時(shí)鐘+溫度

            51hei開(kāi)發(fā)板+手機(jī)TFT彩屏+1302時(shí)鐘+溫度

            作者: 時(shí)間:2012-08-24 來(lái)源:網(wǎng)絡(luò) 收藏

            時(shí)間:2011年3月26號(hào)

            芯片:STC12C5A60S2, 當(dāng)采用stc89c52這類(lèi)標(biāo)準(zhǔn)速度單片機(jī)的時(shí)候需要修改程序中的延時(shí)值

            時(shí)鐘芯片:DS1302

            傳感器:18B20

            TFT彩屏:320X240 26萬(wàn)色 8位數(shù)據(jù) 不帶觸摸控制器-ILI9325  

            功能:只是簡(jiǎn)單的時(shí)間和顯示,適合初學(xué)者學(xué)習(xí)彩屏顯示。

            點(diǎn)擊瀏覽下一頁(yè)

            以上是本程序在51hei-5單片機(jī)開(kāi)發(fā)板上的顯示效果,2.4寸的tft手機(jī)彩屏是直接插入板子12864接口的,要注意12864是20pin ,而我們生產(chǎn)的彩屏是18pin的,第一pin對(duì)第一pin故左邊會(huì)多出2個(gè)腳,大家千萬(wàn)不要插錯(cuò)位了不然會(huì)燒毀的,由于篇幅有限以下僅僅列出主程序本程序完整代碼及hex文件下載:http://www.51hei.com/f/caip11.rar

            主函數(shù):#include "STC.h"#include"18B20.h"#include"ILI9325.h"http://#include"anjian.h"#include"1302.h"http://======定義彩屏顯示的顏色,可以不定義,直接寫(xiě)入16進(jìn)制代碼========////0xF800  //紅//0x07E0  //綠//0x001F  //藍(lán)//0xFFE0  //黃//0x0000  //黑//0xFFFF  //白//0xF81F  //紫紅色//0x7FFF  //青色//0x051F  //青藍(lán)//====================主函數(shù)=========================//void  main(void){   CS=1;delayms(10);RES=0;delayms(10);RES=1;delayms(10); ILI9325_Initial(); //彩屏初始化   ClearScreen(0x001F);   //清屏 while(1)       {       LCD_PutString(10+0, 10+40,  "",      0xFFE0,0x001F);    LCD_PutChar  (10+60,10+40,  '.',         0xFFE0,0x001F);       LCD_PutString(10+85,10+40,  "℃",        0xFFFF,0x001F);  LCD_PutString(10+0, 10,     "時(shí)間",      0xFFE0,0x001F);LCD_PutString(10+0, 10+20,  "日期",      0xFFE0,0x001F);Write_DS1302Init(); Run_DS1302(); //經(jīng)過(guò)調(diào)試,必須將溫度程序加入1302程序中,才能正常測(cè)溫。    // if((a==qian)(b==bai)(c==shi)(d==ge)(miao21)) { bi(500); }  //設(shè)定報(bào)警,響10秒鐘結(jié)束。  }  }    時(shí)鐘程序:#include "STC.h"#includeintrins.h>#define uchar unsigned char#define uint  unsigned intsbit T_CLK = P1^6; /*實(shí)時(shí)時(shí)鐘時(shí)鐘線(xiàn)引腳 */sbit T_IO = P3^5; /*實(shí)時(shí)時(shí)鐘數(shù)據(jù)線(xiàn)引腳 */sbit T_RST = P1^7; /*實(shí)時(shí)時(shí)鐘復(fù)位線(xiàn)引腳 */sbit ACC0 = ACC^0;sbit ACC7 = ACC^7;/********************************************************************* 名稱(chēng) :  v_RTInputByte()* 功能 :  往DS1302寫(xiě)入1Byte數(shù)據(jù)* 輸入 :  ucDa 寫(xiě)入的數(shù)據(jù)* 輸出 :  無(wú)***********************************************************************/void v_RTInputByte(uchar ucDa){uchar i;ACC = ucDa;T_RST = 1;for(i=8; i>0; i--){T_IO = ACC0;T_CLK = 1;T_CLK = 0;ACC = ACC >> 1;}}/********************************************************************* 名稱(chēng)  :   uc_RTOutputByte()* 功能  :   從DS1302讀取1Byte數(shù)據(jù)* 輸入  : 無(wú)* 返回值:   ACC***********************************************************************/uchar uc_RTOutputByte(void) {uchar i;T_RST = 1;for(i=8; i>0; i--){ACC = ACC >>1;T_IO=1;ACC7 = T_IO;T_CLK = 1;T_CLK = 0;}return(ACC);}/********************************************************************* 名稱(chēng)   :   v_W1302(uchar ucAddr, uchar ucDa)* 功能   :   往DS1302寫(xiě)入數(shù)據(jù)* 輸入   :   ucAddr: DS1302地址, ucDa: 要寫(xiě)的數(shù)據(jù)* 返回值 :   無(wú)***********************************************************************/void v_W1302(uchar ucAddr, uchar ucDa){T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr);   // 寫(xiě)地址 _nop_();_nop_();v_RTInputByte(ucDa);     // 寫(xiě)1Byte數(shù)據(jù)T_CLK = 1;T_RST = 0;}/********************************************************************* 名稱(chēng)   :  uc_R1302(uchar ucAddr)* 功能   :  讀取DS1302某地址的數(shù)據(jù)* 輸入   :  ucAddr: DS1302地址* 返回值 :  ucDa :讀取的數(shù)據(jù)***********************************************************************/uchar uc_R1302(uchar ucAddr){uchar ucDa;T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr);    //寫(xiě)地址,命令_nop_();_nop_();ucDa = uc_RTOutputByte(); //讀1Byte數(shù)據(jù)T_CLK = 1;T_RST = 0;return(ucDa);}/********************************************************************* 名稱(chēng)   :  v_BurstW1302T* 功能   :  往DS1302寫(xiě)入時(shí)鐘數(shù)據(jù)(多字節(jié)方式)* 輸入   :  pSecDa: 時(shí)鐘數(shù)據(jù)地址 格式為: 秒 分 時(shí) 日 月 星期 年 控制*          8Byte (BCD碼) 1B 1B 1B 1B 1B 1B  1B  1B* 返回值 :  無(wú)***********************************************************************/void v_BurstW1302T(uchar *pSecDa){uchar i;v_W1302(0x8e, 0x00);          //控制命令,WP=0,寫(xiě)操作T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(0xbe);          //0xbe:時(shí)鐘多字節(jié)寫(xiě)命令for(i=8; i>0; i--)            //8Byte = 7Byte 時(shí)鐘數(shù)據(jù) + 1Byte 控制{v_RTInputByte(*pSecDa);   //寫(xiě)1Byte數(shù)據(jù)pSecDa++;}T_CLK = 1;T_RST = 0;}/********************************************************************* 名稱(chēng)   :  v_BurstR1302T(uchar *pSecDa)* 功能   :  讀取DS數(shù)據(jù)* 輸入   :  pSecDa: 時(shí)鐘數(shù)據(jù)地址 格式為: 秒 分 時(shí) 日 月 星期 年*             7Byte (BCD碼) 1B 1B 1B 1B 1B 1B   1B* 返回值 :  ucDa :讀取的數(shù)據(jù)***********************************************************************/void v_BurstR1302T(uchar *pSecDa){uchar i;T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(0xbf);               //0xbf:時(shí)鐘多字節(jié)讀命令for(i=8; i>0; i--){*pSecDa = uc_RTOutputByte();   //讀1Byte數(shù)據(jù)pSecDa++;}T_CLK = 1;T_RST = 0;}/********************************************************************* 名稱(chēng)   :  v_BurstW1302R(uchar *pReDa)* 功能   :  往DS1302寄存器數(shù)寫(xiě)入數(shù)據(jù)(多字節(jié)方式)* 輸入   :  pReDa: 寄存器數(shù)據(jù)地址* 返回值 :  無(wú)***********************************************************************/void v_BurstW1302R(uchar *pReDa){uchar i;v_W1302(0x8e,0x00);         //控制命令,WP=0,寫(xiě)操作T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(0xfe);       //0xbe:時(shí)鐘多字節(jié)寫(xiě)命令for(i=31; i>0; i--)        //31Byte 寄存器數(shù)據(jù){v_RTInputByte(*pReDa); //寫(xiě)1Byte數(shù)據(jù)pReDa++;}T_CLK = 1;T_RST = 0;}/********************************************************************* 名稱(chēng)   :  v_BurstR1302R(uchar *pReDa)* 功能   :  讀取DS1302寄存器數(shù)據(jù)* 輸入   :  pReDa: 寄存器數(shù)據(jù)地址* 返回值 :  無(wú)***********************************************************************/void v_BurstR1302R(uchar *pReDa){uchar i;T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(0xff);            //0xbf:時(shí)鐘多字節(jié)讀命令for(i=31; i>0; i--)             //31Byte 寄存器數(shù)據(jù){*pReDa = uc_RTOutputByte(); //讀1Byte數(shù)據(jù)pReDa++;}T_CLK = 1;T_RST = 0;}/********************************************************************* 名稱(chēng)  :  v_Set1302(uchar *pSecDa)* 功能  :  設(shè)置初始時(shí)間* 輸入  :  pSecDa: 初始時(shí)間地址。初始時(shí)間格式為: 秒 分 時(shí) 日 月 星期 年*            7Byte (BCD碼) 1B 1B 1B 1B 1B 1B  1B* 返回值: 無(wú)***********************************************************************/void v_Set1302(uchar *pSecDa){uchar i;uchar ucAddr = 0x80;v_W1302(0x8e, 0x00);            //控制命令,WP=0,寫(xiě)操作for(i=7; i>0; i--){v_W1302(ucAddr, *pSecDa);   // 秒 分 時(shí) 日 月 星期 年pSecDa++;ucAddr += 2;}v_W1302(0x8e, 0x80);            //控制命令,WP=1,寫(xiě)保護(hù)}/********************************************************************* 名稱(chēng)   : v_Get1302(uchar ucCurtime[])* 功能   : 讀取DS1302當(dāng)前時(shí)間* 輸入   : ucCurtime: 保存當(dāng)前時(shí)間地址。當(dāng)前時(shí)間格式為: 秒 分 時(shí) 日 月 星期 年*                                         7Byte (BCD碼) 1B 1B 1B 1B 1B  1B  1B* 返回值 : 無(wú)***********************************************************************/void v_Get1302(uchar ucCurtime[]){uchar i;uchar ucAddr = 0x81;for(i=0; i7; i++){ucCurtime[i] = uc_R1302(ucAddr);    //格式為: 秒 分 時(shí) 日 月 星期 年ucAddr += 2;}}/********************************************************************* 名稱(chēng) : dectobcd(uchar dec)* 功能 : DEC碼轉(zhuǎn)換為BCD碼* 輸入 : dec碼* 輸出 : bcd碼***********************************************************************/uchar dectobcd(uchar dec){uchar bcd;bcd = 0;while(dec >= 10){              dec -= 10;                         bcd++;} bcd = 4;bcd |= dec;return bcd;}/********************************************************************* 名稱(chēng) : bcdtodec(uchar bcd)* 功能 : BCD碼轉(zhuǎn)換為DEC碼* 輸入 : bcd碼* 輸出 : dec碼***********************************************************************/uchar bcdtodec(uchar bcd){uchar data1;data1 = bcd  0x0f;     //取BCD低4位bcd = bcd  0x70;       //剔除BCD的最高位和低4位。data1 += bcd >> 1;data1 += bcd >> 3;      //用位移代替乘法運(yùn)算return data1;}/********************************************************************* 名稱(chēng) : Write_DS1302Init()* 功能 : 往DS1302中寫(xiě)入數(shù)據(jù)。最開(kāi)始顯示的數(shù)據(jù)就是在這里設(shè)置的。* 輸入 : 無(wú)* 輸出 : 無(wú)***********************************************************************/void Write_DS1302Init(void){v_W1302(0x8e,0);v_W1302(0x80,0x50); //寫(xiě)入秒v_W1302(0x8e,0);v_W1302(0x82,0x59); //寫(xiě)入分v_W1302(0x8e,0);v_W1302(0x84,0x07); //寫(xiě)入小時(shí)v_W1302(0x8e,0);v_W1302(0x86,0x08); //寫(xiě)入日v_W1302(0x8e,0);v_W1302(0x88,0x08); //寫(xiě)入月v_W1302(0x8e,0);v_W1302(0x8a,0x05); //寫(xiě)入星期v_W1302(0x8e,0);v_W1302(0x8c,0x08); //寫(xiě)入年 }/********************************************************************* 名稱(chēng) : Run_DS1302(void)* 功能 : 讀出DS1302中的數(shù)據(jù),并在液晶1602上進(jìn)行顯示* 輸入 : 無(wú)* 輸出 : 無(wú)***********************************************************************/void Run_DS1302(void){uchar sec, min, hour, day, month, year;while(1){v_W1302(0x8f, 0);sec = bcdtodec(uc_R1302(0x81));    //讀出DS1302中的秒v_W1302(0x8f, 0);min = bcdtodec(uc_R1302(0x83));    //讀出DS1302中的分v_W1302(0x8f, 0);hour = bcdtodec(uc_R1302(0x85));   //讀出DS1302中的小時(shí)v_W1302(0x8f, 0);day = bcdtodec(uc_R1302(0x87));    //讀出DS1302中的日v_W1302(0x8f, 0);month = bcdtodec(uc_R1302(0x89));  //讀出DS1302中的月v_W1302(0x8f, 0);year = bcdtodec(uc_R1302(0x8d));   //讀出DS1302中的年LCD_PutChar  (10+40,  10,    hour/10%10  +'0',  0xFFE0,0x001F);  //LCD_PutChar  (10+50,  10,    hour%10     +'0',  0xFFE0,0x001F);  //顯示DS1302中的時(shí)LCD_PutChar  (10+60,  10,                 ':',  0xFFE0,0x001F);LCD_PutChar  (10+70,  10,    min/10%10   +'0',  0xFFE0,0x001F);  //LCD_PutChar  (10+80,  10,    min%10      +'0',  0xFFE0,0x001F);  //顯示DS1302中的分LCD_PutChar  (10+90,  10,                 ':',  0xFFE0,0x001F);    LCD_PutChar  (10+100, 10,    sec/10%10   +'0',  0xFFE0,0x001F);  //LCD_PutChar  (10+110, 10,    sec%10      +'0',  0xFFE0,0x001F);  //顯示DS1302中的秒 LCD_PutChar  (10+40,  10+20,             +'2',  0xFFE0,0x001F);  //獨(dú)立顯示年LCD_PutChar  (10+50,  10+20,             +'0',  0xFFE0,0x001F);  //獨(dú)立顯示年LCD_PutChar  (10+60,  10+20, year/10%10  +'0',  0xFFE0,0x001F);  //LCD_PutChar  (10+70,  10+20, year%10     +'0',  0xFFE0,0x001F);  //顯示DS1302中的年LCD_PutChar  (10+80,  10+20,              ':',  0xFFE0,0x001F);LCD_PutChar  (10+90,  10+20, month/10%10 +'0',  0xFFE0,0x001F);  //LCD_PutChar  (10+100, 10+20, month%10    +'0',  0xFFE0,0x001F);  //顯示DS1302中的月LCD_PutChar  (10+110, 10+20,              ':',  0xFFE0,0x001F);LCD_PutChar  (10+120, 10+20, day/10%10   +'0',  0xFFE0,0x001F);  //LCD_PutChar  (10+130, 10+20, day%10      +'0',  0xFFE0,0x001F);  //顯示DS1302中的日ReadTemperature();    //讀取溫度轉(zhuǎn)換后的值LCD_PutChar  (10+40,10+40,   temp/10+'0', 0xFFE0,0x001F);   //顯示溫度十位LCD_PutChar  (10+50,10+40,   temp%10+'0', 0xFFE0,0x001F);  //顯示溫度個(gè)位LCD_PutChar  (10+70,10+40,   xs%10+'0',   0xFFE0,0x001F);  //顯示溫度小數(shù)位}  }
            溫濕度控制器相關(guān)文章:溫濕度控制器原理


            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉