找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3117|回复: 10
打印 上一主题 下一主题
收起左侧

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

  [复制链接]
跳转到指定楼层
楼主
ID:207702 发表于 2017-6-24 22:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**************************************************************************************
*                动态数码管显示实验              *
实现现象:下载程序后数码管从右至左显示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
* 函数功能     : 数码管动态扫描函数,循环扫描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];//发送段码
  delay(100); //间隔一段时间扫描
  P0=0x00;//消隐
}
}
/*******************************************************************************
* 函 数 名       : main
* 函数功能   : 主函数
* 输    入       : 无
* 输    出      : 无
*******************************************************************************/
void main()
{
while(1)
{
  DigDisplay();  //数码管显示函数
}  
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:192523 发表于 2017-6-25 01:52 | 只看该作者
因为你的for语句中的i最大是7,而数组显示8到f需要i为8到15,所以你无法显示,把i<8改成i<16就好了,希望对你有帮助
回复

使用道具 举报

板凳
ID:123289 发表于 2017-6-25 02:07 | 只看该作者
"只知道0-7"???
你一定不知道显示“0-7”的原理,否则怎么会不知道“9-F”呢?
回复

使用道具 举报

地板
ID:214373 发表于 2017-6-25 03:03 | 只看该作者
smgduan(i+9)
回复

使用道具 举报

5#
ID:34643 发表于 2017-6-25 06:59 | 只看该作者
把这句:for(i=0;i<8;i++)
{

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

使用道具 举报

6#
ID:149451 发表于 2017-6-25 07:02 | 只看该作者
试试下面的,增加一位是吗?

  1. /**************************************************************************************
  2. *                动态数码管显示实验              *
  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. * 函数功能     : 数码管动态扫描函数,循环扫描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];//发送段码
  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 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:207702 发表于 2017-6-25 08:11 | 只看该作者
桂木桂马 发表于 2017-6-25 01:52
因为你的for语句中的i最大是7,而数组显示8到f需要i为8到15,所以你无法显示,把i

这个试了一下没用显示12345678
回复

使用道具 举报

8#
ID:207702 发表于 2017-6-25 08:14 | 只看该作者

大神你是对的,后面加数字加几就在0的基础上向后加几+9 就从9-F 加1就从1-8 ,51黑太厉害了小白都能便明白
回复

使用道具 举报

9#
ID:179958 发表于 2017-6-25 09:24 | 只看该作者
段码表里有0-F的段码了,在动态扫描函数的switch里面添加9-F先
回复

使用道具 举报

10#
ID:214554 发表于 2017-6-25 21:52 | 只看该作者
问问大神们,看看有懂得吗?
回复

使用道具 举报

11#
ID:214838 发表于 2017-6-26 16:50 | 只看该作者
码表里有0-F的段码了,在动态扫描函数的switch里面添加9-F先
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表