作者b9722074 (tony)
看板ASM
标题[问题] 做数独机研制..
时间Tue Sep 13 18:52:21 2011
想请教一下各位大大...
我是用Keil uVision2及Simlab 8051在做数独机的
步骤是想这样
1. 在64X128绘图型LCD上绘出9X9格的方格图(每格8X8点)
2. 显示开机画面於右侧
3. 建1~9等九个数字和游标的5X6字型资料
4. 算出9X9格的每格左上角座标(X与Y),并建表
但在第三步的时候就已经有点卡卡了...
是否可指点我一下..(最近要做专题出来....对这方面还是很新手...)
目前做到这样,贴图
http://ppt.cc/,i0D
下为程式....
#include <AT89X51.H>
#define E P1_2
#define RW P1_1
#define DI P1_0
#define CS1 P1_3
#define CS2 P1_4
void command(unsigned char);
void wait_LCD(void);
void point(bit, bit, unsigned char, unsigned char, unsigned char);
void WR_data(unsigned char);
main()
{
int i;
CS1=1; CS2=1;
for(i=0;i<1000;i++);
command(0x3f);
point(1,0,0,0,1);
point(1,0,7,0,0x80);
point(0,1,0,63,1);
point(0,1,7,63,0x80);
while(1);
}
void command(unsigned char c)
{
P0=c;
E=1; RW=0; DI=0; E=0; RW=1;
wait_LCD();
}
void wait_LCD(void)
{
bit busy;
P0=0xFF; //P0设定为输入埠
do {
DI=0; RW=1; E=1; busy=P0&0x80; E=0;
}
while(busy==1);
}
void point(bit s1, bit s2, unsigned char x, unsigned char y,unsigned char d1)
{
CS1=s1;
CS2=s2;
command(0xb8+x);
command(0x40+y);
WR_data(d1);
}
void WR_data(unsigned char d2)
{
P0=d2;
E=1; RW=0; DI=1; E=0; RW=1;
wait_LCD();
}
#include <AT89X51.H>
#define E P1_2
#define RW P1_1
#define DI P1_0
#define CS1 P1_3
#define CS2 P1_4
void command(unsigned char);
void wait_LCD(void);
void WR_data(unsigned char);
unsigned char code a[]={0x00,0x04,0x74,0xDE,0x74,0x84,0x74,0x5E,
0x74,0x84,0x60,0x1E,0xD2,0x10,0x50,0x38,
0x00,0x08,0x06,0xFF,0x55,0x55,0x7F,0x55,
0x55,0x80,0x60,0x18,0x07,0x18,0x60,0x80};
main()
{
int i;
CS1=1; CS2=0;
for(i=0;i<1000;i++);
command(0x3f); 显示幕on (p.28)
command(0xb8+0); 设定页数X+页面( Page 0)
command(0x40+0); 设定页数Y+y行(直的)
for(i=0;i<16;i++)
WR_data(a[i]);
command(0xb8+1); 设定页数X+页面( Page 1)
command(0x40+0); 设定页数Y+y行(直的)
for(i=16;i<32;i++)
WR_data(a[i]);
while(1);
}
void command(unsigned char c)
{
P0=c;
E=1; RW=0; DI=0; E=0; RW=1;
wait_LCD();
}
void wait_LCD(void)
{
bit busy;
P0=0xFF; //P0设定为输入埠
do {
DI=0; RW=1; E=1; busy=P0&0x80; E=0;
}
while(busy==1);
}
void WR_data(unsigned char d2)
{
P0=d2;
E=1; RW=0; DI=1; E=0; RW=1;
wait_LCD();
}
想请问接下来如何做才好......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.253.112.173
1F:推 lion21:我觉得你离目标还很远 越後来门槛越高 加油 09/13 19:19
2F:→ kikiqqp:把整个想成一个大矩阵,而5X6字型先建好字库用查的抓出来 09/13 23:33
3F:推 zmc0076:以前也有想过要做这个,我觉得难度在於产生那些有规则数字 09/23 08:44
4F:→ zmc0076:原po加油~做完记得跟我说 XD 09/23 08:45