CH451驅(qū)動LED數(shù)碼管單片機C語言實例程序
//包含CH451所需頭文件
#i nclude
#i nclude
/*------宏定義------*/
#define uchar unsigned char
#define uint unsigned int
#define ch451din PORTB
#define ch451dclk0 PORTB&=~BIT(PB1)
#define ch451dclk1 PORTB|=BIT(PB1)
#define ch451load0 PORTB&=~BIT(PB2)
#define ch451load1 PORTB|=BIT(PB2)
#define ch451dout0 PORTB&=~BIT(PB3)
#define ch451dout1 PORTB|=BIT(PB3)
//CH451復(fù)位
#define CH451_RESET 0x0201
//設(shè)置移動方式-作移、左循、右移、右循
#define CH451_LEFTMOV 0x0300
#define CH451_LEFTCYC 0x0301
#define CH451_RIGHTMOV 0x0302
#define CH451_RIGHTCYC 0x0303
//設(shè)置BCD譯碼方式
#define CH451_BCD 0x0580
//設(shè)置數(shù)碼管閃爍控制
#define CH451_TWINKLE 0x0600
//數(shù)碼管各位顯示
#define CH451_DIG0 0x0800
#define CH451_DIG1 0x0900
#define CH451_DIG2 0x0a00
#define CH451_DIG3 0x0b00
#define CH451_DIG4 0x0c00
#define CH451_DIG5 0x0d00
#define CH451_DIG6 0x0e00
#define CH451_DIG7 0x0f00
//CH451初始化
void ch451_init()
{
ch451din=0;
ch451din=1;
}
//輸出命令子程序
//定義一個無符號整型變量存儲12字節(jié)的命令字
void ch451_write(uint command)
{
uchar i;
ch451load0;
for(i=0;i<12;i++)
{
ch451din=command&1;
ch451dclk0;
ch451dclk1;
command>>=1;
}
ch451load1;
}
//CH451端口初始化
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x07;
DDRB = 0x07;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
}
//單片機C語言主函數(shù)
void main(void)
{
port_init();
ch451_init();
ch451_write(CH451_RESET);
ch451_write(0x401);
ch451_write(0x580);
ch451_write(0x600);
ch451_write(CH451_DIG0|0x08);
while(1)
{}
}
評論