找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机程序写进去数码管cdg这几段不亮

[复制链接]
回帖奖励 1 黑币 回复本帖可获得 1 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:906597 发表于 2021-10-18 20:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
另附pcb与原理图
没有找出原因来,程序写进去数码管cdg这几段不亮。
然后发送段码是P1口的0到5还剩2个口是P42和P43。

程序
  1. #define MAIN_Fosc                11059200L        //定义主时钟
  2. #include        "15W4KxxS4.H"

  3. #define  u8    unsigned char
  4. #define  u16   unsigned int

  5. sbit A=P2^5;
  6. sbit S=P2^6;
  7. sbit C=P2^7;


  8. u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  9.                                         0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};


  10. void delay(u16 i)
  11. {
  12.         while(i--);        
  13. }


  14. void DigDisplay()                                                                                    
  15. {
  16.         u8 i;
  17.         for(i=0;i<8;i++)
  18.         {
  19.                 switch(i)         //位选,选择点亮的数码管,
  20.                 {
  21.                    case(0):
  22.                                 A=1;S=1;C=1; break;//显示第0位         
  23.                         case(1):
  24.                                 A=0;S=1;C=1; break;//显示第1位                          
  25.                         case(2):
  26.                                 A=1;S=0;C=1; break;//显示第2位                          
  27.                         case(3):        
  28.                                 A=0;S=0;C=1; break;//显示第3位                          
  29.                         case(4):
  30.                                 A=1;S=1;C=0; break;//显示第4位                          
  31.                         case(5):
  32.                                 A=0;S=1;C=0; break;//显示第5位                          
  33.                         case(6):
  34.                                 A=1;S=0;C=0; break;//显示第6位                          
  35.                         case(7):
  36.                                 A=0;S=0;C=0; break;//显示第7位                          
  37.                 }
  38.                 P1=smgduan[ i];//发送段码
  39.                 delay(100); //间隔一段时间扫描        
  40.                 P1=0x00;//消隐
  41.         }
  42. }



  43. mian()
  44. {
  45.         P2M1=0X1F;                  P2M0=0X1F;
  46.         while(1)
  47.         {        
  48.                 DigDisplay();  //数码管显示函数        
  49.         }               



  50. }
复制代码

数码管0到7
  1. #define MAIN_Fosc                11059200L        //定义主时钟
  2. #include        "15W4KxxS4.H"

  3. #define  u8    unsigned char
  4. #define  u16   unsigned int

  5. //#define P4 0X0C
  6. sbit A=P2^5;
  7. sbit S=P2^6;
  8. sbit C=P2^7;
  9. //#define P42 P16
  10. //#define P43 P17
  11. sbit H=P4^2;
  12. sbit D=P4^3;                //点
  13. //                                          4           5        6         7           0   1        2         3
  14. u8 code smgduan[8]={0x66,0x6d,0x7d,0x07,0x3f,0x06,0x5b,0x4f};
  15.                                 

  16. u16 code smgd[8]={0x01,0x01,0x01,0x00,0x00,0x00,0x01,0x01};

  17. void delay(u16 i)
  18. {
  19.         while(i--);        
  20. }


  21. void DigDisplay()                                                                                    
  22. {
  23.         u8 i;
  24.         for(i=0;i<8;i++)
  25.         {
  26.                 switch(i)         //位选,选择点亮的数码管,
  27.                 {
  28.                     case(0):
  29.                                 A=1;S=1;C=1; break;//显示第0位          从左往右进制计算7
  30.                         case(1):
  31.                                 A=0;S=1;C=1; break;//显示第1位                          6
  32.                         case(2):
  33.                                 A=1;S=0;C=1; break;//显示第2位                          5
  34.                         case(3):        
  35.                                 A=0;S=0;C=1; break;//显示第3位                          4
  36.                         case(4):
  37.                                 A=1;S=1;C=0; break;//显示第4位                          3
  38.                         case(5):
  39.                                 A=0;S=1;C=0; break;//显示第5位                          2
  40.                         case(6):
  41.                                 A=1;S=0;C=0; break;//显示第6位                          1
  42.                         case(7):
  43.                                 A=0;S=0;C=0; break;//显示第7位                          0
  44.                 }
  45.                
  46.                 P1=smgduan[i];//发送段码           
  47.             H=smgd[i];               
  48.                 delay(100); //间隔一段时间扫描        
  49.                 P1=0x00;//消隐、
  50.                 H=0X00;        
  51.         }
  52. }

  53. main()
  54. {
  55.         P2M1=0X1F;                  P2M0=0X1F;
  56.         P1M1=0X00;       P1M0=0X00;
  57.         P4M1=0X00;       P4M0=0X00;
  58.             
  59.         while(1)
  60.         {        
  61.                 D=0;
  62.         
  63.                 //delay(100);
  64.                 DigDisplay();
  65.         }               



  66. }
复制代码

pcb原理图.zip

728.63 KB, 下载次数: 6

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

使用道具 举报

沙发
ID:213173 发表于 2021-10-19 06:29 | 只看该作者
你明知段码是P1口的0到5还剩2个口是P42和P43。还写 P1=smgduan[ i];//发送段码,当然笔画不全。给你一个示例,其中处理不同组端口的方法同样适合数码管。 矩阵键盘4×4异组非顺序端口读写 仿真.zip (67.15 KB, 下载次数: 5)

回复

使用道具 举报

板凳
ID:906597 发表于 2021-10-19 09:45 | 只看该作者
main写错了,但是数码管还是显示不全,我觉得是因为P42和43的问题,但是试了一下好像还是不行
回复

使用道具 举报

地板
ID:401564 发表于 2021-10-19 11:37 | 只看该作者
把输出端口输出高电平试一下不就知道了
不要用数组,直接 P1=255;
再把另外两个IO也输出高电平
这不就找出问题来了?
段码输出不在用一个端口,你是怎么让另外两个输出呢?
回复

使用道具 举报

5#
ID:906597 发表于 2021-10-20 08:22 | 只看该作者
wulin 发表于 2021-10-19 06:29
你明知段码是P1口的0到5还剩2个口是P42和P43。还写 P1=smgduan[ i];//发送段码,当然笔画不全。给你一个示 ...

好的我试试
回复

使用道具 举报

6#
ID:906597 发表于 2021-10-20 08:24 | 只看该作者
Y_G_G 发表于 2021-10-19 11:37
把输出端口输出高电平试一下不就知道了
不要用数组,直接 P1=255;
再把另外两个IO也输出高电平

谢谢指教!
回复

使用道具 举报

7#
ID:319023 发表于 2021-10-20 08:55 | 只看该作者
初学单片机 还是要多看人家的成熟代码, 多去悟才好啊
回复

使用道具 举报

8#
ID:906597 发表于 2021-10-24 10:01 | 只看该作者
问题找到了,245芯片有2个脚没有焊好,然后是写了一个数码管显示0到7的程序
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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