搜索
bottom↓
回复: 28

[新手]第二个AVR32UC3B的小程序,LCD128*64点阵玩拼图游戏。。

[复制链接]

出0入0汤圆

发表于 2009-4-1 11:52:36 | 显示全部楼层 |阅读模式

(原文件名:图片 059.jpg)


(原文件名:图片 060.jpg)


(原文件名:图片 061.jpg)


(原文件名:图片 062.jpg)


(原文件名:图片 063.jpg)


(原文件名:图片 065.jpg)


(原文件名:图片 066.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2009-4-1 11:52:43 | 显示全部楼层
抢占沙发。。。各位看客莫急。


程序正在完善,注释,整理中。。。
这年头好像流行视频。。(现在录制中。。更多精彩尽在视频中。。。)


资料更新。。


/* 项目名称:AVR32 jigsaw puzzle
* 建造日期:2009年03月29日
* 作者名称:点点滴滴
* 作者声明:没有作者允许不能用于商业目的,
* 只能用于个人学习使用。
* 工程简介:这是基于AVR32UC3B064 最小系统小板
* 在128*64 点阵上玩简单的拼图游戏。现只能实现
* 固定开局,记录移动次数。
* 随机开局,出现死局,是一下个版本解决的重点问题
* 软件版本: V1.0
*/

#include "pm.h"
#include "board.h"
#include "AVR32_Key.h"


/* 函数名称:power_up_init
* 输入参数:无
* 输出参数:无
* 功能简介:所有模块上电初始化
*/
static void power_up_init(void)
{   
    //osc0 is source for the main clock
    pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP);
   
    //init lcd12864 spi pin
    lcd12864_spi_init();
   
    // init key
    key_init();
}

/* 拼图游戏主函数
*
*
*/
int main (void)
{  
        volatile U16 i;
        volatile U16 update;
        volatile U16 addr  = 0;
        volatile U16 temp  = 0;
        volatile U16 count = 0;
       
        static   U16 char_count[4];
       
        // puzzles games number
        static U16 bitmap_number[9] =
        {
                4, 2, 8, 7, 0, 5, 6, 3, 1
        };
       
        //上电初始化
        power_up_init();
       
        //LCD运行模式设置
        set_lcd_run_mode();
       
        // 显示作者广告
        author_brief();
       
        // 拼图开局
        count_shift_char(char_count, count);
        drawing_entire_screen(bitmap_number, char_count);
       
        // 主函数循环
        while (TRUE)
        {
            // scan time
            for (i = 0; i < 1000; i++);
            
            // get blank bitmap adder
            addr = access_blank_addr(bitmap_number);
            
            // achieve algorithm
            algorithm_achieve(bitmap_number);

            // clear mqrk
            update = FALSE;
            
            // key scan
            switch (key_scan())
          {
            case key_up:
                   
             if (addr <= 5)
             {
                update = TRUE;
                                    
                temp = bitmap_number[addr];
                bitmap_number[addr] = bitmap_number[addr + 3];
            bitmap_number[addr + 3] = temp;
          }
                          
                  break;
               
            case key_down:
            
              if (addr >= 3)
              {
                    update = TRUE;
                
                temp = bitmap_number[addr];
                bitmap_number[addr] = bitmap_number[addr - 3];
                bitmap_number[addr - 3] = temp;
              }
             
                  break;
               
            case key_left:
                   
              if ((addr != 2)
                   && (addr != 5)
               && (addr != 8))
              {
                    update = TRUE;       
                                    
            temp = bitmap_number[addr];
                bitmap_number[addr] = bitmap_number[addr + 1];
            bitmap_number[addr + 1] = temp;
          }
                          
                  break;
               
            case key_right:

              if ((addr != 0)
               && (addr != 3)
               && (addr != 6))
              {
                    update = TRUE;       
                    
                temp = bitmap_number[addr];
                bitmap_number[addr] = bitmap_number[addr - 1];
                bitmap_number[addr - 1] = temp;
              }
             
                  break;
               
            case key_up_value:
                   
              // disable led d4       
              gpio_set_gpio_pin(AVR32_PIN_PA08);       
                   
              break;
                  
            default:
                  
                  break;
          }
            
            // update show lcd buffer
            if (update == TRUE)
            {
               count++;
               count_shift_char(char_count, count);
               drawing_entire_screen(bitmap_number, char_count);
            }
        }
}



(原文件名:拼图 电路图.jpg)

电路图:

点击此处下载 ourdev_431584.pdf(文件大小:38K) (原文件名:拼图.pdf)

LCD数据手册:

点击此处下载 ourdev_431586.pdf(文件大小:1.65M) (原文件名:汉字字符液晶OCMJ4X8C中文次料.pdf)

本工程所用的图片:

点击此处下载 ourdev_431587.rar(文件大小:40K) (原文件名:LCD图片库.rar)


工程源代码:

点击此处下载 ourdev_431588.rar(文件大小:185K) (原文件名:AVR32 jigsaw puzzle.rar)

出0入0汤圆

发表于 2009-4-1 11:55:47 | 显示全部楼层
我顶~~
建议移植到Snail touch上,那个才爽~

出0入0汤圆

发表于 2009-4-1 11:58:42 | 显示全部楼层
要真图才好看..现在好像是序号..??

出0入0汤圆

 楼主| 发表于 2009-4-1 11:58:53 | 显示全部楼层
代码没整理好。。。
现在开局是固定的,算法还没搞好。。
要用到四个按键。。。。
能否移值。。。


搞好后上传源程序。。

出0入0汤圆

 楼主| 发表于 2009-4-1 12:00:04 | 显示全部楼层
注意!
上面显示的移动次数已经在变化。

出0入0汤圆

发表于 2009-4-1 12:24:18 | 显示全部楼层
我也顶!

出0入0汤圆

 楼主| 发表于 2009-4-1 17:24:45 | 显示全部楼层
源代码已经放出。。。

出0入0汤圆

发表于 2009-4-1 17:55:27 | 显示全部楼层
阿莫,快加酷咯~~

出0入0汤圆

 楼主| 发表于 2009-4-2 10:11:23 | 显示全部楼层
视频已上传。。。

点击此处下载 ourdev_431789.rar(文件大小:752K) (原文件名:2009-04-02 06-14-36.rar)

出0入296汤圆

发表于 2009-4-2 21:03:03 | 显示全部楼层
如果你基于Snail Touch GUI的硬件电路来弄,大家都能在自己的机器上分享你的好东西啊。

出0入0汤圆

 楼主| 发表于 2009-4-3 11:04:45 | 显示全部楼层
to 【10楼】 Gorgon Meducer 傻孩子

要想移值到你的触摸板上估计有点难。。。要支持四个方向键才行,你那只有A,B两个触摸键,滑环派不上用场。。
其实算法很简单的。

出0入296汤圆

发表于 2009-4-3 11:43:02 | 显示全部楼层
为什么滑环派不上用场呢?我把角度封装出来了阿,你根据角度判断区间就可以了,
而且我的工程里面不是有示例代码么?

出0入0汤圆

 楼主| 发表于 2009-4-3 15:13:48 | 显示全部楼层
现在我手上没有触摸板。。。。显示屏的移值不是很难,刚开始编写程序的时候我就以封装形式,只要改变将整个缓冲区内容发送到LCD显示屏的函数,LCD初始化指令就可。关键是如何判断出四个方向,能玩你的快速贪吃蛇,应该也能玩我的拼图。。。

   不知道什么时候AVR32的中文数据手册才能出来呀。。。像我这连字母都背不完,那个痛苦呀。。。。

出0入296汤圆

发表于 2009-4-3 16:00:43 | 显示全部楼层
- -b 估计中文数据手册你暂时等不到了,最先出现的替代品应该是我写的书。
十月份面世。

出0入0汤圆

 楼主| 发表于 2009-4-7 15:53:13 | 显示全部楼层
呵呵,搞了个动画。。。


(原文件名:头像动画.gif)

出0入0汤圆

发表于 2009-4-8 05:40:23 | 显示全部楼层
心若移动,如何联通


这个好

出0入0汤圆

发表于 2009-4-8 10:41:20 | 显示全部楼层
呵呵,好,挺有意思

出0入0汤圆

发表于 2009-6-3 14:08:29 | 显示全部楼层
蛮有趣的.

出0入0汤圆

发表于 2009-6-3 14:14:56 | 显示全部楼层
好东西,学习了,谢谢楼主

出0入0汤圆

发表于 2009-9-20 22:06:43 | 显示全部楼层
先mark……

出0入0汤圆

发表于 2009-9-21 00:19:26 | 显示全部楼层
先MARK

出0入0汤圆

发表于 2009-10-10 00:37:16 | 显示全部楼层
看来要出手了

出0入0汤圆

发表于 2009-10-14 14:15:03 | 显示全部楼层
有意思!!

出0入0汤圆

发表于 2010-10-12 11:09:37 | 显示全部楼层
好东西,原代码有吗?

出0入0汤圆

发表于 2011-8-16 13:06:34 | 显示全部楼层
有意思啊

出0入0汤圆

发表于 2011-10-11 09:03:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-8-10 22:51:37 | 显示全部楼层
不错,顶起

出0入0汤圆

发表于 2013-8-13 22:29:45 来自手机 | 显示全部楼层
mark……
顶一个…
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 07:10

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

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