update_to_LCD(49,1,street,1,16); update_to_LCD(57,1,street,1,16);
update_to_LCD(1,95,street_right,1,16);//确定右边街道的显示
update_to_LCD(9,95,street_right,1,16); update_to_LCD(17,95,street_right,1,16); update_to_LCD(25,95,street_right,1,16); update_to_LCD(33,95,street_right,1,16); update_to_LCD(41,95,street_right,1,16); update_to_LCD(49,95,street_right,1,16); update_to_LCD(57,95,street_right,1,16);
update_to_LCD(33,111,black,4,18);//速度条外框
update_score(0); }
//把元素更新到LCD矩阵数组中
//x(1~64),y(1~128),y是液晶上的位置,
//xsize ,ysize 是元素的大小,即u8矩阵数组的大小 void update_to_LCD(u8 x,u8 y,u8 *point,u8
xsize,u8 ysize) {
char quotient,remainder; //商数,余数 u8 i,j,m,n,temp,temp1,temp2,temp3; if(x%8 == 0) {
quotient = x/8 - 1; remainder = x%8+7; } else {
quotient = x/8; remainder = x%8-1; }
for(i=quotient,m=0;i for(j=y-1,n=0;j //if(remainder != 0) //{ temp=0xFF >> (8-remainder); temp1=LCD[i][j] & temp; if( (i<=7) && (j<=127) ) LCD[i][j]=(*(point+m*ysize+n) << remainder) | temp1;//上下两个格子赋值 temp=0xFF << remainder; temp1=LCD[i+1][j] & temp; if( (i+1<=7) && (j<=127) ) LCD[i+1][j]=(*(point+m*ysize+n)>>(8-remainder)) | temp1; //} /*else { if( (i<=7) && (j<=127) ) LCD[i][j]=*(point+m*ysize+n); }*/ } } } void show_coin(u8 x,u8 y) { update_to_LCD(x,y,coin,1,8); } void show_car2(u8 x,u8 y) { update_to_LCD(x,y,car,2,12); } Key.c #include \ #define left_bit BIT4 #define right_bit BIT2 #define add_bit BIT5 #define cut_bit BIT3 char SPEED=0; #define left (P1IN & left_bit) #define right (P1IN & right_bit) #define add (P1IN & add_bit) #define cut (P1IN & cut_bit) void Init_key(void) { P1DIR &= ~(left_bit + right_bit+add_bit+cut_bit); P1REN |= left_bit + right_bit+add_bit+cut_bit; //左右移动按键 的初始化 P1OUT |= left_bit + right_bit+add_bit+cut_bit; //设置按键为上拉 } unsigned char test_direction(void) { if(left == 0) return 1; else if(right == 0) return 2; } unsigned char test_speed(void)