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

標(biāo)題: 單片機(jī)printf函數(shù)液晶顯示方法與步驟 [打印本頁]

作者: jieoo+    時(shí)間: 2018-6-6 17:53
標(biāo)題: 單片機(jī)printf函數(shù)液晶顯示方法與步驟
很有用的一篇單片機(jī)方面的文章,希望幫助到大家
今日無事,曬一下利用printf(“  ”,……);函數(shù)輸出顯示的步驟。
前一段時(shí)間,應(yīng)項(xiàng)目要求,底層程序里面需要編寫printf函數(shù)來實(shí)現(xiàn)液晶屏幕的輸出打印功能,糾結(jié)了大概一周時(shí)間,終于搞定!呵呵~~~~
實(shí)現(xiàn)方法有兩種
1、 包含頭文件,其中的具體原因我也不明白,只是知其然不知其所以然
部分源碼

當(dāng)然,有了這些代碼是還不夠的,需要包含
#include<stdio.h>
#include<string.h>
#include<stdarg.h>
#include"math.h"
這些文件,好像也不是需要全部,只是這幾個(gè)我是全部包含了。趕時(shí)間啊那幾天。
有了這些,在主程序中就可以調(diào)用printf函數(shù)來在屏幕中顯示了。當(dāng)然,你也可以更該
Int fput()函數(shù)里面的LCD_Show函數(shù)為串口輸出,這樣就可以利用printf函數(shù)來作為串口電腦屏幕打印了。
2、 另外一種顯示方式,我認(rèn)為是重寫了printf函數(shù)的底層驅(qū)動(dòng),不截圖了 ,直接代碼吧,因?yàn)橐粋(gè)屏幕截圖不完全。
  1. int Printf(const char *fmt, ...)
  2. {
  3.     const char *s;
  4.         u8 *Buf;
  5.     u16 d;
  6.         float f;
  7.     u8 tbuf[16];
  8.         u8 i=0;
  9.     va_list ap;
  10.     va_start(ap, fmt);
  11.         Buf=ShowBuf;
  12.     while (*fmt)
  13.         {
  14.                 for(i=0; i<sizeof(tbuf); i++)
  15.                 tbuf[i]=0;
  16.         if (*fmt != '%')
  17.                 {
  18.             *Buf++=*fmt++;
  19.             continue;
  20.         }
  21.         switch (*++fmt) {
  22.                         //字符串
  23.             case 's':
  24.                 s = va_arg(ap, const char *);
  25.                                 if (s == NULL) {break;}
  26.                 for ( ; *s; s++) {
  27.                     *Buf++=*s;
  28.                 }
  29.                 break;
  30.                         //十進(jìn)制
  31.             case 'd':
  32.                 d = va_arg(ap, int);
  33.                 sprintf(tbuf, "%d",d);
  34.                 for (i=0; tbuf[i]!='\0';i++) {
  35.                     *Buf++=tbuf[i];
  36.                 }
  37.                 break;

  38.                    //十六進(jìn)制
  39.            case 'x':
  40.                 d = va_arg(ap, int);
  41.                 sprintf(tbuf, "%x",d);
  42.                 for (i=0; tbuf[i]!='\0';i++) {
  43.                     *Buf++=tbuf[i];
  44.                 }
  45.                 break;
  46.            case 'f':
  47.                 f = va_arg(ap, double);
  48.                 sprintf(tbuf, "%f",f);
  49.                 for (i=0; tbuf[i]!='\0';i++) {
  50.                     *Buf++=tbuf[i];
  51.                 }
  52.                 break;
  53.             // Add other specifiers here...              
  54.             default:  
  55.                 *Buf++=*fmt++;
  56.                 break;
  57.         }
  58.         fmt++;
  59.     }
  60.         *Buf='\0';
  61.     va_end(ap);
  62.          LCD_Show_c_String(ShowBuf);
  63.     return 1;   // Dummy return value
  64. }
復(fù)制代碼
這些代碼我是參考的另外一個(gè)項(xiàng)目里面的,添加此段代碼之后, 就可以作為顯示的輸出函數(shù)了。
以上兩種方法,更改輸出函數(shù)就可以在1602   12864  TFT2.8 3.5什么的都可以顯示。
好了,就寫這么多吧,這里面的好多代碼我根本不知道什么作用,只是搬過來,可以用了,就沒有理會(huì)他們,哪位同學(xué)有什么好的方法,來找我交流吧。

全部資料51hei下載地址:
printf液晶顯示.doc (38.5 KB, 下載次數(shù): 34)



作者: lzts88    時(shí)間: 2018-6-7 10:43
參考下, 謝謝分享.




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品成人在线 | 国产免费a| 日韩成人在线观看视频 | 国产精品偷拍 | 秋霞av在线 | 国产乱人伦 | 日韩亚洲天堂 | 日本丰满少妇裸体自慰 | 国产乱码精品一区二区三 | 成年女人毛片 | 日本在线视频一区二区 | 日韩少妇 | 国产精品一二三四区 | 日韩精品一二三 | 看黄色大片 | 欧美中文字幕在线观看 | 91精品国产综合久久久蜜臀 | 黄色在线小视频 | 日韩精品一区二区三区免费视频 | 在线成人免费 | 一区二区三区国产精品 | 国产理论在线观看 | 免费的黄色网址 | 四虎影院在线 | 免费一区二区 | h片免费 | 欧美亚洲在线 | 国产精品911 | 在线观看网址你懂的 | 狠狠干夜夜操 | 国产一级片在线 | 中文字幕日本在线 | 欧美日韩综合网 | 天天操夜夜操狠狠操 | 国产精品毛片一区视频播 | 97久久精品人人澡人人爽 | xxxx亚洲| a级成人毛片 | 在线看片a | 亚洲欧美视频在线观看 | 免费三片在线播放 |