标题:
0到9999计数器单片机C程序,不知那错了。
[打印本页]
作者:
1531889003
时间:
2018-11-5 15:21
标题:
0到9999计数器单片机C程序,不知那错了。
#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;
}
作者:
Colin_zhai
时间:
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;
作者:
黄煌皇
时间:
2018-11-5 17:28
说真的,你这样写程序感觉不规范,建议你尽量选择一些正规的视频教程来学习(最起码在程序变量以及引脚定义要规范点吧),不要因为看到视频教程里面的变量名字长而不按教程的定义来写,在刚刚入门的时候就应该养成写规范程序的习惯,这样也方便程序的阅读及维护。(来自一个正在学51单片机的人的建议)
作者:
ahshmj
时间:
2018-11-5 18:31
遇到什么问题了?
作者:
123uu
时间:
2018-11-5 18:44
有点乱说实在
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1