找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求大神解决单片机问题,小白一个

[复制链接]
跳转到指定楼层
楼主
ID:93185 发表于 2015-10-21 23:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想要实现数码管从1显示到9每隔一秒显示,程序和电路如图,程序编译成功,但就是实现不了功能

V40[P03BX%_$1ES_23})SQJ.png (27.62 KB, 下载次数: 75)

V40[P03BX%_$1ES_23})SQJ.png

OP]H37}E0WV}OLOO[~[[2XQ.png (16.92 KB, 下载次数: 73)

OP]H37}E0WV}OLOO[~[[2XQ.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:79544 发表于 2015-10-22 08:37 | 只看该作者
数码管的段码对吗?位要加三极管驱动,要不就要把IO写成强推挽输出。
回复

使用道具 举报

板凳
ID:79544 发表于 2015-10-22 08:40 | 只看该作者
这个程序你试试
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define p0 =p0
  6. #define p1 =p1
  7. #define p3 =p3
  8. uchar temp ,aa,num;
  9. sbit wela=P3^6;
  10. sbit dula=P1^4;
  11.                                         //带小数点段编码
  12. uchar code dianduma[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,
  13.                                         0x78,0x00,0x10};         
  14. //共阳段码
  15. uchar code table[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
  16.                                         0x82,0xf8,0x80,0x90,0x88,0x83,
  17.                                         0xc6,0xa1,0x86,0x8e,0x89,0x8c};
  18. //位码
  19. uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xfb};
  20. void delay(uint z);
  21. void main()
  22. {  
  23.         num=0;
  24.         aa=0;
  25.         TMOD=0x01;
  26.         TH0=(65536-50000)/256;//初值
  27.         TL0=(65536-50000)%256;
  28.         EA=1;//总中断
  29.         ET0=1;//开外中断0
  30.         TR0=1;//开定时器
  31.         temp=0xfe;
  32.         P0=temp;
  33.         P1=0;
  34.         while(1)
  35.         {
  36.        
  37.                 delay(1000);
  38.             temp=_crol_(temp,1);//流水灯库函数
  39.             P0=temp;
  40.        
  41.         }               
  42. }

  43. void delay(uint z)//延时函数
  44. {
  45.         uint x,y;
  46.         for(x=z;x>0;x--)
  47.         for(y=120;y>0;y--);
  48. }
  49. void timer0() interrupt 1//中断函数
  50.         {
  51.                 TH0=(65536-50000)/256;
  52.                 TL0=(65536-50000)%256;
  53.                 aa++;
  54.                 if(aa==20)
  55.                 {
  56.                         aa=0;
  57.                         num++;
  58.                     if(num==17)
  59.                         num=0;
  60.                         P0=table[num];
  61.                 }
  62.         }
复制代码
回复

使用道具 举报

地板
ID:79544 发表于 2015-10-22 08:44 | 只看该作者
没有初始中断TNOD=0X01;EA=1;TR0=1;ET0=1;

评分

参与人数 1威望 +6 黑币 +6 收起 理由
aybco + 6 + 6 赞一个!

查看全部评分

回复

使用道具 举报

5#
ID:93224 发表于 2015-10-22 14:59 来自手机 | 只看该作者
把楼上的流水灯程序去掉即可!
回复

使用道具 举报

6#
ID:93224 发表于 2015-10-22 15:01 来自手机 | 只看该作者
也可以用延时函数
回复

使用道具 举报

7#
ID:93237 发表于 2015-10-22 15:52 | 只看该作者
仿真是没有问题的。
回复

使用道具 举报

8#
ID:19198 发表于 2015-10-22 16:09 来自手机 | 只看该作者
一般的51芯片适合灌入电流,所以一般用共阳的LED
回复

使用道具 举报

9#
ID:93246 发表于 2015-10-22 16:58 | 只看该作者
太强悍了 !~!还能自己编写驱动,。,,,学习ixa!
回复

使用道具 举报

10#
ID:58502 发表于 2015-10-22 19:09 | 只看该作者
while(1);这多了个号
回复

使用道具 举报

11#
ID:93265 发表于 2015-10-22 19:44 | 只看该作者
第30行不是TII而是TH,定时计数器高八位
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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