|
楼主 |
发表于 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) |
|