标题: 本人小白单片机是兴趣爱好,这个是单片机显示四位数字程序,注释是问题求解决方法 [打印本页]

作者: bdey    时间: 2022-11-30 21:57
标题: 本人小白单片机是兴趣爱好,这个是单片机显示四位数字程序,注释是问题求解决方法
[attach]306446[/attach]

#include<reg51.h>
unsigned char number[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char wei[4]={0xe3,0xe7,0xeb,0xef};    //可以在单片机开发板上运行,但写入仿生图是错误的
//unsigned char wei[4]={0xf7,0xfb,0xfd,0xfe};    //这行可以在仿生图上运行,但写入单片机是错的,
我想要一个仿生图和单片机开发板都是正确的,以及为什么错啊


sbit K1=P1^4;

void DelayMs(unsigned char i)
{
unsigned int k;
for(;i!=0;i--)
{
for(k=0;k<250;k++);
}
}

void display(unsigned int i)
{
        P2=wei[3];
        P0=number[i/1000];
        i=i%1000;
        DelayMs(1);
        P0=0x00;
        DelayMs(1);

        P2=wei[2];
        P0=number[i/100];
        i=i%100;
        DelayMs(1);
        P0=0x00;
        DelayMs(1);

        P2=wei[1];
        P0=number[i/10];
        i=i%10;
        DelayMs(1);
        P0=0x00;
        DelayMs(1);

        P2=wei[0];
        P0=number[ i];
        DelayMs(1);
        P0=0x00;
        DelayMs(1);
}

void main(void)
{
unsigned int i=7130;
P0=0x00;
P2=0x00;
DelayMs(1000);
while(1)
{

   display(i);

}


屏幕截图 2022-11-30 215816.png (450.09 KB, 下载次数: 49)

屏幕截图 2022-11-30 215816.png

作者: wulin    时间: 2022-12-1 07:12
两者位驱动电路不一样,按你的学习板电路画的仿真图。



作者: 大漠落日    时间: 2022-12-1 08:15
楼上分析正确,你要想处理好问题,要先找到开发板原理图,才能深入学习,或者你要自已画出开发板的相关原理图,不然就不知道原因在哪里。
作者: zjjhtony    时间: 2022-12-1 09:33
任何软件输出都是通过对应的硬件来实现的,学习软件时,也要学习硬件知识,如模拟电路,时钟电路等。
学会看懂别人的原理图,这里知道38译码器的用途和如何编程。加油!
作者: yzwzfyz    时间: 2022-12-1 17:19
关键是弄清楚原理,这个才是治本。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1