|
50黑幣
#include<reg52.h>
#include<string.h>
/******************指令表**********************/
#define SYS_DIS 0x00 //關(guān)閉系統(tǒng)震蕩
#define SYS_EN 0x01 //打開系統(tǒng)震蕩
#define LED_OFF 0x02 //關(guān)閉LED顯示
#define LED_ON 0x03 //打開LED顯示
#define BLINK_OFF 0x08 //關(guān)閉閃爍
#define BLINK_ON 0x09 //打開閃爍
#define SLAVE_MODE 0x10 //從模式
#define RC_MASTER_MODE 0x18 //內(nèi)部RC時(shí)鐘
#define COM_OPTION 0x28 //20:8COM,NMOS。28:8COM,PMOS。
#define PWM_DUTY 0xaf //PWM亮度控制
/****************引腳定義**********************/
sbit cs1=P1^0;
sbit rd=P3^7;
sbit wr=P3^6;
sbit dat=P1^2;
void HT1632C_Write(unsigned char Data,unsigned char cnt)
{
unsigned char i;
for(i=0;i<cnt;i++)
{
wr=0;
if(Data&0x80) {dat=1;}
else {dat=0;}
wr=1;
Data<<=1;
}
}//MCU向HT1632C寫數(shù)據(jù)函數(shù),高位在前
void HT1632C_Write_CMD(unsigned char cmd)//MCU向HT1632c寫命令
{
cs1=0;
HT1632C_Write(0x80,3);//ID:100
HT1632C_Write(cmd,9);//命令數(shù)據(jù)位,第九位任意
cs1=1;
}
void HT1632C_Write_DATA(unsigned char Addr,unsigned char D,unsigned char cnt) //指定起始地址連續(xù)寫入數(shù)據(jù),cnt為寫入數(shù)據(jù)個(gè)數(shù),每個(gè)數(shù)據(jù)按位算
{
unsigned char i;
cs1=0;
HT1632C_Write(0xa0,3); //ID:101
HT1632C_Write(Addr<<1,7);//地址
for(i=0;i<cnt;i++) //連續(xù)寫入數(shù)據(jù)
{
HT1632C_Write(D,4);
}
cs1=1;
}
void HT1632C_clr(void) //清屏函數(shù)
{
unsigned char i;
cs1=0;
HT1632C_Write(0xa0,3);
HT1632C_Write(0x00,7);
for(i=0;i<48;i++)
HT1632C_Write(0,8);
cs1=1;
}
void HT1632C_Init(void) //HT1632C初始化函數(shù)
{
cs1=1;
wr=1;
dat=1;
HT1632C_Write_CMD(SYS_DIS);//關(guān)閉HT1632C內(nèi)部RC時(shí)鐘
HT1632C_Write_CMD(COM_OPTION);//選擇HT1632C工作模式,COM,NMOS模式
HT1632C_Write_CMD(RC_MASTER_MODE); //選擇內(nèi)部RC時(shí)鐘
HT1632C_Write_CMD(SYS_EN); //打開HT1632C內(nèi)部RC時(shí)鐘
HT1632C_Write_CMD(PWM_DUTY); //PWM亮度設(shè)置
HT1632C_Write_CMD(BLINK_OFF);//關(guān)閉閃爍
HT1632C_Write_CMD(LED_ON);//打開LED顯示
}
void lcdwd1(unsigned char num)
{
unsigned char i;
unsigned char addr=0;//寄存器起始地址0x00
for(i=0;i<num;i++)//num有效地址數(shù)
{
HT1632C_Write_DATA(addr,0xff,8);//addr為地址,0xff為數(shù)據(jù),8為8位數(shù)據(jù)
addr+=2;//順延2個(gè)4位地址碼
}
}
void main()
{
HT1632C_Init();
HT1632C_clr();
while(1)
{
lcdwd1(24);
}
}
|
|