单纯数码管的显示c程序
#include
#define hc595_ser rb7
#define hc595_sck rb6
#define hc595_rck rb5
#define key_164_data rb3
#define key_164_clk rb2
#define key_com1 rb1
#define key_com0 rb0
#define ture 1
bit key_finish; //定义位变量,这是picmate仿真软件环境的特有的地方 unsigned int sample_key;
unsigned int sample_keybuf[2];
unsigned int key_value;
unsigned char key_row_sel;
unsigned char key_number;//键号
unsigned int t100ms;
unsigned char disbuf[8];
const unsigned char seven_seg[16]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//----------------------------------------------
void disbuf_update(void)
{
//if(key_number>=16)
//{
//disbuf[0]=0xff;
//disbuf[1]=0xff;
//disbuf[2]=0xff;
//disbuf[3]=0xff;
//disbuf[4]=0xff;
//disbuf[5]=0xff;
//disbuf[6]=0xff;
//disbuf[7]=0xff;
//return;
//}
disbuf[0]=seven_seg[1];
disbuf[1]=seven_seg[2];
disbuf[2]=seven_seg[3];
disbuf[3]=seven_seg[4];
disbuf[4]=seven_seg[5];
disbuf[5]=seven_seg[6];
disbuf[6]=seven_seg[7];
disbuf[7]=seven_seg[8];
}
//----------------------------------------------
//发送一个字节
void s_pdata(unsigned char key) //形参key对应着实参disbuf[i]
{
unsigned char i;
for(i=0;i<8;i )
{
if(0x80&(key< hc595_ser=1;
else hc595_ser=0;
hc595_sck=0;
hc595_sck=1;
}
}
//----------------------------------------------
void display (void)
{
unsigned char i;
for(i=0;i<8;i )
s_pdata(disbuf[i]);
hc595_rck=0;
hc595_rck=1;
}
//----------------------------------------------
//主程序
int main(void)
{
portb=0;
trisb=0x03;
disbuf_update();
display();
}
//----------------------------------------------
它的电路图可以参考用pic16f877a单片机驱动按键控制8个数码管的显示电路图.
『本文转载自网络,皇冠最新app版本的版权归原作者所有,如有侵权请联系删除』