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

標題: 51單片機ILI9341彩屏版萬年歷仿真(DS3231時鐘 240128LCD驅動源程序) [打印本頁]

作者: zh123456    時間: 2018-1-21 14:35
標題: 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)



作者: 937166474    時間: 2018-5-13 17:31
剛好需要,找了一波,可以的,感謝
作者: mikezhao0769    時間: 2018-7-14 19:54
下載后需要用winrar才能解壓
作者: jy981    時間: 2018-7-15 10:18
能不能發個完整版的。
作者: touya    時間: 2018-7-23 22:23
我也要下載,謝謝樓主
作者: yongjun    時間: 2018-12-3 10:08
剛好需要
作者: zhaofangfang    時間: 2018-12-8 21:45
可以用

作者: ch5320    時間: 2019-7-25 11:51
下載了打不開
作者: 別愛我    時間: 2019-11-23 14:09
謝謝大佬,太牛逼了
作者: jemery1030    時間: 2020-10-1 16:05
正常玩TFT,剛好可以測試,測試完再報告結果。
作者: jemery1030    時間: 2020-10-1 16:14
板子不一樣,沒辦法正確驅動,不過依然感謝你。
作者: hnqylgq    時間: 2021-2-20 10:23
看著很好,點贊支持,謝謝分享,學習了
作者: sy_lm    時間: 2021-3-2 21:00
真是學習好去處
作者: tt98    時間: 2021-7-11 17:40
這個屏哪有?
作者: gemxie    時間: 2024-12-24 22:12

我也要下載,謝謝樓主




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美日在线 | 色综合欧美 | 超碰在线播 | 亚洲少妇综合网 | 91欧美激情一区二区三区成人 | 亚洲成人精品久久 | 天天宗合网 | 亚洲在线一区二区 | 国产区在线看 | 日本一区二区在线视频 | 一区2区| 91精品国产综合久久久久蜜臀 | 日日日操 | 日日噜| 国产日韩欧美精品一区二区三区 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 欧美激情欧美激情在线五月 | 91精品久久久久久久久99蜜臂 | 国产午夜av片 | 91精品一区 | 免费午夜电影 | 男女污污动态图 | 91欧美精品成人综合在线观看 | av一级久久 | 国产东北一级毛片 | 国产精品日日做人人爱 | 中文字幕一区二区三区在线视频 | 一区免费视频 | 午夜看电影在线观看 | 久久99精品久久久久婷婷 | 二区三区视频 | 国产精品久久久久久久久久三级 | 国产国产精品久久久久 | 亚洲精品久久久一区二区三区 | 日韩一区欧美一区 | 国产精品中文字幕在线 | 精品av天堂毛片久久久借种 | 成年人的视频免费观看 | 大久 | 亚洲视频欧美视频 | 伊人网在线综合 |