gw168sh 发表于 2011-9-21 09:36:25

请教HT1621B 上传了程序 和LCD规格书,不知道怎么点亮指定位置

哪位能帮我编一段编码 让LCD里面的四个8可以像数码管那样加减。
实在不行的话帮我修改一下程序,可以点亮指定段也可以,谢谢。

这是LCD的规格书
点击此处下载 ourdev_678246TK63O7.pdf(文件大小:140K) (原文件名:HD61749 Model (1).pdf)


//---------------------------------------
//日期:20110907
//-----------------------------------------
#include <SH88F2051.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define _nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
#define BIAS   0x24//0b1000 0010 10101/3duty 3com
#define SYSDIS 0X00   //0b1000 0000 0000关振系统荡器和LCD偏压发生器
#define SYSEN0X01   //0b1000 0000 0010 打开系统振荡器
#define LCDOFF 0X04   //0b1000 0000 0100关LCD偏压
#define LCDON0X03   //0b1000 0000 0110打开LCD偏压
#define XTAL   0x28   //0b1000 0010 1000 外部接时钟
#define RC2560X30   //0b1000 0011 0000//系统时钟选择为片内RC振荡器
#define TONEON0X12    //0b1000 0001 0010打开声音输出
#define TONEOFF 0X10    //0b1000 0001 0000 关闭声音输出
#define WDTDIS10X0A//0b1000 0000 1010禁止看门狗
#define TIMERDIS 0X08                  //时基输出禁能

uchar a;

//-------------------------------------库函数声明,管脚定义-----------

sbit DOWN=P1^3;      //15pin 减
sbit UP=P1^2;    //14pin 加
sbit STOP=P1^1;   //13pin 停止
sbit START=P1^0;   //12pin 开始
sbit LED=P3^5;   //9pin0 LED OPEN
sbit BUZZ=P4^0;       //1pin 0 BUZZ OPEN
sbit KA1=P3^7;   //11pin 主控制继电器
sbit KA2=P3^4;   //8pin 极性转换A
sbit KA3=P3^3;   //7pin 极性转换B
sbit DATA=P1^4;   
sbit WRD=P1^5;   
sbit CS=P1^6;
void SENDBYTE (uchar dat);
void SENDBIT (uchar dat,uchar bitcnt);   


void init()
{
SCON=0x00;   //串行控制关
CLKCON=0x00;//系统时钟频率分频器。机器周期fsys=震荡周期fosc,1/4=0.25us
DOWN=1;      //15pin 减
UP=1;    //14pin 加
STOP=1;   //13pin 停止
START=1;   //12pin 开始
}
   
/***************************延时子函数******************************/
void delay1s()                           //延时1S
{
uchar i;
uint j;
for(i=0;i<10;i++)
    for(j=0;j<1300;j++);
}
/*********************************************************/
void SendBit_1621(uchar data1,uchar cnt) //data1的高位cnt位写入HT1621,高位在前
{
uchar i;
for(i=0;i<cnt;i++)
{
if((data1&0x80)==0) DATA=0;//DATA=IO
else DATA=1;
WRD=0;
_nop();
WRD=1;
data1<<=1;
}
}
void SendDataBit_1621(uchar data1,uchar cnt)//data1的低cnt位写入HT1621,低位在前
{
uchar i;
for(i=0;i<cnt;i++)
{
if((data1&0x01)==0) DATA=0;
else DATA=1;
WRD=0;
_nop();
WRD=1;
data1>>=1;
}
}

void SendCmd(uchar command)
{
CS=0;
SendBit_1621(0x80,3);
SendBit_1621(command,9);
CS=1;
}
void Write_1621(uchar addr, uchar data1)
{
CS=0;
SendBit_1621(0xa0,3);    //写入标志吗101
SendBit_1621(addr<<2,6);//写入6位addr
SendDataBit_1621(data1,4); //写入data的低4位
CS=1;
}
void WriteAll_1621(uchar addr,uchar *p,uchar cnt)
{
uchar i;
CS=0;
SendBit_1621(0xa0,3);    //写入标志吗101
SendBit_1621(addr<<2,6);//写入6位addr
for(i=0;i<cnt;i++,p++)   //连续写入数据
{
SendDataBit_1621(*p,8);
}
CS=1;
}
void lcd_init()
{
SendCmd(BIAS);
SendCmd(SYSEN);
SendCmd(LCDON);
}
/*******************************主函数******************************/
main()                                 //主函数
{
init();
   LED=1;
lcd_init();
a=0x21;a=0x43;a=0x65;a=0x87;a=0xa9;
Write_1621(0x09,0x09);
WriteAll_1621(0,a,5);
               
}//main end
页: [1]
查看完整版本: 请教HT1621B 上传了程序 和LCD规格书,不知道怎么点亮指定位置