搜索
bottom↓
回复: 4

高手们帮忙看看啊 我的1621驱动程序 不知道错在哪里 就是无法点亮

[复制链接]

出0入0汤圆

发表于 2011-12-1 16:53:32 | 显示全部楼层 |阅读模式
data--接PB3
WR--接PB4
CS接PB5
现在是想全部点亮。。。。可是就是不亮  LCD每个口的电压都为5V.......


#include<iom88v.h>
#include<AVRdef.h>

#define uchar unsigned char

#define BIAS 0x28  // 0010 1000 X 1/2偏置 4com

#define SYSEN 0x01  //开启系统振荡器
#define LCDOFF 0x02 //
#define LCDON  0x03 //
#define RC256K 0x18 ////系统时钟源片内RC振荡

#define DATA_1() PORTB |= BIT(3)   //PB3 数据线
#define DATA_0() PORTB &= ~BIT(3)  //PB3
#define WR_1() PORTB |= BIT(4)   //PB4  时钟线
#define WR_0() PORTB &= ~BIT(4)  //PB4
#define CS_1() PORTB |= BIT(5)   //PB5  片选线
#define CS_0() PORTB &= ~BIT(5)  //PB5
#define nop()  asm("nop")

void port_init(void)
{DDRB=0xff;  
  DDRC=0xff;
  DDRD=0xFF;
  PORTD=0xaa;
}


void SendBit_1621(uchar data,uchar cnt) //data的高cnt位写入1621
{
uchar i;
for(i=0;i<cnt;i++)
    {
        WR_0();
        if(data&0x80==0) DATA_0();
        else DATA_1();
        nop();
        WR_1(); //给上升沿
        data<<=1;
        }
}


void SendDataBit_1621(uchar data,uchar cnt) //data的低cnt位写入1621
{
uchar i;
for(i=0;i<cnt;i++)
    {
        WR_0();
        if(data&0x01==0) DATA_0();
        else DATA_1();
        nop();
        WR_1(); //给上升沿
        data>>=1;
        }
}

void SendCmd(uchar command)
{
CS_0();    //片选
SendBit_1621(0x80,3); //写100  命令模式
SendBit_1621(command,9);  //写command命令
CS_1();
}

void Write_1621(uchar addr,uchar data)
{
CS_0();
SendBit_1621(0xa0,3);//写101 写数据模式
SendBit_1621(addr<<2,6);//写6位地址
SendDataBit_1621(data,4);//写data的低4位
}

void WriteAll_1621(uchar addr,uchar *p,uchar cnt)
{
uchar i;
CS_0();
SendBit_1621(0xa0,3);//写101 数据模式
SendBit_1621(addr<<2,6);//写地址
for(i=0;i<cnt;i++,p++)
   SendDataBit_1621(*p,8);
CS_1();

}

void ALL_disp(void)
{
uchar i;
  for(i=0;i<31;i++)
  {
  Write_1621(i,0x00);
  }
}

void main(void)
{                port_init();
                SendCmd(BIAS);  //
                SendCmd(SYSEN);  //
                SendCmd(RC256K); //
                SendCmd(LCDON);//
                ALL_disp();
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2011-12-1 16:54:40 | 显示全部楼层
回复【楼主位】bailangcn  
-----------------------------------------------------------------------

大家都来看一看啊

出0入0汤圆

 楼主| 发表于 2011-12-1 16:58:52 | 显示全部楼层
回复【楼主位】bailangcn  
-----------------------------------------------------------------------

写错了 全显函数应为这个  上面那个00是为了测试的
void ALL_disp(void)
{
uchar i;
  for(i=0;i<31;i++)
  {
  Write_1621(i,0xFF);
  }
}

用个也显示不出来。。。。

出0入0汤圆

 楼主| 发表于 2011-12-2 11:05:05 | 显示全部楼层
现在弄好了    主要是两个地方
Write_1621()这个函数没有加上CS_1();
还有就是
if(data&0x80==0) DATA_0();
else DATA_1();

if(data&0x01==0) DATA_0();
else DATA_1();
这两行代码改分别改为
if(data&0x80) DATA_1();
else DATA_0();

if(data&0x01) DATA_1();
else DATA_0();


然后在主函数的开头加个CS_1();就可以了  



PS:我不太明白
if(data&0x80==0) DATA_0();
else DATA_1();
跟这个
if(data&0x80) DATA_1();
else DATA_0();
的区别   

前面一个出来的波型都是高电平。。。。。

出0入0汤圆

发表于 2014-2-16 18:50:35 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 13:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表