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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機初學實踐:用DS1302模塊和1.44寸TFT顯示屏(ST7735)實現電子鐘

  [復制鏈接]
跳轉到指定樓層
樓主
這周在上次實現的電子鐘(51單片機初學實踐:用DS1302模塊和LCD1602顯示屏實現電子鐘)的基礎上作了以下2點改進:1、將LCD1602屏幕更換為1.44寸 TFT顯示屏
主要考慮是TFT顯示屏可以使用不同字體和顏色,更方便定制顯示界面

2、將STC89C52RC單片機更換為STC12C5A60S2單片機
首先是空間更大,STC12C5A60S2單片機(60K bytes flash ROM, 1280 bytes data RAM),STC89C52RC單片機(8K bytes flash ROM, 512 bytes data RAM)

其次STC12C5A60S2單片機有單獨的SPI接口(P1.5 MOSI 和 P1.6 MISO),可以更好地驅動TFT顯示屏
STC12C5A60S2單片機有10位ADC(P1.0 - P1.7),可以采集光敏電阻電壓,自動調整TFT顯示屏背光亮度
STC12C5A60S2單片機有專用PWM輸出(P1.3 和 P1.4,可以很方便地調整TFT顯示屏背光亮度

TFT顯示屏效果:
從上到下依次為:年月日 星期幾 時分秒 氣溫 光敏電阻電壓



串口打印效果:



實物接線效果:




在實踐過程中,有以下心得:

1、STC12C5A60S2單片機有專用的串口定時器,更方便設置波特率
  1. /* 串口配置函數,通信波特率 9600 */
  2. void UART1_Config()
  3. {
  4.         PCON &= 0x7F;        //波特率不倍速
  5.         SCON  = 0x50;        //配置串口為模式1,允許發送和接收
  6.         //9600bps@11.0592MHz
  7.         BRT = 0xDC;                //設定獨立波特率發生器重裝值
  8.         AUXR |= 0x04;        //獨立波特率發生器時鐘為Fosc,即1T
  9.         AUXR |= 0x01;        //串口1選擇獨立波特率發生器為波特率發生器
  10.         AUXR |= 0x10;        //啟動獨立波特率發生器
  11.         EA = 1; //啟用中斷
  12.         ES = 1;        //啟用串口中斷
  13. }
復制代碼

2、P3.2需要設置為推挽模式,以便更好地驅動顯示屏背光
  1. #ifdef MCU_STC12
  2.         //P3.2 set as push-pull output mode, for LCD backlight
  3.         P3M1 &= ~(1<<2);
  4.         P3M0 |=  (1<<2);
  5. #endif
復制代碼

3、ADC采樣輸入,需要用到P1.0和P1.1兩個端口,P1.0用于測量TL431輸出的參考電壓2.5v,P1.1用于測量光敏電阻當前分壓
















  1. void ADC_Init()
  2. {
  3.         P1ASF = 0x03;                //選擇P1.0和P1.1作為ADC采樣輸入

  4.         // ADRJ=1時,10位A/D轉換結果的高2位存放在ADC_RES的低2位中,低8位存放在ADC_RESL中
  5.         AUXR1 |= 1<<2;                 //set ADRJ=1 : 10bit result = ADC_RES<<8 + ADC_RESL
  6.         ADC_RES = 0;
  7.         ADC_RESL = 0;
  8.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL; // 打開A/D轉換器電源, 540個時鐘周期轉換一次
  9.         Delay10us();
  10. }

  11. uint16 ADC_Get_Result(uint8 channel)
  12. {
  13.         uint16 res;
  14.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | channel;
  15.         _nop_(); //Must wait before inquiry
  16.         _nop_();
  17.         _nop_();
  18.         _nop_();
  19.         while(!(ADC_CONTR & ADC_FLAG));
  20.         ADC_CONTR &= ~ADC_FLAG;
  21.         res = (ADC_RES & 0x03) << 8;
  22.         res += ADC_RESL;
  23.         Delay10us();
  24.         Delay10us();
  25.         return res;
  26. }
復制代碼

TL431和光敏電阻接線示意



光敏電阻的特點是光照越強阻值越小,分壓降低,而在弱光環境則是阻值變大,分壓升高,如下二圖所示
可以根據這個特點自動調整顯示屏背光強度




4、PWM輸出

不需要修改頻率,直接設置為SysClk/12





PCA模塊工作模式設定為8位PWM,無中斷



占空比調整通過設置不同的CCAP1L/H值來實現






  1. <blockquote>// 1.3和1.4口 PWM占空比,數值越大,占空比越小
復制代碼

5、在TFT屏幕上顯示字符
需要注意12x16和12x24這種字符點陣數據,由于12不是8的整數倍,實際存儲16bit,使用時,需要跳過最后4個填充bit
//采用設置窗口方法填充12x24點陣數字
void Display_Digit_12x24(uint8 x, uint8 y, uint16 fc, uint16 bc, uint8 idx)
{
        uint8 i,j,k;
        
        LCD_Set_Region(x, y, 12, 24);
        for(i=0; i<3*16; i++)
        {
                if(1 == i%2) k = 4;
                else k = 8;
               
                for(j=0; j<k; j++)
                {
                        if(digit12x24[idx][ i]&(0x80>>j))
                        {
                                SPI_Write_Word(fc);
                        }
                        else
                        {
                                if (fc != bc)
                                {
                                        SPI_Write_Word(bc);
                                }
                        }
                }
        }
}


6、main函數內容:
  1. void main()
  2. {
  3.     int8 slen = 0;
  4.         uint8 pdata uart_cmd_buf[64] = {0};

  5.         DS18B20_Start();
  6.         UART1_Config();        // 9600 baud
  7.         Timer0Init();        //T0定時10ms
  8.     DS1302_Init();        //初始化RTC時鐘
  9.         ADC_Init();

  10. #ifdef MCU_STC12
  11.         //P3.2 set as push-pull output mode, for LCD backlight
  12.         P3M1 &= ~(1<<2);
  13.         P3M0 |=  (1<<2);
  14. #endif

  15.         SPI_Init();
  16.         LCD_Init();
  17.         PWM_Init();
  18.         delay_ms(500);
  19.         LCD_Show_Format();

  20.     while(1)
  21.     {
  22.                
  23.                 Uart_Cmd_Check(&uart_cmd_buf, sizeof(uart_cmd_buf)-1);

  24.         if (timer_flag_250ms)  //每250ms讀取依次時間
  25.         {
  26.                         ReadAndShowRtc();
  27.             timer_flag_250ms = 0;
  28.         }
  29.         if (timer_flag_5s)  //每隔5s執行以下分支
  30.         {
  31.                         //printf(">>>===\r\n");
  32.                         ReadAndShowTemperature(-5);
  33.                         
  34.                         ReadAndShowPhotoresistorVoltage();

  35.             timer_flag_5s = 0;
  36.                 }
  37.     }
  38. }
復制代碼

STC12C5A60S2單片機手冊下載地址(點替換成.):www點stcmcudata點com/datasheet/stc/STC-AD-PDF/STC12C5A60S2.pdf

1.44寸TFT(ST7735)顯示屏資料(點替換成.):www點lcdwiki點com/zh/1.44inch_SPI_Module_ST7735S_SKU:MSP1443

完整代碼見附件,文件列表如圖所示:



以上代碼使用最小系統和面包板調試,接線簡單,具體端口可參看config.h

初學單片機,難免有錯漏之處,還請各位壇友不吝賜教。

DS1302_UART_ST7735_STC12C5A60S2.7z (2.34 MB, 下載次數: 222)


評分

參與人數 3黑幣 +80 收起 理由
1109 + 15 很給力!
pengxxx + 15 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:64253 發表于 2020-8-12 16:46 | 只看該作者
沒想到還有沙發坐,先瞧瞧
回復

使用道具 舉報

板凳
ID:585455 發表于 2020-10-5 11:40 | 只看該作者
很棒的分享,小弟正享用這屏幕顯示時間溫度。
回復

使用道具 舉報

地板
ID:71456 發表于 2022-2-18 18:37 | 只看該作者
LCD數據口和單片機連  要加限流電阻嗎?
回復

使用道具 舉報

5#
ID:140489 發表于 2022-6-8 13:14 | 只看該作者
試了下,屏能顯示,但時間不走
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人免费网 | 国产免费福利在线 | 91麻豆精品国产91久久久久久 | 欧美日韩不卡 | 久久成人18免费网站 | 欧美日韩18 | 欧美a级成人淫片免费看 | 九色av| 又黑又粗又长的欧美一区 | 久久久久久一区 | 国产精品1区2区3区 一区中文字幕 | 成人片在线看 | 午夜久久久久久久久久一区二区 | 久久久久久久久蜜桃 | 特级毛片爽www免费版 | 久久久久久免费观看 | 国产 欧美 日韩 一区 | 一a级片| 亚洲天堂av在线 | av一区二区在线观看 | 永久av | 欧美在线一区二区三区 | 福利精品 | 免费1区2区3区 | 伊人色综合久久天天五月婷 | 亚洲高清成人 | 久久久资源 | 精品欧美一区二区在线观看视频 | 天天爽天天操 | 久久精品aaa | 欧美精品久久久 | 一区二区三区av夏目彩春 | 国产日韩久久 | 欧美日韩在线视频一区 | 一区二区三区四区在线视频 | 妖精视频一区二区三区 | 亚洲精品一区二区三区丝袜 | 日韩1区2区 | 欧美区精品 | 播放一级毛片 | 国产精品午夜电影 |