|
請教各位大佬,這是顯示0·9999的代碼,如圖所示,請問怎么修改才能實(shí)現(xiàn)“當(dāng)數(shù)字為一位數(shù)時(shí)不顯示前面的三個(gè)0,當(dāng)數(shù)字為兩位數(shù)時(shí)不顯示前面的三個(gè)0”以此類推。。
單片機(jī)源程序如下:
- /***************************************************************************
- 標(biāo)題: 數(shù)碼管的顯示
- 實(shí)驗(yàn)板:LY51-L2B開發(fā)板
- 作者: 林洋電子-單片機(jī)
- 客服QQ:52927029
- 郵箱: 52927029@qq.com
- 說明: 顯示00-99,動(dòng)態(tài)顯示+變化顯示
- ******************************************************************************/
- //頭文件:
- #include <reg52.h>
- //引腳定義:
- sbit SMG_q = P0^0; //定義數(shù)碼管陽級控制腳(千位)
- sbit SMG_b = P0^1; //定義數(shù)碼管陽級控制腳(百位)
- sbit SMG_s = P0^2; //定義數(shù)碼管陽級控制腳(十位)
- sbit SMG_g = P0^3; //定義數(shù)碼管陽級控制腳(個(gè)位)
- //變量定義:
- unsigned char table[]=
- {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- //表:共陽數(shù)碼管 0-9
- //函數(shù)聲明:
- void display(unsigned char da);//定義顯示函數(shù),參數(shù)為顯示內(nèi)容,只顯示兩位數(shù)
- void delay(void);
- //主函數(shù),C語言的入口函數(shù):
- void main(void)
- {
- unsigned char i=0; //作為查表的索引號
- unsigned char ldata; //變量用作0~99計(jì)數(shù)
- unsigned int j; //此變量作為計(jì)數(shù)跳變刷新時(shí)間
- while(1)
- {
- j=500;
- while(j--){
- display(ldata); //刷新5000次,約1秒,注:在C語言里是沒有周期可計(jì)算的哦~~~
- }
- if(ldata<99)
- ldata++; //刷新完成約1秒,變量做加計(jì)數(shù)
- else
- ldata=0;
- }
- }
- //顯示函數(shù),參數(shù)為顯示內(nèi)容,只顯示兩位數(shù)
- void display(unsigned char da)
- {
- SMG_q=0; //選擇千位數(shù)碼管
- P2=table[da/1000%100]; //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
- delay(); //延時(shí)
- P2=0XFF; //清除數(shù)碼管顯示,因是共陽型,所以不是0
- SMG_q=1; //關(guān)閉千位數(shù)碼管
- SMG_b=0; //選擇百位數(shù)碼管
- P2=table[da/100%10]; //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
- delay(); //延時(shí)
- P2=0XFF; //清除數(shù)碼管顯示,因是共陽型,所以不是0
- SMG_b=1; //關(guān)閉百位數(shù)碼管
- SMG_s=0; //選擇十位數(shù)碼管
- P2=table[da/10]; //獲取十位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
- delay(); //延時(shí)
- P2=0XFF; //清除數(shù)碼管顯示,因是共陽型,所以不是0
- SMG_s=1; //關(guān)閉十位數(shù)碼管
- SMG_g=0; //選擇個(gè)位數(shù)碼管
- P2=table[da%10]; //獲取個(gè)位值,查表輸出定義好的數(shù)碼管段值與P2口,顯示相應(yīng)的0-9
- delay(); //延時(shí)
- P2=0XFF; //清除數(shù)碼管顯示,因是共陽型,所以不是0
- SMG_g=1; //關(guān)閉個(gè)位數(shù)碼管
- }
- //延時(shí)子函數(shù),短暫延時(shí)
- void delay(void){
- unsigned char i=10;
- while(i--);
- }
復(fù)制代碼
|
|