|
文件如下:
超声波PCBourdev_548882.rar(文件大小:21K) (原文件名:超声波PCB.rar)
超声波原理图ourdev_548883.rar(文件大小:3K) (原文件名:CX20106.rar)
文本语音合成软件(联网才能用!!)ourdev_548924.rar(文件大小:508K) (原文件名:KDVoiceV2.20文本语音合成.rar)
语音单片机使用资料ourdev_548925.rar(文件大小:2.41M) (原文件名:WT588D语音单片机使用资料.rar)
原理图中并接在超声波接收头两端的瓷片电容不用的话可以增强信号,但是抗干扰性不强。我的做法是牺牲抗干扰性,提高距离,呵呵,没办法只能这样了。另外还有要说明的是发送与接收探头的距离是8个cm!!这样才能保证测量距离,我做好的测距距离是接近6米。发送与接收探头的距离可能还可以小一点,但不能小于4cm(网上说的),我做过间距为2cm的时候测距距离为3米左右。
主程序:
#include<reg51.h>
#include"12864.h"
#include<INTRINS.H>
#define uc unsigned char
#define ui unsigned int
#define nop _nop_()
/*********************************
变量定义
**********************************/
uc ID1=0,ID2=0;
float distance;
ui count=0,dis1;
uc high_time,low_time,flag=0;
//uc i=0;
/**********************************
常量定义
************************************/
#define circle 0xf2//循环播放
#define stop_play 0xfe//停止播放
#define vo_0 0xe0//音量1
#define vo_1 0xe1//音量2
#define vo_2 0xe2//音量3
#define vo_3 0xe3//音量4
#define vo_4 0xe4//音量5
#define vo_5 0xe5//音量6
#define vo_6 0xe6//音量7
#define vo_7 0xe7//音量8
#define ID1_count 22//k1计数值
#define ID2_count 100//k2计数值
/*************************************
语音单片机WT588D位定义
*************************************/
sbit RST=P0^3;//复位端
sbit CS1=P0^1;//片选端
sbit CLK=P0^0;//时钟
sbit DAT=P0^2;//数据位
sbit busy=P0^4;//忙信号
sbit csb=P3^6;
/*********************************
函数声明
*********************************/
void delay_nms(ui ms);//延时nms
void delay100us();//延时100us
void send_com(uc add);//发送语音地址,指定播放某段语音
void init();//语音单片机WT588D
float Distance_count();//距离计算转换
void sound(uc soud);//播放
void tran();//送超声波信号进行测距
/************************************
主函数
************************************/
void main()
{
uc i,j,k;
ui tp=0;
init();
LcmInit();//lcd初始化
LcmClearTXT();//lcd清除显示
PutStr(1,0,DIS2);//显示距离
while(1)
{
for(i=0;i<10;i++)//测量10次
{
tran();//发送超声波信号测距
tp=tp+dis1;//10次相加,下面求平均值
}
dis1=tp/10;//取平均值
tp=0;//清零,为下次测量做准备
sound(dis1);//语音播报
i=dis1/100;//数据转换给lcd显示
j=dis1%100/10;
k=dis1%100%10;
LCDXY(1,3);//设定显示位置
Write_number(i);//显示数字
LCDXY(1,5);
Write_number(j);
Write_number(k);
}
}
/**************************************************************
初始化
**************************************************************/
void init()
{
TMOD=0x01;//定时器0方式1用于计时,定时器1用于产生38K方波
TH0=0;
TL0=0; /* 设定T0的工作模式为2*/
EA=1;
IT1=1;//下降沿有效,左传感器
}
/**********************************************
左发送超声波函数,实测为38KHz信号,8个这样的方波
***********************************************/
void tran()
{
uc i;
TH0=0;
TL0=0;//清定时0
TR0=1;//开定时0
for(i=8;i>0;i--)
{
csb=!csb;
//nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
nop;
}
csb=1;
delay_nms(1);//延时1ms左右后再开中断,避免直接回来的回波
EX1=1;
delay_nms(50);
if(flag==1)
{
distance=Distance_count();
dis1=(unsigned int)distance;
flag=0;
}
else dis1=0;
}
/************************************************
延时n个ms函数
***********************************************/
void delay_nms(ui ms) //delay ms function
{
uc i;
while(ms--)
{
for(i = 0; i < 123; i++);
}
}
/************************************************
延时100us函数
***********************************************/
void delay100us()
{
uc j;
for(j=50;j>0;j--);
}
/****************************************
发码播放函数;add为语音地址
*****************************************/
void send_com(uc add)
{
uc i;
RST=1;
RST=0;
delay_nms(3);
RST=1;
delay_nms(20);
CS1=0;
delay_nms(5);
for(i=0;i<8;i++)
{
CLK=0;
if(add&1) DAT=1;
else DAT=0;
delay100us();
CLK=1;
delay100us();
add=add>>1;
}
CS1=1;
}
/******************************************
*****************************************/
void sound(ui soud)
{
ui i,j,k;
if(soud==0)
{
send_com(13);//播放“超出测量范围,请重新测量”
delay_nms(50);
while(!busy);
}
else
{
i=soud/100;
j=soud%100/10;
k=soud%100%10;
//send_com(10);//播放"障碍物距离"
//delay_nms(50);
//while(!busy);
send_com(i);
delay_nms(50);
while(!busy);
send_com(11);//播放点
delay_nms(50);
while(!busy);
send_com(j);
delay_nms(50);
while(!busy);
send_com(k);
delay_nms(50);
while(!busy);
send_com(12);//播放米
delay_nms(50);
while(!busy);
}
}
/****************************************
距离计算函数
****************************************/
float Distance_count()
{
float temp;
temp=high_time*256+low_time;
//temp-2000;
temp=(temp/1000)/2;
temp*=344;
temp=temp/10;
return temp;
}
/**************************************
外部中断服务函数
**************************************/
void TT() interrupt 2
{
ui tmp;
TR0=0;//关定时器0
ET1=0;//关外部中断
flag=1;//外部中断标志位
tmp=TH0*256+TL0;
if((tmp>0)&&(tmp<60000))
{
high_time=TH0;
low_time=TL0;
}
else
{
high_time=0;
low_time=0;
}
}
12864液晶显示函数(三线串口驱动):
/*****************************************************************
* *
* ME500单片机开发系统演示程序 - 12864 图片与文字显示 *
* *
* ST7920控制芯片(汉字库),串口模式。 *
* *
* 版本: V1.0 (2006/11/20) *
* 作者: gguoqing (Email: gguoqing@willar.com) *
* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
* 邮箱: support@willar.com *
* *
*【版权】COPYRIGHT(C)伟纳电子 www.willar.com ALL RIGHTS RESERVED *
*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
* *
*****************************************************************/
/********** 12864LCD引脚定义 **********/
/*sbit CS = P2^5; //片选 高电平有效 单片LCD使用时可固定高电平
sbit SID = P2^7; //数据
sbit SCLK = P2^6; //时钟*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS = P2^0; //片选 高电平有效 单片LCD使用时可固定高电平
sbit SID = P2^1; //数据
sbit SCLK = P2^2; //时钟
/*********************************************************/
uchar code DIS11[] = {"危险距离"};
uchar code DIS12[] = {"安全距离"};
uchar code DIS13[] = {"保持距离"};
uchar code DIS14[] = {"测量中.........."};
uchar code DIS2[] = {"距离: 点 米"};
uchar code DIS3[] = {"星期"};
//uchar code DIS4[] = {"TEL:15878671024 "};
uchar code DIS5[] = {"H: L: "};
uchar code BMP1[] ={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF9,0xFF,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0F,0xFF,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x04,0x00,0x0E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x01,0x80,0x00,0x00,0x00,
0x00,0x00,0x98,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
0x00,0x03,0x98,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x30,0x00,0x00,0x00,
0x00,0x01,0x90,0x00,0x00,0x00,0x00,0x70,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
0x00,0x00,0xD0,0x00,0x00,0x00,0x00,0x60,0x0C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,
0x00,0x0C,0xD0,0x00,0x00,0x00,0x00,0x66,0x0C,0x00,0x00,0x00,0x06,0x00,0x00,0x00,
0x00,0x0E,0x40,0x00,0x00,0x00,0x00,0x4E,0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x48,0x08,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x10,0x98,0x00,0x00,0x00,0x03,0x80,0x00,0x00,
0x00,0x3E,0x1C,0x00,0x00,0x00,0x01,0x03,0x90,0x00,0x00,0x00,0x01,0x80,0x00,0x00,
0x00,0x3E,0x3E,0x00,0xFF,0xE0,0x03,0x8F,0xD0,0x00,0x00,0x00,0x01,0x80,0x00,0x00,
0x00,0x00,0x3F,0x07,0xFF,0xFC,0x07,0x40,0x33,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
0x00,0x00,0x1F,0x9F,0xFF,0xFE,0x1F,0xCE,0x31,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,
0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xBF,0x83,0xB0,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,
0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0x01,0xB0,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFC,0x00,0x30,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,
0x00,0x00,0x03,0xFF,0xFF,0xFF,0xF8,0x00,0x30,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
0x00,0x00,0x07,0xFF,0xFF,0xFF,0xF8,0x00,0x30,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
0x00,0x00,0x07,0xFF,0x80,0x1F,0xF8,0x00,0x30,0x00,0x00,0x00,0x00,0x40,0x00,0x00,
0x00,0x00,0x0F,0xFE,0x00,0x03,0xFC,0x00,0x10,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,
0x00,0x00,0x0F,0xF8,0x00,0x00,0xFC,0x00,0x10,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
0x00,0x00,0x0F,0xF0,0x00,0x00,0x7E,0x00,0x10,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
0x00,0x00,0x1F,0xC0,0x00,0x00,0x3E,0x00,0x18,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
0x00,0x00,0x1F,0x80,0x00,0x00,0x1E,0x00,0x1B,0x00,0x00,0x00,0x01,0x80,0x00,0x00,
0x00,0x00,0x1F,0x00,0x00,0x00,0x0E,0x00,0x7B,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
0x00,0x00,0x1E,0x08,0x00,0x04,0x0E,0x00,0x58,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
0x00,0x00,0x1E,0x10,0x00,0x02,0x06,0x00,0x30,0x00,0x00,0x18,0x02,0x00,0x00,0x00,
0x00,0x00,0x1E,0x00,0x00,0x00,0x06,0x00,0x20,0xC0,0x00,0x06,0x06,0x00,0x00,0x00,
0x00,0x00,0x1E,0x00,0x00,0x00,0x0E,0x00,0x20,0x60,0x00,0x02,0x04,0x00,0x00,0x00,
0x00,0x00,0x0E,0x00,0x00,0x00,0x0E,0x00,0x20,0x00,0x00,0x02,0x0C,0x00,0x00,0x00,
0x00,0x00,0x0E,0x00,0x00,0x00,0x0E,0x00,0x20,0x00,0x00,0x7C,0x18,0x00,0x00,0x00,
0x00,0x00,0x0E,0x00,0x00,0x00,0x0E,0x00,0x18,0x00,0x00,0x18,0x30,0x00,0x00,0x00,
0x00,0x00,0x0E,0x00,0x00,0x00,0x0C,0x00,0x0D,0xC0,0x00,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x0E,0x00,0x00,0x00,0x0E,0x00,0x06,0x60,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x1E,0x00,0x00,0x00,0x0A,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x12,0x00,0xC0,0x20,0x0A,0x00,0x00,0xE0,0x00,0x0E,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0xC0,0x70,0x0A,0x00,0x00,0x1C,0x00,0x7C,0x00,0x04,0x3C,0x00,
0x00,0x00,0x0E,0x00,0xC7,0x30,0x0C,0x00,0x00,0x0F,0xFF,0xE0,0x00,0x03,0xFC,0x00,
0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x18,0x1C,0x00,0x00,0x03,0xF8,0x00,
0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x10,0x04,0x00,0x00,0x07,0xF8,0x00,
0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x30,0x0C,0x00,0x00,0x0D,0xF8,0x00,
0x00,0x00,0x03,0x00,0x00,0x00,0x08,0x00,0x00,0x60,0x0C,0x00,0x00,0x01,0xF0,0x00,
0x00,0x00,0x01,0x80,0x00,0x00,0x10,0x00,0x00,0x64,0x0C,0x00,0x00,0x00,0xC0,0x00,
0x00,0x00,0x00,0xC0,0x00,0x00,0x70,0x00,0x00,0x72,0x0C,0x00,0x00,0x00,0x40,0x00,
0x00,0x00,0x00,0x60,0x10,0x00,0xC0,0x00,0x00,0xC2,0x04,0x00,0x00,0x03,0xC0,0x00,
0x00,0x00,0x00,0x1C,0x06,0x03,0x00,0x00,0x01,0x83,0x04,0x00,0x00,0x07,0xC0,0x00,
0x00,0x00,0x00,0x07,0x80,0x1C,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x0F,0x40,0x00,
0x00,0x00,0x00,0x00,0x1F,0xA0,0x00,0x00,0x06,0x01,0x82,0x00,0x00,0x00,0x48,0x00,
0x00,0x00,0x00,0x00,0x10,0x18,0x00,0x00,0x04,0x00,0x81,0x00,0x00,0x00,0x7C,0x00,
0x00,0x00,0x00,0x00,0x10,0x14,0x00,0x00,0x04,0x00,0x41,0x00,0x00,0x00,0x78,0x00,
0x00,0x00,0x00,0x00,0x90,0xF0,0x00,0x00,0x0C,0x00,0x40,0xC0,0x00,0x00,0x40,0x00,
0x00,0x00,0x04,0x01,0x1F,0xF8,0x00,0x00,0x3F,0xC0,0x60,0x60,0x00,0x00,0x40,0x00,
0x00,0x00,0x08,0x06,0x1F,0xF8,0x80,0x00,0x21,0xFF,0xF0,0x30,0x00,0x00,0x40,0x00,
0x00,0x00,0x08,0x08,0x3F,0xFC,0x80,0x00,0x20,0x00,0x18,0x30,0x00,0x00,0x40,0x00,
0x00,0x00,0x08,0x08,0x3F,0xFC,0x80,0x00,0x20,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x04,0x7F,0xFC,0x00,0x00,0x00,0x00,0x07,0x10,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x7F,0xFD,0x00,0x00,0x10,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x03,0xFF,0xFD,0x00,0x00,0x10,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
};
uchar code AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行汉字位置
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, //第四行汉字位置
};
/********************************************************
* *
* 延时t毫秒 *
* 11.0592MHz时钟,延时约1ms *
* *
********************************************************/
void delay(uint t)
{
uchar k;
while(t--)
{
for(k=0; k<125; k++)
{ }
}
}
/*********************************************************
* *
* 延时函数 200us *
* *
*********************************************************/
void delay_lcd(int ms)
{
uchar t;
while(ms--)
{
for(t=0; t<20; t++) ;
}
}
/******************************************************************************************
* 函数名称 :SendByte
* 功能描述 :串口发送一个字节
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void SendByte(uchar Dbyte)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
Dbyte=Dbyte<<1; //左移一位
SID = CY; //移出的位给SID
SCLK = 1;
SCLK = 0;
}
}
/******************************************************************************************
* 函数名称 :ReceiveByte
* 功能描述 :串口接收一个字节
* 参数 : 参数名称: 输入/输出? 类型 描述
* 仅在读取数据的时候用到
* 而读出的数据是一次只能读出4bit的
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
uchar ReceiveByte(void)
{
uchar i,temp1,temp2;
temp1 = 0;
temp2 = 0;
for(i=0;i<8;i++)
{
temp1=temp1<<1;
SCLK = 0;
SCLK = 1;
SCLK = 0;
if(SID) temp1++;
}
for(i=0;i<8;i++)
{
temp2=temp2<<1;
SCLK = 0;
SCLK = 1;
SCLK = 0;
if(SID) temp2++;
}
return ((0xf0&temp1)+(0x0f&temp2));
}
/******************************************************************************************
* 函数名称 :CheckBusy
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void CheckBusy( void )
{
do SendByte(0xfc); //11111,RW(1),RS(0),0
while(0x80&ReceiveByte()); //BF(.7)=1 Busy
}
/******************************************************************************************
* 函数名称 :WriteCommand
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void WriteCommand(uchar Cbyte )
{
CS = 1;
CheckBusy();
SendByte(0xf8); //11111,RW(0),RS(0),0
SendByte(0xf0&Cbyte); //高四位
SendByte(0xf0&Cbyte<<4);//低四位(先执行<<)
CS = 0;
}
/******************************************************************************************
* 函数名称 :WriteData
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void WriteData(uchar Dbyte )
{
CS = 1;
CheckBusy();
SendByte(0xfa); //11111,RW(0),RS(1),0
SendByte(0xf0&Dbyte); //高四位
SendByte(0xf0&Dbyte<<4);//低四位(先执行<<)
CS = 0;
}
/******************************************************************************************
* 函数名称 :ReadData
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
uchar ReadData( void )
{
CheckBusy();
SendByte(0xfe); //11111,RW(1),RS(1),0
return ReceiveByte();
}
/******************************************************************************************
* 函数名称 :LcmInit
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void LcmInit( void )
{
WriteCommand(0x30); //8BitMCU,基本指令集合
WriteCommand(0x03); //AC归0,不改变DDRAM内容
WriteCommand(0x0C); //显示ON,游标OFF,游标位反白OFF
WriteCommand(0x01); //清屏,AC归0
WriteCommand(0x06); //写入时,游标右移动
}
/******************************************************************************************
* 函数名称 :LcmClearTXT
* 功能描述 :文本区清RAM函数
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void LcmClearTXT( void )
{
uchar i;
WriteCommand(0x30); //8BitMCU,基本指令集合
WriteCommand(0x80); //AC归起始位
for(i=0;i<64;i++)
WriteData(0x20);
}
/******************************************************************************************
* 函数名称 :LcmClearBMP
* 功能描述 :图形区清RAM函数
* 参数 : 参数名称: 输入/输出? 类型 描述
* 图形区和文本区显示在两个不同的RAM区
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void LcmClearBMP( void )
{
uchar i,j;
WriteCommand(0x34); //8Bit扩充指令集,即使是36H也要写两次
WriteCommand(0x36); //绘图ON,基本指令集里面36H不能开绘图
for(i=0;i<32;i++) //12864实际为256x32
{
WriteCommand(0x80|i); //行位置
WriteCommand(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
WriteData(0);
}
}
/******************************************************************************************
* 函数名称 :PutStr
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void PutStr(uchar row,uchar col,uchar *puts)
{
WriteCommand(0x30); //8BitMCU,基本指令集合
WriteCommand(AC_TABLE[8*row+col]); //起始位置
while(*puts != '\0') //判断字符串是否显示完毕
{
if(col==8) //判断换行
{ //若不判断,则自动从第一行到第三行
col=0;
row++;
}
if(row==4) row=0; //一屏显示完,回到屏左上角
WriteCommand(AC_TABLE[8*row+col]);
WriteData(*puts); //一个汉字要写两次
puts++;
WriteData(*puts);
puts++;
col++;
}
}
/******************************************************************************************
* 函数名称 :PutBMP
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void PutBMP(uchar *puts)
{
uint x=0;
uchar i,j;
WriteCommand(0x34); //8Bit扩充指令集,即使是36H也要写两次
WriteCommand(0x36); //绘图ON,基本指令集里面36H不能开绘图
for(i=0;i<32;i++) //12864实际为256x32
{
WriteCommand(0x80|i); //行位置
WriteCommand(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
{ //列位置每行自动增加
WriteData(puts[x]);
x++;
}
}
}
/******************************************************************************************
* 函数名称 :DisplayDots
* 功能描述 :
* 参数 : 参数名称: 输入/输出? 类型 描述
*
* 返回值 :
* 作者 :
* 创建日期 :2006-12-19
* 全局变量 :
* 全局静态变量:
* 局部静态变量:
*----------------------------------------修改历史------------------------------------------
* 当前版本 : 修改人: 修改日期:
* 修改说明 :
******************************************************************************************/
void DisplayDots(uchar DotByte)
{
uchar i,j;
WriteCommand(0x34); //8Bit扩充指令集,即使是36H也要写两次
WriteCommand(0x36); //绘图ON,基本指令集里面36H不能开绘图
for(i=0;i<32;i++) //12864实际为256x32
{
WriteCommand(0x80|i); //行位置
WriteCommand(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
{ //列位置每行自动增加
WriteData(DotByte);
}
DotByte=~DotByte;
}
}
LCDXY(uchar H,uchar L)
{
WriteCommand(0x30); //8BitMCU,基本指令集合
WriteCommand(AC_TABLE[8*H+L]); //起始位置
}
void Write_number(uchar s)// 数字显示函数
{
WriteData(s+0x30);
//WriteData(s);
//WriteCommand(0x06);
//Delaynms(1);
}
/*void show_time() //液晶显示程序
{
//DS1302_GetTime(&CurrentTime); //获取时钟芯片的时间数据
//TimeToStr(&CurrentTime); //时间数据转换液晶字符
//DateToStr(&CurrentTime); //日期数据转换液晶字符
//ReadTemp(); //开启温度采集程序
//temp_to_str(); //温度数据转换成液晶字符
//PutStr(0,0,CurrentTime.TimeString);
PutStr(0,5,DIS3);
//PutStr(0,7,week_value);
//PutStr(3,0,DIS5);
//PutStr(1,TempBuffer);
write(1,0xA1);
write(1,0xE6);
}*/
本贴被 xsh2005105326 编辑过,最后修改时间:2008-12-18,09:58:27. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|