求用51单片机可以调试12864串口程序,可以显示汉字,要有注释。 10
3个回答
展开全部
#include <reg51.h>
#include <intrins.h>
sbit E_CLK =P1^7;//clock input 同步时钟输入端(根据你自己的端口改)
sbit RW_SID=P1^5;//data input/output 串行数据输入/输出端(根据你自己的端口改)
#ifndef uint
#define uint unsigned int
#endif
#ifndef uchar
#define uchar unsigned char
#endif
void delay(unsigned int n)
{
unsigned int i;
for(i=0; i<n; i++) {;}
}
//串行发送一字节数据
void SendByte(unsigned char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
E_CLK=0;
if(dat&0x80)RW_SID=1;else RW_SID=0;
E_CLK=1;
dat=dat<<1;
}
}
//串行接收一字节数据
unsigned char ReceieveByte(void)
{
unsigned 困慧char i,d1,d2;
for(i=0;i<8;i++)
{
E_CLK=0;delay(100);
E_CLK=1;
if(RW_SID)d1++;
d1=d1<<1;
}
for(i=0;i<8;i++)
{
E_CLK=0;delay(100);
E_CLK=1;
if(RW_SID)d2++;
d2=d2<<1;
}
return (d1&0xF0+d2&0x0F);
}
//读取标志位BF
bit ReadBF(bit bf)
{
unsigned char dat;
SendByte(0xFA);
dat=ReceieveByte();
if(dat>0x7F)bf=1;else bf=0;
return bf;
}
//写控制命令
void SendCMD(unsigned char dat)
{
//RS_CS=1; 这个片选可以不理,接正5伏就好
SendByte(0xF8);
SendByte(dat&0xF0);//高四位
SendByte((dat&0x0F)<<4);//低四位
}
//写显示迹逗数据或单字节字符
void SendDat(unsigned char dat)
{
SendByte(0xFA);
SendByte(dat&0xF0);//高四位
SendByte((dat&0x0F)<<4);//低四位
}
void display(unsigned char x_add,unsigned char *ptr)
{
SendCMD(x_add);// 设定DDRAM 7位地址xxx,xxxx到地址计数器AC
while(*ptr != '\0')
{
SendDat(*ptr);
++ptr;
}
}
//初始化
void init(void)
{ delay(100);
SendCMD(0x30);//功能设置,一次送8位数据,基本指令集
SendCMD(0x0C);//整体显示,游标off,游标位置off
SendCMD(0x01);//清DDRAM
SendCMD(0x02);//DDRAM地址归位
SendCMD(0x80);//设定DDRAM 7位地址000,0000到地址计数器AC
}
void main(void)
{
init();
SendCMD(0x81);
SendDat(0x33);
SendDat(0x42);
SendDat(0x43);
SendDat(0x44);
SendCMD(0x00);
while(1)
{
delay(100);
display(0x80,"办证");
display(0x90,"电话:12345678");
SendCMD(0x00); 姿尺卖
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用什么12864,直接用彩屏
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你需要串行数据传送方式还是并行的方式?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询