




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AndthispaperwillelaboratethebasicprincipleofthesystemMoreover,thispaperwillelaborateonthestructureandprinciplesof24C1Thiswillgivethenecessaryproceduresforthesystemdesig初始化系统中的一些数据:先将程序中T1设为外部控制定时器方式;外中断0及外中断1设为边沿触发器方式;将部分内存单元清零;设置轮子周长值;开中断及定时器;将EEPROM中的数据调入内存等。在P1.2、P1.3、P1.4、P1.6、P1.12端口的开关用于设定轮子的周长,当没有设定定时,能从P3.1口输出一个周期为0.5S的方波信号,用作发光管闪烁及信响器提醒。外中断0服务程序用于对12脚输入的圈脉冲进行计数,为十六进制计数器。60H为低位,62H为高位。每计数一次后,对里程数据进行一次存储操作。外中断1服务程序用于处理轮子的转动一圈后的几时数据。当标志位为1时,说明计数器溢出,放入最的时间值;当标志为0时,将计数单位的值放入68H~6BH单位。当显示里程时,先要将圈数计时器中的数据进行运算,求出总里程当要显示速度时,要将轮子的周长和转一圈的时间数相除,然后换算长km/h单位。最后放入120H~123H,进行数据的显示。2系统总体概述2.1工作原理2.1.系统主要由霍尔传感器、单片机AT89C51、存储器24C01、TC4024、七段LED显示器组成,如图2.1所示。图2.1原理框图轮子每转一圈,霍尔传感器输出一个低电平脉冲并经AT89C51的12脚输入,霍尔传感器输出轮子圈数的计数脉冲经TC24024的二分频形成控制信号经AT89C51的13脚输入,AT89C51将部分信号数据存放在储存器24C01,LED显示器是通过AT89C51的P0口和P2口扩展2.1.2图2.2原理图3硬件介绍3.1霍尔元件3.1.1霍尔器件是一种磁传感器。用它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍尔器件以霍尔效应为其工作基础。
霍尔器件具有许多优点,它们的结构牢固,体积小,重量轻,寿命长,安装方便,功耗小,频率高(可达1MHZ),耐震动,不怕灰尘、油污、水汽及盐雾等的污染或腐蚀。
霍尔线性器件的精度高、线性度好;霍尔开关器件无触点、无磨损、输出波形清晰、无抖动、无回跳、位置重复精度高(可达μm级)。取用了各种补偿和保护措施的霍尔器件的工作温度范围宽,可达-55℃~150℃。3.1.2在一块通电的半导体薄片上,加上和片子表面垂直的磁场B,在薄片的横向两侧会出现一个电压,这种现象就是霍尔效应,是由科学家爱德文·霍尔在18129年发现的。VH称为霍尔电压。这种现象的产生,是因为通电半导体片中的载流子在磁场产生的洛仑兹力的作用下,分别向片子横向两侧偏转和积聚,因而形成一个电场,称作霍尔电场。霍尔电场产生的电场力和洛仑兹力相反,它阻碍载流子继续堆积,直到霍尔电场力和洛仑兹力相等。这时,片子两侧建立起一个稳定的电压,这就是霍尔电压。3.1.整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行[3]。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。器件容量(kb)内部块数页面字节引脚控制字(位)A2A1A0A2A1A024C01118均为片选位与引脚匹配4.软件设计4.1系统内存的规划由于本系统处理功能较多,因而一部分内单元用于特定的用处。起主要内存单元及用处如下:50H:EEPROM器件寻址字节存放单元;5lH:EEPROM传送字节数存放单元;30H:EEPROM发送数据缓冲单元;40H:EEPROM读出数据存放单元:0A0H:EEPROM寻址字节写;0A1H:EEPROM寻址字节读:62H:DPTK计数扩展高8位;6CH:定时器T1计数扩展高8位;6DH:定时器T1计数器扩展高8~16位;60H、G1H、62H:里程计数单元;68H、69H、6AH.6HH:存放自行车每圈时间数;120H、12lH、12211,123H:显示BCD码数据存放用;11H~15H:存放被除数;16H~19H:存放除数。4.2程序介绍软件主要包括:主程序、初始化程序、里程计数子程序、轮圈设置出错处理程序、计数器中断服务程序、E2PROM存取程序、显示子程序。1、主程序根据P0口的开关状态切换显示状态,即选择里程显示和速度显示。2、初始化程序初始化程序主要功能是将T1设为外部控制定时器方式,外中断INT0及INT1设为边沿触发方式,将部分内存单元清零,设置车轮周长值,开中断及定时器,将AT24C01中的数据调入内存中。3、里程计数子程序外中断INT0服务程序用于对12脚输入的车轮圈数脉冲进行计数,为十六进制计数器,用片内RAM的60H单元存储计数值的低位,62H存储高位,计数一次后,对里程数据进行一次存储。4、轮圈设置出错处理程序P1.2、P1.3、P1.6、P1.12端口的开关用于设定轮子的周长,当没有设定时,能从P3.1口输出一个周长为0.5s的方波信号,用作发光管闪烁及信响器提醒。5、计数器中断服务程序外中断1服务程序用于处理轮子转动一圈后的计时数据,当标志位为1时,说明计数器溢出,放入最大时间值;当标志为0时,将计数单元的值放入68H~6BH单元。6、E2PROM存取程序将外部信息写入AT24C01存储器,存入从50H起的单元中;把外部信息从AT24C01存储器中读出,送CPU进行处理[9]。7、显示子程序当显示里程时,先要将计数器中的数据进行运算,求出总里程,并送入里程显示缓冲区;当要显示速度时,要将轮子的周长和转一圈的时间相除,然后换算成km/h(千米/小时),存入120H~123H单元,进行数据显示。4.3主程序流程图主流程图如图4.1所示。图4.1主程序流程图4.4主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SPEED/MILEFORBIKEPROGRAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;60H,61H,62H作里程计数单元,6CH,6DH作T1计数扩充单元,;68H,69H,6AH,6BH存放自行车每圈时间数,120H,121H,122H,123H;作显示BCD码存放数用,11H--15H存放被除数,16H-19H存放除数;;;定义SLAEQU50H;EEPROM器件寻址字节存放单元NUMBYTEQU51H;EEPROM传送字节数存放单元MTDEQU30H;EEPROM发送数据缓冲单元MRDEQU40H;EEPROM读出数据存放单元SLAWEQU0A0H;EEPROM寻址字节写SLAREQU0A1H;EEPROM寻址字节读DPHHEQU62H;DPTR计数扩展高8位TH1HEQU6CH;定时器T1扩展高8位TH1HHEQU6DH;定时器T1扩展高8-16位;;;;;;;;;;;;;;;;;;;;;;;PROGRAMINPUT;;;;;;;;;;;;;;;;;;;;;;;ORG0000H ;程序执行开始地址LJMPSTART ;跳至STARTORG0003H ;外中断0中断程序入口LJMPINTEX0 ;跳至INTEX0中断服务程序ORG000BH ;定时器T0中断程序入口RETI ;中断返回ORG0013H ;外中断1中断入口LJMPINTEX1 ;跳至INTEX1中断服务程序ORG001BH ;定时器T1中断程序入口LJMPINTT1 ;跳至INTT1中断服务程序ORG0023H ;串口中断入口地址RETI ;中断返回ORG002BH ;定时器T2中断入口地址RETI ;中断返回;;;;;;;;;;;;;;;;;;;;;;;;PROGRAMCLEAR;;;;;;;;;;;;;;;;;;;;;;;上电初始化程序CLEARMEN:MOVTMOD,#90H;T1为16位外部控制定时器MOVSP,#125H;堆栈在125H开始SETBPX0;外中断0优先级为1SETBIT0;外中断0用边沿触发SETBIT1;外中断1用边沿触发CLRA;清AMOV20H,A;清内存中特定单元MOV6CH,A;MOV6DH,A;MOV120H,A;MOV121H,A;MOV122H,A;MOV123H,A;MOV60H,A;MOV61H,A;MOV62H,A;MOV63H,A;清内存中特定单元DECA ;A为#0FFHMOV68H,A;内存置数据#0FFHMOV69H,A;内存置数据#0FFHMOV6AH,A;内存置数据#0FFHMOV6BH,A;内存置数据#0FFHMOVP1,A ;P1口置1CLEAR1:JBP1.2,KEY1;根据P1.2,P1.3,P1.6,P1.12设置状态, ;在21H地址单元赋自行车周长值MOV21H,#0FH;22寸自行车周长值LJMPCLEAR2;转CLEAR2KEY1:JBP1.3,KEY2;MOV21H,#12H;24寸自行车周长值LJMPCLEAR2;转CLEAR2KEY2:JBP1.6,KEY3;MOV21H,#14H;26寸自行车周长值LJMPCLEAR2;转CLEAR2KEY3:JBP1.12,ERR;四个开关都没合上,转出错处理MOV21H,#19H;28寸自行车周长值CLEAR2:SETBTR1;开定时器T1SETBEA;开中断允许SETBEX0;开外中断0SETBET1;开定时中断T1SETBP3.1;关报警器LCALLVIICREAD;将EEPROM中原里程数据调入内存RET ;子程序返回ERR:CPLP3.1;轮周长设置出错,LED灯闪烁堤醒LCALLDL5S;延时LJMPCLEAR1;重新初始化,等待轮周长设置开关合上;;;;;;;;;;;;;;;;;;;;;;;PROGRAMSTART;;;;;;;;;;;;;;;;;;;;;;;START:LCALLCLEARMEN;上电初始化START1:JBP3.0,DISPLAYS;P3.0=1,显示里程LCALLDISPLAYV;显示速度START2:SJMPSTART1;转START1循环;;;;;;;;;;;;;;;;;;;;;;;INTEX0PROGRAM;;;;;;;;;;;;;;;;;;;;;;;里程计数程序,用外中断0实现,计数用60H-62H内存单元。INTEX0:PUSHACC;累加器堆栈保护PUSHPSW ;状态字堆栈保护INC60H ;圈加1CLRA ;清ACJNEA,60H,INTEX0OUT;计数没溢出转INTEX0OUTINC61H;溢出进位(61H加1)CJNEA,61H,INTEX0OUT;计数没溢出转INTEX0OUTINC62H ;溢出进位(62H加1)INTEX0OUT:LCALLVIICWRITE;里程数据存入EEPROMSETBEX1 ;开外中断1POPPSW ;状态字恢复POPACC;累加器恢复RETI ;中断返回;;;;;;;;;;;;;;;;;;;;;;INTEX1PROGRAM;;;;;;;;;;;;;;;;;;;;;;;每转1圈时间计数处理程序,每圈时间放在68H-6BH单元中。INTEX1:PUSHACC;堆栈保护PUSHPSW;CLREX1;关外中断1JNB00H,INTEX11;溢出标志为0转INTEX11MOVTL1,#0FFH;溢出时计时单元赋#0FFH(显示速度为零)MOVTH1,#0FFH;MOV6CH,#0FFH;MOV6DH,#0FFH;INTEX11:MOV68H,TL1;将时间计数值移入暂存单元68H-6BHMOV69H,TH1;MOV6AH,6CH;MOV6BH,6DH;CLRA;清AMOVTL1,A;计时单元置0MOVTH1,A;MOV6CH,A;MOV6DH,A;CLR00H;清溢出标志POPPSW ;堆栈恢复POPACC;RETI;中断返回;;;;;;;;;;;;;;;;;;;;;;;INTT1PROGRAM;;;;;;;;;;;;;;;;;;;;;;;;T1计数器中断服务程序。(计数器T1由外中断1输入控制,当为高电平时计时开始)INTT1:PUSHACC ;堆栈保护PUSHPSW ;INC6CH ;6CH计时单元加1MOVA,6CH ;移入AJNZINTT11;不等于0转INTT11INC6DH ;进位,6DH单元加1MOVA,6DH ;移入AJNZINTT11;不等于0转INTT11SETB00H ;计时器溢出,置溢出标志INTT11:POPPSW ;恢复堆栈POPACC ;RETI ;中断返回;;;;;;;;;;;;;;;;;;;;;;;DISPLAYS;;;;;;;;;;;;;;;;;;;;;;;;里程显示控制程序DISPLAYS:SETBP1.0;点亮LED1(显示里程状态)CLRP1.1 ;关闭速度指示灯SETBP3.12;显示小数点(最小显示为0.1公里)LCALLSSS;将圈数转为公里数LCALLDISPLAY;显示公里数据LJMPSTART1;跳回START1;;;;;;;;;;;;;;;;;;;;;;;;DISPLAYV;;;;;;;;;;;;;;;;;;;;;;;速度显示控制程序DISPLAYV:CLRP1.0;关闭LED1(里程)灯SETBP1.1;点亮LED2(显示时速状态)CLRP3.12;关小数点显示LCALLVVV;每圈时间换算为公里/小时程序MOVA,121H;将十位数(BCD码)值移入ASUBBA,#04H;与预定报警值比较JNCWARING;时速超过40时报警SETBP3.1;关报警灯V1:LCALLDISPLAY;显亮一次(为了改善闪烁)RET ;子程序返回WARING:CLRP3.1;报警灯LED3点亮(并呜叫)AJMPV1 ;转V1退出;;;;;;;;;;;;;;;;;;;;;;;VIICWRITE;;;;;;;;;;;;;;;;;;;;;;;归一化EEPROM存入程序(12M时钟),存入数在50H起单元VIICWRITE:ACALLWMOV9MOVSLA,#SLAWMOVNUMBYT,#09HLCALLWRNBYTRETWMOV9:MOV5FH,#50HMOVR0,#MTDMOVR1,#5FHMOVR2,#09HWMOV:MOVA,@R1MOV@R0,AINCR0INCR1DJNZR2,WMOVRET;;;;;;;;;;;;;;;;;;;;;;;VIICREAD;;;;;;;;;;;;;;;;;;;;;;;归一化EEPROM读出程序(12M时钟),读出数放入60H-612H单元VIICREAD:MOVMTD,#50H;MOVSLA,#SLAWMOVNUMBYT,#01HLCALLWRNBYTMOVSLA,#SLARMOVNUMBYT,#08HLCALLRDNBYTACALLRMOV8RETRMOV8:MOVR0,#MRDMOVR1,#60HMOVR2,#08HRMOV:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR2,RMOVRET;;;;;;;;;;;;;;;;;;;;;;;VIICPROGRAM;;;;;;;;;;;;;;;;;;;;;;;I2C串行归一化存储子程序STA:SETBVSDASETBVSCLNOPNOPNOPNOPCLRVSDANOPCLRVSDANOPNOPNOPNOPCLRVSCLRETSTOP:CLRVSDASETBVSCLNOPNOPNOPNOPSETBVSDANOPNOPNOPNOPCLRVSDACLRVSCLRETMACK:CLRVSDASETBVSCLNOPNOPNOPNOPCLRVSCLSETBVSDARETMNACK:SETBVSDASETBVSCLNOPNOPNOPNOPCLRVSCLCLRVSDARETCACK:SETBVSDASETBVSCLCLRF0MOVC,VSDAJNCCENDSETBF0CEND:CLRVSCLRETWRBYT:MOVR0,#08HWLP:RLCAJCWR1AJMPWR0WLP1:DJNZR0,WLPRETWR1:SETBVSDASETBVSCLNOPNOPNOPNOPCLRVSCLCLRVSDAAJMPWLP1WR0:CLRVSDASETBVSCLNOPNOPNOPNOPCLRVSCLAJMPWLP1RDBYT:MOVR0,#08HRLP:SETBVSDASETBVSCLMOVC,VSDAMOVA,R2RLCAMOVR2,ACLRVSCLDJNZR0,RLPRETWRNBYT:MOVR3,NUMBYTLCALLSTAMOVA,SLALCALLWRBYTLCALLCACKJBF0,WRNBYTMOVR1,#MTDWRDA:MOVA,@R1LCALLWRBYTLCALLCACKJBF0,WRNBYTINCR1DJNZR3,WRDALCALLSTOPRETRDNBYT:MOVR3,NUMBYTLCALLSTAMOVA,SLALCALLWRBYTLCALLCACKJBF0,RDNBYTRDN:MOVR1,#MRDRDN1:LCALLRDBYTMOV@R1,ADJNZR3,ACKLCALLMNACKLCALLSTOPRETACK:LCALLMACKINCR1SJMPRDN1;;;;;;;;;;;;;;;;;;;;;;;DISPLAYPROGRAM;;;;;;;;;;;;;;;;;;;;;;;显示程序。显示BCD码在120H-123H单元内,采用共阴LED数码管DISPLAY:MOVR1,#120H ;显示单元首址MOVR2,#0FEH ;扫描字PLAY:MOVA,R2 ;扫描字入AMOVP2,A ;放到端口MOVA,@R1 ;取显示数据ANLA,#0FH ;去掉高四位(为0)MOVDPTR,#TAB ;取段码表首址MOVCA,@A+DPTR ;查显示数据对应段码MOVP0,A ;段码输出LCALLDL1MS ;点亮1毫秒INCR1 ;指向下一显示数据地址MOVA,R2 ;取扫描字JNBACC.3,ENDOUT ;已扫描到第四位,转ENDOUT退出RLA ;循环左移MOVR2,A ;放回R2AJMPPLAY ;转PLAY循环ENDOUT:SETBP2.0 ;关扫描SETBP2.1 ;关扫描SETBP2.2 ;关扫描SETBP2.3 ;关扫描RET ;扫描结束;共阴段码表(可显示0-F)TAB:DB3FH,06H,5BH,4FH,66H,6DH,12DH,012HDB12FH,6FH,1212H,12CH,39H,5EH,129H,121HDB00H;;;;;;;;;;;;;;;;;;;;;;;SSSPROGRAM;;;;;;;;;;;;;;;;;;;;;;;里程处理程序,将自行车圈数据换算成公里数SSS:MOV19H,#64H ;除数最高位赋值MOV18H,#00H ;除数赋值MOV112H,#00H ;除数赋值MOV16H,#00H ;除数赋值MOV11H,#00H ;被除数赋值MOV12H,#00H ;被除数赋值MOV13H,62H ;被除数赋值MOV14H,61H ;被除数赋值MOV15H,60H ;被除数赋值LCALLDIVST;调除法程序LCALLBCDST;调二进制转BCD码程序MOV A,25H ;结果处理,将25H数移入AANL A,#0FH ;将高四位置为0MOV 120H,A ;放入120H单元MOV A,25H ;25H数移入ASWAP A ;高低四位交换ANL A,#0FH ;将高四位置为0MOV 121H,A ;放入121H单元MOV A,24H ;24H数移入AANL A,#0FH ;将高四位置为0MOV 122H,A ;放入122H单元MOV A,24H ;24H数移入ASWAP A ;高低四位交换ANL A,#0FH ;将高四位置为0MOV 123H,A ;放入123H单元RET ;子程序返回;;;;;;;;;;;;;;;;;;;;;;;;VVVPROGRAM;;;;;;;;;;;;;;;;;;;;;;;时速处理程序,最大显示速度为99公里/小时(用作自行车)VVV:MOV18H,68H ;除数赋值MOV112H,69H ;除数赋值MOV16H,6AH ;除数赋值MOV11H,#00H ;被除数赋值MOV12H,#00H ;被除数赋值MOV13H,#36H ;被除数赋值MOV14H,#0EEH ;被除数赋值MOV15H,#80H ;被除数赋值LCALL DIVST;调除法程序MOV14H,#00H ;舍去一位LCALLBCDST;二进制转BCD码程序MOV A,25H ;以下将速度值放入显示单元ANL A,#0FH ;高四位为0MOV 120H,A ;放入120H内MOV A,25H ;再取数SWAP A ;高低四交换ANL A,#0FH ;高四位为0MOV 121H,A ;放入121H内MOV 122H,#00H ;122H为0(高二位LED显示0)MOV 123H,#00H ;123H为0RET ;子程序返回;;;;;;;;;;;;;;;;;;;;DL1MS;;;;;;;;;;;;;;;;;;;;1毫秒延时程序,LED点亮用DL1MS:MOVR6,#14HDL1:MOVR12,#19HDL2:DJNZR12,DL2DJNZR6,DL1RET;;;;;;;;;;;;;;;;;;;DL0.5S;;;;;;;;;;;;;;;;;;;;出错闪烁用延时(255毫秒)DL5S:MOVR5,#0FFHDL3:LCALLDL1MSDJNZR5,DL3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年烟台市蓬莱区卫健系统事业单位公开招聘工作人员(23人)考前自测高频考点模拟试题及答案详解(有一套)
- 2025河南驻马店市正阳县县管国有企业招聘20人(第二批)模拟试卷及答案详解(各地真题)
- 2025年宿州高新医院招聘若干人考前自测高频考点模拟试题及完整答案详解1套
- 2025年福建省五建建设集团有限公司招聘30人笔试历年参考题库附带答案详解
- 2025湖北咸宁市赤壁市教师招聘24人考前自测高频考点模拟试题(含答案详解)
- 浙江国企招聘2025舟山市人才发展集团有限公司新城分公司劳务派遣招聘4人笔试历年参考题库附带答案详解
- 浙江国企招聘2025宁波前湾新兴产业创业投资有限第一批招聘工作人员拟录用笔试历年参考题库附带答案详解
- 国家管网集团2025届高校毕业生招聘笔试历年参考题库附带答案详解
- 2025陕西西安建工绿色建筑集团有限公司3月招聘笔试历年参考题库附带答案详解
- 2025贵州黔南州荔波县金鑫旅游服务有限公司赴省内外高校人才引进20人笔试历年参考题库附带答案详解
- 地震逃生知识培训
- 《济南市城镇燃气领域重大隐患判定指导手册》
- 卢卡奇的《历史与阶级意识》
- JJG693-2011燃气泄漏检测仪器检定规程
- 三峡大学科技学院实习报告及实习成绩考核鉴定表模板
- 电缆电线技术标书
- 柔性压力传感器制备法
- 水稻高产栽培技术要点
- (免费分享)工商银行业务委托书打印版
- GB 5226.1-2008机械电气安全机械电气设备第1部分:通用技术条件
- 《毛泽东思想和中国特色社会主义理论体系概论》全套课件
评论
0/150
提交评论