自行车码表安装为什么350公里自动回零?

查看: 3208|回复: 31
山寨码表.自行车码表
因缺乏锻炼,加上之前上了2个月的&长夜班&,身体有米其林化的趋势.为了阻止这种不良的发展.决定在家骑自行车锻炼锻炼.
光骑车没劲,做个码表装上看看能骑多少快,骑了多少路.
1月1日回家开始正式制作.
ec27d2b770a5c8f2.jpg (52.86 KB, 下载次数: 53)
18:16 上传
单片机用stc89c52,因为之前买了几片还没用掉,因为它只要3块多钱,因为我只要几个IO加上外部中断,定时器.
显示用yleee的12232液晶,因为已经放了快2年了.3片只用掉一片,而且做完之后依然压箱底.&&不用掉浪费.
电源用白菜模块做单锂升压到5.2v来使用. 因为买了太多了,不用掉浪费.
cfc3884.jpg (33.77 KB, 下载次数: 78)
18:16 上传
电池暂时找了块yleee的太阳能移动电源中的大肚子锂聚合物电池. 当时肚子很大,电压很低.给它捅了一刀以后继续充电,身材恢复苗条,就是有点皱纹. 500ma放电能有3,400 mah容量.
传感器用了大家都说好的干簧管,还是从中学劳技课的板子上拆下来的. 磁钢安装就尽显山寨本色了.
c5.jpg (27.49 KB, 下载次数: 70)
18:16 上传
d8e05192eea7d26.jpg (43.63 KB, 下载次数: 45)
18:16 上传
既然画了PCB,就顺便加上了 1302, 18b20,万一没事干又想加上去了.
cdd96a.jpg (45.12 KB, 下载次数: 51)
18:16 上传
板子继续热转印,这次买了瓶新的三氯化铁,放在新买的电磁炉里水浴加热到80°,竟然还花了10几分钟. 期间还把三氯化铁滴到了锅子里,以后吃火锅能吃到正宗的化学锅底了. 恩.
bff0e05b338c3f6d.jpg (56.7 KB, 下载次数: 64)
18:16 上传
这是之前的试做版本.
话说制作期间,一天都没运动过,终于在第六天倒下了,去医院把我全新的医保卡上写上了历史性的一页,而配的药的纸壳,就成了这次的山寨码表暂时蜗居的地方.
刚才完成基本功能,发现我的破车骑在20km/h已经很吃力了. 全力只能跑到30km/h. 看来也就这水平了.
edd23.jpg (20.34 KB, 下载次数: 81)
18:16 上传
为了看得清, 用了四倍字体大小. 很给力.
f02862.jpg (41.03 KB, 下载次数: 77)
18:16 上传
界面就改成这样了. 显示这些东西也够看了
按第一个键保存总行程. 第三个键背光开关.&&开机时摁住第一第二键 总行程清零.
今天风大,还骑了10公里.&&有点蛋疼的感觉..
程序,和电路图在包里,&&PCB因为有几条线没连通,几个设计bug没修改,所以就没放在里面.
(90.44 KB, 下载次数: 156)
15:53 上传
点击文件名下载附件
下载积分: 黑币 -5
共享资料的黑币奖励!
 #include &12232.h&
&&
#define A0_0()&&LCD_A0 = 0
#define A0_1()&&LCD_A0 = 1& &&&
#define E1_0()&&LCD_E1 = 0
#define E1_1()&&LCD_E1 = 1
#define E2_0()&&LCD_E2 = 0
#define E2_1()&&LCD_E2 = 1
#define LCD_DISPLAYON& &0xaf& && &//af 开显示
#define LCD_DISPLAYOFF&&0xae& && &//ae 关显示
#define LCD_DRIVERON& & 0xa5& && &//a5 静态显示驱动
#define LCD_DRIVEROFF& &0xa4& && &//a4 正常驱动
#define LCD_DUTY16& && &0xa8& && &//占空比1/16
#define LCD_DUTY32& && &0xa9& && &//占空比1/32
#define LCD_END& && && &0xee&&
/*关闭“读-修改-写”模式,并把列地址指针
& && && && && && && && && && &恢复到打开“读-修改-写”模式前的位置。*/
#define LCD_RESET& && & 0xe2&&
/*初始化。① 设置显示初始行为第一行;
& && && && && && && && && && && && && & ②页地址设置为第三页。*/
#define LCD_RWMODE& && &0xe0&&
/*“读-修改-写”模式 。执行该指令以后,
& && && && && && && && && && &每执行一次写数据,指令列地址自动加1;
& && && && && && && && && && &但执行读数据指令时列地址不会改变。
& && && && && && && && && && &这个状态一直持续到执行“END”指令。
& && && && && && && && && && &注意:在“读-修改-写”模式下,
& && && && && && && && && && &除列地址设置指令之外,其他指令照常执行。 */
& && && && && && && && && && &
#define LCD_STARTLINE0&&0xc0& & //设置显示起始行 可以加0-31
#define LCD_PAGE0& && & 0xb8& & //页地址设置& &&&可以加0-3
#define LCD_COLUMNADDR0 0x00& & //列地址设置& &&&可以加0-60
#define LCD_ON()& && && && &LCD_Command(LCD_DISPLAYON)
#define LCD_OFF()& && && &&&LCD_Command(LCD_DISPLAYOFF)
#define LCD_StaticON()& && &LCD_Command(LCD_DRIVERON)
#define LCD_StaticOFF()& &&&LCD_Command(LCD_DRIVEROFF)
#define LCD_Select16()& && &LCD_Command(LCD_DUTY16)
#define LCD_Select32()& && &LCD_Command(LCD_DUTY32)
#define LCD_StartRW()& && & LCD_Command(LCD_RWMODE)
#define LCD_EndRW()& && && &LCD_Command(LCD_END)
#define LCD_Reset()& && && &LCD_Command(LCD_RESET)
#define LCD_SetStartLine(i) LCD_Command(LCD_STARTLINE0|i)
#define LCD_SetPage(i)& && &LCD_Command(LCD_PAGE0|i)
#define LCD_SetColumn(i)& & LCD_Command(LCD_COLUMNADDR0|i)
unsigned char code ascii[][6]={
{0x00,0x00,0x00,0x00,0x00,0x00},/*0 SPACE*/
{0x00,0x00,0x00,0x4f,0x00,0x00},/*1 !*/&&
{0x00,0x00,0x00,0x07,0x00,0x07},/*2 &*/
{0x00,0x14,0x7f,0x14,0x7f,0x14},/*3 #*/
{0x00,0x24,0x2a,0x7f,0x2a,0x12},/*4 $*/
{0x00,0x23,0x13,0x08,0x62,0x61},/*5 %*/
{0x00,0x36,0x49,0x55,0x22,0x50},/*6 &*/
{0x00,0x00,0x00,0x05,0x03,0x00},/*7 '*/
{0x00,0x00,0x1c,0x22,0x41,0x00},/*8 (*/& && && && && && && && && && &
{0x00,0x00,0x41,0x22,0x1c,0x00},/*9 )*/
{0x00,0x14,0x08,0x3e,0x08,0x14},/*10 **/
{0x00,0x08,0x08,0x3e,0x08,0x08},/*11 +*/
{0x00,0x00,0x00,0x28,0x18,0x00},/*12 ,*/
{0x00,0x08,0x08,0x08,0x08,0x08},/*13 -*/
{0x00,0x00,0x00,0x60,0x60,0x00},/*14 .*/
{0x00,0x20,0x10,0x08,0x04,0x02},/*15 /*/
{0x00,0x3e,0x51,0x49,0x45,0x3e},/*16 0*/
{0x00,0x00,0x42,0x7f,0x40,0x40},/*17 1*/& && && && && && && && && &
{0x00,0x62,0x51,0x51,0x49,0x46},/*18 2*/& && && && && && && && && && &
{0x00,0x21,0x41,0x45,0x4b,0x31},/*19 3*/& && && && && && && && && && &
{0x00,0x18,0x14,0x12,0x7f,0x10},/*20 4*/& && && && && && && && && && &
{0x00,0x27,0x45,0x45,0x45,0x39},/*21 5*/& && && && && && && && && && &
{0x00,0x3c,0x4a,0x49,0x49,0x30},/*22 6*/& && && && && && && && && && &
{0x00,0x01,0x71,0x09,0x05,0x03},/*23 7*/& && && && && && && && && && &
{0x00,0x36,0x49,0x49,0x49,0x36},/*24 8*/& && && && && && && && && && &
{0x00,0x06,0x49,0x49,0x29,0x1e},/*25 9*/
{0x00,0x00,0x36,0x36,0x00,0x00},/*26 :*/
{0x00,0x00,0x56,0x36,0x00,0x00},/*27 ;*/
{0x00,0x08,0x14,0x22,0x41,0x00},/*28 &*/
{0x00,0x14,0x14,0x14,0x14,0x14},/*29 =*/
{0x00,0x00,0x41,0x22,0x14,0x08},/*30 &*/
{0x00,0x02,0x01,0x51,0x09,0x06},/*31 ?*/
{0x00,0x3e,0x59,0x55,0x79,0x3e},/*32 @*/& && && && && && && && && &
{0x00,0x7e,0x21,0x21,0x21,0x7e},/*33 A*/& && && && && && && && && && &
{0x00,0x7f,0x49,0x49,0x49,0x36},/*34 B*/& && && && && && && && && && &
{0x00,0x3e,0x41,0x41,0x41,0x22},/*35 C*/& && && && && && && && && && &
{0x00,0x7f,0x41,0x41,0x22,0x1c},/*36 D*/& && && && && && && && && && &
{0x00,0x7f,0x49,0x49,0x49,0x49},/*37 E*/& && && && && && && && && && &
{0x00,0x7f,0x09,0x09,0x09,0x01},/*38 F*/& && && && && && && && && && &
{0x00,0x3e,0x41,0x49,0x49,0x7a},/*39 G*/& && && && && && && && && && &
{0x00,0x7f,0x08,0x08,0x08,0x7f},/*40 H*/& && && && && && && && && && &
{0x00,0x41,0x7f,0x41,0x00,0x00},/*41 I*/& && && && && && && && && && &
{0x00,0x20,0x40,0x41,0x3f,0x01},/*42 J*/& && && && && && && && && && &
{0x00,0x7f,0x08,0x14,0x22,0x41},/*43 K*/& && && && && && && && && && &
{0x00,0x7f,0x40,0x40,0x40,0x40},/*44 L*/& && && && && && && && && && &
{0x00,0x7f,0x02,0x0c,0x02,0x7f},/*45 M*/& && && && && && && && && && &
{0x00,0x7f,0x04,0x08,0x10,0x7f},/*46 N*/& && && && && && && && && && &
{0x00,0x3e,0x41,0x41,0x41,0x3e},/*47 O*/& && && && && && && && && && &
{0x00,0x7f,0x09,0x09,0x09,0x06},/*48 P*/& && && && && && && && && && &
{0x00,0x3E,0x41,0x51,0x21,0x5E},/*49 Q*/& && && && && && && && && && &
{0x00,0x7f,0x09,0x19,0x29,0x46},/*50 R*/& && && && && && && && && && &
{0x00,0x46,0x49,0x49,0x49,0x31},/*51 S*/& && && && && && && && && && &
{0x00,0x01,0x01,0x7f,0x01,0x01},/*52 T*/& && && && && && && && && && &
{0x00,0x3f,0x40,0x40,0x40,0x3f},/*53 U*/& && && && && && && && && && &
{0x00,0x1f,0x20,0x40,0x20,0x1f},/*54 V*/& && && && && && && && && && &
{0x00,0x3f,0x40,0x38,0x40,0x3f},/*55 W*/& && && && && && && && && && &
{0x00,0x63,0x14,0x08,0x14,0x63},/*56 X*/& && && && && && && && && && &
{0x00,0x07,0x08,0x70,0x08,0x07},/*57 Y*/& && && && && && && && && && &
{0x00,0x61,0x51,0x49,0x45,0x43},/*58 Z*/
{0x00,0x00,0x7f,0x41,0x41,0x00},/*59 [*/
{0x00,0x01,0x02,0x08,0x10,0x20},/*50 \*/& && && && && && && && && && &
{0x00,0x00,0x41,0x41,0x7f,0x00},/*61 ]*/
{0x00,0x04,0x02,0x01,0x02,0x04},/*62 ^*/
{0x00,0x40,0x40,0x40,0x40,0x40},/*63 _*/
{0x00,0x00,0x01,0x02,0x04,0x00},/*64 `*/& && && && && && && && && && &
{0x00,0x20,0x54,0x54,0x54,0x7c},/*65 a*/& && && && && && && && && && &
{0x00,0x7f,0x48,0x44,0x44,0x38},/*66 b*/& && && && && && && && && && &
{0x00,0x38,0x44,0x44,0x44,0x20},/*67 c*/& && && && && && && && && && &
{0x00,0x38,0x44,0x44,0x48,0x7f},/*68 d*/& && && && && && && && && && &
{0x00,0x38,0x54,0x54,0x54,0x18},/*69 e*/& && && && && && && && && && &
{0x00,0x08,0x7e,0x09,0x01,0x02},/*70 f*/& && && && && && && && && && &
{0x00,0x0c,0x52,0x52,0x52,0x3e},/*71 g*/& && && && && && && && && && &
{0x00,0x7f,0x08,0x04,0x04,0x78},/*72 h*/& && && && && && && && && && &
{0x00,0x00,0x44,0x7d,0x40,0x00},/*73 i*/& && && && && && && && && && &
{0x00,0x40,0x40,0x44,0x3d,0x00},/*74 j*/& && && && && && && && && && &
{0x00,0x7f,0x10,0x28,0x44,0x00},/*75 k*/& && && && && && && && && && && &
{0x00,0x00,0x41,0x7e,0x40,0x00},/*76 l*/& && && && && && && && && && &
{0x00,0x7c,0x04,0x18,0x04,0x78},/*77 m*/& && && && && && && && && && &
{0x00,0x7c,0x08,0x04,0x04,0x78},/*78 n*/& && && && && && && && && && &
{0x00,0x38,0x44,0x44,0x44,0x38},/*79 o*/& && && && && && && && && && &
{0x00,0x7c,0x14,0x14,0x14,0x08},/*80 p*/& && && && && && && && && && &
{0x00,0x08,0x14,0x14,0x14,0x7c},/*81 q*/& && && && && && && && && && &
{0x00,0x7c,0x08,0x04,0x04,0x08},/*82 r*/& && && && && && && && && && &
{0x00,0x48,0x54,0x54,0x54,0x20},/*83 s*/& && && && && && && && && && &&&
{0x00,0x04,0x3f,0x44,0x44,0x24},/*84 t*/& && && && && && && && && && &
{0x00,0x3c,0x40,0x40,0x20,0x7c},/*85 u*/& && && && && && && && && && &
{0x00,0x1c,0x20,0x40,0x20,0x1c},/*86 v*/& && && && && && && && && && &
{0x00,0x3c,0x40,0x30,0x40,0x3c},/*87 w*/& && && && && && && && && && &
{0x00,0x44,0x28,0x10,0x28,0x44},/*88 x*/& && && && && && && && && && &
{0x00,0x06,0x48,0x48,0x48,0x3e},/*89 y*/& && && && && && && && && && &
{0x00,0x44,0x64,0x54,0x4c,0x44},/*80 z*/
{0x00,0x00,0x08,0x36,0x41,0x00},/*91 {*/
{0x00,0x00,0x00,0x7e,0x00,0x00},/*92 |*/& && && && && && && && && && &
{0x00,0x00,0x41,0x36,0x08,0x00},/*93 }*/& && && && && && && && &
{0x00,0x04,0x08,0x04,0x08,0x04},/*94 ~*/
{0x10,0x20,0x40,0x20,0x10,0x08},//95对号一半
{0x04,0x02,0x00,0x00,0x00,0x00},//96对号一半
unsigned char target1,target2,target3,target4;
/******************************************************************************************
* 函数名称& & :LCD_Command
* 功能描述& & :写命令
* 参数& && &&&:&&参数名称:& & & & 输入/输出?& & & & 类型& & & & & & & & 描述
*
* 返回值& && &:
* 作者& && &&&:
* 创建日期& & :
* 全局变量& & :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本& & : & & & & & & & & & & & &&&修改人:& && && && && && &修改日期:
* 修改说明& & :
******************************************************************************************/
void LCD_Command(unsigned char nCommand)
{& && && && && && && && && && && &
&&& & & & A0_0();
//& & asm(&nop&);
//& & asm(&nop&);
&&& & & & E1_1();
&&& & & & E2_1();
//& & asm(&nop&);
//& & asm(&nop&);
&&& & & & DATA=nC
//& & asm(&nop&);
//& & asm(&nop&);
&&& & & & E1_0();
&&& & & & E2_0();
}
/******************************************************************************************
* 函数名称& & :LCD_SetRam
* 功能描述& & :送显示数据ndata,setMS为0主,1从
* 参数& && &&&:&&参数名称:& & & & 输入/输出?& & & & 类型& & & & & & & & 描述
*
* 返回值& && &:
* 作者& && &&&:
* 创建日期& & :
* 全局变量& & :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本& & : & & & & & & & & & & & &&&修改人:& && && && && && &修改日期:
* 修改说明& & :
******************************************************************************************/
void LCD_SetRam(unsigned char ChipSelect,unsigned char ndata)
{& && && && && &
& & A0_1();
//& & asm(&nop&);
//& & asm(&nop&);
& & if( ChipSelect )
& & {
& && &&&E1_0();
& && &&&E2_1();& &&&//选择左半屏
& & }
& & else
& & {
& && &&&E1_1();& &&&//选择右半屏
& && &&&E2_0();
& & }& &&&
//& & asm(&nop&);
//& & asm(&nop&);
& & DATA=
//& & asm(&nop&);
//& & asm(&nop&);
& & E1_0();
& & E2_0();
}
/******************************************************************************************
* 函数名称& & :LCD_Init
* 功能描述& & :
* 参数& && &&&:&&参数名称:& & & & 输入/输出?& & & & 类型& & & & & & & & 描述
*
* 返回值& && &:
* 作者& && &&&:
* 创建日期& & :
* 全局变量& & :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本& & : & & & & & & & & & & & &&&修改人:& && && && && && &修改日期:
* 修改说明& & :
******************************************************************************************/
void LCD_init(void)
{& &
&&& & & & LCD_OFF();& && && && && &//关闭显示
& & LCD_Command(LCD_RESET);&&//复位
&&& & & & LCD_Command(0xa0);& && & //列与段驱动反方向
&&& & & & LCD_Command(LCD_DUTY32); //1/32
&&& & & & LCD_Command(0xa4);& && & //关闭静态显示& & 打开正常驱动
&&& & & & LCD_EndRW();& && && && & //关闭自动列加1
&&& & & & LCD_SetStartLine(0);& &&&//设置起始行
&&& & & & LCD_SetColumn(0);& && &&&//起始列
&&& & & & LCD_SetPage(0);& && && & //起始页
&&& & & & LCD_ON();& && && && && & //开显示
}
/******************************************************************************************
* 函数名称& & :clrscr
* 功能描述& & :清屏
* 参数& && &&&:&&参数名称:& & & & 输入/输出?& & & & 类型& & & & & & & & 描述
*
* 返回值& && &:
* 作者& && &&&:
* 创建日期& & :
* 全局变量& & :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本& & : & & & & & & & & & & & &&&修改人:& && && && && && &修改日期:
* 修改说明& & :
******************************************************************************************/& &
void clrscr(unsigned char hdata)
{
& &
& &
& & for(page=0;page&4;page++)
&&& & & & {
&&& & & & & & & & LCD_SetPage(page);
& && & & & & & & & for(i=0;i&61;i++)
& && &&&{
& && && && &LCD_SetColumn(i);
& && && && & & & LCD_SetRam(0,hdata);
& && && && & & & LCD_SetRam(1,hdata);
& && & & & & & }
& && & & & }
}
/******************************************************************************************
* 函数名称& & :drawword
* 功能描述& & ://layer 值为0,2;wenzi 码表中的几个字
* 参数& && &&&:&&参数名称:& & & & 输入/输出?& & & & 类型& & & & & & & & 描述
*
* 返回值& && &:
* 作者& && &&&:
* 创建日期& & :
* 全局变量& & :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本& & : & & & & & & & & & & & &&&修改人:& && && && && && &修改日期:
* 修改说明& & :
******************************************************************************************/
/*
void drawword(unsigned char liedizhi,unsigned char layer,unsigned char *buff)
{
& & unsigned char column,i;//layer 值为0,2;wenzi 码表中的几个字
& &
& & for(i=0;i&16;i++)
& & {
& && &&&column=liedizhi+i;& &
& && &&&if(column&60)
& && &&&{
& && && && &cs=1;
& && && && &column-=61;
& && &&&}
& && & & & & & & & else
& && &&&cs=0;
& && &&&
& && &&&//LCD_SetStartLine(0);//设置起始行
& & & & & & LCD_SetColumn(column);//设置起始列
& & & & & & LCD_SetPage(layer);
& & & & & & LCD_SetRam(cs,*(buff+i));
& && &&&//LCD_SetStartLine(0);//设置起始行
& && & & & & & & & LCD_SetColumn(column);//设置起始列
& & & & & & LCD_SetPage(layer+1);
& & & & & & LCD_SetRam(cs,*(buff+16+i));
& & & & }
}
void drawascii(unsigned char liedizhi,unsigned char layer,unsigned char *text)
{
& & unsigned char column,i;//layer 值为0,2;wenzi 码表中的几个字
& &
& & while(*text)
& & {
& && &&&for(i=0;i&6;i++)
& && &&&{
& && && && &column=liedizhi+i;& &
& && && && &if(column&60)
& && && && &{
& && && && && & cs=1;
& && && && && & column-=61;
& && && && &}
& && && && &else cs=0;
& && &&&
& && && && &//LCD_SetStartLine(0);//设置起始行
& && && && &LCD_SetColumn(column);//设置起始列
& && && && &LCD_SetPage(layer);
& && && && &LCD_SetRam(cs,ascii[*text-32][i]);
& && &&&}
& && &&&text++;
& && &&&liedizhi+=6;
& & }
}
void make_ascii_big(unsigned char c)
{
& & & & target1 = 0;
& & & & target2 = 0;
& & & & if((c&0x80) != 0)
& & & & {
& & & & & & & & target1 += 192;
& & & & }
& & & & if((c&0x40) != 0)
& & & & {
& & & & & & & & target1 += 48;
& & & & }
& & & & if((c&0x20) != 0)
& & & & {
& & & & & & & & target1 += 12;
& & & & }
& & & & if((c&0x10) != 0)
& & & & {
& & & & & & & & target1 += 3;
& & & & }
& & & & if((c&0x08) != 0)
& & & & {
& & & & & & & & target2 += 192;
& & & & }
& & & & if((c&0x04) != 0)
& & & & {
& & & & & & & & target2 += 48;
& & & & }
& & & & if((c&0x02) != 0)
& & & & {
& & & & & & & & target2 += 12;
& & & & }
& & & & if((c&0x01) != 0)
& & & & {
& & & & & & & & target2 += 3;
& & & & }
}
void make_ascii_very_big(unsigned char c)
{
& & & & target1 = 0;
& & & & target2 = 0;
& & & & target3 = 0;
& & & & target4 = 0;
& & & & if((c&0x80) != 0)
& & & & {
& & & & & & & & target1 += 240;
& & & & }
& & & & if((c&0x40) != 0)
& & & & {
& & & & & & & & target1 += 15;
& & & & }
& & & & if((c&0x20) != 0)
& & & & {
& & & & & & & & target2 += 240;
& & & & }
& & & & if((c&0x10) != 0)
& & & & {
& & & & & & & & target2 += 15;
& & & & }
& & & & if((c&0x08) != 0)
& & & & {
& & & & & & & & target3 += 240;
& & & & }
& & & & if((c&0x04) != 0)
& & & & {
& & & & & & & & target3 += 15;
& & & & }
& & & & if((c&0x02) != 0)
& & & & {
& & & & & & & & target4 += 240;
& & & & }
& & & & if((c&0x01) != 0)
& & & & {
& & & & & & & & target4 += 15;
& & & & }
}
void draw_big_ascii(unsigned char liedizhi,unsigned char layer,unsigned char *text)
{
& & unsigned char column,i;
& &
& & while(*text)
& & {
& && &&&for(i=0;i&6;i++)
& && &&&{
& && && && &column=liedizhi+i+i;& &
& && && && &if(column&60)
& && && && &{
& && && && && & cs=1;
& && && && && & column-=61;
& && && && &}
& && && && &else cs=0;
& & & & & & & & & & & & make_ascii_big(ascii[*text-32][i]);
& && &&&
& && && && &LCD_SetColumn(column);//设置起始列
& && && && &LCD_SetPage(layer);
& && && && &LCD_SetRam(cs,target2);
& & & & & & & & & & & & LCD_SetColumn(column);//设置起始列
& && && && &LCD_SetPage(layer+1);
& && && && &LCD_SetRam(cs,target1);
& && && && &LCD_SetColumn(column+1);//设置起始列
& && && && &LCD_SetPage(layer);
& && && && &LCD_SetRam(cs,target2);
& & & & & & & & & & & & LCD_SetColumn(column+1);//设置起始列
& && && && &LCD_SetPage(layer+1);
& && && && &LCD_SetRam(cs,target1);
& && &&&}
& && &&&text++;
& && &&&liedizhi+=12;
& & }
}
void draw_very_big_ascii(unsigned char liedizhi,unsigned char *text)
{
& & unsigned char column,i,j;
& &
& & while(*text)
& & {
& && &&&for(i=0;i&6;i++)
& && &&&{
& && && && &column=liedizhi+i+i+i+i;& &
& & & & & & & & & & & & make_ascii_very_big(ascii[*text-32][i]);
& && &&&
& & & & & & & & & & & & for(j=0;j&4;j++)
& & & & & & & & & & & & {
& & & & & & & & & & & & column=liedizhi+i+i+i+i;
& && && && &if(column+j&60)
& && && && &{
& && && && && & cs=1;
& && && && && & column-=61;
& && && && &}
& && && && &else cs=0;
& && && && &LCD_SetColumn(column+j);
& && && && &LCD_SetPage(0);
& && && && &LCD_SetRam(cs,target4);
& & & & & & & & & & & & LCD_SetColumn(column+j);
& && && && &LCD_SetPage(1);
& && && && &LCD_SetRam(cs,target3);
& & & & & & & & & & & & LCD_SetColumn(column+j);
& && && && &LCD_SetPage(2);
& && && && &LCD_SetRam(cs,target2);
& & & & & & & & & & & & LCD_SetColumn(column+j);
& && && && &LCD_SetPage(3);
& && && && &LCD_SetRam(cs,target1);
& & & & & & & & & & & & }
& && &&&}
& && &&&text++;
& && &&&liedizhi+=24;
& & }
}复制代码
 这个很实用
太有材了!大赞!!
楼主动手能力真强啊,呵呵
自行车的轮子大小可以设置嘛
果断做一个。。。。。。。。。。。。。
我也想做一个,学习一下
顶。。。对于有用的资料,一定要顶上去供大家参考学习。
不能让那些资料不全,拿出来炫耀,又不肯共享技术的人的帖子在前面挡住大家学习的脚步。。。
怎么设轮子大小
时速是按照中断一次,周长/时间还是什么。如何判断,代码太多,看花眼。
我想是否可以用在我的老中华汽车上?哈哈
真好,,就是不懂
厉害,我都快搞疯了,做这个
学习学习看看自己能不能做出来
学习学习看看自己能不能做出来
谢谢楼主!学习了
正好需要,下载过来学习一下,感谢楼主
thanks for sharing
程序里没有测温度的。LCD12232如果用1602如何替换?
程序里没有测温度的。LCD12232如果用1602如何替换?
自行添加测温功能。只能重新编写显示部分了
楼主很给力
谢谢。正好在做这个
楼主可以加Q向你学习一下吗
谢谢分享,个人觉得1602 比较常用,小巧一点
学习,谢楼主
本帖最后由 323额 于
21:52 编辑
楼主,ds1302的接口在哪个程序里,想改一下,主函数没找到
Powered by}

我要回帖

更多关于 自行车码表设置周长 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信