自行车简易数字里程表设计论文 联系客服

发布时间 : 星期二 文章自行车简易数字里程表设计论文更新完毕开始阅读

3.4 电路仿真

3.4.1 仿真软件简介

Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面, 它也支持IAR、Keil和MPLAB等多种编译器。

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-8U281VCC1X1VCC22293031PSENALEEA1576X2RSTSCLKI/ODS1302CRYSTALX2312345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51R210kLS1U3231GNDVIOUTVCCIP+4IP-5SPEAKERR310kACS755XCB-050 图12 仿真结果

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

电路实物图如图13所示。

图13 电路实物图

第五部分 设计总结

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

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

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

参考文献

[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 //调用单片机头文件

#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255

#define uint unsigned int //无符号整型 宏定义 变量范围0~65535 #include \

/******************

ds1302 内部RAM RAM0 1100 000R/W 1读 0写

RAM1 1100 001R/W

....... RAM30 1111 110R/W

********************/

sbit clk = P1^3; //ds1302时钟线定义

sbit io = P1^4; //数据线 sbit rst = P1^5; //复位线

//秒 分 时 日 月 年 星期 uchar code write_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a}; //写地址 uchar code read_add[] ={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b}; //读地址 uchar code init_ds[] ={0x55,0x17,0x15,0x01,0x01,0x13,0x13};

uchar miao,fen,shi,ri,yue,week,nian; uchar i;

uchar t1_num,t2_num; //计时间中断的次数

unsigned long speed1,juli,time2; float f_hz ,speed_km,speed_m; //dlaout time1 ,speed_km,speed_m; uchar TH11,TL11;

uchar flag_en; //开始计算速度使能 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 / 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命令函数 * 输入 : 输入的命令值 * 输出 : 无

***********************************************************************/ void write_com(uchar com) {

i =0; e=0; rs=0; rw=0; P0=com;

delay_uint(3); e=1;

delay_uint(25); e=0; }

/******************************************************************** * 名称 : write_data(uchar dat) * 功能 : 1602写数据函数

* 输入 : 需要写入1602的数据 * 输出 : 无