仿汽车自动报站系统Word文件下载.docx
- 文档编号:13990420
- 上传时间:2022-10-16
- 格式:DOCX
- 页数:40
- 大小:150.90KB
仿汽车自动报站系统Word文件下载.docx
《仿汽车自动报站系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《仿汽车自动报站系统Word文件下载.docx(40页珍藏版)》请在冰豆网上搜索。
1、LCD显示2
2、蜂鸣器2
3、按键输入3
四:
程序(含全部源程序及详细注释,主要的程序流程图)4
1、主函数4
2、蜂鸣器头文件12
3、LCD头文件13
4、LCD文件14
5、字模头文件22
6、键盘扫描文件37
五、使用说明书(含功能描述及具体的操作指南)42
六、心得体会42
七、参考文献(教材、论文、相关书籍等)43
八、教师评语(此处空两行,留待教师批阅)43
一、任务及设计要求(课题要求)
1、任务
模拟设计制作一个公共汽车自动报站器,用LCD显示站名
2、要求
1)公共汽车全程设置若干停靠站,当汽车到达某站时,按键显示“*站到了,请乘客下车”,系统处于等待状态,一旦检测到汽车启动信号,LCD提示“车开了,乘客请买票,下一站**”
2)利用按键模拟汽车到站、启动、开门和关门等信号
3)利用LCD显示提示信息
4)利用蜂鸣器发出不同提示音配合当前状态
5)显示时间,可调整
6)在两站之间,可增添显示容,例如:
尊老爱幼,文明用语,注意安全等
二、系统原理框图(框架图)
三、硬件原理图
1、LCD显示
关键网络名和引脚名解释:
(1)DISCTRL0~4:
显示控制信号。
(2)D0~D7、DB0~DB7:
数据总线。
(3)E:
LCD使能信号。
(4)RS:
数据、指令选择信号。
(5)RW:
读、写选择信号。
(6)CS1、CS2:
LCD12864由两部分组成,CS1和CS2为选择信号。
板上接口4的上排位LCD12864的接口,下排位LCD1602的接口,排针和排母左对齐插入。
切勿插错。
2、蜂鸣器
本设计中采用无源电磁式蜂鸣器,蜂鸣器由PWM1(P2.6)控制。
PWM1和PWM0均为片PWM模块的输出。
蜂鸣器和红外LED的驱动均采用普通NPN三极管。
插针配置:
(1)若要使用蜂鸣器,可以接通插针3,为减少功耗,不用请断开。
3、按键输入
由于P1口(用于行扫描)部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可。
引脚复用:
P2.0~P2.3为4X4矩阵式键盘列扫描信号,又复用作步进电机控制信号,SPI信号、P2.1~P2.3还复用为数码管第5、6、7位位码控制信号。
参与复用的一项功能使用时,其他参与复用的功能则不能使用。
(1)插针10上面两脚接跳线帽,4X4矩阵式键盘输入,行扫描信号为P1.0~P1.3,列扫描信号为P2.0~2.3。
(2)插针10下面两脚接跳线帽,独立按键输入,该模式有4个独立按键可用,按键扫描所用端口为P1.0~P1.3。
这4个按键为4X4矩阵键盘的左边4个按键。
程序(含全部源程序及详细注释,主要的程序流程图)
1、主函数
(1)主函数流程图
(2)主函数代码
#include<
ADUC848.H>
LCD12864.H>
bee.h>
#definestation_all10
unsignedcharkey=0xff;
unsignedcharhour,minute,second;
unsignedlongtt;
//进入定时器T1中断次数
unsignedchari=0,j=0;
unsignedcharcodestation[][10]=
{
{"
科教新村"
},{"
天马公寓"
天马"
大学"
岳麓山南"
师大"
},
二里半"
市四医院"
五一广场"
}
};
voidsong()
TH0=Timer0_High;
TL0=Timer0_Low;
TR0=1;
delay1(time);
voidbee_init()//蜂鸣器和显示时间的初始化函数
{
TMOD=0x11;
//置T0,T1定时工作方式1
ET0=1;
//开T0中断
EA=1;
voidtime_init()
TMOD=0x11;
ET1=1;
//开定时器T1中断
EA=1;
TH1=(65536-12580)/256;
//计算定时器高八位初值
TL1=(65536-12580)%256;
//计算定时器低八位初值
TR1=1;
//开定时器T1
voidadjust_time()
key=0xff;
while((key==0xff)||(key==13)||(key==14)||(key==12))//按下其他键,退出调时
{
key=keyscan();
if(key==13)//按下13健,调时间小时
{
hour++;
key=0xff;
if(hour==24)
{
hour=0;
}
}
if(key==14)//按下14键,调时间分钟
minute++;
if(minute==60)
minute=0;
}
LCD_Write_Time(0,0,hour,minute,second);
}
voiddelay1(unsignedchart)//延时程序,控制发音的时间长度
unsignedchart1;
unsignedlongt2;
for(t1=0;
t1<
t;
t1++)//双重循环,共延时t个半拍
for(t2=0;
t2<
20000;
t2++);
//延时期间,可进入T0中断去发音
TR0=0;
//关闭T0,停止发音
voidmain()
unsignedcharstation_num=0;
PLLCON&
=0xf8;
//设置频率为12.58MHz
LCD_init();
bee_init();
time_init();
while
(1)
if(key==0)//按键0代表汽车起动
{
LCD_clear();
station_num++;
if(station_num>
=station_all)
station_num=0;
//终点站到了,再回到起点
i=0;
j=0;
while(key==0xff)
{
LCD_Write_Time(0,0,hour,minute,second);
if(Start[i]!
=0)//启动发音
{
j=Start[i]-1;
//计算音符在频率数组中的位置
Timer0_High=Freq_High[j];
Timer0_Low=Freq_Low[j];
time=Start[i+2];
i+=3;
song();
}
LCD_Write_Sentence(2,4,"
车开了逗"
);
LCD_Write_Sentence(4,2,"
乘客请买票"
LCD_Write_Sentence(6,0,"
下一站冒"
LCD_Write_Sentence(6,8,station[station_num]);
//显示第几站
key=keyscan();
if(key==1)//按键1代表汽车到站
{
}
while(key==0xff)
if(Arrive[i]!
=0)//到站发音
j=Arrive[i]-1;
time=Arrive[i+2];
LCD_Write_Sentence(2,0,station[station_num]);
//显示要下的站
LCD_Write_Sentence(2,8,"
站到了"
LCD_Write_Sentence(5,2,"
乘客请下车"
if(key==2)//按键2汽车开门
if(Open[i]!
=0)//开门发音
j=Open[i]-1;
time=Open[i+2];
LCD_Write_Sentence(2,3,"
开门请当心"
LCD_Write_Sentence(5,3,"
下车请走好"
if(key==3)//按键3汽车关门
if(Close[i]!
=0)//关门发音
j=Close[i]-1;
time=Close[i+2];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 自动 报站 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)