找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我想寻找单片机数数的完美解决方案

[复制链接]
跳转到指定楼层
楼主
ID:17979 发表于 2009-11-11 18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

      我是一个大三的学生,刚学单片机:自己的实验板有5个数码管,我想实现计数(数数)的功能,就是说个位开始数0-9(其他位不点亮),然后进位十位点亮,一直这样直到99999. 可是,这个程序我想破头也想不出来。我希望可以写一个函数void jishu(uint a){}; 把a参数传进去,然后就可以在数码管显示,然后只要不停对a加1就可以了,可是,怎么可以把a这个数显示在数码管上呢??哥哥姐姐们可以教教我吗??

 

    void jishu(uint a)      //在数码管显示a

    {/*不懂实现呜呜

       哥哥姐姐帮帮忙

       O(∩_∩)O谢谢

    */

 

 

    };

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

使用道具 举报

沙发
ID:1 发表于 2009-11-11 19:04 | 只看该作者

你可到专区看看51hei板子的程序撒

回复

使用道具 举报

板凳
ID:16785 发表于 2009-11-11 21:55 | 只看该作者

首先要搞清楚 数码管的的管教是怎么接在单片机的管脚上的;然后才能编写出程序

你这样不放出电路图  别人没办法给你程序

回复

使用道具 举报

地板
ID:17922 发表于 2009-11-12 10:25 | 只看该作者

这个是四位的数码管点亮程序,接P0口

五位只要套个循环即可,程序中的b[N]

N一定要比循环大一,自己也不明白为什么会这样

大家研究研究。

#include<reg52.h>
int a[9];

int c[3];

delay()//延时函数
{
 int i;
for(i=0;i<=355;i++)
;
}

 


int zs10_j(int i)//十的指数函数
{
int j=1;
for(;3-i!=0;i++)
{
 j*=10;
}
return j;
}

 


 
main()
 {
 int i, b[5];

 c[0]=0x7f;//位置表格
c[1]=0xbf;
c[2]=0xdf;
c[3]=0xef;


a[1]=0xf9;//数据显示表格

a[2]=0xa4;
a[3]=0xb0;
a[4]=0x99;
a[5]=0x92;
a[6]=0x82;
a[7]=0xf8;
a[8]=0x80;
a[9]=0x90;


for(b[0]=0;b[0]<=9;b[0]++)//最高位
 for(b[1]=0;b[1]<=9;b[1]++)//次高位
  for(b[2]=0;b[2]<=9;b[2]++)//次低位
   for(b[3]=0;b[3]<=9;b[3]++)//低位
     for(i=0;i<100;i++)
    for(b[4]=0,P3=0xef;b[4]<=3;b[4]++)//定位计数函数
    {
       if (b[0]*1000+b[1]*100+b[2]*10+b[3]>zs10_j(b[4]))//显示零或不显示零(零是点亮位的还是待点亮位的)的判断条件
     a[0]=0xc0;
     else
     a[0]=0xff;
     P0=a[b[b[4]]];?
     delay();
     P0=0xff;
     P3=(P3<<1)+0x01;
     
     }
 }

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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