没有合适的资源?快使用搜索试试~ 我知道了~
基于51单片机的公交车报站系统程序
4星 · 超过85%的资源 需积分: 44 91 下载量 3 浏览量
2009-04-05
12:20:59
上传
评论 10
收藏 138KB DOC 举报
温馨提示
试读
23页
基于51单片机的公交车自动报站系统程序 C语言 FM12864FLCD显示模块
资源推荐
资源详情
资源评论
基于 51 单片机的公交车报站系统程序
2007-11-24 14:42
系统源程序(C 语言版)
/*+++++++++++++++++++++++++++++++++++++
LCD 显示,采用 FM12864FLCD 显示模块(带中文字库)
功能说明:键盘显示,键盘采用普通彩电遥控器(SAA3010A),
语音芯片采用 ISD1420P,能够录放 20 秒,
单片机采用 AT89C51,
通过键盘控制实现,语音报站同时 LCD 显示站名,
晶振 24MHz。
接线说明:P1 口接 LCD 的数据口,
P0 口接 ISD1420P 的地址口,
P3.2----PLAY
P3.3----REC
P3.4----RS
P3.5----WR
P3.6----E
P3.7 接 SM0038 信号输出脚
版本时间:2007-05-27 23:12
+++++++++++++++++++++++++++++++++++++++*/
#include<reg51.h>
void Clear();
void Delay(unsigned int t);
void Write_com(unsigned char d);
void Write_data(unsigned char d);
unsigned char Read_data();
void Disp_char(unsigned char pos,unsigned char dat);
void Disp_word0(unsigned char posx,unsigned char *p,unsigned char n);
void Lcd_system(void);
bit hw_yima();
void delay0(unsigned int t);
void Disp_control(unsigned char zm);
void Disp_number(unsigned char pos,unsigned int dat);
void Report(unsigned char sl);
void Rec_bus(unsigned char rec);
void Disp_pucture(unsigned char *p);
void bus_contorl();
unsigned char n=0; //红外码位数
unsigned char p_last=0; //上一次显示指针偏移量
unsigned char zm_last=0;
unsigned char k=0;
unsigned char *q2;
unsigned int secret=0; //录音密码
unsigned int ymcode = 255; //红外线编码
bit flag0=1; //译码标志位
bit s;
bit hw=0; //解码成功失败标志位
bit mode=0; //模式选择,0:报站模式,1 录音模式(录音需要输入密码)。
bit xs=0; //显示输入密码标志位
bit ly=0; //录音允许位
sbit P1_0 = P3^7; //红外线信号输入断口
sbit PLAY=P3^3; //放音
sbit REC =P3^2; //录音
sbit LCD_RS=P3^4; //数据、命令选择信号
sbit LCD_WR=P3^5; //读写信号
sbit LCD_E =P3^6; //使能信号
unsigned int tm=0;
unsigned char code gImage_word0[1024];
unsigned char code gImage_word2[1024];
unsigned char code table0[]={"虎泉 桌刀泉广阜屯街道口洪山 丁字桥傅家坡大东门阅马场下
一站:"};
unsigned char code table1[]={"深圳市勤正达电子有限公司成立于 2002 年,是专业研发及生
产液晶显示器"
"和液晶模块的高新技术企业。LCD 显示器覆盖了多种系列多年来公司秉承"
"全力面向客户,技术专攻的经营理念,一直致力于为广大电子成品制造商"
"提供质量精良,性能稳定,品种齐全的 LCD 显示屏及 LCM 显示模块系列产"
"品。望成为您的首选合作伙伴。 "};
unsigned char code table2[]={"请输入密码:""录音模式""密码错误!"};
void main()
{
unsigned char num=0;
unsigned int i=0;
unsigned char *q;
TMOD=0x11;
TH1 = 0xF0;
TL1 = 0x60;
EA = 1;
ET1 = 1;
REC = 1;
PLAY= 1;
Delay(100);
Lcd_system(); //系统初始化
q=gImage_word2;
Disp_pucture(q);
delay0(30000);
q=gImage_word0;
Disp_pucture(q);
delay0(40000);
Clear();
while(1)
{
q=table1;
for(num=0;num<5;num++)
{
if(0==mode)
{
Disp_word0(0,q,32);
q=q+64;
}
for(i=0;i<60000;i++)
{
bus_contorl();
}
}
}
}
/***************************************
* 名称: Clear()
* 说明:
* 功能: 清除全屏显示
* 参数: 无
* 返回值: 无
****************************************/
void Clear()
{
Write_com(0x01);
Write_com(0x34);
Write_com(0x30);
}
/***************************************
* 名称: Lcd_system()
* 说明:
* 功能: 系统初始化
* 参数: 无
* 返回值: 无
****************************************/
void Lcd_system(void)
{
Delay(600);
LCD_E = 0;
Write_com(0x34);
Delay(10000);
Write_com(0x30);
Delay(10000);
Write_com(0x01);
Delay(10000);
Write_com(0x06);
Delay(10000);
Write_com(0x0c);
Delay(10000);
}
/***************************************
* 名称: Delay(unsigned int t)
* 说明:
* 功能: 延时
* 参数: t:延时长度
* 返回值: 无
****************************************/
void Delay(unsigned int t)
{
unsigned int i;
for(i=0;i<t;i++)
{;;;;;;;;;;}
}
/***************************************
* 名称: Write_com(unsigned char d)
* 说明:
* 功能: 写命令字
* 参数: d:命令代码
* 返回值: 无
****************************************/
void Write_com(unsigned char d)
{
LCD_RS = 0;
LCD_E = 0;
LCD_WR = 0;
P1 = d;
LCD_E = 1;
Delay(40);
LCD_E = 0;
LCD_WR = 1;
Delay(100);
}
/***************************************
* 名称: Write_data(unsigned char d)
* 说明:
* 功能: 写数据
* 参数: d:需要写入的数据
* 返回值: 无
****************************************/
void Write_data(unsigned char d)
{
LCD_E = 0;
LCD_RS = 1;
LCD_WR = 0;
P1 = d;
LCD_E = 1;
Delay(40);
LCD_E = 0;
LCD_WR = 1;
Delay(100);
}
/***************************************
* 名称: unsigned char Read_data(void)
* 说明:
* 功能: 读数据
* 参数: 无
* 返回值: d:读出数据
****************************************/
unsigned char Read_data(void)
{
unsigned char d = 0;
LCD_E = 0;
LCD_RS = 1;
LCD_WR = 1;
LCD_E = 1;
Delay(50);
d = P1;
LCD_E = 0;
LCD_WR = 0;
剩余22页未读,继续阅读
资源评论
- xuebiao1252021-09-12好用好用好用
- viviancandy2011-12-08只有WORD。不是很有用
- sw2836325342014-10-28没看懂,不过还是谢谢
- a21722014-10-13h很好用谢谢分享
rock110
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功