找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4099|回復: 10
收起左側

怎么顯示9-F,只知道0-7,在哪里修改啊大神

  [復制鏈接]
ID:207702 發(fā)表于 2017-6-24 22:41 | 顯示全部樓層 |閱讀模式
/**************************************************************************************
*                動態(tài)數碼管顯示實驗              *
實現現象:下載程序后數碼管從右至左顯示0-7。
注意事項:如果不想讓點陣模塊顯示,可以將74HC595模塊上的JP595短接片拔掉。                     
***************************************************************************************/
#include "reg52.h"    //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16;   //對數據類型進行聲明定義
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
     0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
/*******************************************************************************
* 函 數 名         : delay
* 函數功能     : 延時函數,i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 數 名         : DigDisplay
* 函數功能     : 數碼管動態(tài)掃描函數,循環(huán)掃描8個數碼管顯示
*******************************************************************************/
void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
  switch(i)  //位選,選擇點亮的數碼管,
  {
   case(0):
    LSA=0;LSB=0;LSC=0; break;//顯示第0位
   case(1):
    LSA=1;LSB=0;LSC=0; break;//顯示第1位
   case(2):
    LSA=0;LSB=1;LSC=0; break;//顯示第2位
   case(3):
    LSA=1;LSB=1;LSC=0; break;//顯示第3位
   case(4):
    LSA=0;LSB=0;LSC=1; break;//顯示第4位
   case(5):
    LSA=1;LSB=0;LSC=1; break;//顯示第5位
   case(6):
    LSA=0;LSB=1;LSC=1; break;//顯示第6位
   case(7):
    LSA=1;LSB=1;LSC=1; break;//顯示第7位
  }
  P0=smgduan[i];//發(fā)送段碼
  delay(100); //間隔一段時間掃描
  P0=0x00;//消隱
}
}
/*******************************************************************************
* 函 數 名       : main
* 函數功能   : 主函數
* 輸    入       : 無
* 輸    出      : 無
*******************************************************************************/
void main()
{
while(1)
{
  DigDisplay();  //數碼管顯示函數
}  
}

回復

使用道具 舉報

ID:192523 發(fā)表于 2017-6-25 01:52 | 顯示全部樓層
因為你的for語句中的i最大是7,而數組顯示8到f需要i為8到15,所以你無法顯示,把i<8改成i<16就好了,希望對你有幫助
回復

使用道具 舉報

ID:123289 發(fā)表于 2017-6-25 02:07 | 顯示全部樓層
"只知道0-7"???
你一定不知道顯示“0-7”的原理,否則怎么會不知道“9-F”呢?
回復

使用道具 舉報

ID:214373 發(fā)表于 2017-6-25 03:03 | 顯示全部樓層
smgduan(i+9)
回復

使用道具 舉報

ID:34643 發(fā)表于 2017-6-25 06:59 | 顯示全部樓層
把這句:for(i=0;i<8;i++)
{

改成:for(i=0;i<16;i++)
{
回復

使用道具 舉報

ID:149451 發(fā)表于 2017-6-25 07:02 | 顯示全部樓層
試試下面的,增加一位是嗎?

  1. /**************************************************************************************
  2. *                動態(tài)數碼管顯示實驗              *
  3. 實現現象:下載程序后數碼管從右至左顯示0-F。
  4. 注意事項:如果不想讓點陣模塊顯示,可以將74HC595模塊上的JP595短接片拔掉。                     
  5. ***************************************************************************************/
  6. #include "reg52.h"    //此文件中定義了單片機的一些特殊功能寄存器
  7. typedef unsigned int u16;   //對數據類型進行聲明定義
  8. typedef unsigned char u8;
  9. sbit LSA=P2^2;
  10. sbit LSB=P2^3;
  11. sbit LSC=P2^4;

  12. sbit LSD=P2^5;

  13. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  14.       0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
  15. /*******************************************************************************
  16. * 函 數 名         : delay
  17. * 函數功能     : 延時函數,i=1時,大約延時10us
  18. *******************************************************************************/
  19. void delay(u16 i)
  20. {
  21. while(i--);
  22. }
  23. /*******************************************************************************
  24. * 函 數 名         : DigDisplay
  25. * 函數功能     : 數碼管動態(tài)掃描函數,循環(huán)掃描16個數碼管顯示
  26. *******************************************************************************/
  27. void DigDisplay()
  28. {
  29. u8 i;
  30. for(i=0;i<16;i++)
  31. {
  32.    switch(i)  //位選,選擇點亮的數碼管,
  33.   {
  34.     case(0):
  35.      LSA=0;LSB=0;LSC=0;LSD=0; break;//顯示第0位
  36.    case(1):
  37.      LSA=1;LSB=0;LSC=0;LSD=0; break;//顯示第1位
  38.    case(2):
  39.      LSA=0;LSB=1;LSC=0;LSD=0; break;//顯示第2位
  40.    case(3):
  41.      LSA=1;LSB=1;LSC=0;LSD=0; break;//顯示第3位
  42.    case(4):
  43.      LSA=0;LSB=0;LSC=1;LSD=0; break;//顯示第4位
  44.    case(5):
  45.      LSA=1;LSB=0;LSC=1;LSD=0; break;//顯示第5位
  46.    case(6):
  47.      LSA=0;LSB=1;LSC=1;LSD=0; break;//顯示第6位
  48.    case(7):
  49.      LSA=1;LSB=1;LSC=1;LSD=0; break;//顯示第7位

  50. case(8):
  51.      LSA=0;LSB=0;LSC=0;LSD=1; break;//顯示第8位
  52.    case(9):
  53.      LSA=1;LSB=0;LSC=0;LSD=1; break;//顯示第9位
  54.    case(10):
  55.      LSA=0;LSB=1;LSC=0;LSD=1; break;//顯示第A位
  56.    case(11):
  57.      LSA=1;LSB=1;LSC=0;LSD=1; break;//顯示第B位
  58.    case(12):
  59.      LSA=0;LSB=0;LSC=1;LSD=1; break;//顯示第C位
  60.    case(13):
  61.      LSA=1;LSB=0;LSC=1;LSD=1; break;//顯示第D位
  62.    case(14):
  63.      LSA=0;LSB=1;LSC=1;LSD=1; break;//顯示第E位
  64.    case(15):
  65.      LSA=1;LSB=1;LSC=1;LSD=1; break;//顯示第F位

  66.   }
  67.    P0=smgduan[i];//發(fā)送段碼
  68.   delay(100); //間隔一段時間掃描
  69.   P0=0x00;//消隱
  70. }
  71. }
  72. /*******************************************************************************
  73. * 函 數 名       : main
  74. * 函數功能   : 主函數
  75. * 輸    入       : 無
  76. * 輸    出      : 無
  77. *******************************************************************************/
  78. void main()
  79. {
  80. while(1)
  81. {
  82.    DigDisplay();  //數碼管顯示函數
  83. }  
  84. }
復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:207702 發(fā)表于 2017-6-25 08:11 | 顯示全部樓層
桂木桂馬 發(fā)表于 2017-6-25 01:52
因為你的for語句中的i最大是7,而數組顯示8到f需要i為8到15,所以你無法顯示,把i

這個試了一下沒用顯示12345678
回復

使用道具 舉報

ID:207702 發(fā)表于 2017-6-25 08:14 | 顯示全部樓層

大神你是對的,后面加數字加幾就在0的基礎上向后加幾+9 就從9-F 加1就從1-8 ,51黑太厲害了小白都能便明白
回復

使用道具 舉報

ID:179958 發(fā)表于 2017-6-25 09:24 | 顯示全部樓層
段碼表里有0-F的段碼了,在動態(tài)掃描函數的switch里面添加9-F先
回復

使用道具 舉報

ID:214554 發(fā)表于 2017-6-25 21:52 | 顯示全部樓層
問問大神們,看看有懂得嗎?
回復

使用道具 舉報

ID:214838 發(fā)表于 2017-6-26 16:50 | 顯示全部樓層
碼表里有0-F的段碼了,在動態(tài)掃描函數的switch里面添加9-F先
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表