资源简介
语音电路原理以及语音播放,掌握电路原理图和PCB图的绘制,学会手工制作电路板,提高动手能力,了解整个系统的编写思路,时间系统的设计和12864的液晶显示驱动。学会编程单片机程序和对电路的调试。
系统设计要求实现以下功能: (交报告时红色字体要删除)
1、液晶12864显示时间,时间可设置和调整。(可以根据客户要求增加显示日历)
2、液晶12864显示对应的站名和下一站信息。 (站点和公交线路由客户提供)
3、语音芯片ISD4003播放对应的站名,模拟播放4个站。
4. 可以播放一些温馨提示语。
5. GPS自动定位报站。(和站点位置比较,接近时自动报站,有演示视频感兴趣者可以向客服索取)
6、公交站点GPS位置可以自行设定,方便根据客户实际演示。
7、可以查看已设置的公交站点GPS位置信息。
8. 附加功能:应急时可以手动通过按键模拟报站。
9.具有上行和下行切换功能。
---------------------
作者:mjqing
来源:CSDN
原文:https://blog.csdn.net/mjqing/article/details/78337167
版权声明:本文为博主原创文章,转载请附上博文链接!
代码片段和文件信息
#include //调用单片机头文件
#include
#include“12864.h“
#define uchar unsigned char //无符路字符型 宏定义 变量范围0~255
#define uint unsigned int //无符路整型 宏定义 变量范围0~65535
sbit rs=P0^0; //寄存器选择信号 H:数据寄存器 L:指令寄存器
sbit rw=P0^1; //寄存器选择信号 H:数据寄存器 L:指令寄存器
sbit e =P0^2; //片选信号 下降沿触发
/***********************语音模块控制IO口的定义************************/
sbit VRST = P3^7;
sbit VBUSY= P3^6;
sbit VSDA = P3^5;
sbit VCS = P3^4;
sbit VSCL = P3^3;
uchar geshu=6;
uchar code gj_ming[]= “ 101路公交车 “;
uchar code gj_ming1[]=“ “;
uchar code table1[]= “ 五泉广场 “;
uchar code table2[]= “ 西关十字 “;
uchar code table3[]= “ 中山桥 “;
uchar code table4[]= “ 西湖公园 “;
uchar code table5[]= “ 上西园 “;
uchar code table6[]= “ 白马浪 “;
uchar code table7[]= “ “;
uchar code table8[]= “ “;
uchar code table9[]= “ “;
/********************************************************************
* 名称 : delay_1ms()
* 功能 : 延时1ms函数
* 输入 : q
* 输出 : 无
***********************************************************************/
void delay_1ms(uint q)
{
uint ij;
for(i=0;i for(j=0;j<115;j++);
}
/************初始化显示*****************/
void init_12864_dis()
{ PutStr(00“ 欢迎乘坐 “);
PutStr(10gj_ming);
PutStr(20gj_ming1);
PutStr(30“ “);
}
/***********************小延时函数**************************/
void delay_us (unsigned int us)
{
while(us--)
{
_nop_();
}
}
/***********************三线发码子程序************************/
void Send_threelines(unsigned char addruchar dat)
{
unsigned char i;
VCS=0;
delay_1ms(5); /* 片选拉低5ms */
for(i=0;i<8;i++)
{
VSCL=0;
if(addr&0x01)
{
VSDA=1;
}
else
VSDA=0;
addr>>=1;
delay_us(150); /* 150us */
VSCL=1;
delay_us(150); /* 150us */
}
VCS=1;
delay_1ms(30);
if(dat == 1)
while(VBUSY == 0); //忙等待
}
/********************独立按键程序*****************/
uchar key_can; //按键值
void key() //独立按键程序
{
static uchar key_new;
key_can = 20; //按键值还原
P1 |= 0x0f;
if((P1 & 0x0f) != 0x0f) //按键按下
{
delay_1ms(1); //按键消抖动
if(((P1 & 0x0f) != 0x0f) && (key_new == 1))
{ //确认是按键按下
key_new = 0;
switch(P1 & 0x0f)
{
case 0x0e: key_can = 2; break; //得到按键值
case 0x0d: key_can = 1; break; //得到按键值
}
}
}
else //按键松开
key_new = 1;
}
uchar flag_s = 0;
uchar flag_z= 0;
/***************主函数*****************/
void main()
{
uchar num=0; //定时器1,工作在定时方式2
P0 = P1 = P2 = P3 = 0XFF;
LcmInit();//初始化12864
init_12864_dis();
Send_threelines(00); //语音播报
while(1)
{
key(); //独立按键程序
if(key_can < 20)
{
if(key_can == 1)
{
if(num < geshu)
{
num++;
}
flag_s = 1;
}
if(key_can == 2)
{
if(num != 0)
num--;
}
if(num == 1)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9713 2018-04-12 07:51 12864.lst
文件 8427 2018-04-12 07:51 12864.obj
目录 0 2018-04-12 07:48 mok\
文件 5301 2018-04-08 21:37 mok\12864.c
文件 494 2018-03-09 18:34 mok\12864.h
文件 18643 2018-04-12 07:51 公交报警系统
文件 1211 2018-04-12 07:51 公交报警系统.build_log.htm
文件 5317 2018-04-12 07:50 公交报警系统.c
文件 4960 2018-04-12 07:51 公交报警系统.hex
文件 70 2018-04-12 07:51 公交报警系统.lnp
文件 10472 2018-04-12 07:51 公交报警系统.LST
文件 21788 2018-04-12 07:51 公交报警系统.M51
文件 13551 2018-04-12 07:51 公交报警系统.OBJ
文件 628 2017-12-05 15:51 公交报警系统.plg
文件 71087 2018-05-31 10:29 公交报警系统.uvgui.chunguang
文件 10294 2018-04-08 22:03 公交报警系统.uvopt
文件 14055 2018-04-08 22:03 公交报警系统.uvproj
文件 58688 2017-12-04 21:38 公交报警系统_uvopt.bak
- 上一篇:关于美食网站的详细需求分析说明书
- 下一篇:flappybird全套图片+音效
评论
共有 条评论