标题: 挺简单的程序 怎么就是乱码啊 [打印本页]

作者: ヽミ慵懒_、阳光    时间: 2013-11-19 17:06
标题: 挺简单的程序 怎么就是乱码啊
#include<reg52.h>
#define uchar unsigned char
uchar key,key1;
sbit CLK=P2^1;
sbit IO=P2^0;
sbit RST=P2^4;
sbit lcdrs=P1^0;
sbit lcdwr=P1^1;
sbit lcden=P2^5;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
void delay(uchar i)
{
uchar x,n;
for(x=i;x>0;x--)
for(n=1250;n>0;n--);
}

   void write_byte(uchar dat)
{ uchar a ;
ACC=dat;
RST=1;
for(a=8;a>0;a--)
{
  IO=ACC0;
  CLK=0;
  CLK=1;
  ACC=ACC>>1;
}
}
uchar read_byte()
{ uchar a;
RST=1;
for(a=8;a>0;a--)
{
  ACC7=IO;
  CLK=1;
  CLK=0;
  ACC=ACC>>1;
}
return (ACC);
}
void write_1302(uchar add,uchar dat)
{
RST=0;
CLK=0;
RST=1;
write_byte(add);
write_byte(dat);
CLK=1;
RST=0;
}
uchar read_1302(uchar add)
{
uchar temp;
RST=0;
CLK=0;
RST=1;
write_byte(add);
temp=read_byte();
CLK=1;
RST=0;
return(temp);
}
uchar BCD(uchar bcd)
{
uchar Decimal;
Decimal=bcd>>4;
return(Decimal=Decimal*10+(bcd&=0x0F));
}

void write_con(uchar con)
{
lcdrs=0;
lcdwr=0;
P0=con;
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dat)
{
lcdrs=1;
lcdwr=0;
P0=dat;
lcden=1;
delay(5);
lcden=0;
}
void init()
{
RST=0;
CLK=0;
lcden=0;
   write_con(0x38);
   write_con(0x0c);
   write_con(0x06);   //光标自动向右  字符不移动
   write_con(0x01);   //清屏
   write_con(0x80+0x05);
}
void main()
{
init();
RST=0;
CLK=0;
write_1302(0x8e,0x00);
write_1302(0x80,0x85);
    read_1302(0x81);
key1=BCD(key);
write_data(key1);
}

作者: admin    时间: 2013-11-23 19:50
驱动液晶屏吗?
作者: ヽミ慵懒_、阳光    时间: 2013-11-24 14:00
admin 发表于 2013-11-23 19:50
驱动液晶屏吗?

对的  程序运行都对  就加了让1602开头是从右往左滑动出来的程序就乱码了  ……两个程序本来都可以正常运行  加一起就不对…………
作者: liuzhaoxin1020    时间: 2016-12-17 12:13
什么运行结果
作者: zl2168    时间: 2016-12-17 13:40
liuzhaoxin1020翻箱底啦???怎么把2013、14、15的老黄历都翻出来,什么意思?????
作者: lincipeng15    时间: 2016-12-17 14:01
好像没毛病吧,再试试呗




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1