⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hanshu.c

📁 24c256程序的应用 很不错 的 值得借鉴 有什么好的东西大家一起探讨
💻 C
字号:
/*----------------------------------------------------------------------------------------------
07.6.30
共阳数码管接法见资料本,暂为整理添加

-----------------------------------------------------------------------------------------------*/  

#include <STC12C5410.H>
#include <intrins.h>
//#include <port.h>

//共阳段码表,按顺序接A-QA,B-QB
//字节的高位对应数码管的H段,依次类推 
/*static unsigned char code Dig_Tab[19]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90//0-9共阳段码表 
                                                    ,0x88,0x82,0xc6,0xa1,0x84,0x8e      //a-f共阳段码表 
                                                    ,0x89,0xc7,0xB7};                   //H L = 共阳段码表*/

//8段共阳接法LED显示表,从底到高依次为b-g-c-h-d-e-a-f,
// unsigned char code LED_Tab[9]={0xFF,                                                    //灭灯
//                                      0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};          //从低到高指示1-8级
  sbit  SDATA_595 = P2^7 ;       /*串行数据输入*/  
  sbit  SCLK_595  = P3^7;       /*移位时钟脉冲*/
  sbit  RCK_595   = P2^6;      /*输出锁存器控制脉冲*/
  
  unsigned char code LED_Tab[9]={0xFF,                                                   //灭灯
                                    0xfd,0xBF,0xfb,0x7f,0xF7,0xef,0xfe,0xdf};          //从低到高指示1-8级
 
//共阳数码管段码表,连线如上所注释                                           
 unsigned char code Duan_Tab[10]={0x50,0x5f,0x31,0x15,0x1e,0x94,0x90,0x5d,0x10,0x14};//0-9
//待显示内容的位码表
 unsigned char code Wei_Tab[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};    
 
/*-------------------------------------------------------------------------------
                           向74595输出一字节数据子程序
---------------------------------------------------------------------------------*/
static  void  WR_595(unsigned char data num2 ) 
 {
   unsigned char data count1;
   
   for(count1=0;count1<=7;count1++){
       if((num2&0x80)==0x80)    //最高位为1,则向SDATA_595发送1
	       SDATA_595=1;         //发出数据的最高位
	   else  
	       SDATA_595=0;
	 
	   num2<<=1;               //右移位
	   SCLK_595=0;	           //产生上生沿
	   _nop_();
	   _nop_();
	   SCLK_595=1;
    
   }  

 }
/*-------------------------------------------------------------------------------
                     打开锁存,更新74595输出子程序
---------------------------------------------------------------------------------*/
 void Out_595(void)
 {
   RCK_595=0;
   _nop_();
   _nop_();
   RCK_595=1;  /*上升沿锁存数据*/

 }
/*--------------------------------------------------------------------------------------
                                       显示函数                              
----------------------------------------------------------------------------------------*/
void Led_Display(unsigned char data Buffer[])
{               
  unsigned char count=0;
  for(count=0;count<8;count++)
  {
      if(count<2){       
          WR_595(Wei_Tab[count]);
          WR_595(LED_Tab[Buffer[count]]);
          Out_595();
      }
      else{
          WR_595(Wei_Tab[count]);
          if(count==3||count==6)
              WR_595(Duan_Tab[Buffer[count]] & 0xEF);
          else
              WR_595(Duan_Tab[Buffer[count]]);
          Out_595();
      }
  } 
          WR_595(Wei_Tab[1]);
          WR_595(LED_Tab[Buffer[1]]);
          Out_595();     
} 
void Led_Init(void)
{
  WR_595(0xff);
  WR_595(0xff);
  Out_595();
    
}
void main(void)
{while(1)
{ WR_595(Wei_Tab[0x10]);
  WR_595(LED_Tab[0xef]);
  Out_595();     
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -