|
现在显示程序已经写了部分,但是点不亮,很是郁闷,把程序贴出来,请大家指教。
其中PF4为片选信号,PA3为时钟信号,PB7为数据线,三个口线都采用推挽输出。
uchar show_led[14]={0xa8,0x01,0x6f,0x01,0x00,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00};//要发送的数据
uchar tm1628_senddata(uchar wr_data)//写数据子函数
{
uchar flag_data;
PF_ODR&=0xef; //片选给低电平;
for(ii=0;ii<8;ii++)
{
PA_ODR&=0xf7;//时钟信号置低
flag_data=wr_data&&0x01;//发送的数据为wr_data的低位
if(flag_data==0)
PB_ODR&=0x7f;
else
PB_ODR|=0x80;
wr_data>>=1;//将数据右移一位;
PA_ODR|=0x08;//时钟信号置高
}
}
void display_tm1628(void)//显示程序
{
PF_ODR|=0x10;
PA_ODR|=0x08;
PB_ODR|=0x80;
tm1628_senddata(0x03);//显示模式设置,设置为7个GRID,10个SEG
PF_ODR|=0x10;
tm1628_senddata(0x40);//写数据到显示寄存器,采用地址自动加一
PF_ODR|=0x10;
tm1628_senddata(0xc0);//显示寄存器的00H单元开始
for(hh=0;hh<14;hh++)
{
tm1628_senddata(show_led[hh]);//给显示寄存器送数据,
}
PF_ODR|=0x10;
tm1628_senddata(0x8b);//显示控制参数,点亮数码屏幕,亮度可以通过改变低三位调节
}
main()
{
_asm("sim");
clock_inti();
io_inti();
_asm("rim");
timer6_50us();
while(1)
{
time_flag();
// ad_equel_value();
//ad_alarm_judge();
// songsi_read();//读调节送丝速度的电位器的AD
//ad_pot1_read();//读调节PWM电位器的AD值
//jiaozhiliu_read();//读调节交直流的电位器的AD值
//beef_deal();
//led_deal();
//PB_ODR|=0x20;
display_tm1628();
//PF_ODR|=0x10;
//PA_ODR|=0x08;
//PB_ODR|=0x80;
// PF_ODR&=0xef;
//PA_ODR&=0xf7;
//PB_ODR&=0x7f;
}
} |
|