找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请大神帮忙看看,程序和仿真没出错,数码管不亮,单片机的候车大厅人数检测

[复制链接]
跳转到指定楼层
楼主
ID:792691 发表于 2020-6-30 08:47 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5黑币
  1. #include <reg52.h>

  2. #include <intrins.h>#define uchar unsigned char

  3. #define uint unsigned intuint count=0;

  4. uint sudu=0;

  5. uchar time;

  6. uint num;

  7. sbit beep = P3^7;

  8. sbit key1 = P3^5;

  9. sbit key2 = P3^6;

  10. uchar dat[4]={0,1,2,3};uchar table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

  11. void delayms(unsigned int x)

  12. {

  13. unsigned char j;

  14. while(x--)

  15. {

  16. for(j=0;j<123;j++){;}

  17. }

  18. }

  19. void display ()

  20. {

  21. uchar i,dis=0x7f;

  22. for(i=0;i<4;i++)

  23. {

  24. P1=~table[dat[i]];

  25. P0=dis;

  26. dis=(dis>>1)|0x80;

  27. delayms(1);

  28. }

  29. }

  30. void process(uint i)

  31. {

  32. dat[0]=num/10;

  33. dat[1]=num%10;

  34. dat[2]=i/10;

  35. dat[3]=i%10;}

  36. void keyClear(){

  37. if(key1==0)

  38. {

  39. delayms(10);

  40. if(key1==0)

  41. {

  42. count=0;

  43. }

  44. while(!key1)

  45. {

  46. process(count);

  47. display();

  48. };

  49. }

  50. }

  51. void keySet(){

  52. if(key2==0)

  53. {

  54. delayms(10);

  55. if(key2==0)

  56. {

  57. num++;

  58. }

  59. while(!key2)

  60. {

  61. process(count);

  62. display();

  63. };

  64. }

  65. }

  66. void BJ()

  67. {

  68. if(count>=num)

  69. beep=0;

  70. else

  71. beep=1;

  72. }

  73. void main()

  74. {

  75. ET0=1;

  76. IT0=1;

  77. EX0=1;

  78. EA=1;

  79. beep=1;

  80. num=10;

  81. while(1)

  82. {

  83. keyClear();

  84. keySet();

  85. BJ();

  86. process(count);

  87. display();

  88. }

  89. }

  90. void ex0(void) interrupt 0 using 0

  91. {

  92. count++;

  93. }
复制代码

-2771569e7a0fa139.png (102.76 KB, 下载次数: 78)

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

使用道具 举报

沙发
ID:784974 发表于 2020-6-30 10:16 | 只看该作者
没有下载电路图,不好调试,那个程序有一部分是斜体。
仅提供一下我觉得可能存在的问题:显示部分的子程序P0口和P1口是不是写反了?
希望有所帮助,如有错误请指正,谢谢
回复

使用道具 举报

板凳
ID:792691 发表于 2020-6-30 12:58 来自手机 | 只看该作者
嘿黑潶嗨 发表于 2020-6-30 10:16
没有下载电路图,不好调试,那个程序有一部分是斜体。
仅提供一下我觉得可能存在的问题:显示部分的子程序 ...

您好,方便加一下联系方式吗
回复

使用道具 举报

地板
ID:342822 发表于 2020-6-30 14:13 | 只看该作者
第2第3明显错误
#include <intrins.h>#define uchar unsigned char
#include <intrins.h>
#define uchar unsigned char

#define uint unsigned intuint count=0;
#define uint unsigned int;
uint count=0;
其他好好检查吧
回复

使用道具 举报

5#
ID:792691 发表于 2020-6-30 14:21 来自手机 | 只看该作者
taotie 发表于 2020-6-30 14:13
第2第3明显错误
#include #define uchar unsigned char
#include

请问如何修改
回复

使用道具 举报

6#
ID:739545 发表于 2020-6-30 16:44 | 只看该作者
#define uint unsigned intuint count=0;这个应该是编译不过的,所以不知道你是怎么下载进程序的,分两行写#define uint unsigned int
      uint count=0;
回复

使用道具 举报

7#
ID:213173 发表于 2020-6-30 21:26 | 只看该作者
按楼主的程序和意图重新组织了基础框架,可以实现基本功能,如果想要用于实战,软硬件还需要进一步完善。
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit key1 = P3^4;
  6. sbit key2 = P3^5;
  7. sbit key3 = P3^6;
  8. sbit beep = P3^7;

  9. uint count=0;
  10. uint num;
  11. uchar table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  12. uchar dat[4];

  13. void delayms(unsigned int x)
  14. {
  15.         unsigned char j;
  16.         while(x--)
  17.         {
  18.                 for(j=0;j<123;j++);
  19.         }
  20. }

  21. void display()
  22. {
  23.         static uchar i=0;
  24.         P2&=0xf0;
  25.         P0=dat[i];
  26.         P2|=0x01<<i;
  27.         i++;
  28.         i%=4;
  29. }
  30. void process(uint i)
  31. {
  32.         dat[0]=table[num/10];
  33.         dat[1]=table[num%10];
  34.         dat[2]=table[i/10];
  35.         dat[3]=table[i%10];
  36. }

  37. void keyscan()
  38. {
  39.         static uchar i=0;

  40.         if(!key1||!key2||!key3)
  41.         {
  42.                 i++;
  43.                 if(i>10)//消抖
  44.                         i=11;//防止溢出
  45.                 if(i==10)
  46.                 {
  47.                         if(!key1)
  48.                                 count=0;
  49.                         if(!key2)
  50.                                 num++;
  51.                         if(!key3)
  52.                                 num--;
  53.                 }
  54.         }
  55.         else i=0;
  56. }

  57. void BJ()
  58. {
  59.         if(count>=num)
  60.                 TR0=1;
  61.         else
  62.         {
  63.                 TR0=0;
  64.                 beep=1;
  65.         }
  66. }

  67. void main()
  68. {
  69.         TMOD|=0x02;                //设置定时器模式
  70.         TL0 = 0x06;                //设置定时初值
  71.         TH0 = 0x06;                //设置定时重载值
  72. //        TR0 = 1;                        //定时器0开始计时
  73.         ET0=1;
  74.         IT0=1;
  75.         EX0=1;
  76.         EA=1;
  77.         beep=1;
  78.         num=10;
  79.         while(1)
  80.         {
  81.                 keyscan();
  82.                 BJ();
  83.                 process(count);
  84.                 display();
  85.                 delayms(1);
  86.         }
  87. }
  88. void et0(void) interrupt 1
  89. {
  90.         beep=~beep;
  91. }
  92. void ex0(void) interrupt 0 using 0
  93. {
  94.         count++;
  95. }
复制代码






回复

使用道具 举报

8#
ID:792691 发表于 2020-7-1 15:46 来自手机 | 只看该作者
wulin 发表于 2020-6-30 21:26
按楼主的程序和意图重新组织了基础框架,可以实现基本功能,如果想要用于实战,软硬件还需要进一步完善。
...

太感谢了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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