ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:539.39KB ,
资源ID:20012365      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20012365.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(智能汽车比赛计时器单片机课程设计报告Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

智能汽车比赛计时器单片机课程设计报告Word文件下载.docx

1、该芯片的P0口和P2.0P2.3口用9013三极管组成的数码管显示电路。P3.0和P3.1是STC12C5A08S2的串口,实现上电复位程序下载。P3.2是触发计时输入,当光敏电阻接收到无光照的信号时,将信号输入,触发芯片内部的计时器0开始计时,当再次接收到此信号时,停止计时,将数据显示并通过串口发送。STC12C5A08S2最小系统原理图2.2 串行接口部分 MAX232通过内部电压倍增及电压反向电路,把TTL电平与RS232电平互换,实现单片机与PC机的串口通信。MAX232及串行接口原理图2.3显示驱动电路和光敏信号触发电路电压信号通过P3.2口输入触发计时信号,使计时器开始计时。驱动部

2、分原理图3 软件设计3.1硬件设计构成图3.2流程图设计4 系统调试4.1 单片机程序仿真 由于PROTEUS中没有我们选用的STC12C5A08S2型号的单片机,因此使用AT89S2的单片机代替。仿真电路如下图所示:4.2 电路调试过程遇到的问题和解决方法 STC12C5A08S2最小系统包括晶振和复位电路, LCD显示,以及通信下载接口。由于对单片机知识以及各种硬件软件知识的基础不扎实,所以导致在画电路图和编写程序上遇到很大的麻烦,只能够一步步的从最简单的电路搭建起来,在编写程序过程,通过在protues软件中的仿真,仿真过程问题也是随时遇到的,所以在功能上从简单开始,一点点的实现。对于在

3、硬件方面,画电路图,做板等,从中参考和模仿,最后确定电路图可行,再制版。以前很少接触单片机的动手操作,对于单片机的使用,和串口下载器的制作,更是困难。所以只能先把串口接口芯片MAX232及其外部电容和单片机的晶振电路接在面包板上,通过串口与单片机连接调试下载功能,因此系统不是很稳定,有时可以下载,有时不可以。依据插在面包板的电路图画原理图以及PCB,板子做出来之后,用万用表测试各点的连接特性,有时正常,有事不稳定,问题也是屡屡呈现。在调试过程,液晶没有显示,调节液晶显示偏压信号端的电压,使其接近地,液晶显示正常。 最后,本次课设中,无法实现暂停功能,无法实现数据传送功能。5总结与改进展望本次课

4、程设计中,资料的查询、收集,系统电路的设计及仿真,程序的编写,电路图与PCB板的绘制腐蚀焊接及调试的全过程,在同学的相互帮助和参考下,我一步步的完成之前的工作。参考和模仿别人的电路和程序,当把硬件做出来之后,我更是糊里糊涂,发现调试过程,自己还是无厘头,无从入手。最后在同学、老师的帮忙下,自己一步步的摸索,把系统的所有性能有了初步的了解,虽然最终的结果不理想,但是发现自己的问题所在,还是达到了自己的目标。 在本次设计中,我深深的认识到自己的理论知识和动手能力是如何的薄弱,对于科技方面的硬件和软件知识,动手能力需要花更多的时间去学习,起码能把基础打扎实。加强动手能力,在读懂前辈们思路的情况下,去

5、模仿别人的电路,把板做出来。另一方面,可以通过对单片机实验板的学习,了解在单片机功能上的基础知识,然后把简单的电路合并,整理,实现一定的功能。本次课程设计,主要是计时器和红外接收等可触发计时器开始计时电路的结合,首先要对单片机是计时器的选择,波特率的计算和设计,设计定时的标准以及检测和触发电路的设计。采用对射式光电开关作为传感器,巧妙地运用MAX232 的DC/ DC 转换器功能,利用RS 232 接口输入脉冲信号计时,完成硬件接口电路。采用C语言或者汇编语言编程,设计完成智能车计时控制程序,该设计可以广泛应用于智能赛车竞赛和性能测试研究。在程序的编写过程,发现有部分程序段几乎是重复使用的,比

6、如延时、数码管显示、定时等程序,格式基本上一致,作为子程序使用,方便在主程序中调用。附 录主要电路PCB:主要代码:计时通信部分:#include unsigned char BUFF;unsigned char LED_time=0;unsigned char time=0;unsigned char timeL=0;timeH=0;unsigned char Dis_bit=0;unsigned int Run_time=0;bit ON=0;bit Start_flag=0;bit temp=0;unsigned char Dis_code4;unsigned char TAB=0xc0

7、,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x7f; /*数码管段码*/unsigned char Wei4=0x08,0x04,0x02,0x01;unsigned char DISP4=0x7f,0x7f,0x7f,0x7f;sbit test=P32;void main() TMOD=0x21; /定时器0工作在方式1 IT0=1; /INT0为边沿触发 TH0=0xFC; TL0=0x72; TH1=0xFD; /定时器1产生波特率为19200 TL1=0xFD; PCON=0x00; SCON=0x50; /打开接收中断,工作方式为1

8、 T2CON=0x00; RCAP2H=0xF1; /T2设定初值 RCAP2L=0xAE; IE=0xB2; /开启总中断、T0中断、串口中断 TR1=1; /开启定时器1 TR0=1; TR2=1; while(1) if(BUFF) switch(BUFF) case A : EX0=1; Run_time=0; ON=0; break;C EX0=0; default : break; BUFF=0; Run_time=1000; Dis_code3=Run_time%10000/1000; Dis_code2=(Run_time%1000/100)+0x80; Dis_code1=R

9、un_time%100/10; Dis_code0=Run_time%10; if(ON) Dis_code0=8; if(Run_time300 & Run_time25) ON=ON; EX0=0; LED_time=0; */*定时器0*/void time0() interrupt 1 if(EX0) LED_time+; if(LED_time if(Start_flag) EX0=0; ON=ON; Start_flag=1; LED_time=0; if(ON) time+; if(time9) time=0; Run_time+; /if(Run_time%10=0) SBUF

10、=1; test=test;/*串口接收数据*/void receive() interrupt 4 using 2 if(RI) BUFF=SBUF; /SBUF=BUFF; if(TI) TI=0; else RI=0;/*定时器2*/void time2() interrupt 5 TF2=0x00; Dis_bit+; if(Dis_bit3) Dis_bit=0; P0=Dis_codeDis_bit; P2=WeiDis_bit;#includestdio.h#define uchar unsigned char#define uint unsigned intsbit P07=P

11、07;sbit P32=P32;sbit P15=P15;sbit P16=P16;sbit P17=P17;uint inter_time10=0,0,0,0,0,0,0,0,0,0;bit ON_OFF=0;bit TI_REG=1;uchar inter_i=0;uint counter=0; /10ms加一void delay_10ms(void) /误差 0us unsigned char a,b,c; for(c=1;c0;c-) for(b=40;bb-) for(a=75;aa-);void delay_1s(void) /误差 0us for(c=167; for(b=171

12、; for(a=16; _nop_();void Display_smg(uchar keynumber) uchar fen,miao,_10ms; _10ms=inter_timekeynumber%100; miao=inter_timekeynumber/100%60; fen=inter_timekeynumber/100/60%60; if(0=fen)/显示60s 的时间 P2=0X01; P0=(_10ms%10)|0x80; /去掉小数点 delay_10ms(); P2=0X02; P0=(_10ms/10)|0x80; P2=0X04; P0=(miao%10)&0X7F

13、; /加上小数点; P2=0X08; P0=(miao/10)|0x80;/ delay_10ms(); else /显示分以上的时间 P0=(fen%10)& char KeyU_D=0; uchar keynumber=0; TMOD=0X21; TH0=0x0D8; TL0=0x0F0; SCON = 0x50; TH1 = 0xF3; /2400bit/s TL1 = 0XF3; PCON = 0x00; PX0=1; /优先级高 PT0=1; IE=0X9B; /EA=1,ES=1,ET1=1,ET0=1,EX0=1 TR0=0; TI=1; while(0=P15) KeyU_D=

14、1; while(0=P16) KeyU_D=2; while(0=P17) EA=0; switch(KeyU_D) case 1: KeyU_D=0; keynumber+; if(keynumber=10) keynumber=0; break; case 2: keynumber-; if(keynumber0) keynumber=9; default:break; Display_smg(keynumber); TI=1; printf(%d ,inter_timekeynumber); if(P32=1)/*/外部中断0 -触发计时/定时器0 用于时间计数/定时器1 产生波特率void Extenal_Interrupt(void) interrupt 0 uchar i; for(i=0;i150|counter=0) TR0=TR0; inter_timeinter_i=counter; if(TR0=1) /计时开始 counter=0;/计时复位 ON_OFF=1; inter_i+; if(inter_i=10) inter_i=0; else ON_OFF=0; delay_1s(); if(P32=1) void Count_Time(void) interrupt 1 counter+; inter_time0=counter;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1