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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機ILI9341彩屏版萬年歷仿真(DS3231時鐘 240128LCD驅動源程序)

  [復制鏈接]
跳轉到指定樓層
樓主
ILI9341tft屏幕的單片機驅動給廣大網友做參考,由于時間寫的參促,難免有錯希望大家指出.
單片機彩屏版萬年歷仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機源程序如下(主程序):

  1. #include <REGX55.H>
  2. #include "TFT.H"
  3. #include "TFT_GDI.H"
  4. #include "DS3231.h" //如果不測試時間請注銷它
  5. void Travel_time();
  6. void Display_stc(void);
  7. void Display_dyn_time(void);//顯示需更新的界面
  8. void Display_dyn_rili(void);//顯示需更新的界面
  9. //=========================================================================
  10. //本程序用來學習彩屏應用,以及時鐘寫法,學習鐘能深入了解51編程,讓你展握編輯思想.
  11. //時間調整程序,留給各位網友,發揮自己想象
  12. //如果有能力,可以采用GPS調時.
  13. //=========================================================================
  14. void main()
  15. {
  16.         //寫時間為了測試用,
  17.         IIC_single_byte_write(0x00,0x54);
  18.         IIC_single_byte_write(0x01,0x59);
  19.         IIC_single_byte_write(0x02,0x23);
  20.         
  21.         IIC_single_byte_write(0x04,0x15);
  22.         IIC_single_byte_write(0x05,0x02);
  23.         IIC_single_byte_write(0x06,0x18);
  24.         //不用測試時間請注銷
  25.         LCD_Init();
  26.         Display_stc();
  27.         Display_dyn_time();
  28.         Display_dyn_rili();
  29.         
  30.         while(1)
  31.         {
  32.                 Travel_time();
  33.         }
  34. }
復制代碼
TFT_GDI.C
  1. #include "TFT.H"
  2. #include "TFT_GDI.H"

  3. void LcdPutStr(RECT rect,unsigned int color,unsigned int bkcolor,unsigned char* GB_font,unsigned int font_num)
  4. {//四個參數分別起啟地址X與Y,字體顏色,字體背景色,要顯示數字
  5.         unsigned char i,j;
  6.         LCD_SetArea(rect);
  7.         LCD_WR_REG(0x2C);//寫儲存器命令
  8.         for(i=0;i<font_num;i++)
  9.         {
  10.                  for(j=8;j>0;j--)
  11.                 {
  12.                                 if(1==(GB_font[i]>>j-1&0x01))//判斷字符位置是否有像素//--有
  13.                                 {
  14.                                         LcdWirteColorData(color);//寫入字體顏色
  15.                                 }
  16.                                 else //沒有
  17.                                 {
  18.                                                 LcdWirteColorData(bkcolor);//沒有則寫入背景色

  19.                     }
  20.                 }
  21.                
  22.         }
  23. }
  24. void show816(unsigned int num_X, unsigned int num_Y,unsigned char* GB_font)
  25. {
  26.                 RECT rect;//屏顯示范圍
  27.                 num_Y=239-num_Y-15;//屏坐標轉換
  28.                 rect.top=num_X;
  29.                 rect.left=num_Y;
  30.                 rect.right=num_Y+15;
  31.                 rect.bottom=num_X+15;
  32.                 LcdPutStr(rect,0XF800,0XFfff,GB_font,16);
  33. }
  34. void show3216(unsigned int num_X, unsigned int num_Y,unsigned char* GB_font)
  35. {//調用該涵數,num_X最大不要超過224,num_Y不超304
  36.                 RECT rect;//屏顯示范圍
  37.                 num_Y=239-num_Y-15;//屏坐標轉換
  38.                 rect.top=num_X;
  39.                 rect.left=num_Y;
  40.                 rect.right=num_Y+15;
  41.                 rect.bottom=num_X+31;
  42.                 LcdPutStr(rect,0XF800,0XFfff,GB_font,32);
  43. }
  44. void show3264(unsigned int num_X, unsigned int num_Y,unsigned char* GB_font)
  45. {
  46.                 RECT rect;//屏顯示范圍
  47.                 num_Y=239-num_Y-63;//屏坐標轉換
  48.                 rect.top=num_X;
  49.                 rect.left=num_Y;
  50.                 rect.right=num_Y+63;
  51.                 rect.bottom=num_X+31;        
  52.                 LcdPutStr(rect,0XF800,0XFfff,GB_font,255);
  53. }
復制代碼

DS3231.c單片機源程序如下:
  1. #include <REGX55.H>
  2. #include "DS3231.h"
  3. #include <intrins.h>
  4. sbit SCL        =        P3^0;  //時鐘
  5. sbit SDA        =        P3^1;  //數據
  6. void delay_IIC(void)   
  7. {//IIC總線限速延時函數。
  8. //該函數是空函數,延時4個機器周期。
  9. _nop_();_nop_();_nop_();_nop_();
  10. }
  11. //void IIC_Init(void)
  12. //{//IIC總線初始化函數

  13. //   SDA=1;//釋放IIC總線的數據線。
  14. //   SCL=1;//釋放IIC總線的時鐘線。
  15. //}
  16. void IIC_start(void)
  17. {//IIC總線產生起始信號函數
  18.      
  19.      SDA=1;//拉高數據線
  20.      SCL=1;//拉高時鐘線
  21.      delay_IIC();
  22.      SDA=0;//在時鐘線為高電平時,拉低數據線,產生起始信號。
  23.      delay_IIC();
  24.      SCL=0;//拉低時鐘線
  25. }
  26. void IIC_stop(void)
  27. {//IIC總線產生停止信號函數
  28.     SDA=0;//拉低數據線
  29.     delay_IIC();
  30.     SCL=1;//拉高時鐘線。
  31.     delay_IIC();
  32.     SDA=1;//時鐘時線為高電平時,拉高數據線,產生停止信號。
  33.     delay_IIC();
  34. }
  35. bit IIC_Tack(void)
  36. {//接收應答信號函數
  37.     bit ack;//定義一個位變量,來暫存應答狀態。
  38.     SDA=1;//釋放數據總線,準備接收應答信號。
  39.     delay_IIC();
  40.     SCL=1;//拉高時鐘線。
  41.     delay_IIC();
  42.     ack=SDA;//讀取應答信號的狀態。
  43.     delay_IIC();
  44.     SCL=0;//拉低時鐘線。
  45.     delay_IIC();
  46.     return ack;//返回應答信號的狀態,0表示應答,1表示非應答。
  47. }
  48. void IIC_write_byte(unsigned char Data)
  49. {//向IIC總線寫入一個字節的數據函數
  50.     unsigned char i;
  51.      for(i=0;i<8;i++)//有8位數據
  52.     {
  53.         SDA=Data&0x80;//寫最高位的數據
  54.           delay_IIC();
  55.           SCL=1; //拉高時鐘線,將數寫入到設備中。
  56.         delay_IIC();
  57.         SCL=0;//拉低時鐘線,允許改變數據線的狀態
  58.         delay_IIC();
  59.         Data=Data<<1;//數據左移一位,把次高位放在最高位,為寫入次高位做準備
  60.     }
  61. }
  62. unsigned char IIC_read_byte()
  63. {//從IIC總線讀取一個字節的數據函數
  64.     unsigned char i;
  65.     unsigned char Data;       //定義一個緩沖寄存器。
  66.     for(i=0;i<8;i++)//有8位數據
  67.     {
  68.         SCL=1;//拉高時鐘線,為讀取下一位數據做準備。
  69.         delay_IIC();
  70.         Data=Data<<1;//將緩沖字節的數據左移一位,準備讀取數據。
  71.         delay_IIC();
  72.       
  73.         if(SDA)//如果數據線為高平電平。
  74.             Data=Data|0x01;//則給緩沖字節的最低位寫1。
  75.         SCL=0;//拉低時鐘線,為讀取下一位數據做準備。
  76.         delay_IIC();
  77.     }
  78.     return Data;//返回讀取的一個字節數據。
  79. }

  80. void IIC_single_byte_write(unsigned char Waddr,unsigned char Data)
  81. {//向任意地址寫入一個字節數據函數
  82.     IIC_start();//產生起始信號
  83.     IIC_write_byte(0xd0);//寫入設備地址(寫)
  84.     IIC_Tack();//等待設備的應答
  85.     IIC_write_byte(Waddr);//寫入要操作的單元地址。
  86.     IIC_Tack();//等待設備的應答。
  87.     IIC_write_byte(Data);//寫入數據。
  88.     IIC_Tack();//等待設備的應答。
  89.     IIC_stop();//產生停止符號。
  90. }
  91. unsigned char IIC_single_byte_read(unsigned char Waddr)
  92. {//從任意地址讀取一個字節數據函數
  93.     unsigned char Data;//定義一個緩沖寄存器。
  94.         
  95.     IIC_start();//產生起始信號
  96.     IIC_write_byte(0xd0);//寫入設備地址(寫)
  97.     IIC_Tack();//等待設備的應答
  98.     IIC_write_byte(Waddr);//寫入要操作的單元地址。
  99.     IIC_Tack();//等待設備的應答。
  100.     IIC_stop();//產生停止符號。

  101.     IIC_start();//產生起始信號

  102.         
  103.     IIC_write_byte(0xd1);//寫入設備地址(寫)
  104.     IIC_Tack();//等待設備的應答
  105. ……………………

  106. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
51萬年歷彩屏版.7z (109.57 KB, 下載次數: 456)


評分

參與人數 2黑幣 +80 收起 理由
piplxh + 30
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:65680 發表于 2018-5-13 17:31 | 只看該作者
剛好需要,找了一波,可以的,感謝
回復

使用道具 舉報

板凳
ID:341117 發表于 2018-7-14 19:54 | 只看該作者
下載后需要用winrar才能解壓
回復

使用道具 舉報

地板
ID:371835 發表于 2018-7-15 10:18 | 只看該作者
能不能發個完整版的。
回復

使用道具 舉報

5#
ID:377565 發表于 2018-7-23 22:23 | 只看該作者
我也要下載,謝謝樓主
回復

使用道具 舉報

6#
ID:100224 發表于 2018-12-3 10:08 | 只看該作者
剛好需要
回復

使用道具 舉報

7#
ID:412534 發表于 2018-12-8 21:45 | 只看該作者
可以用
回復

使用道具 舉報

8#
ID:56490 發表于 2019-7-25 11:51 | 只看該作者
下載了打不開
回復

使用道具 舉報

9#
ID:643346 發表于 2019-11-23 14:09 | 只看該作者
謝謝大佬,太牛逼了
回復

使用道具 舉報

10#
ID:585455 發表于 2020-10-1 16:05 | 只看該作者
正常玩TFT,剛好可以測試,測試完再報告結果。
回復

使用道具 舉報

11#
ID:585455 發表于 2020-10-1 16:14 | 只看該作者
板子不一樣,沒辦法正確驅動,不過依然感謝你。
回復

使用道具 舉報

12#
ID:66328 發表于 2021-2-20 10:23 | 只看該作者
看著很好,點贊支持,謝謝分享,學習了
回復

使用道具 舉報

13#
ID:884564 發表于 2021-3-2 21:00 | 只看該作者
真是學習好去處
回復

使用道具 舉報

14#
ID:88606 發表于 2021-7-11 17:40 | 只看該作者
這個屏哪有?
回復

使用道具 舉報

15#
ID:92810 發表于 2024-12-24 22:12 | 只看該作者

我也要下載,謝謝樓主
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕日韩在线观看 | 午夜影院在线 | 中文字幕福利 | 日韩免费在线观看视频 | 婷婷开心激情综合五月天 | 一区二区三区视频在线 | 鸳鸯谱在线观看高清 | 国产高清在线 | 视频三区| www4虎| 成人1区2区 | 色资源在线视频 | 亚洲+变态+欧美+另类+精品 | 欧美中文字幕 | jizz在线看片| 中文字幕免费观看 | 视频在线一区二区 | 久久骚 | 久久久久国产一区二区三区四区 | 亚洲在线一区二区 | 成人一区二区视频 | 犬夜叉在线观看 | 国产精品免费一区二区三区四区 | 99视频免费看 | 香蕉av免费 | 国产成人啪免费观看软件 | 91av在线免费播放 | 欧美一级二级三级 | 羞羞视频在线观免费观看 | 免费视频一区二区 | 精品少妇一区二区三区日产乱码 | 久久久久久久av | 国产91久久精品一区二区 | 欧美伊人 | 夜夜爽99久久国产综合精品女不卡 | 作爱视频免费看 | 欧美在线小视频 | 久久久精品日本 | 亚洲最大的成人网 | 欧美日产国产成人免费图片 | 国产在线精品一区二区三区 |