找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 65436|回复: 120
收起左侧

挑战极限(一)51单片机驱动电脑vga显示器玩方块游戏

  [复制链接]
ID:51654 发表于 2013-7-9 23:42 | 显示全部楼层 |阅读模式
在51hei单片机网学了很久了,咱也上传点小制作,带动一下51hei论坛的人气啊,89C2051能干什么?这次我打算用它来做个方块游戏,用彩显来显示。
但2051那点速度,那点内存,做起来好不容易。
没有PWM输出,只能用软件模拟彩显的行,场同步信号。
仅128 BIT内存,其中112字节用作显示缓存,剩下给系统的只有16字节了。
硬件倒是简单,所以就连洞洞板也没焊,拿个IC座空中搭桥来测试。
程序还有些BUG,迟些改好后再上传。
ourdev_418481.jpg


ourdev_418482.jpg


ourdev_418484.jpg


以下蓝色文字由版主:xuyiyi 加入。


呵呵,终于做好了,并加了个动感的开机动画,先上视频。

最新版原理图及 PCB图,终结完美版.rar (48.75 KB, 下载次数: 588)

评分

参与人数 5威望 +2 黑币 +65 收起 理由
lyonkon + 15 很给力!
dww465757120 + 30
chit100 + 5 赞一个!
absflash + 15 你真是个神啊
jjbboox + 2 绝世好帖!

查看全部评分

回复

使用道具 举报

ID:50574 发表于 2013-7-9 23:54 | 显示全部楼层
真不可思议啊,简直不敢相信自己的眼睛,不过你能放出一个c语言的源代码吗、汇编的实在太难看懂了.
回复

使用道具 举报

ID:51654 发表于 2013-7-9 23:57 | 显示全部楼层
一定就不是C程序了,不用汇编达不到这样的速度。
现在焊上了开关,耳机插座,可以玩了,不过声音不太好听,有待改进。
想配一首开机音乐,不知用哪首好听。
程序仍在改进中,尽些再上传吧。
下面是加了ipod形式开的和在液晶屏上显示效果图。
ourdev_418539.jpg


ourdev_418540.jpg
回复

使用道具 举报

ID:51654 发表于 2013-7-10 00:01 | 显示全部楼层
前段没空,今天看了下存在的BUG,一时没有什么好的解决方法,请大家出点主意。
问题是如何判断不同形状的方块在移动时是否移出窗外。
试了好几种算法,都很复杂,简单的算法有些不正确,居然卡在这里。
具体情况是用一个8位变量L表示方块原点坐标(x,y),L的低3位表示x,范围0~7,L的bit3~bit6表示y,范围2~15.如何能用便捷的方法判定7种不同方块及4个不同的旋转角度在移动到某坐标时是否越界?
回复

使用道具 举报

ID:50574 发表于 2013-7-10 00:07 | 显示全部楼层
液晶电脑显示器和crt显示器都可以都是vga接口吧 牛,不的不佩服啊,好像你在后面补上的图片上面的芯片是4051吧.和VGA接口的是怎么通讯的?
回复

使用道具 举报

ID:2355 发表于 2013-7-10 00:10 | 显示全部楼层
建议楼主先讲一下原理,而后大家在一起想办法解决问题
回复

使用道具 举报

ID:51654 发表于 2013-7-10 00:11 | 显示全部楼层
h333 发表于 2013-7-10 00:07
液晶电脑显示器和crt显示器都可以都是vga接口吧 牛,不的不佩服啊,好像你在后面补上的图片上面的芯片是405 ...

回5楼的美女 表示你的头像很好看,手头没有2051,所以用4051代着。目前代码编译后还不够1.5K,用2051完全可以装得下。
之前的越界判断算法,现在用查表基本解决了,正在测试中。
加了一首开机音乐,决定用阿牛的《桃花朵朵开》前奏。
加了一条记分级别状态条,在窗口左侧,分数高柱子就越高。
正打算做一个小图标在窗口右侧,用来提示下一个方块的形状。
回复

使用道具 举报

ID:50574 发表于 2013-7-10 00:14 | 显示全部楼层
简直是把51玩到炉火纯青的地步了,用软件模拟VGA信号!强!很强!
回复

使用道具 举报

ID:51654 发表于 2013-7-10 00:15 | 显示全部楼层
ccd 发表于 2013-7-10 00:10
建议楼主先讲一下原理,而后大家在一起想办法解决问题

既然51hei论坛的朋友都很感兴趣,我就先简单地说一下思路,程序的要点是:
1 产生精准的VGA信号时序
    受速度限制,VGA显示模式用最低的640*480@60Hz,这时行频是31.46875K,场频率是59.94Hz.如果单片机有硬件PWM,则行场同步信号可以轻易用PWM实现.由于2051没有PWM,只能用软件模拟,并且不能用定时中断的方式,因为要求速度太高,中断响应速度不够快,且响应时间也不一致,所以本程序中都是把行同步信号穿插在程序的各个适当位置,类似于双线程并行执行,主振也选用2051能承受的最高频率24MHz.
2 合理分配内存.
    2051只有128字节内存,要储存一幅画面,显示缓存就需占大部分.主窗口内的面积越大,占用内存就越多.经估算窗口内用14行*8列比较合适.此时显示缓冲占用112字节.余下的16字节用于程序中的工作寄器5字节, 堆栈2字节,其它为全局量.
3 协调各个功能模块之间的工作配合
    系统的任务不算多,主要的有显示处理,同步处理,音效处理,按键处理,游戏规则处理(包括方块移动,定时下落,重叠检测,越界检测,得分计数,速度升级).各任务之间协调用类似于状态机的方法,但又不完全等同.由于是用汇编,在很多情况下充分利用汇编的灵活性,使程序的模块化不是很明显.系统的主循环选用显示一帧的时间约16.66MS(60Hz),所有任务必须在这时间内处理完成.
回复

使用道具 举报

ID:51260 发表于 2013-7-18 10:56 | 显示全部楼层
太厉害了
回复

使用道具 举报

ID:52177 发表于 2013-7-23 22:10 | 显示全部楼层
有套件卖吗?我要
回复

使用道具 举报

ID:52177 发表于 2013-7-23 22:12 | 显示全部楼层
有套件卖吗?我要
回复

使用道具 举报

ID:52177 发表于 2013-7-23 22:14 | 显示全部楼层
有套件卖吗?我要
回复

使用道具 举报

ID:52928 发表于 2013-8-16 20:06 | 显示全部楼层
这个太扯淡了!!!!!!!!牛人啊
回复

使用道具 举报

ID:53172 发表于 2013-8-17 22:12 | 显示全部楼层
好厉害!!!{:soso_e179:}{:soso_e179:}{:soso_e179:}
回复

使用道具 举报

ID:53190 发表于 2013-8-18 13:07 | 显示全部楼层
楼主强惨了....
回复

使用道具 举报

ID:55219 发表于 2013-11-4 22:30 | 显示全部楼层
楼主很强大啊!
回复

使用道具 举报

ID:56665 发表于 2013-12-2 10:42 | 显示全部楼层
51被你玩得炉火纯青。
回复

使用道具 举报

ID:55202 发表于 2013-12-6 16:22 | 显示全部楼层
楼主好厉害啊!!佩服
回复

使用道具 举报

ID:58415 发表于 2013-12-31 20:13 | 显示全部楼层
强~~~~~~
回复

使用道具 举报

ID:58415 发表于 2013-12-31 20:14 | 显示全部楼层
楼主~~厉害哦~
回复

使用道具 举报

ID:58502 发表于 2014-1-3 14:29 | 显示全部楼层
太厉害了,这论坛果然牛人多,看来没来错地方,比我之前去的一个论坛强多了,
回复

使用道具 举报

ID:58547 发表于 2014-1-4 22:55 | 显示全部楼层
能不能提供C的程序呢
回复

使用道具 举报

ID:58333 发表于 2014-3-28 23:38 | 显示全部楼层
高手顶起啊
回复

使用道具 举报

ID:59804 发表于 2014-4-2 18:25 | 显示全部楼层
楼主厉害!
回复

使用道具 举报

ID:60173 发表于 2014-4-5 17:12 | 显示全部楼层
高手 高手中的高高手
回复

使用道具 举报

ID:61217 发表于 2014-4-28 15:24 | 显示全部楼层
楼主威武霸气啊
回复

使用道具 举报

ID:61490 发表于 2014-5-6 11:32 | 显示全部楼层
这一看,居然电路图一模一样!
楼主太搞笑了吧,明明是老外做出来的东西。
09年我就在某国外论坛上看到此类制作,并制作出来。
回复

使用道具 举报

ID:61695 发表于 2014-5-11 21:32 | 显示全部楼层
真是高手啊!佩服
有没有板子卖啊,我也想要搞来试试,如果想用驱动大屏幕可以吗(就是在大屏幕里面显示一个或几个小的区域)?请指教,谢谢
回复

使用道具 举报

ID:62601 发表于 2014-6-4 17:04 | 显示全部楼层
楼主真厉害,佩服
回复

使用道具 举报

ID:61140 发表于 2014-6-9 19:30 | 显示全部楼层
外国人做的东东,以前就在别的论坛见过了
回复

使用道具 举报

ID:63372 发表于 2014-6-27 19:55 | 显示全部楼层
赞一个,好强大的气场
回复

使用道具 举报

ID:63641 发表于 2014-7-5 20:26 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:64052 发表于 2014-7-16 16:28 | 显示全部楼层
楼主好技术,我也正打算写一个用51单片机写一个VGA信号控制器,感谢资料分享。
回复

使用道具 举报

ID:1 发表于 2014-7-18 03:15 来自手机 | 显示全部楼层
牛人啊
回复

使用道具 举报

ID:64649 发表于 2014-8-6 00:15 | 显示全部楼层
帅的掉渣!这都能!
回复

使用道具 举报

ID:64825 发表于 2014-8-7 09:25 | 显示全部楼层
51hei 有你更精彩
回复

使用道具 举报

ID:64662 发表于 2014-8-7 09:39 | 显示全部楼层
佩服!
回复

使用道具 举报

ID:65134 发表于 2014-8-16 23:16 | 显示全部楼层
哇,哇哇,哇哇哇,要学VGA通信
回复

使用道具 举报

ID:65209 发表于 2014-8-18 23:06 来自手机 | 显示全部楼层
佩服,太厉害了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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