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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LCD1602想寫一個能四舍五入保留2位小數(shù)的函數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:210889 發(fā)表于 2017-6-22 01:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
新人學(xué)習(xí)到了LCD1602部分,參照了例子想寫一個 display_number()函數(shù),效果是輸入一個數(shù)(可以包含小數(shù)),在LCD上顯示保留兩位小數(shù)例如輸入123,顯示123.00,輸入123.123,顯示123.12.   理想的程序中想法思路是輸入的數(shù)(相當于一個未知數(shù),不知道它是4位數(shù)還是5位數(shù)),將其的各個位數(shù)的值分別存入到一個數(shù)組當中,然后在倒數(shù)第三位上添加 “ 。”小數(shù)點, 然后再在main函數(shù)中顯示出來。 可是小弟想了很久不知道怎么實現(xiàn)(太笨了)  下貼程序(是一個很蠢的,而且也不完善的實現(xiàn)方法)。



#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code first[]="The Value X";
uchar code second[]="X=";
unsigned char shu[20];

sbit rs=P0^7;
sbit rw=P0^6;
sbit en=P0^5;


/*********普通延時********/
void delay(uint t)
{
uint x,y;
for(x=t;x>0;x--)
  for(y=110;y>0;y--);
}

/*********寫命令函數(shù)******/
void lcd_wcom(uchar com)
{
rs = 0;  //選擇 指令寄存器
rw = 0;//  寫
P2 = com;  // 將命令送入P2
delay(5);
en = 1;
en = 0;
}
/*********寫數(shù)據(jù)函數(shù)*****/
void lcd_wdat(uchar dat)
{
   rs = 1; //選擇數(shù)據(jù)寄存器
   rw = 0; // 寫
   P2 = dat; // 送入P2
   delay(5);
   en = 1;
   en = 0;
}
/*********LCD初始化******/
void lcd_initial()
{
  lcd_wcom(0x38); // 8位數(shù)據(jù),雙列 5*7 字形
  delay(1);
  lcd_wcom(0x0c); //  開啟顯示屏,關(guān)光標(不閃爍)
  delay(1);
  lcd_wcom(0x06); //沒寫一個數(shù)據(jù),光標右移一位
  delay(1);
  lcd_wcom(0x01); //最后清屏
}
/*******數(shù)據(jù)顯示地址函數(shù)***/

void lcd_pos(uchar pos)
{
  lcd_wcom(pos|0x80);
}

/*******保留兩位小數(shù)******/                 ///就是這里不知道怎么實現(xiàn)我理想的效果!!!
void display_number(unsigned t,unsigned char *str,unsigned z)
{
  unsigned  char a[5];   char i, j;                                        
        a[0]=(t/10000)%10;         //取得整數(shù)值到數(shù)組                
        a[1]=(t/1000)%10;                                            
        a[2]=(t/100)%10;                                              //有沒有方法可以實現(xiàn)在不知道輸入的數(shù)是多少位數(shù)的前提下將其各個位的數(shù)分出來????
        a[3]=(t/10)%10;                                              
        a[4]=(t/1)%10;                                               

        for(i=0; i<5; i++)         //轉(zhuǎn)成ASCII碼                     
                a[i]=a[i]+'0';                                           
        for(i=0; a[i]=='0' && i<=3; i++);                                                            
        for(; i<5; i++)                                              
                { *str=a[i]; str++; }  //加入有效的數(shù)字                  
        //*str='\0';
}




/*********主函數(shù)***********/
void main()
{
  uchar n = 0,m = 0,k=0;
  lcd_initial();
  delay(10);
  lcd_pos(0);
  for(n=0;n<11;n++)
   {
     lcd_wdat(first[n]);
   }
   lcd_pos(0x40);
   for(m=0;m<2;m++)
     {
           lcd_wdat(second[m]);
         }
        lcd_pos(0x42);
//         lcd_wdat(0x2E);


   display_number(12345,&shu[0],5);
/*        for( k=0;k<5;k++)
         {
           lcd_wdat(shu[k]);
           }   */
         lcd_wdat(shu[0]);
         lcd_wdat(shu[1]);       
         lcd_wdat(shu[2]);                                               //我暫時只想到這么蠢的方法去實現(xiàn)小數(shù)點的顯示
         lcd_wdat(0x2e);// 小數(shù)點
         lcd_wdat(shu[3]);
         lcd_wdat(shu[4]);
         while(1);
}





希望論壇大哥幫忙解答一下
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:82765 發(fā)表于 2017-6-22 06:04 | 只看該作者

回帖獎勵 +10

提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

板凳
ID:123289 發(fā)表于 2017-6-22 07:19 | 只看該作者
很簡單,輸入數(shù)字以后再做一個加法:+0.005,就行了!
設(shè)輸入為:ABC.DEFG,則做ABCDEFG+0000050(不管小數(shù)點,但以小數(shù)點對 位),完成后只顯示至小數(shù)點后兩位就可以了。
回復(fù)

使用道具 舉報

地板
ID:210889 發(fā)表于 2017-6-22 09:33 | 只看該作者
yzwzfyz 發(fā)表于 2017-6-22 07:19
很簡單,輸入數(shù)字以后再做一個加法:+0.005,就行了!
設(shè)輸入為:ABC.DEFG,則做ABCDEFG+0000050(不管小 ...

換成程序語言就是 輸入123.123, display_number(double 123.123)
然后作123.123*1000+5運算, 顯示的話是不是直接lcd_wdat(輸入+0x30)?語言上怎么具體實現(xiàn)只顯示小數(shù)后兩位? 剛?cè)腴T,很多不是很清楚,望諒解
回復(fù)

使用道具 舉報

5#
ID:210889 發(fā)表于 2017-6-22 09:46 | 只看該作者
cjjcjj1 發(fā)表于 2017-6-22 06:04
通過你輸入的 “.” 來記錄后面的小數(shù)位數(shù)

不知道在display_number函數(shù)具體怎么實現(xiàn)
回復(fù)

使用道具 舉報

6#
ID:210889 發(fā)表于 2017-6-22 17:16 | 只看該作者
,到現(xiàn)在還達不到目的效果
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品久久久久久久久久久久久久久久久 | 色综久久 | 天天天操操操 | 国产一级片av | 成人国产在线视频 | 福利网站在线观看 | 精精国产xxxx视频在线野外 | 久久精品亚洲欧美日韩精品中文字幕 | 毛片一级片 | 91精品国产欧美一区二区成人 | 国产精品视频一区二区三区 | 国产一级毛片精品完整视频版 | 黄色av网站在线观看 | 91视频一区二区 | 日韩欧美一区二区三区四区 | 西西裸体做爰视频 | 大乳boobs巨大吃奶挤奶 | 91精品一区二区 | 日韩av第一页 | 欧美 中文字幕 | 国产精品久久免费观看 | 久久精品一区二区 | 久久久成人一区二区免费影院 | 久久久成人免费一区二区 | 久久久久久国产一区二区三区 | 精品日韩在线 | 天天色影视综合 | 国产精品一区二区三区在线 | 日韩福利片 | 中文字幕不卡一区 | 国产精品1区2区3区 国产在线观看一区 | 国产中文字幕在线观看 | 黄色网络在线观看 | 午夜精品视频 | 夜夜骑天天干 | 一级欧美 | 国产精品久久久久久久久久久免费看 | www久久av| 久久精品视频网站 | 91精品一区 | 在线免费观看黄视频 |