亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4970|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)printf函數(shù)液晶顯示方法與步驟

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
很有用的一篇單片機(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)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:341045 發(fā)表于 2018-6-7 10:43 | 只看該作者
參考下, 謝謝分享.
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表