|
#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位數(shù)據(jù),可變波特率
AUXR |= 0x40; //定時(shí)器1時(shí)鐘為Fosc,即1T
AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0F; //設(shè)定定時(shí)器1為16位自動(dòng)重裝方式
TL1 = 0xE0; //設(shè)定定時(shí)初值
TH1 = 0xFE; //設(shè)定定時(shí)初值
ET1 = 0; //禁止定時(shí)器1中斷
TR1 = 1; //啟動(dòng)定時(shí)器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() //檢測(cè)標(biāo)志位
{
RS=0;
RW=1;
E=1;
while(flag!=0)
flag=0;
E=0;
RS=1;
}
void write(uint com) //寫(xiě)指令
{ chak();
RS=0;
RW=0;
P0=com;
E=1;
delayms(6);
E=0;
RS=1;
}
void date(uint ss) //寫(xiě)數(shù)據(jù)
{
chak();
RS=1;
RW=0;
P0=ss;
E=1;
delayms(6);
E=0;
RS=1;
}
void init()//初始化(復(fù)位)
{
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); //第一列
}
想寫(xiě)ASCII碼里的,這是我的程序,怎么修改呢???串口通信我還不太會(huì) |
|