标题: 51单片机实现8*8滚动箭头的程序,运行时什么图案都没有,甚至根本不亮 [打印本页]

作者: +嗄过6    时间: 2022-11-30 15:43
标题: 51单片机实现8*8滚动箭头的程序,运行时什么图案都没有,甚至根本不亮
各位大佬,我是刚刚开始学习单片机的小白,今天尝试做滚动箭头时做了一下午在Proteus上仿真运行都没有效果,照着类似帖子做的图和代码如下,运行时什么图案都没有,甚至根本不亮。求助问题出在哪
单片机源程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char;
#define uint unsigned int;
uchar code M[]={0xff,0xff,0xfe,0xfd,0xf8,0xfd,0xfe,0xff,
                                0xff,0xff,0xfd,0xfb,0xf0,0xfb,0xfd,0xff,
                                0xff,0xff,0xfb,0xf7,0xe0,0xf7,0xfb,0xff,
                                0xff,0xff,0xf7,0xef,0xc0,0xef,0xf7,0xff,
                                0xff,0xff,0xef,0xdf,0x80,0xdf,0xef,0xff,
                                0xff,0xff,0xdf,0xbf,0x00,0xbf,0xdf,0xff};
uchar i,num,t;
int main(){
        TMOD=0x01;
        TH0=(65536-2000)/256;                                          
        TL0=(65536-2000)%256;
        TR0=1;
        EA=1;
        ET0=1;
        P3=0x80;
        while(1);
        return 0;
}#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char;
#define uint unsigned int;
uchar code M[]={0xff,0xff,0xfe,0xfd,0xf8,0xfd,0xfe,0xff,
                                0xff,0xff,0xfd,0xfb,0xf0,0xfb,0xfd,0xff,
                                0xff,0xff,0xfb,0xf7,0xe0,0xf7,0xfb,0xff,
                                0xff,0xff,0xf7,0xef,0xc0,0xef,0xf7,0xff,
                                0xff,0xff,0xef,0xdf,0x80,0xdf,0xef,0xff,
                                0xff,0xff,0xdf,0xbf,0x00,0xbf,0xdf,0xff};
uchar i,num,t;
int main(){
        TMOD=0x01;
        TH0=(65536-2000)/256;                                          
        TL0=(65536-2000)%256;
        TR0=1;
        EA=1;
        ET0=1;
        P3=0x80;
        while(1);
        return 0;
}

X6${UBZNR1EW(ND08BCEB4J.png (74.68 KB, 下载次数: 37)

X6${UBZNR1EW(ND08BCEB4J.png

作者: xianfajushi    时间: 2022-11-30 18:32
看我帖子有荔枝
作者: Longan.Wang    时间: 2022-12-1 09:56
你用了while(1); 看来是想在定时器中断里更新显示帧,可是你连Timer的中断服务程序都没有。
只要你能完成一个静态帧的显示,动态帧就好处理了。
时间一到,显示下一帧时,把指针初始指向显示数组的第二行(这里的行是指代表显示屏上第二行的第一个字节),直到到数组最后一个字节,再跳转到数组第一个字节;
依此类推。。。。。。。。。
作者: xianfajushi    时间: 2022-12-1 13:47
简单得很的基础,闲来无事,随意写一个:int main(){char ys=0,wei=0,sj=0;while(1){if(wei==0)wei=1;else wei*=2;P3=m[sj];P2=wei;while(++ys);P2=P3=255;if(++sj>8)sj=0;}}让看到前8个数据组成一屏是什么。
作者: cooltao2008    时间: 2022-12-3 15:55
看了一下你的程序,发现只有中断初始化,但是中断函数不见了,你的显示函数也没有,连接的P2口也没有定义,能显示才怪了。




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