版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z汽车测速仪摘要本课题实验主要是利用STC89C52RC、12864液晶、24C02E2PROM、霍尔传感器和加速度倾角传感器来实现自行车测速功能。通过霍尔传感器来采集信号,经过单片机处理后,由12864液晶显示其总里程,分里程,速度,加速度;信号经过加速度倾角传感器读出坡度值,并在12864液晶中显示出来;然后由数学公式计算出消耗的卡路里值。12864显示页面一共有三面。按键具有调控展现的页面,去除分里程数据,保存总里程数据的功能,利用24C02实现断电不消失的功能。发光二极管模块,利用MOS管的特性可以实现在暗处自动点亮。关键词测速仪;霍尔传感器A3144;加速度倾角传感器MMA74
2、55;12864LCD目录设计要求设计方案.1芯片的选择 .2霍尔传感器与单片机的通信 .312864液晶屏与单片机 .4单片机与24C02 .5单片机与MMA7455 .6单片机下载程序 总体方案.工作原理 .总体设计系统硬件设计.STC89C52RC单片机最小系统 .各局部电路电路图.整体电路 系统软件设计.主程序流程参考文献附录 设计要求1.1 发光二极管模块在暗处自动点亮功能。1.2 利用霍尔传感器采集信号,由单片机处理后控制外围设备工作。1.3 利用单片机控制12864液晶屏显示。1.4 将指定的数据放入24C02中,到达断电不丧失的效果。1.5 用Keil uVision3编写C程
3、序,利用单片机最小系统烧写程序到单片机。1.6 利用传感器模块计算倾角坡度,由12864液晶显示。 设计方案2.1 芯片的选择汽车测速仪按系统功能实现要求,决定控制系统采用STC89C52RC单片机,采集信号的霍尔传感器采用A3144,保存信息的E2PROM 24C02,计算倾角的加速度倾角传感器MMA7455,用于显示的12864液晶。2.2 霍尔传感器与单片机之间的通信将霍尔传感器的信号输出端和单片机的*一个I/O口相连本板子中使用P23,通过检测P23电平的下降沿和上升沿来编写程序,以到达计数的功能。2.3 12864液晶屏与单片机将12864液晶屏按照其操作指南正确连接在电路中,编写程
4、序,由单片机控制12864液晶显示各种数据。2.4 单片机与24C02程序编写中,要求保存功能的按键按下时,总里程的数据写入到24C02芯片中,到达断电不丧失的功能。将24C02按照操作手册正确连接到电路中,由单片机控制,当检查到按键按下时,执行程序:经总里程数据写入24C02中,保存起来。2.5 单片机与MMA7455此模块是用集成工艺制作好的商品。按照操作手册正确连接到电路中,根据芯片资料和例如程序可以使其输出角度值,然后在12864中显示出来。2.6单片机下载程序利用单片机最小系统和串口配合MA*232转电平芯片,借助STC下载器完成程序的改写。3 总体方案3.1 工作原理本实验主要是利
5、用STC89C52RC、12864液晶、24C02E2PROM、霍尔传感器和加速度倾角传感器来实现汽车测速功能。通过霍尔传感器来采集信号,经过单片机处理后,由12864液晶显示其总里程,分里程,速度,加速度;信号经过加速度倾角传感器读出坡度值,并在12864液晶中显示出来;然后由数学公式计算出消耗的卡路里值。12864显示页面一共有三面。按键具有调控展现的页面,去除分里程数据,保存总里程数据的功能,利用24C02实现断电不消失的功能。发光二极管模块,利用MOS管的特性可以实现在暗处自动点亮3.2设计总体框图STC89C52RCA314424C02MMA7455745512864液晶4 系统硬件
6、设计4.1 STC89C52RC单片机最小系统4.1.1最小系统包括晶体振荡电路、复位开关和电源局部。4.2各局部电路4.2.1 主要控制局部STC89C52RC4.2.2 12864液晶局部4.2.3 24C02局部电路4.2.4 串口及MA*232局部4.2.5 倾角传感器MMA74554.2.6 霍尔传感器局部4.2.7 发光二极管独立显示模块4.3整体电路5 系统软件设计主程序流程图开场初始化检查霍尔传感器信号单片机处理信号发出指令操作液晶屏显示参考文献1 红卫 ?基于单片机构造的智能系统设计与实现? 电子工业2 黄惠媛 ?单片机原理与接口技术? 海洋3 周平 伍云辉 ?单片机应用技术
7、? 电子科技大学4 吴金戌 郭庭吉 ?8051单片机实践与应用? 清华大学5 黄正谨等 ?电子设计竞赛赛题解析? 东南大学 附 录程序:/*理工大学应用科学学院*/*周望君*/ /*自行车测速仪程序*/*include*include*define uchar unsigned char*define uint unsigned int/*液晶屏相关局部*/*define lcd_port P0 /液晶屏指令、数据通信接口sbit rs=P27; /液晶屏存放器选择接口rs=0时选择指令存放器,rs=1时选择数据存放器sbit rw=P26;/液晶屏读写选择接口rw=0时选择写入,rw=1时选
8、择读出sbit en=P25;/液晶屏使能接口en=0时通信接口中断,en=1时通信接口接通sbit ret=P24; /液晶屏主复位引脚/*子函数局部*/void delayms_lcd(uint ms);/延时子函数,时间为1msvoid delay_n10_us(uint n); /10微秒延时函数(n*10us) void lcd_wr_mand(uchar );/向液晶屏输入命令子函数void lcd_wr_data(uchar dat);/向液晶屏输入数据单字节子函数void lcd_int();/LCD初始化void picture_show0(); /12864画面0void
9、picture_show1(); /12864画面1void picture_show2();/12864画面2void picture_select(); /12864画面选择void key_select(); /按键相关判断void interrupt_set(); /中断函数参数设定void start_24C02(); /24C02起始信号void write_one_char(uchar *);/写入一个字节void wait_ack(); /等待应答uchar read_one_char(); /读出一个字节void stop_24C02(); /24C02终止信号void re
10、ad_total_distance(); /读出24C02中数据并且赋值给total_distancevoid write_total_distance(); /写入24C02中total_distance数据void write_total_distance1(); /写入24C02中total_distance数据void forbid_data(); /限制所有变量的取值/*24C02相关局部*/sbit SCL=P15;/串口时钟引脚sbit SDA=P14;/串口数据引脚/*相关数组局部*/uchar code data1=欢送使用;uchar code data2=自行车测速仪;u
11、char code data3=制作人;uchar code data4=周望君;uchar code data5=向辉;uchar code data6=总里程;uchar code data7=分里程;uchar code data8=速度;uchar code data9=加速度;uchar code data10=坡度;uchar code data11=卡路里;uchar code data12=请注意平安;uchar code data_show=0123456789;/*相关变量局部*/uint new_total_distance=0,old_total_distance=0;
12、 /四位数据uint new_part_distance=0,old_part_distance=0; /三位数据uint old_speed=0,new_speed=0; /两位数据uint old_acceleration=0,new_acceleration=0; /两位数据uint old_ascent=0,new_ascent=0; /三位数据uint calorie=0; /三位数据uchar old_j=0,new_j=0,part_flag=0,write_flag=0,show_flag=0,control_flag=0;static uint time=0;/*按键相关*/
13、sbit key1=P10; /页面上翻sbit key2=P11; /手动保存sbit key3=P12; /页面下翻sbit key4=P13; /去除分里程数据/*霍尔传感器相关局部*/sbit A3145_OUT=P23;/*/void main()read_total_distance();lcd_int(); /LCD初始化picture_show0();delayms_lcd(2000);lcd_int();picture_show1();delayms_lcd(2000);lcd_int();picture_show2();delayms_lcd(2000);interrupt
14、_set();A3145_OUT=1;while(1)key_select();picture_select();if(control_flag=0)new_total_distance=new_part_distance;if(show_flag=1)if(old_j=1)picture_show1();if(old_j=2)picture_show2();if(part_flag=1)while(A3145_OUT=0) ;ET0=0;TR0=0;new_speed=250/time;new_acceleration=(new_speed-old_speed)*50/time;time=0
15、;ET0=1;TR0=1;new_part_distance+=5;calorie=(calorie+5);part_flag=0;show_flag=1;forbid_data();/*限制所有变量的取值*/void forbid_data()if(old_total_distance+new_total_distance)9999)new_total_distance=old_total_distance=0;if(new_part_distance999)new_part_distance=0;write_total_distance();read_total_distance();if
16、(new_speed99)new_speed=0;if(new_acceleration99)new_acceleration=0;if(calorie999)calorie=0;/*LCD显示画面0*/void picture_show0()uchar i;i=0;lcd_wr_mand(0*82);/设置液晶屏的显示位置while(data1i!=0)lcd_wr_data(data1i);i+;i=0;lcd_wr_mand(0*91);while(data2i!=0)lcd_wr_data(data2i);i+;i=0;lcd_wr_mand(0*8A);while(data3i!=0
17、)lcd_wr_data(data3i);i+;i=0;lcd_wr_mand(0*99);while(data4i!=0)lcd_wr_data(data4i);i+;i=0;lcd_wr_mand(0*9C);while(data5i!=0)lcd_wr_data(data5i);i+; /*LCD画面1*/ void picture_show1() uchar i,flag=0;uint temp;i=0; lcd_wr_mand(0*81);/设置液晶屏的显示位置while(data6i!=0)lcd_wr_data(data6i);i+;lcd_wr_mand(0*84);temp=
18、(new_total_distance+old_total_distance);if(temp/1000=0) lcd_wr_data( );elselcd_wr_data(data_showtemp/1000);/显示数据字符flag=1;temp%=1000;if(temp/100)!=0|flag=1)lcd_wr_data(data_showtemp/100);/显示数据字符flag=1;else lcd_wr_data( );temp%=100;if(temp/10)!=0|flag=1)lcd_wr_data(data_showtemp/10);/显示数据字符flag=1;else
19、lcd_wr_data( );temp%=10;lcd_wr_data(data_showtemp);/显示数据字符lcd_wr_mand(0*86);lcd_wr_data(m);i=0;flag=0;lcd_wr_mand(0*91);while(data7i!=0)lcd_wr_data(data7i);i+;lcd_wr_mand(0*94); temp=new_part_distance;if(temp/100=0)lcd_wr_data( );elselcd_wr_data(data_showtemp/100);/显示数据字符flag=1;temp%=100;if(temp/10)
20、!=0|flag=1)lcd_wr_data(data_showtemp/10);/显示数据字符flag=1;elselcd_wr_data( );temp%=10;lcd_wr_data(data_showtemp);/显示数据字符lcd_wr_mand(0*96); lcd_wr_data(m);i=0;flag=0;lcd_wr_mand(0*89);while(data8i!=0)lcd_wr_data(data8i);i+;lcd_wr_mand(0*8B);temp=new_speed;if(temp/10=0)lcd_wr_data( );elselcd_wr_data(data
21、_showtemp/10);/显示数据字符temp%=10;lcd_wr_data(data_showtemp);/显示数据字符lcd_wr_mand(0*8C);lcd_wr_data(m);lcd_wr_data(/);lcd_wr_data(s);i=0;old_speed=new_speed;lcd_wr_mand(0*99);while(data12i!=0)lcd_wr_data(data12i);i+; /*LCD画面2*/void picture_show2() uchar i,flag=0;uint temp; i=0;lcd_wr_mand(0*81);while(data
22、9i!=0)lcd_wr_data(data9i);i+;lcd_wr_mand(0*84);temp=new_acceleration;if(temp/10=0)lcd_wr_data( );elselcd_wr_data(data_showtemp/10);/显示数据字符temp%=10;lcd_wr_data(data_showtemp);/显示数据字符lcd_wr_mand(0*85);lcd_wr_data(m);lcd_wr_data(/);lcd_wr_data(s);lcd_wr_data(2);i=0; flag=0;lcd_wr_mand(0*91);while(data1
23、0i!=0)lcd_wr_data(data10i);i+; lcd_wr_mand(0*93);temp=new_ascent;if(temp/100=0)lcd_wr_data( );elselcd_wr_data(data_showtemp/100);/显示数据字符flag=1;temp%=100;if(temp/10)!=0|flag=1)lcd_wr_data(data_showtemp/10);/显示数据字符flag=1;elselcd_wr_data( );temp%=10;lcd_wr_data(data_showtemp);/显示数据字符lcd_wr_mand(0*95);l
24、cd_wr_data(0*09);i=0;flag=0;lcd_wr_mand(0*89);while(data11i!=0)lcd_wr_data(data11i);i+; lcd_wr_mand(0*8C);temp=calorie;if(temp/100=0)lcd_wr_data( );elselcd_wr_data(data_showtemp/100);flag=1;temp%=100;if(temp/10)!=0|flag=1)lcd_wr_data(data_showtemp/10);/显示数据字符flag=1;elselcd_wr_data( );temp%=10;lcd_wr
25、_data(data_showtemp);/显示数据字符lcd_wr_mand(0*8E);lcd_wr_data(k);i=0;flag=0;lcd_wr_mand(0*99);while(data12i!=0)lcd_wr_data(data12i);i+; /*LCD初始化*/void lcd_int()ret=0;/液晶屏复位delayms_lcd(2);ret=1;delayms_lcd(2);lcd_wr_mand(0*30);/启动液晶屏根本指令集并开启绘图显示功能lcd_wr_mand(0*0c);/开显示,关光标,不闪烁lcd_wr_mand(0*06); /字符进入模式为:
26、字符不动,光标右移,地址加一lcd_wr_mand(0*01); /清屏 delayms_lcd(2); /等待清屏完成/*向液晶屏写入命令子函数*/void lcd_wr_mand(uchar )en=0;/关闭通信,为设置参数做准备rs=0;/选择指令存放器rw=0;/写入液晶en=1;/为开场通信做准备lcd_port=;delay_n10_us(8);/大于72us的延时(根据手册)en=0;/数据送如液晶屏并关闭通信(en的下降沿液晶屏接收数据)/*向液晶屏输入数据子函数*/void lcd_wr_data(uchar dat)en=0;/关闭通信,为设置参数做准备rs=1;/选择数
27、据存放器rw=0;/写入液晶en=1;/为开场通信做准备lcd_port=dat;delay_n10_us(8);/大于72us的延时(根据手册)en=0;/数据送如液晶屏并关闭通信(en的下降沿液晶屏接收数据) /*毫秒延时函数,延时1ms*/void delayms_lcd(uint ms)uchar i;while(ms-)for(i=0;i121;i+);/*10微秒延时函数(n*10us)*/void delay_n10_us(uint n)while(n-)_nop_();_nop_();/*LCD显示画面选择*/void picture_select() if(old_j=new
28、_j);elseswitch(new_j) case 1 :lcd_int(); picture_show1();old_j=new_j; break; case 2 :lcd_int(); picture_show2();old_j=new_j; break; /*按键相关判断*/void key_select()if(key1=0)delayms_lcd(7);if(key1=0)new_j=2;while(key1=0);if(key2=0)delayms_lcd(7);if(key2=0)old_total_distance+=new_total_distance;new_total_
29、distance=0;write_total_distance();control_flag=1;while(key2=0);if(key3=0)delayms_lcd(7);if(key3=0)new_j=1;while(key3=0);if(key4=0)delayms_lcd(7);if(key4=0)old_total_distance+=new_total_distance;new_part_distance=0;while(key4=0);/*中断函数参数设定*/void interrupt_set()TMOD=0*11;/0001 0001 T1、T0工作在定时方式1TH1=(6
30、5536-10000)/256;/T1定时时间为10毫秒10000微秒TL1=(65536-10000)%256;TH0=(65536-20000)/256;TL0=(65536-20000)%256;ET1=1;/启动T1中断允许位ET0=1;EA=1;/启动总中断允许位TR1=1;/启动T1TR0=1;/*T1中断函数*/void timer1() interrupt 3 using 1ET1=0;/关闭T1中断允许位TH1=(65536-10000)/256;/重设T1定时时间为10毫秒10000微秒TL1=(65536-10000)%256;if(A3145_OUT=0)part_fl
31、ag=1;ET1=1;/开启T1中断允许位/*T0中断函数*/void timer2() interrupt 1 using 2TH0=(65536-20000)/256;TL0=(65536-20000)%256;time+;/*写入24C02中数据*/void write_total_distance()start_24C02();write_one_char(0*a0);wait_ack();write_one_char(0*01);wait_ack();write_one_char(old_total_distance/256);wait_ack();stop_24C02();delayms_lcd(100);start_24C02();write_one_char(0*a0);wait_ack();write_one_char(0*02);wait_ack();write_one_char(old_total_distance%256);wait_ack();stop_24C02();delayms_lcd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《标准理解与实施》课件
- 《盾构施工测量培训》课件
- 《员工安全教育讲义》课件
- 《测序技术介绍》课件
- 单位管理制度集合大全职工管理篇
- 单位管理制度集粹选集员工管理篇十篇
- 单位管理制度汇编大全职工管理篇
- 单位管理制度合并汇编【职员管理篇】
- 《客服分析报告会》课件
- 单位管理制度分享合集【人力资源管理】十篇
- 社区获得性肺炎诊断和治疗指南
- 叉车定期检验研究报告
- 人教版一年级数学上册期末无纸笔考试试卷(A卷)【含答案】
- 2,3-二甲苯酚的理化性质及危险特性表
- 申报职称:副教授演示课件
- 型滤池计算说明书
- 格力离心机技术服务手册
- 水泥搅拌桩计算(完美)
- 旭化成离子交换膜的介绍
- JJRB轻钢龙骨隔墙施工方案要点
- 石油石化用化学剂产品质量认可实施细则
评论
0/150
提交评论