智能车制作Word格式文档下载.docx
- 文档编号:19510009
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:13
- 大小:115.84KB
智能车制作Word格式文档下载.docx
《智能车制作Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《智能车制作Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
按P1.1或P1.2键可进行加1或减1操作;
继续按P1.0键可分别进行分位、时调整;
无键按下3秒钟后退出调整状态,自动进入时钟的计时和显示。
整个系统的硬件原理框图,它采用的是STC89C52单片机,只用了P1口。
为了简化硬件电路,LED显示采用了动态扫描的方式实现,LED采用共阳极数码管,驱动电流由三极管9012提供。
为了提高计数精度,所采用的晶振频率为12MHz。
第二章硬件设计
1单片机的选择
本课程选用STC89C52型号的单片机。
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
主要性能参数:
●工作电压:
5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)
●工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
●用户应用程序空间为8K字节
●片上集成512字节RAM
●通用I/O口(32个),复位后为:
P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
●ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片
●具有EEPROM功能
●共3个16位定时器/计数器。
即定时器T0、T1、T2
●外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
●通用异步串行口(UART),还可用定时器软件实现多个UART
●工作温度范围:
-40~+85℃(工业级)/0~75℃(商业级)
●PDIP封装
2显示方案
采用八只共阳数码管作为时钟电路的显示。
数码管的a~h分别并联在一起,由单片机的P0口控制,每只数码管的共阳极分别接一只PNP三极管驱动,三极管具有电流放大作用。
3调试按键模块设计
采用独立式按键电路,每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。
缺点是当按键较多时占用单片机的I/O数目较多,优点是电路设计简单,且编程极其容易。
考虑到时钟控制在实际使用时的资源量并不大,使用按钮控制可以大大减少按键
第三章软件设计
1.主程序
主程序功能主要是初始化、正常现实时间和判断功能转换键。
2.定时器T0中断服务程序
定时器T0用于时间计时。
定时溢出中断周期可设为50ms,中断进入后,时钟计时累计20次(即1s)时,对秒计数单元进行加1操作。
时钟计数单元在定义的6个单元70H~75H中,70H~71H存放秒数据,72H~73H存放分数据,74H~75H存放时数据。
最大计时值为23小时59分59秒。
在计数单元中采用十进制BCD码计数,秒、分、时之间满60进位。
3.显示子程序
数码管显示的数据放在内存单元70H~75H中,其中70H~71H存放秒数据,72H~73H]存放分数据,74H~75H存放时数据,每一单元内均为十进制BCD码。
由于采用软件动态扫描实现数据显示功能,显示用的十进制BCD码数据的对应段码存放在ROM表中,显示时,先取出70H~75H中的某一地址中的数据,然后查表得对应的显示段码从P0口输出,P2口将对应的数码管位选中供电,就能显示该地址单元的数据值。
4.定时器T1中断服务程序
进行时间调整是,正在被调整的时间以闪烁的形式表现,定时器T1用于产生闪烁的时间间隔,每隔0.3s闪烁一次。
5.调时功能程序
通过按键K1来选择设置“小时”、“分钟”和“秒”。
通过“加”和“减”按键(K2、K3)来调整时间
6.延时程序
因为系统是动态显示,为了确保系统在有效显示时间范围内必须执行显示程序,所以使用延时程序。
7.单片机软件程序
/*P1.4小时调整P1.5分种调整*/
#include<
reg51.h>
intrins.h>
unsignedchardatadis_digit;
unsignedcharkey_s,key_v;
unsignedcharcodedis_code[11]={0xc0,0xf9,0xa4,0xb0,//0,1,2,3
0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
//4,5,6,7,8,9,off
unsignedchardatadis_buf[8];
unsignedchardatadis_index;
unsignedcharhour,min,sec;
unsignedcharsec100;
sbitK1=P1^4;
sbitK2=P1^5;
bitscan_key();
voidproc_key();
voidinc_sec();
voidinc_min();
voidinc_hour();
voiddisplay();
voiddelayms(unsignedcharms);
voidmain(void)
{
P0=0xff;
P2=0xff;
TMOD=0x11;
//定时器0,1工作模式1,16位定时方式
TH1=0xdc;
TL1=0;
TH0=0xFC;
TL0=0x17;
hour=12;
min=00;
sec=00;
sec100=0;
dis_buf[0]=dis_code[hour/10];
//时十位
dis_buf[1]=dis_code[hour%10];
//时个位
dis_buf[3]=dis_code[min/10];
//分十位
dis_buf[4]=dis_code[min%10];
//分个位
dis_buf[6]=dis_code[sec/10];
//秒十位
dis_buf[7]=dis_code[sec%10];
//秒个位
dis_buf[2]=0xbf;
//显示"
-"
dis_buf[5]=0xbf;
dis_digit=0xfe;
dis_index=0;
TCON=0x01;
IE=0x8a;
//使能timer0,1中断
TR0=1;
TR1=1;
key_v=0x03;
while
(1)
{
if(scan_key())
{
delayms(10);
if(scan_key())
{
key_v=key_s;
proc_key();
}
}
}
}
bitscan_key()
key_s=0x00;
key_s|=K2;
key_s<
<
=1;
key_s|=K1;
return(key_s^key_v);
voidproc_key()
EA=0;
if((key_v&
0x01)==0)//K1
inc_hour();
elseif((key_v&
0x02)==0)//K2
min++;
if(min>
59)
min=0;
dis_buf[3]=dis_code[min/10];
dis_buf[4]=dis_code[min%10];
EA=1;
voidtimer0()interrupt1
//定时器0中断服务程序,用于数码管的动态扫描
//dis_index---显示索引,用于标识当前显示的数码管和缓冲区的偏移量
//dis_digit---位选通值,传送到P2口用于选通当前数码管的数值,如等于0xfe时,
//选通P2.0口数码管
//dis_buf---显于缓冲区基地址
//先关闭所有数码管
P0=dis_buf[dis_index];
//显示代码传送到P0口
P2=dis_digit;
//
dis_digit=_crol_(dis_digit,1);
//位选通值左移,下次中断时选通下一位数码管
dis_index++;
dis_index&
=0x07;
//8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
}
voidtimer1()interrupt3
sec100++;
if(sec100>
=100)
sec100=0;
inc_sec();
voidinc_sec()
sec++;
if(sec>
sec=0;
inc_min();
//秒个位
voidinc_min()
min++;
if(min>
min=0;
voidinc_hour()
hour++;
if(hour>
23)
hour=0;
9)
dis_buf[0]=dis_code[hour/10];
else
dis_buf[0]=0xff;
//当小时的十位为0时不显示
voiddelayms(unsignedcharms)
//延时子程序
{
unsignedchari;
while(ms--)
for(i=0;
i<
120;
i++);
第四章设计结论及心得
本次期末考核设计,原计划要做出实物,但因为对PCB图不够熟练,未能尽快画出,耽误了时间,比较遗憾。
但通过这一个学期,在黄玉水老师及林海金队长的教学指导下,感觉收获颇丰。
通过这一学期的智能车制作的学习,从智能车队的基本的介绍到单片机、C语言等基本内容的讲解使我对于智能车比赛有了基本的了解,并且对于本专业的基础技能有了一定的提升。
对于最后的期末考评设计,使我巩固和加深了对电子线路基本知识和理解,提高了综合运用所学知识的能力。
增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。
通过独立思考,深入研究有关问题,学会自己分析解决问题的方法,并且培养了严谨的工作作风和科学态度。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 制作
![提示](https://static.bdocx.com/images/bang_tan.gif)