单片机数数程序
#include<reg52.h>sbitdula=P2^6;sbitwela=P2^7;unsignedintz,b,s,g,q;unsignedcodetable[]...
#include<reg52.h>
sbit dula=P2^6;
sbit wela=P2^7;
unsigned int z,b,s,g,q;
unsigned code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(unsigned int x)
{
unsigned v;
for(v=x;v>0;v--);
}
void xs()
{
q=z/1000;
b=z%1000/100;
s=z%1000%100/10;
g=z%10;
if(z>=100)
{
dula=1;
P0=table[b];
dula=0;
wela=1;
P0=0x37;
wela=0;
delay(100);
}
if(z>=1000)
{
dula=1;
P0=table[q];
dula=0;
wela=1;
P0=0x3b;
wela=0;
delay(100);
}
if(z>=10)
{
dula=1;
P0=table[s];
dula=0;
wela=1;
P0=0x2f;
wela=0;
delay(100);
}
dula=1;
P0=table[g];
dula=0;
wela=1;
P0=0x1f;
wela=0;
delay(100);
}
void main()
{
z=0;
while(1)
{
xs();
delay(40000);
z++;
if(z>=5000)
{
z=0;
}
}
}
不知道为何运行的时候数数数到10位以上数字会一闪一闪。 展开
sbit dula=P2^6;
sbit wela=P2^7;
unsigned int z,b,s,g,q;
unsigned code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(unsigned int x)
{
unsigned v;
for(v=x;v>0;v--);
}
void xs()
{
q=z/1000;
b=z%1000/100;
s=z%1000%100/10;
g=z%10;
if(z>=100)
{
dula=1;
P0=table[b];
dula=0;
wela=1;
P0=0x37;
wela=0;
delay(100);
}
if(z>=1000)
{
dula=1;
P0=table[q];
dula=0;
wela=1;
P0=0x3b;
wela=0;
delay(100);
}
if(z>=10)
{
dula=1;
P0=table[s];
dula=0;
wela=1;
P0=0x2f;
wela=0;
delay(100);
}
dula=1;
P0=table[g];
dula=0;
wela=1;
P0=0x1f;
wela=0;
delay(100);
}
void main()
{
z=0;
while(1)
{
xs();
delay(40000);
z++;
if(z>=5000)
{
z=0;
}
}
}
不知道为何运行的时候数数数到10位以上数字会一闪一闪。 展开
2个回答
展开全部
改了改,试试看。
#include<reg52.h>
sbit dula=P2^6;
sbit wela=P2^7;
unsigned int z,b,s,g,q;
unsigned code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(unsigned int x)
{
unsigned v;
for(v=x;v>0;v--);
}
void xs()
{
q=z/1000;
b=z%1000/100;
s=z%1000%100/10;
g=z%10;
dula=1; P0=table[b]; dula=0;
wela=1; P0=0x37; wela=0; delay(100);
dula=1; P0=table[q]; dula=0;
wela=1; P0=0x3b; wela=0; delay(100);
dula=1; P0=table[s]; dula=0;
wela=1; P0=0x2f; wela=0; delay(100);
dula=1; P0=table[g]; dula=0;
wela=1; P0=0x1f; wela=0; delay(100);
}
void main()
{
char i;
z=0;
while(1) {
for (i = 0; i < 255; i++) xs();
z++;
if(z>=5000) z=0;
}
}
#include<reg52.h>
sbit dula=P2^6;
sbit wela=P2^7;
unsigned int z,b,s,g,q;
unsigned code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(unsigned int x)
{
unsigned v;
for(v=x;v>0;v--);
}
void xs()
{
q=z/1000;
b=z%1000/100;
s=z%1000%100/10;
g=z%10;
dula=1; P0=table[b]; dula=0;
wela=1; P0=0x37; wela=0; delay(100);
dula=1; P0=table[q]; dula=0;
wela=1; P0=0x3b; wela=0; delay(100);
dula=1; P0=table[s]; dula=0;
wela=1; P0=0x2f; wela=0; delay(100);
dula=1; P0=table[g]; dula=0;
wela=1; P0=0x1f; wela=0; delay(100);
}
void main()
{
char i;
z=0;
while(1) {
for (i = 0; i < 255; i++) xs();
z++;
if(z>=5000) z=0;
}
}
2010-12-09
展开全部
网上很多自制的PIC单片机的编程电路,可以自己搜搜,或者给我在百度里发信息留下你的邮箱号,等有时间我给你发个电路图。
BTW:不想学汇编?知道么,现在外面的很多公司都强制要求用汇编写PIC程序。原因就是:PIC有10、12、16、18等这种8位单片机。但前三种的程序寄存器都很小,但相对的特殊寄存器不多,所以MICROCHIP公司并没有针前面三种单片机推出C语言编译器,就是建议开发者使用汇编编写,能更大限度得节省ROM和优化程序,节省开发成本。 而且,PIC10、12、16系列单片机的DATASHEET(就是数据说明书,我现在用pic单片机都不看张明峰的哪本书,直接去MICROCHIP的官方网站上下载官方的DATASHEET。)里根本没有C语句。全部都是汇编指令的介绍,例程都是汇编的。你也应该学会看它的datasheet,因为PIC单片机种类很多,单单PIC16F的就很多种,有些细节问题不看DATASHEET根本没法解决。
建议还是不要买什么开发板,最好自己买个万用板和元器件,自己焊接一个,这样能锻炼你的操作能力。
补充: zdpfat ,在电子设计行业,只有不适合使用的芯片,没有老去的芯片。现在很多工厂还要求用8031做控制呢,为什么,就是它简单,简单得连内部程序寄存器都没有,需要外扩。正因为简单,所以不容易出现程序跑飞等问题,高稳定性。对比一下DOS和WINDOWS就知道了,简单的dos会出现蓝屏和死机现象么?而且,你说的AVR和ARM大行其道只是商业竞争的广告推广行为。PIC的8位单片机在近几年一直是世界上出货量最大的8位单片机……用什么单片机,是看它的功能和成本能否合乎你的项目的要求,既然你知道OURAVR,看看坛里的高手们,多数都用过N多种芯片。
楼主,我已经发送两种PIC专用编程器的电路图和资料给你。但估计对于没自制过编程器的你来说,这两种有点难,上次给你发的链接的那个图是比较简单的了。你先理解一下,不懂再问我。
BTW:不想学汇编?知道么,现在外面的很多公司都强制要求用汇编写PIC程序。原因就是:PIC有10、12、16、18等这种8位单片机。但前三种的程序寄存器都很小,但相对的特殊寄存器不多,所以MICROCHIP公司并没有针前面三种单片机推出C语言编译器,就是建议开发者使用汇编编写,能更大限度得节省ROM和优化程序,节省开发成本。 而且,PIC10、12、16系列单片机的DATASHEET(就是数据说明书,我现在用pic单片机都不看张明峰的哪本书,直接去MICROCHIP的官方网站上下载官方的DATASHEET。)里根本没有C语句。全部都是汇编指令的介绍,例程都是汇编的。你也应该学会看它的datasheet,因为PIC单片机种类很多,单单PIC16F的就很多种,有些细节问题不看DATASHEET根本没法解决。
建议还是不要买什么开发板,最好自己买个万用板和元器件,自己焊接一个,这样能锻炼你的操作能力。
补充: zdpfat ,在电子设计行业,只有不适合使用的芯片,没有老去的芯片。现在很多工厂还要求用8031做控制呢,为什么,就是它简单,简单得连内部程序寄存器都没有,需要外扩。正因为简单,所以不容易出现程序跑飞等问题,高稳定性。对比一下DOS和WINDOWS就知道了,简单的dos会出现蓝屏和死机现象么?而且,你说的AVR和ARM大行其道只是商业竞争的广告推广行为。PIC的8位单片机在近几年一直是世界上出货量最大的8位单片机……用什么单片机,是看它的功能和成本能否合乎你的项目的要求,既然你知道OURAVR,看看坛里的高手们,多数都用过N多种芯片。
楼主,我已经发送两种PIC专用编程器的电路图和资料给你。但估计对于没自制过编程器的你来说,这两种有点难,上次给你发的链接的那个图是比较简单的了。你先理解一下,不懂再问我。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询