打印
[51单片机]

请大神帮忙看看这个程序,总提示错误,实在是找不到原因了

[复制链接]
1966|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
passion0316|  楼主 | 2014-5-21 21:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg5l.h>
#define LCDLCDDisp_off     0x3e
#define LCDLCDDisp_on       0x3f
#define Page_add      0xb8//页地址
#define LCDCol_add        0x40//列地址
#define Start_Line     0xC0//行地址
/*****液晶显示器的端口定义*****/
#define data_ora P0 /*液晶数据总线*/
sbit LCDMcs=P2^1;/*片选1 */
sbit LCDScs=P2^2;/*片选2 */
sbit RESET=P2^3;/*复位信号*/
sbit LCDDi=P2^4;/*数据/指令选择*/
sbit LCDRW=P2^5;/*读/写选择*/
sbit LCDEnable=P2^6;/*读/写使能*/
char code Hz_xu[]=
{
/*---------------------------------------------------------------------------一
  源文件/文字:F:\LD测试仪\液晶\字模提取+排版软件\液晶字模提取\图例
\wo.bmp
  宽X高(像素):16X
  字模格式/大小:单色点阵液晶字模,纵向取模,字节倒序/32字节
  数据转换口期:2010-7-28 17:10:17
---------------------------------------------------------------------------一*/
0x40,0x42,0xCC,0x00,0x00,0x40,0x30,0x1E,0x10,0xF0,0x10,0x10,0x18,0x10,0x00,
0x00,
0x00,0x00,0x3F,0x10,0x08,0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x00,0x00
};
char code Hz_ping[]=
{
/*---------------------------------------------------------------------------一
  源文件/文字:F:\LD测试仪\液晶\字模提取+排版软件\液晶字模提取\图例
\ping.bmp萍
  宽X高(像素):16 X 16
  字模格式/大小:单色点阵液晶字模,纵向取模,字节倒序/32字节
  数据转换口期:2010-7-29 8:46:30
---------------------------------------------------------------------------一*/
0x00,0xC8,0x28,0x58,0x08,0x0C,0xBE,0x28,0x28,0xE8,0x3E,0x28,0xA8,0x2C,0x0
8,0x00,
0x00,0x08,0x09,0x7E,0x01,0x04,0x04,0x05,0x04,0x7F,0x04,0x05,0x04,0x06,0x04,0x00
};
/********************************************************************
********
函数功能:LCD延时程序
入口参数:t
出口参数:
*******/
void LCDdelay(unsigned int t)
{
    unsigned int i,j;
    for(i=0;i<=t;i++)
    for(j=0;j<10;j++)
}
/********************************************************************
********
状态检查,LCD是否忙
********/                                                                                               
void CheckState()
{
        unsigned char dat,DATA;//状态信息(判断是否忙)
    LCDDi=0; //数据\指令选择,D/I ( RS ) ="L",表示DB7}DB0为显示指令数据
    LCDRW=1; //R/W="H",E="H”数据被读到DB7}DBO
    do
    {
            DATA=0x00;
            LCDEnable=1;    //EN下降源
                  LCDdelay(2);//延时
            dat=DATA;
            LCDEnable=0;
                  dat=0x80&dat; //仅当第7位为0时才可操作(判别busy信号)
          }
        while(!(dat==0x00));
}
/********************************************************************
*********
函数功能:写命令到LCD程序,RS(DI)=L,RW=L,EN=H,即来一个脉冲写一次
入口参数:cmdcode
出口参数:
********/
void write_com(unsigned char cmdcode)
{
    CheckStateU;//检测LCD是否忙
    LCDDi=0;
    LCDRW=0;
    PO=cmdcode;
    LCDdelay(2);
    LCDEnable=1;
    LCDdelay(2);
    LCDEnable=0;
}
/********************************************************************
*********
函数功能:LCD初始化程序
入口参数:
出口参数:
********/
void init_lcd();
{
        LCDdelay(100);
        LCDMcs=1;//刚开始关闭两屏
        LCDScs=1;
        LCDdelay(100);
        write_com(LCDLCDDisp_off);//写初始化命令
        write_com(Page_add+0);
        write_com(Start_Line+0);
        write_com(LCDCoI_Add+0);
        write_com(LCDLCDDisp_On);
}
/********************************************************************
*********
函数功能:写数据到LCD程序,RS(DI)=H,RW=L,EN=H,即来一个脉冲写一次
入口参数:LCDDispdata
出口参数:
********/
void write_data(unsigned char LCDDispdata)
{
        CheckStateU;//检测LCD是否忙
        LCDDi=1;
        LCDRW=0;
        PO=LCDDispdata;
        LCDdelay(2);
        LCDEnable=1;
        LCDdelay(2);
        LCDEnable=0;
}
/********************************************************************
*********
函数功能:清除LCD内存程序
入口参数:pag,col,hzk
出口参数:
********/
void Clr Scr();
{
        unsigned char j,k;
        LCDMcs=0; //左、右屏均开显示
        LCDScs=0;
        write_com(Page_add+0);
        write_com(LCDCol_add+0);
        for(k=0;k<8;k++)//控制
        {
                write_com(Page_add+k); //每页每页进行写
                for(j=0;j<64;j++)//每页最多可写32个中文文字或64个ASCII字符
                {
                        write_com(LCDCoI_add+j);
                        write_data(0x00);//控制列数。-63,共64列,写点内容,列地址自动+1
                }
        }
}
void hz_LCDDISP16(unsigned char page,unsigned char column,unsigned char code*hzk)
{
        unsigned char j=0,i=0;
        for(j=0;j<2;j++)
        {
                write_com(Page_add+page+j);
                write_com(LCDCol_add+column);
                for(i=0;i<16;i++)
                        write_data(hzk[16*j+i]);
        }
}
void main()
{
        inti_lcd();
        Clr_Scr();
        LCDMcs=0;//左屏开显示
        LCDScs=1;
        hz_LCDDisp16(0,48,HZ_xu);//HZ_WO为某个汉字的首地址
                LCDMcs=1;//右屏开显示
        LCDScs=0;
                hz_LCDDisp16(0,0,Hz_ping);
        while(1)
        {
       
        }
} C:\Users\Administrator\Desktop\毕设相关\新建文件夹

相关帖子

沙发
passion0316|  楼主 | 2014-5-21 21:30 | 只看该作者
一编译就提示第一个for语句有错误,可是怎么改都不行

使用特权

评论回复
板凳
passion0316|  楼主 | 2014-5-21 21:39 | 只看该作者

使用特权

评论回复
地板
passion0316|  楼主 | 2014-5-21 21:58 | 只看该作者
在线等呀,这是个AT89C52和HDG12864F-3的显示程序,我想将它下载到PROTEUS里进行仿真,能编译成功就行。万分感谢

使用特权

评论回复
5
ayb_ice| | 2014-5-22 08:03 | 只看该作者
void LCDdelay(unsigned int t)
{
    unsigned int i,j;
    for(i=0;i<=t;i++)
    for(j=0;j<10;j++);    // 这里加个分号
}

不知道说啥好

使用特权

评论回复
6
hkxiaoma| | 2014-5-22 08:22 | 只看该作者
延时函数   for语句后面。。。。。。。。不知说啥好

使用特权

评论回复
7
nbldelnan| | 2014-5-22 08:43 | 只看该作者
void LCDdelay(unsigned int t)
{
    unsigned int i,j;
    for(i=0;i<=t;i++)
    for(j=0;j<10;j++)
}

明显没有加分号

使用特权

评论回复
8
zhangyellowleaf| | 2014-5-22 10:36 | 只看该作者

使用特权

评论回复
9
four_zhg| | 2014-5-22 20:31 | 只看该作者
这就是不加大括号有时造成的误区。如大括号一看就知道了:
for(...)
  {... ; }

使用特权

评论回复
10
cjseng| | 2014-5-22 22:05 | 只看该作者
别偷懒,写完整了就好。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

0

粉丝