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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1958|回復: 7
打印 上一主題 下一主題
收起左側(cè)

單片機數(shù)碼管顯示達不到要求,敬請朋友們幫助,謝謝!

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:86913 發(fā)表于 2019-3-17 12:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
4位數(shù)碼管顯示2019和依次顯示 2、0、1、9 剛剛試過成功了,但是想來個跳檔顯示(先2、后1、再0、最后9)卻搞不好,又想不通。懇請朋友們指導:我這是錯在哪里?謝謝!
這個程序,只能顯示1個“2”(2常亮)


/******  在 2、0、1、9 的排列上,先顯示2、再1、再0、最后9  ******/
/******所用單片機STC12C4052AD******/  
#include <reg51.h>
#define uint  unsigned int        
#define uchar unsigned char
uchar code bit_tab[]={0xfe,0xfd,0xfb,0xf7};    //四位數(shù)碼管位選表
uchar code seg_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};           //數(shù)碼管顯示碼
uchar disp_buf[]={2,0,1,9,};                       //定義顯示,并賦值“2019”
         /******延時函數(shù)*******/
void Delay(uint xms)                                    
{
  uint i,j;
  for(i=xms;i>0;i--)                     
    for(j=110;j>0;j--);      
}
        /******顯示函數(shù)******/
void Display()
{
  uchar tmp;                            //定義顯示暫存
  uchar j;                                 
  tmp=bit_tab[j];             //根據(jù)當前的位選計數(shù)值決定顯示哪只數(shù)碼管
  P3=tmp;                            //送P3控制被選取的數(shù)碼管點亮
  tmp=disp_buf[j];              //根據(jù)當前的位選計數(shù)值查的數(shù)字的顯示碼
  tmp=seg_data[tmp];                    //取顯示碼
  P1=tmp;                            //送到P1口顯示出相應(yīng)的數(shù)字        
  Delay(1000);                            //延時1秒鐘
  P3=0xff;        
  P1=0xff;            
}
         /******主函數(shù)******/
void main()      
{
  uchar j;                              //顯示位選計數(shù)器  
  while(1)
   {        
    j=0;                            //在第一位上顯示2
    Display();                                
    j=2;                            //在第三位上顯示1        
    Display();                                                        
    j=1;                            //在第二位上顯示0
    Display();                                                         
    j=3;                            //在第四位上顯示9
    Display();                                                                  
   }                    
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 4#
ID:234075 發(fā)表于 2019-3-17 22:32 | 只看該作者
你在main()主函數(shù)和Display()顯示函數(shù)中同時定義了變量 j ,而你想把主函數(shù)中的變量 j 的值帶入Display顯示函數(shù)中,這樣做是不行的。
在執(zhí)行main()主函數(shù)中,你對 j 進行了賦值,但在執(zhí)行Display()顯示函數(shù)時,因為你又重新定義了 j ,程序會使用新的未定義的變量 j ,而不是你在主函數(shù)中賦值的 j。
正確的做法應(yīng)該時在函數(shù)初始先定義變量 j ,然后在main()主函數(shù)中進行賦值,在Disaplay()顯示函數(shù)中調(diào)用。

評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

沙發(fā)
ID:387856 發(fā)表于 2019-3-17 18:52 | 只看該作者
/******  在 2、0、1、9 的排列上,先顯示2、再1、再0、最后9  ******/
/******所用單片機STC12C4052AD******/  
#include <reg51.h>
#define uint  unsigned int        
#define uchar unsigned char

uchar k1,j1;  

uchar code bit_tab[]={0x01,0x02,0x04,0x08};    //四位數(shù)碼管位選表
uchar code seg_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};           //數(shù)碼管顯示碼
uchar disp_buf[]={2,0,1,9,};                       //定義顯示,并賦值“2019”
         /******延時函數(shù)*******/
void Delay(uint xms)                                    
{
  uint i,j;
  for(i=xms;i>0;i--)                     
    for(j=110;j>0;j--);      
}
         /******主函數(shù)******/
void main()      
{  
  uint i;                           
  P1 = 0xff;
  P3 = 0xff;
  while(1)
   {   
    for(i=0;i<80;i++)     //  此段顯示的時間
    {                                          //
         P1 = seg_data[2];    //                                            
     P3 = bit_tab[0];     //                           
     Delay(10);           //                 
     P3 = 0x00;                  //
     P1 = 0xff;      
     Delay(2);                          //
        }                                     //    此段顯示2
        for(i=0;i<40;i++)      ///
    {                                                //
         P1 = seg_data[2];     ///                                          
     P3 = bit_tab[0];      ///                          
     Delay(10);             //               
     P3 = 0x00;                   //
     P1 = 0xff;                       //
     Delay(2);                           //
         P1 = seg_data[0];      //                                          
     P3 = bit_tab[1];       //                        
     Delay(10);             //               
     P3 = 0x00;                        //
     P1 = 0xff;                       //
     Delay(2);                                 // 此段顯示0  下同 就不標注了
        }   
        for(i=0;i<20;i++)   
    {
         P1 = seg_data[2];                                                
     P3 = bit_tab[0];                                
     Delay(10);                           
     P3 = 0x00;        
     P1 = 0xff;      
     Delay(2);
         P1 = seg_data[0];                                                
     P3 = bit_tab[1];                                
     Delay(10);                           
     P3 = 0x00;        
     P1 = 0xff;      
     Delay(2);
     P1 = seg_data[1];                                                
     P3 = bit_tab[2];                                
     Delay(10);                           
     P3 = 0x00;        
     P1 = 0xff;      
     Delay(2);
        }  
        while(1)   
    {
         P1 = seg_data[2];                                                
     P3 = bit_tab[0];                                
     Delay(10);                           
     P3 = 0x00;        
     P1 = 0xff;      
     Delay(2);
         P1 = seg_data[0];                                                
     P3 = bit_tab[1];                                
     Delay(10);                           
     P3 = 0x00;        
     P1 = 0xff;      
     Delay(2);
     P1 = seg_data[1];                                                
     P3 = bit_tab[2];                                
     Delay(10);                           
     P3 = 0x00;        
     P1 = 0xff;      
     Delay(2);
     P1 = seg_data[9];                                                
     P3 = bit_tab[3];                                
     Delay(10);                           
     P3 = 0x00;        
     P1 = 0xff;      
     Delay(2);
        }                                                                 
   }                    
}
回復

使用道具 舉報

板凳
ID:466164 發(fā)表于 2019-3-17 19:10 | 只看該作者
你的變量J
void main()
void Display()
同時使用,且是關(guān)聯(lián)的,開個全局變量,估計能解決你的問題。

評分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:387856 發(fā)表于 2019-3-18 09:08 | 只看該作者
我都把程序附上去了 而且是仿真通過的。管理員怎么不給我加分呢。而且其它兩位的回答,我在調(diào)試的過程中就試過的,都是不行的,樓主的程序是有問題的。樓主可以直接復制我的程序在PROTUES里仿真,出來的效果就是 先顯示2再顯示20,再顯示201最后停在顯示2019;
回復

使用道具 舉報

6#
ID:86913 發(fā)表于 2019-3-19 21:16 | 只看該作者
zhb2004xp 發(fā)表于 2019-3-17 22:32
你在main()主函數(shù)和Display()顯示函數(shù)中同時定義了變量 j ,而你想把主函數(shù)中的變量 j 的值帶入Display顯示 ...

謝謝zhb2004xp ,完全是您說的那樣。
回復

使用道具 舉報

7#
ID:86913 發(fā)表于 2019-3-19 21:19 | 只看該作者
7358655 發(fā)表于 2019-3-17 19:10
你的變量J
void main()
void Display()

感謝7358655您的指導,改為全局變量后運行正確!
回復

使用道具 舉報

8#
ID:86913 發(fā)表于 2019-3-19 21:20 | 只看該作者
liuhailan5757 發(fā)表于 2019-3-17 18:52
/******  在 2、0、1、9 的排列上,先顯示2、再1、再0、最后9  ******/
/******所用單片機STC12C4052AD*** ...

謝謝您的關(guān)心、指導,辛苦了!
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人99| 亚洲精品aⅴ | 久久综合一区 | 91视频在线观看 | 国产精品久久久免费 | 二区三区视频 | 999热在线视频 | www.久久.com | 久草.com | 精品一区二区在线观看 | 日韩一区二区精品 | 福利一区视频 | 99小视频 | 亚洲视频一区 | 最新中文字幕第一页视频 | 看av网| 成人午夜电影在线观看 | 欧美精品久久久久 | 成人av免费在线观看 | aa级毛片毛片免费观看久 | 91免费视频 | 亚洲品质自拍视频 | 美女日皮网站 | 日韩精品成人av | 日韩欧美手机在线 | 亚洲精品成人av久久 | 日韩欧美视频在线 | 亚洲一区二区久久 | 国产欧美久久精品 | 亚洲视频免费在线 | 九九综合九九 | 国产精品18毛片一区二区 | 亚卅毛片 | 亚洲精品不卡 | 毛片站| 国产免费视频 | 日韩三级免费观看 | av黄色在线观看 | 妞干网av | 91佛爷在线观看 | 黄色成人免费在线观看 |