#include <STC15F2K60S2.H>
#include<intrins.h>
char d;
#define uint unsigned int
#define uchar unsigned char
void delayms(uint z) ;
sbit RS=P2^0;
sbit RW=P2^1;
sbit E =P2^2;
sbit flag=P0^7;
void chak();
uchar a,b;
void write(uint com);
void date(uint ss);
void init();
uint ss;
uchar i=0;
void display();
void UartInit();
void main()
{
UartInit();
init();
while(1)
{
display();
}
}
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xE0; //设定定时初值
TH1 = 0xFE; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES = 1; //使能串口1中断
EA = 1;
}
void send() interrupt 4
{
if (RI)
{
RI = 0; //清除RI位
d = SBUF;
i++;
}
if (TI)
{
TI = 0; //清除TI位
}
}
void delayms(uint z) //z=2 1ms
{
for(a=z;a>0;a--)
for(b=210;b>0;b--);
}
void chak() //检测标志位
{
RS=0;
RW=1;
E=1;
while(flag!=0)
flag=0;
E=0;
RS=1;
}
void write(uint com) //写指令
{ chak();
RS=0;
RW=0;
P0=com;
E=1;
delayms(6);
E=0;
RS=1;
}
void date(uint ss) //写数据
{
chak();
RS=1;
RW=0;
P0=ss;
E=1;
delayms(6);
E=0;
RS=1;
}
void init()//初始化(复位)
{
RS=0;
write(0x38);
delayms(12);
write(0x38);
delayms(12);
write(0x38);
delayms(12);
write(0x38);
delayms(12);
write(0x08);
delayms(12);
write(0x01);
delayms(12);
write(0x06);
write(0x0f);
}
void display() //第一行
{
write(0x80+i);
date(d); //第一列
}
想写ASCII码里的,这是我的程序,怎么修改呢???串口通信我还不太会 |