小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

7279鍵盤顯示程序

 金正月 2010-05-31
#include <reg52.h>

  #define CMD_RESET 0xa4 //復(fù)位(清除)指令

  #define CMD_TEST 0xbf //測(cè)試指令

  #define CMD_READ 0x15 //讀鍵盤數(shù)據(jù)指令

  #define BLINKCTL 0x88 //閃爍控制

  #define ACTCTL 0x98 //消隱控制

  #define DECODE0 0x80 //下載數(shù)據(jù)且按方式0譯碼

  #define DECODE1 0xc8 //下載數(shù)據(jù)且按方式1譯碼

  #define UNDECODE 0x90 //下載數(shù)據(jù)但不譯碼

  #define SEGON 0xe0 //段點(diǎn)亮指令

  #define SEGOFF 0xc0 //段關(guān)閉指令

  #define RTL_CYCLE 0xa3 //循環(huán)左移指令

  #define RTR_CYCLE 0xa2 //循環(huán)右移指令

  #define RTL_UNCYL 0xa1 //左移指令

  #define RTR_UNCYL 0xa0 //右移指令

  #define uchar unsigned char

  #define uint unsigned int

  #define ulong unsigned long

  //*******************變量及I/O口定義**********************

  sbit cs=P1^0; //7279使能端

  sbit clk=P1^1; //7279時(shí)鐘脈沖

  sbit dat=P1^2; //7279數(shù)據(jù)端

  sbit key=P1^3; //7279鍵位

  /**************函數(shù)原型說明****************/

  void write7279(uchar,uchar); //寫入到HD7279

  void send_uchar(uchar); //發(fā)送一個(gè)字節(jié)

  void Init_Timer0();

  void short_delay(void); //延時(shí)約8us

  void long_delay(void); //延時(shí)約50us

  uchar ucHMiao=0,ucSec=0,ucMin=0,ucHour=0;

  uchar bflag=0; //1秒標(biāo)記

  //uchar ww_led[]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70, 0x7F,0x7B,0x77,0x1F,0x4E,0x3D,0x4F,0x47,0x00,0x67}; //0--9的數(shù)碼表

  uchar ww_led[]={0xdb,0xc0,0xb3,0xf2,0xe8,0x7a,0x6b,0xd0, 0xfb,0xf8};//0--9的數(shù)碼表

  uchar Led_buf[6]={0x5b,0x0f,0x77,0x77,0x0f,0x00};//START十六進(jìn)制代碼

  uchar led_buf[];

  //*****************************************

  //發(fā)送數(shù)據(jù)給7279顯示

  //*****************************************

  void send_uchar(uchar out_uchar)

  {

  uchar i;

  cs=0;

  long_delay();

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

  {

  if(out_uchar&0x80)

  dat=1;

  else

  dat=0;

  clk=1;

  short_delay();

  clk=0;

  short_delay();

  out_uchar=out_uchar*2;

  }

  dat=0;

  }

  //**********************************

  // 函數(shù)功能:接收一個(gè)字節(jié)

  // 形式參數(shù):無

  // 返回值 :接收到的字節(jié)in_uchar

  //**********************************

  uchar receive_uchar(void)

  {

  uchar i,in_uchar;

  dat=1; //設(shè)為輸入狀態(tài)

  long_delay();

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

  {

  clk=1;

  short_delay();

  in_uchar=in_uchar*2;

  if(dat)

  in_uchar=in_uchar|0x01;

  clk=0;

  short_delay();

  }

  dat=0;

  return(in_uchar);

  }

  //************************************************ ***********

  // 函數(shù)功能:往7279發(fā)送一個(gè)不帶數(shù)據(jù)的指令,然后讀出7279的值

  // 形式參數(shù):要發(fā)送的指令commond

  // 返回值 :無

  //************************************************ ***********

  uchar read7279(uchar commond)

  {

  send_uchar(commond);

  return(receive_uchar());

  }

  //*****************************************

  // 函數(shù)功能:找出鍵值為value的按鍵的鍵號(hào)

  // 形式參數(shù):鍵值value

  // 返回值 :查到的鍵號(hào)i

  //*****************************************

  uchar get_key_number(uchar value)

  {

  uchar i;

  uchar KEY_CODE[]={ 0x04,0x05,0x06,0x07,

  0x0c,0x0d,0x0e,0x0f,

  0x14,0x15,0x16,0x17,

  0x1c,0x1d,0x1e,0x1f}; //鍵值表

  for(i=0;value!=KEY_CODE[i];i++);

  return i;

  }

  uchar Key_Scan(void)

  {

  uchar key_value,key_number;

  if(!key) //如果有鍵按下

  {

  key_value=http://blog.soso.com/qz.q/read7279(CMD_READ); //讀出鍵值

  key_number=get_key_number(key_value); //查出鍵號(hào)

  while(!key);////////////////////////////////////// /////////////////////////////////////////////////// ////

  return key_number;

  }

  else

  {

  return (0xff);

  }

  }

  //****************************************

  // 函數(shù)功能:往7279發(fā)送一個(gè)帶數(shù)據(jù)的指令

  // 形式參數(shù):命令commond(數(shù)碼管位子),數(shù)據(jù)Data(顯示的數(shù)據(jù))

  // 返回值 :無

  //****************************************

  void write7279(uchar commond,uchar Data)

  {

  send_uchar(commond);

  send_uchar(Data);

  }

  //***********************

  // 函數(shù)功能:延時(shí)約8us

  // 形式參數(shù):無

  // 返回值 :無

  //***********************

  void short_delay(void) //延時(shí)約8us

  {

  uchar i;

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

  }

  //************************

  // 函數(shù)功能:延時(shí)約50us

  // 形式參數(shù):無

  // 返回值 :無

  //************************

  void long_delay(void) //延時(shí)約50us

  {

  uchar i;

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

  }

  void Disp(uint k) //時(shí)間處理函數(shù)

  {

  uchar i;

  led_buf[0]= k%10;

  led_buf[1]= k%100/10;

  led_buf[2]= k%1000/100;

  led_buf[3]= k%10000/1000;

  for(i=0;i<4;i++) //顯示6位數(shù)碼管

  {

  write7279(0x90+i,0); //0X90為最右邊數(shù)碼管

  write7279(DECODE1+i,Led_buf[i]); //0X90為最右邊數(shù)碼管

  }

  }

  void int_7279(void)

  {

  uchar i;

  /**********************初始化***********************************/

  send_uchar(CMD_RESET);

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

  {

  write7279(UNDECODE+i,1);

  }

  }

  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多