pic18F用什么C语言编译器,PIC18f4520单片机驱动H1632的C语言程序

基于PIC18f4520单片机驱动H1632C语言程序:

#include

#include

//#pragma config OSC = HS //配置内部振荡器Fosc/4 RA7,IO口RA7

//#pragma config PWRT =OFF

//#pragma config BOREN = OFF

//#pragma config WDT = OFF

//#pragma config MCLRE = ON

//#pragma config PBADEN = OFF

//#pragma config LVP = OFF

#define CLK PORTCbits.RC3

#define DAT PORTCbits.RC5

#define CS1 PORTDbits.RD0

//#define CS1 PORTCbits.RC0

//#define CS2 PORTDbits.RD1

//#define CS3 PORTDbits.RD2

//#define CS4 PORTDbits.RD3

#define KEY PORTBbits.RB0

//#define KEY PORTAbits.RA4

void init_command(unsigned int command_data); /

spacer.gifnd commad data to HT1632

void set2416(void);

//initialize HT1632

void MCU_Data_0832(unsigned char Data1,unsigned char Data2); /

spacer.gifnd 16 bits

data to HT1632 once

void MCU_Address_2416(unsigned char address); /

spacer.gifnd address to 1632's RAM

void senddata1(void); /

spacer.gifnd data to HT1632(1st screen)to display information

void delay(void);

void KeyJudgement(void);

unsigned char KeyLast,KeyNow;//Record the state of key

unsigned char KeyCounter;

void KeyJudgement(void)

{

KeyNow=KEY;

if((KeyNow==0)&&(KeyLast==1))

{

Delay100TCYx(10);//Delay 2ms

KeyNow=KEY;

if(KeyNow==0)

{

KeyCounter++;

if(KeyCounter==6)

KeyCounter=0;

}

}

KeyLast=KeyNow;

}

void delay(void)

{

unsigned char i,j;

for(i=0;i<200;i++)

{

j++;

}

}

void init_command(unsigned int command_data)

{

unsigned int i,j;

command_data=command_data&0xfff;

command_data=command_data<<4;

CS1=1;

CS1=0;

for(i=0;i<12;i++)

{

CLK=0;

j=command_data&0x8000;

command_data=command_data<<1;

j=j>>15;

DAT=j;

CLK=1;

}

CS1=1;

//CS2=1;

//CS3=1;

//CS4=1;

}

void set2416(void)

{

//sys en

init_command(0b100000000010);

//led on

init_command(0b100000000110);

//blink on

// init_command(0b100000010010);

//master mode

init_command(0b100000101110);

//RC

init_command(0b100000110110);

//commons option

//init_command(0b100001011110);//2416

init_command(0b100001010110);//0832

//pwm duty

init_command(0b100101111110);

}

void MCU_Data_0832(unsigned char Data1,unsigned char Data2)

{

unsigned char i,j,databuffer;

for(j=0;j<4;j++)

{

databuffer=Data1;

for(i=0 ; i<8 ; i++)

{

CLK=0; //clk = 0 for data ready

if(databuffer & 0x80)

DAT=1;

else

DAT=0;

CLK=1; //clk = 1 for data write into 2

databuffer=databuffer<<1;

}

databuffer=Data2;

for(i=0 ; i<8 ; i++)

{

CLK=0; //clk = 0 for data ready

if(databuffer & 0x80)

DAT=1;

else

DAT=0;

CLK=1; //clk = 1 for data write into 2

databuffer=databuffer<<1;

}

}

}

void MCU_Address_2416(unsigned char address)

{

unsigned char i,temp;

temp = 0x40; //address has 7 bits. MSB fisrt

for(i=0;i<7;i++)

{

CLK= 0; //clk = 0 for data ready

if((temp & address) == 0)

DAT= 0;

else

DAT= 1;

CLK= 1; //clk = 1 for data write into

1632

temp >>= 1;

}

}

void senddata1(void)

{

unsigned char i,data1,data2;

CS1=1;

delay();

CS1=0;

delay();

CLK=0;

DAT=1;

CLK=1;

CLK=0;

DAT=0;

CLK=1;

CLK=0;

DAT=1;

CLK=1;

MCU_Address_2416(0x00);

switch (KeyCounter)

{

case 0:{

data1=0x00;

data2=0x00;

}break;

case 1:{

data1=0xaa;

data2=0xaa;

}break;

case 2:{

data1=0x55;

data2=0x55;

}break;

case 3:{

data1=0xff;

data2=0x00;

}break;

case 4:{

data1=0x00;

data2=0xff;

}break;

Page 30832Test

case 5:{

data1=0xff;

data2=0xff;

}break;

}

for(i=0;i<4;i++)

MCU_Data_0832(data1,data2);

delay();

CS1=1;

}

void main(void)

{

unsigned char CounterShallow;

TRISCbits.TRISC3=0;

TRISCbits.TRISC5=0;

TRISDbits.TRISD0=0;

//TRISCbits.TRISC0=0;

TRISDbits.TRISD1=0;

TRISDbits.TRISD2=0;

//TRISAbits.TRISA4=1;

TRISBbits.TRISB0=1;

KeyLast=1;

KeyNow=1;

KeyCounter=0;

CounterShallow=1;

set2416();

delay();

while(1)

{

KeyJudgement();

if(CounterShallow!=KeyCounter)

{

senddata1();

CounterShallow=KeyCounter;

Delay1KTCYx(100);//Keep from intervals

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值