楼主我是一个单片机方面的初学者,最近有一个课程设计要用到GPRS模块接收短信然后报警的设计,因为没什么基础,光是为了让单片机收到短信后控制蜂鸣器报警就用了不少时间,现在要做下一步了,需要用手里的这个STC89C82RC的单片机控制LCD1602液晶屏将接收到的短信读取出来,这就很尴尬了···有点迷茫啊,看了很多1602的例程,关于如何写入固定信息的方法差不多是看懂了,控制指令端写入数据,然后给单片机的程序里留好要现实的数据就可以了,但是怎么让液晶屏读取随时发送向单片机的短息我就不知道该怎么搞了,第一我不知道单片机接收到的ASCII码是存储在哪里的,第二我也不知道LCD1602怎么即时读取单片机里的短信,我只知道透传模块发给单片机的格式是adcii码,可以直接识别,不知道有没有大牛有这方面的程序可以让我看一下啊,或者帮我解释一下问题解解惑也是好的,多谢了!
这里有一个显示程序我姑且是看懂了,但是这个是直接显示预设好的信息,我现在不知道该怎么显示随时接收到的程序
#include
#define uint unsigned int //预定义一下
#define uchar unsigned char
sbit rs=P2^2; //1602的数据/指令选择控制线
sbit rw=P2^1; //1602的读写控制线
sbit en=P2^0; //1602的使能控制线
uchar code table[]="LCD1602-wjz-tjdz"; //要显示的内容1放入数组tablel
uchar code table1[]=" QQ:544806579 "; //要显示的内容2放入数组table1
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
void lcd_wcom(uchar com) //1602写命令函数
{
rs=0; //选择指令寄存器
rw=0; //选择写
P0=com; //把命令字送入P2
delay(5); //延时一小会儿,让1602准备接收数据
en=1; //使能线电平变化,命令送入1602的8位数据口
en=0;
}
void lcd_wdat(uchar dat) //1602写数据函数
{
rs=1; //选择数据寄存器
rw=0; //选择写
P0=dat; //把要显示的数据送入P2
delay(5); //延时一小会儿,让1602准备接收数据
en=1; //使能线电平变化,数据送入1602的8位数据口
en=0;
}
void lcd_init() //1602初始化函数
{
lcd_wcom(0x38); //8位数据,双列,5*7字形
lcd_wcom(0x0c); //开启显示屏,关光标,光标不闪烁
lcd_wcom(0x06); //显示地址递增,即写一个数据后,显示位置右移一位
lcd_wcom(0x01); //清屏
}
void main() //主函数
{
uchar n,m=0;
lcd_init(); //液晶初始化
lcd_wcom(0x80); //显示地址设为80H(即00H,)上排第一位
for(m=0;m<16;m++) //将table[]中的数据依次写入1602显示
{
lcd_wdat(table[m]);
delay(100); //延时
}
lcd_wcom(0x80+0x40); //重新设定显示地址为,即下排第1位
for(n=0;n<16;n++) //将table1[]中的数据依次写入1602显示
{
lcd_wdat(table1[n]);
delay(100); //延时
}
一切都是由单片机来控制的,而你要做的,就是给单片机写程序。
gprs发过来的数据,肯定是被单片机接收了,并被单片机存储了。
现在内容已经在单片机里面了,至于在哪儿,应该在你自己定义的变量里面了。
然后怎么把变量的内容显示到LCD上,应该也不难吧。
大概已经说完了,更详细的我就指导不了你了。