【完整版】自行车简易数字里程表设计毕业论文设计 下载本文

内容发布更新时间 : 2024/12/23 3:06:10星期一 下面是文章的全部内容请认真阅读。

3.4.2 仿真结果

仿真结果如图12所示。

LCD1LM016LVSSVDDVEERSRWERS4GND5E620pFX112M19XTAL1C21820pFXTAL2R1C810uF1k9RSTP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617d0d1d2d3d4d5d6d7RSGNDE98765432d0d1d2d3d4d5d6d7U1d07d18d29d310d411d512d613d714C1123D0D1D2D3D4D5D6D7RP1RESPACK-8U281VCC1VCC2X12293031PSENALEEA1576X2RSTSCLKI/ODS1302CRYSTALX2312345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51R210kLS1U3231GNDVIOUTVCCIP+4IP-5SPEAKERR310kACS755XCB-050 图12 仿真结果

第四部分 安装调试与性能测量

电路实物图如图13所示。

图13 电路实物图

第五部分 设计总结

通过本次设计,使我对单片机知识和理解更一步加深了,掌握了简易数字里程表的设计,组装和调试方法。并且使我更加熟练的应用仿真软件,让我学到了如何运用软件测试电路的可行性,并且对电路的调试改进都有一个很大的

17

提高。

这个过程中我遇到了很多困难,比如如何运用仿真软件画图,如何组织一些比较专业的语言,以及上网查阅资料。虽说费劲,但是乐趣也不少。通过这次设计,我们了解到平时知识的积累真的很重要,在遇到困难时一定要向认真思考,查阅相关资料,不可盲目退缩,努力后就一定会有收获。

这次毕业设计收获颇丰,不仅是对自己个人能力的提高,也让我认识到了自己的局限,通过这次的毕业设计为以后的学习奠定了一个更好的基础。

参考文献

[1] 李朝青. 单片机原理及接口技术. 北京航空航天大学出版社, 1994 [2] 张毅刚, 刘杰. MCS-51单片机原理及应用. 哈尔滨工业大学出版社,2004 [3] 楼然苗, 李光飞. 51系列单片机设计实例. 北京航空航天大学出版社, 2006 [4] 松井邦彦, 梁瑞林. 传感器应用技术141例. 科学出版社, 2006 [5] 张洪润, 张亚凡. 传感器技术与应用教程. 清华大学出版社, 2005 [6] 刘灿军. 实用传感器. 国防工业出版社, 2004 [7] 何希才. 传感器及其应用. 国防工业出版社, 2001

[8] 刁文兴. 自行车电子里程表的初步设计. 南京工业职业技术学院学报, 2004, 6: 25-28 [9] 安宗权. 电动电子车速里程表分频电路设计. 自动化与仪器仪表, 2001, 5: 39-44 [10] 阎焕忠, 王长涛, 马斌. 单片机控制里程转速表的设计. 沈阳建筑工程学院学报(自

然科学版),2002, 4: 145-148

[11] 谢自美. 电子线路设计.实验.测试[M].武汉:华中科技大学出版社,2000:212-230 [12] 张福学. 传感器使用电路150例.中国技术出版社.1992

程序

#include

uchar i;

uchar t1_num,t2_num; 计时间中断的

次数

unsigned long speed1,juli,time2; float f_; 开始计算速度使能 uchar flag_stop_en; 要确定车子是否停下了

uint juli_s;

每秒走的距离

uint juli_z; 总路程 float zhijing = 0.55; 直径 0.55M bit flag_1s = 1;

1s

uchar menu_1; 菜单设置变量 uchar menu_2; 菜单设置变量

long zong_lc; 总量程

uchar flag_200ms;

uint shudu; 定义速度的变量 uint bj_shudu = 80; 报警速度

这三个引脚参考资料

sbit rs=P1^0; 寄存器选择信号 H:数据寄存器 L:指令寄存器

sbit rw=P1^1; 寄存器选择信号 H:数据寄存器 L:指令寄存器

sbit e =P1^2; 片选信号 下降沿触发

uchar

code

table_num[]=%uchar i;

sbit beep = P3^7; 蜂鸣器IO口定义

******************1ms 延时函数******************* void delay_1ms(uint q) { uint i,j; for(i=0;i

for(j=0;j<120;j++);

}

******************把数据保存到单片机内部eepom中****************** void write_eeprom() { SectorErase(0x2000);

byte_write(0x2000, bj_shudu % 256);

byte_write(0x2001,

bj_shudu

256);

byte_write(0x2002, zong_lc %

256);

byte_write(0x2003,

zong_lc

19

256 % 256);

byte_write(0x2004, zong_lc 256

256 % 256); byte_write(0x2055, a_a); }

******************把数据从单片机内部eepom中读出来***************** void read_eeprom() { uint value;

bj_shudu = byte_read(0x2001); bj_shudu <<= 8;

bj_shudu |= byte_read(0x2000); zong_lc = byte_read(0x2004); zong_lc <<= 16;

value = byte_read(0x2003); zong_lc |= (value << 8); zong_lc |= byte_read(0x2002); a_a = byte_read(0x2055);

}

**************开机初始化保存的数据*****************

void init_eeprom() 开机初始化保存的数据* { read_eeprom(); 先读

if(a_a != 1)

新的单片机初

始单片机内问eeprom { bj_shudu = 50;

a_a = 1;

write_eeprom(); 保存数据

}

}

******************************************************************** * 名称 : delay_uint()

* 功能 : 小延时。 * 输入 : 无 * 输出 : 无

***********************************************************************

void delay_uint(uint q) { while(q--);

}

******************************************************************** * 名称 : write_com(uchar com) * 功能 : 1602命令函数 * 输入 : 输入的命令值 * 输出 : 无

**********************************************************************