找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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, 下载次数: 1)

X6${UBZNR1EW(ND08BCEB4J.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:332444 发表于 2022-11-30 18:32 | 只看该作者
看我帖子有荔枝
回复

使用道具 举报

板凳
ID:77589 发表于 2022-12-1 09:56 | 只看该作者
你用了while(1); 看来是想在定时器中断里更新显示帧,可是你连Timer的中断服务程序都没有。
只要你能完成一个静态帧的显示,动态帧就好处理了。
时间一到,显示下一帧时,把指针初始指向显示数组的第二行(这里的行是指代表显示屏上第二行的第一个字节),直到到数组最后一个字节,再跳转到数组第一个字节;
依此类推。。。。。。。。。
回复

使用道具 举报

地板
ID:332444 发表于 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个数据组成一屏是什么。
回复

使用道具 举报

5#
ID:1013961 发表于 2022-12-3 15:55 | 只看该作者
看了一下你的程序,发现只有中断初始化,但是中断函数不见了,你的显示函数也没有,连接的P2口也没有定义,能显示才怪了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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