搜索
bottom↓
楼主: cowboy

挑战极限(一)!小玩意,AT89C2051驱动彩显玩方块游戏

  [复制链接]

出0入0汤圆

发表于 2009-2-21 18:08:27 | 显示全部楼层
用PWM加0.45V??

出0入0汤圆

 楼主| 发表于 2009-2-21 18:18:59 | 显示全部楼层
IO输出后电阻分压,只能固定一个电平,要多种电平就要做高速DA转换。

出0入0汤圆

发表于 2009-2-22 10:12:18 | 显示全部楼层
今天在看你的程序,我想问问显示的时序问题,是与Hsyn和Vsyn有关的,这两个函数的作用能说一下吗

  是不是每运行一下,就变到下一个像素点去了?

出0入0汤圆

发表于 2009-2-22 10:22:22 | 显示全部楼层
关于“高速DA转换”好像可以用电阻实现,如果那样的话,够快吗?用8位数模转化。。

出0入0汤圆

发表于 2009-2-22 10:54:09 | 显示全部楼层
那贪吃蛇能做出来不?
还有超级玛丽?
或者泡泡龙?

最近看到外国人用avr32做游戏机有感。

出0入0汤圆

 楼主| 发表于 2009-2-22 12:15:44 | 显示全部楼层
【102楼】 xiaozhiyong
Hsyn和Vsyn是行场同步脉冲,Hsyn每执行一次,就意味着一的行图像开始传送,如果你对电视信号有所了解,对这个理解并不难。要知道VGA信号是模拟信号,象素点并没有对应的时钟信号,完全靠行同步信号来相对定位,这有点类似异步串行通信。

【104楼】 LiAsO 黄海潜水
做贪食蛇应该不成问题,但象超级玛丽或者泡泡龙这些图象复杂的游戏就不是2051能力范围了。

出0入0汤圆

发表于 2009-2-22 12:16:42 | 显示全部楼层

出0入0汤圆

发表于 2009-2-22 12:45:57 | 显示全部楼层
佩服!

出0入0汤圆

发表于 2009-2-22 13:17:35 | 显示全部楼层
酷 楼主太强悍了

正好家里有个闲置了N年的CRT
这次可以拿来玩一玩了 哈哈

出0入0汤圆

发表于 2009-2-22 14:33:36 | 显示全部楼层
这电路焊得好牛!

出0入0汤圆

发表于 2009-2-22 15:04:08 | 显示全部楼层
犇犇犇!

出0入0汤圆

发表于 2009-2-23 10:14:43 | 显示全部楼层
very犇!
每天都来看下进度。。。

出0入0汤圆

 楼主| 发表于 2009-2-23 11:27:46 | 显示全部楼层
差不多了,星期天花了点时间,基本上已完成

出0入0汤圆

发表于 2009-2-23 12:54:17 | 显示全部楼层
牛人啊.

出0入0汤圆

发表于 2009-2-23 13:04:42 | 显示全部楼层
昨天弄明白了VGA。

上张图看看,我花了一下午改出来的。。


(原文件名:IMG0417A.jpg)

出0入0汤圆

发表于 2009-2-23 14:12:33 | 显示全部楼层
【114楼】 xiaozhiyong
你也是用2051的吗,就是按照LZ的图吗?

出0入0汤圆

发表于 2009-2-23 14:29:51 | 显示全部楼层
我用的是8051,我没有2051,也没有2051的编程器。。

出0入0汤圆

发表于 2009-2-23 15:07:51 | 显示全部楼层
【116楼】 xiaozhiyong
我手上2051也有,编程器也有,就是没有24.1680M的晶振.还要先学习下,再来焊接,呵呵..(我比你懒).LZ的汇编程序,都看懂了吗?

出0入0汤圆

发表于 2009-2-23 15:15:04 | 显示全部楼层
我用的是24M的晶振。。在CRT显示器上也能用,当时我买回来再来看这贴发现是24.1680M但我也把它做出来了,结果能显示。。。

另:我把程序删成这样了,这样也许能看懂些。。。下面这个程序还是能正常显示。。。
;======================================================;
;               俄罗斯方块游戏程序                      ;
;======================================================;
;MCU:       AT89C2051                                  ;
;OSC:       24MH                                       ;
;VER:       V1.1                                       ;
;DESIGN:    Cowboy  2009/02                            ;

;640*480@60Hz,这时行频是31.46875K,场频率是59.94Hz
;系统的主循环选用显示一帧的时间约16.66MS(60Hz),所有任务必须在这时间内处理完成.
;只有128字节内存,要储存一幅画面,显示缓存就需占大部分.主窗口内的面积越大,占用内存就越多.
;经估算窗口内用14行*8列比较合适.此时显示缓冲占用112字节.
;余下的16字节用于程序中的工作寄器5字节, 堆栈2字节,其它为全局量.
;======================================================;

;==============系统常数===============
        Hsyn            equ     01h
        Vsyn            equ     02h;分别表示Hsyn和Vsyn位

        red                equ     13h;00010011  
        green           equ     0bh;00001011
        blue            equ     07h;00000111
        yellow          equ     1bh;00011011
        lightblue             equ             0fh;00001111
        purple                equ        17h;00010111
        white           equ     1Fh;00011111;分别表示要显示的颜色
        blank           equ     03h;00000011;不显示即颜色为空白


;============= 口线定义 ==============
        dataP        equ        P2      
;========================= 程序开始 =======================
        org     0000h     
;=================主循环====================== 0+2=2
Loop:
        acall   V_syn
        acall   Delay45
;================ 等待扫描到显示区 ================ 31+1=32
        mov     r6,#22                ;19
Wait:   acall   H_syn        ;17
        acall   Delay45 ;62
        djnz    r6,Wait        ;64
/*******************************
显示一行
********************************/
oneline:
        acall   H_syn   ;17
        mov        dataP,#red
        mov        dataP,#blank
        mov        dataP,#yellow
        mov        dataP,#blank
        mov        dataP,#white
        mov        dataP,#blank
        mov        dataP,#purple
        mov        dataP,#blank
        mov        dataP,#lightblue
        mov        dataP,#blank
        mov        dataP,#green
        mov        dataP,#blank
        mov        dataP,#blue
        mov        dataP,#blank
        mov        dataP,#red
        mov        dataP,#blank
        mov        dataP,#yellow
        mov        dataP,#blank
        mov        dataP,#white
        mov        dataP,#blank
        mov        dataP,#purple
        mov        dataP,#blank   
        inc        r6
        cjne        r6,#137,oneline
        ;---------------------
        acall   H_syn        ;17
        acall   Delay46 ;62
        mov        r6,#0
        ;---------------------
;================================================= 476
oneline1:
        acall   H_syn   ;17
        mov        dataP,#red
        mov        dataP,#blank
        mov        dataP,#yellow
        mov        dataP,#blank
        mov        dataP,#white
        mov        dataP,#blank
        mov        dataP,#purple
        mov        dataP,#blank
        mov        dataP,#lightblue
        mov        dataP,#blank
        mov        dataP,#green
        mov        dataP,#blank
        mov        dataP,#blue
        mov        dataP,#blank
        mov        dataP,#red
        mov        dataP,#blank
        mov        dataP,#yellow
        mov        dataP,#blank
        mov        dataP,#white
        mov        dataP,#blank
        mov        dataP,#purple
        mov        dataP,#blank   
        inc        r6
        cjne        r6,#137,oneline1

        acall   H_syn   ;17
        acall        delay40
        acall   H_syn   ;17
        acall   Delay60
;============ 所有处理已完成,等待下一帧开始 =========
Done:  ajmp loop

;================= 行同步 ======================               
H_syn:  mov     dataP,#Hsyn   ;2        ;(2+13+2)=17T
        nop
        nop
        nop
        nop
        mov     dataP,#(Hsyn or Vsyn)  ;11
        ret
;================= 场同步 ======================               
V_syn:  mov     dataP,#0;2
        nop
        nop
        nop
        nop
        mov     dataP,#Vsyn   ;11
        nop
        nop
        ret                ;13
;==================== 延时程序 ======================
Delay69:nop
Delay68:nop
Delay67:nop
Delay66:nop
Delay65:nop
Delay64:nop
Delay63:nop
Delay62:nop
Delay61:nop
Delay60:nop
Delay59:nop
Delay58:nop
Delay57:nop
Delay56:nop
Delay55:nop
Delay54:nop
Delay53:nop
Delay52:nop
Delay51:nop
Delay50:nop
Delay49:nop
Delay48:nop
Delay47:nop
Delay46:nop
Delay45:nop
Delay44:nop
Delay43:nop
Delay42:nop
Delay41:nop
Delay40:nop
Delay39:nop
Delay38:nop
Delay37:nop
Delay36:nop
Delay35:nop
Delay34:nop
Delay33:nop
Delay32:nop
Delay31:nop
Delay30:nop
Delay29:nop
Delay28:nop
Delay27:nop
Delay26:nop
Delay25:nop
Delay24:nop
Delay23:nop
Delay22:nop
Delay21:nop
Delay20:nop
Delay19:nop
Delay18:nop
Delay17:nop
Delay16:nop
Delay15:nop
Delay14:nop
Delay13:nop
Delay12:nop
Delay11:nop
Delay10:nop
Delay09:nop
Delay08:nop
Delay07:nop
Delay06:nop
Delay05:nop
Delay04:ret
;==================== 程序结束 ======================
        end

出0入0汤圆

发表于 2009-2-23 16:15:57 | 显示全部楼层
【118楼】 xiaozhiyong

oneline: 此显示的过程是写那个12个色块的是吗?帮忙看下,我这样理解的对不对
1、显示是从左下角开始往右送数据的
2、显示器并不是当送完一个字节就立即显示出来,而是要接收到行频信号后在进行计算出色块的宽度?(这个估计不对,但是我不知道色快的宽度是怎么来决定的)
3、cjne        r6,#137,oneline1 ;是显示的高度吗?

出0入0汤圆

发表于 2009-2-23 16:46:11 | 显示全部楼层
我不理解这个VGA的标准时序,请帮忙解释下,谢谢!
640x480           分辨率
@60                像元频率(兆赫兹)
25.2                 每行像元数
640                行同步(消隐)脉冲开始的时钟周期
656                行同步(消隐)脉冲结束的时钟周期
752                每行的时钟周期数
800                每帧的图象行数
480                帧同步脉冲开始的扫描行数
490                帧同步脉冲结束的扫描行数
525                每帧的扫描行数
这个是我在此网站上的一片上抄下来的,640X480的分辨率是不是理解为有640列,480行呢,那么480就是每帧的扫描行数,但为什么上面说的是525呢,我没有理解,每帧的图象行数为什么又是800呢?请大家帮忙解释下,谢谢!

出0入0汤圆

发表于 2009-2-23 17:02:38 | 显示全部楼层
以前的ID没恢复过来,我把W79E2051和W79E825的资料重发一份大家了解下:
W79E2051使用说明ourdev_421675.rar(文件大小:4.83M) (原文件名:w79e2051-4051.rar)
W79E825资料ourdev_421676.rar(文件大小:1K) (原文件名:W79E825 头文件.rar)

出0入0汤圆

发表于 2009-2-23 17:05:41 | 显示全部楼层
确实会有多的行,480只是显示在屏幕上的行,在屏暮的上面还有行,上面写的是有关时序的是一些时间

总体对于我的程是先给一个Vsyn再每给一个Hsyn就换一行,好像是从左上角开始显示的,,而我的那句cjne        r6,#137,oneline1

是显示了多少行,看起来就是高度了。。。

每个Hsyn中的时间一定要与时序相同,要不然就显示不正常,,并不是“送一个字节”,,而是送一个信号。。

如把R信号线拉高,,,

出0入0汤圆

发表于 2009-2-23 17:18:34 | 显示全部楼层
【122楼】 xiaozhiyong
我纠正一点,是的,不是"送一个字节"而是一个信号.
你在118楼贴的程序,是不是对应你在114楼的图片,除了那2个字除外,如果是的话
;================ 等待扫描到显示区 ================ 31+1=32
        mov     r6,#22                ;19
Wait:   acall   H_syn        ;17
        acall   Delay45 ;62
        djnz    r6,Wait        ;64
/*******************************
这个语句就是把上方的都没有显示,是吗?
还有,那个色块的宽度是怎么决定的啊.麻烦解释下.

出0入0汤圆

发表于 2009-2-23 18:32:52 | 显示全部楼层
是对应的图没有字的,,那个程序是“等待扫描到显示区”就是到屏幕的部分。。

宽度是51---24M能显示的次小细度(两个机器周期)就是我给一个R信号,马上又清除掉,,显示就是那个样子,

出0入0汤圆

发表于 2009-2-23 19:45:33 | 显示全部楼层
宽度是51---24M能显示的次小细度(两个机器周期)就是我给一个R信号,马上又清除掉,,显示就是那个样子,

你的意思是说:比如如果我发了R信号后,
mov        dataP,#red
nop
nop
mov        dataP,#blue
那么就是说红色色块的宽度就成了原来的2倍宽了是吗?

出0入0汤圆

发表于 2009-2-23 20:10:25 | 显示全部楼层
对极了。。。

出0入0汤圆

发表于 2009-2-23 20:51:12 | 显示全部楼层
那个电阻一定要2.2K和330欧姆吗?(不好意思,还没有动手做,所以就一直问了 :) )

出0入0汤圆

发表于 2009-2-23 21:03:40 | 显示全部楼层
你看上面楼主说的,VGA的时序电压的幅度是0-0。75V,只要是这个中间都可以,你可以算一算。。

出0入0汤圆

 楼主| 发表于 2009-2-24 19:27:01 | 显示全部楼层
呵呵,终于做好了,并加了个动感的开机动画,先上视频,程序整理好后再上传。
点击此处下载 ourdev_421910.rar(文件大小:2.53M) (原文件名:Tetris.rar)

(原文件名:图5.jpg)

出0入0汤圆

发表于 2009-2-24 20:31:08 | 显示全部楼层
你那个柱子颜色选的不好,拍出来的看不清,呵呵。。。。
很厉害。。

出0入0汤圆

发表于 2009-2-24 22:12:45 | 显示全部楼层
恩 这个可玩性高
期待楼主的贪食蛇。。。

出0入0汤圆

发表于 2009-2-24 23:57:17 | 显示全部楼层
强帖留名

出0入0汤圆

发表于 2009-2-25 08:08:53 | 显示全部楼层
翻书。。。。复习asm指令ing。。。。。。。。。。。。。。。。汗、。。。

出0入0汤圆

发表于 2009-2-25 09:03:11 | 显示全部楼层
楼主太强了啊。。。有时间也研究看看

出0入0汤圆

发表于 2009-2-25 10:59:43 | 显示全部楼层
楼主有没有时间解答一下51驱动ISA VGA卡的可行性?

我上次发的帖在60楼.

出0入0汤圆

发表于 2009-2-25 11:53:18 | 显示全部楼层
哦,楼主厉害,真实强人,佩服,佩服

出0入0汤圆

 楼主| 发表于 2009-2-25 17:29:55 | 显示全部楼层
源码来了:
点击此处下载 ourdev_422099.rar(文件大小:9K) (原文件名:Tetris21.rar)

【135楼】 patrickwong ,ISA VGA卡现在没有了吧,只要知道数据协议,应该也是可行的,不过画面刷新可能很慢。

出0入0汤圆

发表于 2009-2-25 18:35:31 | 显示全部楼层
谢楼主回覆.

ISA VGA卡是不多, 但上eBay弄一片也不难. IBM PC是容许直接读写 0xA0000 to 0xBFFFF 的显卡内存的, 我想http://tinyvga.com/avr-isa-vga 他们也是这样绕过卡上的BIOS来控制显卡的.

画面刷新慢是晶振的原因还是与MCU有关呢? http://tinyvga.com/avr-isa-vga 他们是用 ATMega128 外接16M晶振的.

出0入0汤圆

发表于 2009-2-26 00:05:22 | 显示全部楼层
MARK

出0入0汤圆

 楼主| 发表于 2009-2-26 09:44:52 | 显示全部楼层
【138楼】 patrickwong
总觉得MCU+ISAVGA卡不太迎合潮流,除非是个别的特殊应用,如改装上世纪遗留下来的工控电脑8086、80286、80386...
如确实要在这方面深研,你给出的网页中也中也有着较详细的资料,你可以用心看看,我恐怕没有这个动力了。
至于画面刷新速度问题,应该是与MCU处理速度直接相关,用AVR应该不成问题,ATMega128的性能无论如何也比80386高吧。

【140楼】 xuyiyi 许意义
一般来说要读通别人写的程序是一件非常痛苦的事,特别是没有非常详尽的注释的情况下,即使自己写完后一段时间也会想不起来。
你在短时间内能理解别人的程序,可见你道行是如此的高,敬礼一个!

【118楼】 xiaozhiyong
你也太利害了,把程序删减得只剩下骨头了

出0入0汤圆

发表于 2009-2-26 20:33:35 | 显示全部楼层
【141楼】 cowboy
:呵呵,什么叫骨头,那是精华好不好,俄罗斯方块谁不会写,我可不是站着说话不腰疼,我自己就写过俄罗斯方块——不过是用VB写的^_^

看了你那个视频,很不错,前面的画面很喜欢。。。。

出0入0汤圆

发表于 2009-2-26 20:46:58 | 显示全部楼层
牛人!好好学习一下!
顶!!

出0入0汤圆

发表于 2009-2-26 21:49:52 | 显示全部楼层
不错的帖子,牛人,顶了

出0入0汤圆

发表于 2009-2-26 23:15:18 | 显示全部楼层
楼主是个牛人啊,可你写的程序不是模块化,我看起来吃力,

出0入0汤圆

发表于 2009-2-26 23:17:34 | 显示全部楼层
原来驱动一个显示器是这么简单的,想起以前都不敢接这类的项目做,现在总算明白了,
再说句楼主的识比较全面哦

出0入0汤圆

发表于 2009-2-26 23:26:46 | 显示全部楼层
强人强人。。。

出0入0汤圆

发表于 2009-2-27 09:08:11 | 显示全部楼层
裤子怎么还没来啊,这么好的东西值得分享

出0入0汤圆

发表于 2009-2-27 11:47:27 | 显示全部楼层
楼主厉害,真实强人,佩服!

出0入0汤圆

发表于 2009-2-27 14:50:42 | 显示全部楼层
楼主高人,佩服

出0入0汤圆

 楼主| 发表于 2009-2-27 23:36:06 | 显示全部楼层
【143楼】 xiaozhiyong
我说的骨头是骨架,骨髓意思,别误会。至于俄罗斯方块程序,用2051资源少的MCU来写,我还是觉得有点吃力。
你说视频前面那段是指开机动画吗?那可是鼓捣了一整天时间来弄的

出0入0汤圆

发表于 2009-2-28 10:19:41 | 显示全部楼层
楼上这位想法好,PCB我也想要,说实话要是我自己去做板子制板费太贵了(上次就放了血)。。。。

我也是学汇编的,自认为水平还可以(写了一个暑假的汇编,包括12864,18B20,1602之类的东西),也许可以帮帮忙。。。。。

出0入0汤圆

 楼主| 发表于 2009-2-28 10:38:01 | 显示全部楼层
呵呵,许工这样的条件我还不接受那我就是一级大傻瓜了,不过那些费用和邮费还是我自己付了吧,只是PCB我不方便打样,唯有接受许工的恩赐了。正好也想见识一下LS2051双线程MCU有何特点,听是听多了,还没接触过。
    至于要完善,不知是怎么个完善法,除了搞一块正正规规的线路板外,程序功能方面,不知大家有何意见。我自己觉得比较遗憾的是不能显示得分,受速度限制我还没办法把这功能加上去;另外就是音乐的频率过低(大多在200~500Hz),听感不好,之前曾用DDS方式做得频率较高,但杂音也大;还有就是游戏结束后应加一些信息显示,这个倒是不难实现,不过代码要超出2K了。
    至于是否要基于LS2051来编程序,这个有点犹豫了,本来这贴子是针对AT89C2051的,改用其它MCU,就失去了其通用性。由于LS2051的运行速度不同,程序要作大幅度的更改,而且按目前编程的思路,并不能展现LS2051的特点。我前面也说过,只要采用性能稍高的MCU来编这个程序,再也不是什么难事。我手头上有宏晶STC的MCU,但没有用上它,按它的速度,理论上可以做得功能更强,图象分辨更高,色彩更丰富。但之前的出发点是充分利用AT89C2051的性能来做试验,因而对其它MCU就没考虑得太多。由于业余时间不多,要摸透LS2051的脾气,可能要花一段较长的时间了。

出0入0汤圆

发表于 2009-2-28 10:49:47 | 显示全部楼层
LS2051还是比较好用的,不过建议LZ可以使用LS4051,它的FLASH大些,其他都是一样的,可以完成更多的功能.

出0入0汤圆

发表于 2009-2-28 11:04:32 | 显示全部楼层
【153楼】 xuyiyi 许意义
积分:379
派别:
等级:------
来自:上海
【楼主位】 cowboy :

  你有兴趣完善你的JJ吗?搞一块正正规规的线路板,我托人去制作,到时送几套给你。

  不过有个附加条件,送你的不只是一块空板,上面配全所有零件,主芯片我这里有现成的LS2051/LS4051(和AT2051/4051兼容),多送几片给你,再送你一个 USB ISP 下载器。当然,邮费也由我出,不知这个条件是否愿意接收?

  到时板子有多余,再考虑送其他坛友。  


许兄弟,LS2051和AT2051是有区别的,LS2051 I/O输出没强上拉的MOS管,所以必须外上拉电阻,否则想输出快点脉冲结果变成一低电平;
LS2051复位时间要100uS(实测25uS),而AT2051只要1机器周期,天壤之别......

出0入0汤圆

发表于 2009-2-28 13:30:48 | 显示全部楼层
对我的应用来说,复位时间,25uS 和 1uS 的区别,太重要了。
根本就是 能用和不能用的问题,为此,长沙那家还专派2人来我处,
解决不了后说下一版IC改进.....

出0入0汤圆

发表于 2009-2-28 13:47:10 | 显示全部楼层
【160楼】 af00 的产品,比较BT,,呵呵。这么严格的要求,嗯,还没见到过。。。

出0入0汤圆

发表于 2009-2-28 14:10:30 | 显示全部楼层
至于嘛。
我的使用很简单,为老外配套用AT89C2051做个显示块:2051的RST接他们另外MCU的I/O,还有一脚作显示数据传输用,第3脚是时钟。
每复位一次,就送6位LED数据到2051。
问题是他们编好了程序,复位时间不到1us(我也改不了他们程序,老外认死理)

出0入0汤圆

发表于 2009-2-28 14:29:51 | 显示全部楼层
增加一个外围电路做复位不就行了

关键是每次复位的间隔时间有多长?

出0入0汤圆

 楼主| 发表于 2009-2-28 14:29:59 | 显示全部楼层
呵呵,先对许工的慷慨表示谢意。本来这“小玩意”我打算就此画上句号了,玩玩而矣,没什么实际应用意义。但现在看来还得延续一段时间......不过还是敬请广大坛友别花太多的心思在AT2051这里,高性能的MCU现在多得比比皆是,没必要在这牛角尖上钻,初学者作为实验性质试验一下就没关系。
【164楼】 af00
问题说明白了就好,要不然让人误认为是LS2051的什么重大缺陷,其实只是不能符合你个别应用中的特殊情况罢了。

出0入0汤圆

发表于 2009-2-28 14:38:08 | 显示全部楼层
【166楼】 cowboy
呵呵

出0入0汤圆

发表于 2009-2-28 14:58:38 | 显示全部楼层
【168楼】 xuyiyi 许意义
回楼上的,做人不要太刻薄,呵呵。
我不是高手,只是把自己实际碰到的说出来交流一下而已。我的产品都出去几年了,没任何问题。
让你失望,我就是用低成本的共阳6位LED动态扫描显示的。
用复也有好处啊,永远不会因死机而响应不了中断。

出0入0汤圆

发表于 2009-2-28 15:13:39 | 显示全部楼层
没关系,我们做技术的,都是个性,呵呵

出0入0汤圆

发表于 2009-2-28 23:21:20 | 显示全部楼层
好,学学,VGA,mark

出0入0汤圆

发表于 2009-3-1 10:05:03 | 显示全部楼层
【169楼】 af00
用AT2051还能做到多低的成本啊,一片最少也要3块左右,现在应该用台湾的芯片来做了,1.5元以下。

出0入0汤圆

发表于 2009-3-1 10:08:20 | 显示全部楼层
我一直在看LS2051,毕竟是国产芯片,大家应该多支持,有时候芯片的缺点应该用软件去克服,
因为想用成本低的芯片必须得用软件去克服低成本芯片的不是

出0入0汤圆

发表于 2009-3-1 10:10:05 | 显示全部楼层
LS系列的芯片产品线不全,推广做得不好,这些都比不上宏晶,这样下去LS很难做开这个市场

出0入0汤圆

发表于 2009-3-1 11:56:48 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2009-3-1 20:33:26 | 显示全部楼层
强悍的没话说。

出0入0汤圆

发表于 2009-3-1 21:30:52 | 显示全部楼层
老掉牙的东西了,1990年就有人用8031做过修彩电用的信号发生器,棋盘格、彩条、园、正弦曲线都全了。只是时间太长了忘了把这些资料放哪儿了!

出0入134汤圆

发表于 2009-3-2 04:44:35 | 显示全部楼层
高手啊!
我也学的是汇编,这个东西很有趣,程序要仔细研究研究才行。

出0入0汤圆

 楼主| 发表于 2009-3-2 13:51:11 | 显示全部楼层
呵呵,是有点忙,不过还在进行中...
目前打算把硬件再修改一下,并打算加强一下部分功能,或许把彩条信号发生器加进去,所以还在改进中。
反正也不是赶任务,这几天内把原理图定下来吧。

出0入0汤圆

 楼主| 发表于 2009-3-4 13:29:09 | 显示全部楼层
这两天焊了一块手工板测试

(原文件名:DSC09318.jpg)

并更新了原理图,P1和P3口换了一下,打算用内部的比较器作AD,用来实现电容感应式按键,只是设想,还不知行不行。

(原文件名:俄罗斯方块原理图.PNG)

增加了彩条信号发生器的功能,记得前面有坛友提过。

(原文件名:DSC09330.jpg)

这是开机动画的画面,字符正在跳动,所以拍出来有点模糊

(原文件名:DSC09332.jpg)

这是我自己玩的最高得分,到了第七关,太快了,接不下去,看来打机的水平较低 ^_^

(原文件名:DSC09327.jpg)

修改原因:原理图有点错误,更正一下.

出0入0汤圆

 楼主| 发表于 2009-3-4 15:41:17 | 显示全部楼层
P3.5只用其下拉并没有用上拉功能,因而不加上拉电阻。C4到时安装时用大点的就行了。

出0入0汤圆

 楼主| 发表于 2009-3-4 16:36:17 | 显示全部楼层
许工可能没理解P3.5口线在此处的作用,理论上不加上拉是不影响的,这个与其它口线的作用不同,其它的几个就必须要加。
做电路板时预留位置,到时加不加上去都行。

出0入0汤圆

发表于 2009-3-5 08:46:22 | 显示全部楼层
我的建议:是否把P1。1和P1。2用起来,也给接两个键,以后要是用来开发贪吃蛇方面的游戏也好弄呀。

出0入0汤圆

发表于 2009-3-5 08:50:43 | 显示全部楼层
这样话就做成一个游戏机了,,用CRT或液晶打。。嘿嘿嘿。。。

出0入0汤圆

发表于 2009-3-5 10:01:42 | 显示全部楼层
挺好玩的

出0入0汤圆

 楼主| 发表于 2009-3-5 10:38:48 | 显示全部楼层
【191楼】 xuyiyi 许意义
这种接法是为了兼容我实物图中的那个一体化的按键,由于一体化的方向键内部的接法固定了没法更改,所以只能按这种接法.
这种一体化的按鍵可能不好买,但仍可以用单个的按键按桥接组合而成,因而就有用了图中的桥接方式.

出0入0汤圆

 楼主| 发表于 2009-3-5 10:57:04 | 显示全部楼层
【188楼】 xiaozhiyong
P1.0和P1.1这两个IO是内部比较器的输入引脚,我留着作模拟AD转用,正在尝试改成电容感应式触摸按键.
目前测试检测一个按键估计没问题,只是灵敏度不怎么高,手指按下与没按下电压只相差30%左右,可靠性不高,要靠复杂的算法来判断.
目前存在几个难点:
1.一个是内部RAM全用完了,要完成这个算法可能要挤出几个字节的的RAM单元;
2.如何利用一个AD通道来实现多个电容感应键的检测
3.怎样来提高灵敏度.看技术火腿他们能做到指头靠近至20MM左右就能有就反应,我试的要到3MM才有反应呀.

出0入0汤圆

发表于 2009-3-5 12:20:29 | 显示全部楼层
一体化按键??是不是这个呀。。是不是上下左右扳的那种?

(原文件名:未命名.jpg)

要是在话,像你说的,那种可不好买哦。

出0入0汤圆

发表于 2009-3-5 13:01:13 | 显示全部楼层
这是我画的,不知可用否。。。。。


(原文件名:未命名.jpg)

点击此处下载 ourdev_424014.rar(文件大小:30K) (原文件名:VGA_PCB.rar)

给一张我上次写的字的完整版:


(原文件名:IMG0419A.jpg)

出0入0汤圆

 楼主| 发表于 2009-3-5 13:25:31 | 显示全部楼层
回楼上,是这个,手机上用的,可以上下左右扳和向中心按下。

(原文件名:一体化按键.jpg)

出0入0汤圆

发表于 2009-3-5 13:30:46 | 显示全部楼层
我也拆了一个手机,不过可惜,没这种键。

出0入0汤圆

发表于 2009-3-5 13:39:20 | 显示全部楼层
同意,我觉得应该在PCB上接一个接口,接上那种手柄式的,这样就好打游戏了,

不过冒似这东西,能开发的游戏也不多哦。

出0入0汤圆

 楼主| 发表于 2009-3-5 13:39:41 | 显示全部楼层
【195楼】 xiaozhiyong
那5个键中,中间的旋转键最好单独放到另一位置,要不然打机时一到紧关头就会按错了。

我图中那个是索爱手机上用的,很多山寨机上也有,不过封装稍有不同。可以到修手机的地方讨一个。

出0入0汤圆

 楼主| 发表于 2009-3-5 13:44:49 | 显示全部楼层
【199楼】 xuyiyi 许意义
这么小的组合键,打游戏是否太累?
----我试了很好用,只用拇指轻轻的上下左右扳就行,只是向下按容易出错。PCB布线把两种键都留位置就行了。不过要是电容感应键能搞出来,什么都没关系了。

出0入0汤圆

发表于 2009-3-5 13:47:17 | 显示全部楼层
对,我下午改一下,还有我想问一下,关于我的那个图里的扬声器与电源的接口,
你觉得怎么样,是不是也要改一下。

关于键:
那是用你那种键呢还是用单个的算了,

我觉行如许工说的那样,你那种键按起来不是很方便吧,主要原因还是中间那个旋转的。。。。。。

出0入0汤圆

 楼主| 发表于 2009-3-5 14:34:02 | 显示全部楼层
接口问题不大,只是扬声器是否要串接一个开关来关闭声音,当然也可以用软件开关,不过资源有点不够,不知行不行。另外P3.7暂且不接,本来是想利用它来配合产生一个网格测试信号,目前还未调出来。
关于键,还是用普通的算了,先别搞得太麻烦。

出0入0汤圆

 楼主| 发表于 2009-3-5 15:03:13 | 显示全部楼层
【203楼】 xiaozhiyong ,你图中的P1.7连接错误,赶快修正一下。

出0入0汤圆

发表于 2009-3-5 18:11:34 | 显示全部楼层
这个自己来做板不是很容易?
何必开板花大价呢。

出0入0汤圆

发表于 2009-3-5 20:33:29 | 显示全部楼层
ding

出0入0汤圆

 楼主| 发表于 2009-3-5 20:34:44 | 显示全部楼层
我布的板子,各位给点意见
点击此处下载 ourdev_423836.rar(文件大小:36K) (原文件名:vga.rar)


(原文件名:PCB初稿.png)

出0入0汤圆

发表于 2009-3-5 20:49:21 | 显示全部楼层
配个游戏机手柄  就更爽了 老外有做过的

出0入0汤圆

 楼主| 发表于 2009-3-5 23:10:48 | 显示全部楼层
原理图还没改,直接在PCB上改的,呵呵,S7只是一个串接在扬声器上的开关。

出0入0汤圆

发表于 2009-3-5 23:31:27 | 显示全部楼层
许工,现在申请一套板子行么。我也想试试国产的单片机。虽然我也只是爱好。

出0入0汤圆

发表于 2009-3-6 07:49:15 | 显示全部楼层
我的感觉是:上下左右放在左边,而旋转放在右边,这样和以前的小游戏机的布局一样。。

用着会习惯一些。。

出0入0汤圆

发表于 2009-3-6 07:54:29 | 显示全部楼层
楼主布得比我的好多了,我实在是自叹不如,另外我刚看了一下我的线是有一根接错了。。(你的电阻列的真好)

出0入0汤圆

发表于 2009-3-6 09:21:38 | 显示全部楼层
呵呵,看着许工。这么大力的推广还真以为就是厂家了呢。
不过。我还是希望能以有偿的方式申请一套。
我是做电脑方面的。估计我去向厂家申请,厂家不太可能理我。

出0入0汤圆

发表于 2009-3-6 09:30:59 | 显示全部楼层
刚才看了一下PCB,希望五向键能做完整。
还有IO么。如何有。希望连A B键也做上。方便扩展。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 09:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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