找回密码
 立即注册

QQ登录

只需一步,快速开始

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

0到9999计数器单片机C程序,不知那错了。

[复制链接]
跳转到指定楼层
楼主
ID:420608 发表于 2018-11-5 15:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define u8 unsigned char
#define u16 unsigned int
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
u8 ge,shi,bai,qian,jishu=0;
u8 code biaoge[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delayms(u16 t);
void display(u16 d);
void main()
{
u8 i=0;
u16 shuju=0;
while(i<50)
{
  i++;
  display(2345);
}
while(1)
{
  display(shuju);
  jishu++;
  if(jishu>5)
  {
  jishu=0;
  shuju++;
  if(shuju>10000);
  shuju=0;
  }
  }
}
void delayms(u16 t)
{
u16 i,j;
for(i=0;i<t;i++)
  for(j=0;j<114;j++);
}
void display(u16 d)
{
qian=(u8)d/1000;
bai=(u8)d%1000/100;
shi=(u8)d%100/10;
ge=(u8)d%10;
P13=0;
P0=biaoge[ge];
delayms(500);
P13=1;
P0=0xff;
P12=0;
P0=biaoge[shi];
delayms(500);
P12=1;
P0=0xff;

P11=0;
P0=biaoge[bai];
delayms(500);
P11=1;
P0=0xff;
P10=0;
P0=biaoge[qian];
delayms(500);
P10=1;
P0=0xff;
}                           



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

使用道具 举报

沙发
ID:413475 发表于 2018-11-5 17:20 | 只看该作者
1.这个位置是不是有问题,qian=(u8)d/1000;,直接从u16转成u8会把数据已255方式分割,比如256转成u8就变成1了.
2.建议用直接写成:qian=d/1000;
bai=d%1000/100;
shi=d%100/10;
ge=d%10;
回复

使用道具 举报

板凳
ID:100391 发表于 2018-11-5 17:28 | 只看该作者
说真的,你这样写程序感觉不规范,建议你尽量选择一些正规的视频教程来学习(最起码在程序变量以及引脚定义要规范点吧),不要因为看到视频教程里面的变量名字长而不按教程的定义来写,在刚刚入门的时候就应该养成写规范程序的习惯,这样也方便程序的阅读及维护。(来自一个正在学51单片机的人的建议)
回复

使用道具 举报

地板
ID:7485 发表于 2018-11-5 18:31 | 只看该作者
遇到什么问题了?
回复

使用道具 举报

5#
ID:421247 发表于 2018-11-5 18:44 | 只看该作者
有点乱说实在
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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