4# pzhd52   
现在显示程序已经写了部分,但是点不亮,很是郁闷,把程序贴出来,请大家指教。 
其中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;                         
        } 
  
}
 |