久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6159|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

TM1638資料(.c文件和頭文件)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:234748 發(fā)表于 2017-9-21 21:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//-------------------------------------------------------------------------------TM1638.c-------------------------------------------------------------------
#include "TM1638.h"
#include "stdint.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
const uint8_t tab2[] = {0x3F,0x06,0x5B,0x4F,
                        0x66,0x6D,0x7D,0x07,
                        0x7F,0x6F,0x77,0x7C,
                        0x39,0x5E,0x79,0x71};
#define ADD 10
#define MINUS 11
#define EQUAL 12
#define CLEAR 13
#define PLUS 14
#define DIVIDE 15
unsigned int flag;
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
void TM1638_Write(unsigned char DATA)   //寫數(shù)據(jù)函數(shù)
{
unsigned char i;
DIO_OUT;
for(i=0;i<8;i++)
{
   CLK_low;
   if(DATA & 0x01){
    DIO_high;
   }else{
    DIO_low;
   }
   CLK_high;
   DATA>>=1;
}
}
unsigned char TM1638_Read(void)     //讀數(shù)據(jù)函數(shù)
{
unsigned char i;
unsigned char temp=0;
DIO_IN;
STB_low;
for(i=0;i<8;i++)
{
    temp>>=1;
    CLK_low;
    _delay_us(100);
    if(DIO_READ)
     temp |= 0x80;
    else
     temp &= 0x7f;
    CLK_high;
}
return temp;
}
void Write_COM(unsigned char cmd)  //發(fā)送命令字
{
CLK_high;
STB_high;
STB_low;
TM1638_Write(cmd);
STB_high;
}
/*!
*函數(shù)功能:讀取按鍵值
*輸入?yún)?shù):無
*輸出參數(shù):無
*返回值:  無
*/
unsigned char Read_key(void)
{
unsigned char c[4];
unsigned int key_value=0x00;
unsigned int i;
STB_high;
STB_low;
TM1638_Write(0x42);
_delay_us(1);
for(i=0;i<4;i++)
  c[i]=TM1638_Read();
STB_high;
if(c[0]&BIT2)
{
  key_value |= BIT1;
}
else if(c[0]&BIT6)
{
  key_value |= BIT4;
}
else if(c[0]&BIT0)
{
  key_value |= BIT2;
}
else if(c[0]&BIT1)
{
  key_value |= BIT3;
}
else if(c[0]&BIT5)
{
  key_value |= BIT6;
}
else if(c[0]&BIT4)
{
  key_value |= BIT5;
}
else if(c[1]&BIT0)
{
  key_value |= BITB;
}
else if(c[1]&BIT4)
{
  key_value |= BITC;
}
else if(c[1]&BIT1)
{
  key_value |= BITA;
}
else if(c[2]&BIT0)
{
  key_value |= BITD;
}
else if(c[2]&BIT4)
{
  key_value |= BIT8;
}
else if(c[2]&BIT5)
{
  key_value |= BIT9;
}
else if(c[2]&BIT6)
{
  key_value |= BIT7;
}
//-----------------------
else if(c[3]&BIT0)
{
  key_value |= BITF;
}
else if(c[3]&BIT1)
{
  key_value |= BITE;
}
else if(c[3]&BIT2)
{
  key_value |= BIT0;
}
//////////////////////////////////////////////
//特殊符號‘AC’ ‘+’ ‘-’ ‘=’
else if(c[1]&BIT2)
{
     flag<=CLEAR;
  Write_allLED(0);//按下AC,清除所有顯示
}
else if(c[1]&BIT6)
{
  flag<=ADD;//按下+,清除所有顯示
}
else if(c[2]&BIT1)
{
  flag<=EQUAL;//按下=,清除所有顯示
}
else if(c[2]&BIT2)
{
     flag<=MINUS;//按下-,清除所有顯示
}
/////////////////////////////////////
for(i=0;i<16;i++)
  if((0x01<<i)==key_value)
   break;
return i;
}
void Write_DATA(unsigned char add,unsigned char DATA)  //指定地址寫入數(shù)據(jù)
{
Write_COM(0x44);
STB_low;
TM1638_Write(0xc0|add);
TM1638_Write(DATA);
STB_high;
}
void init_TM1638(void)
{
Write_allLED(0xff);
_delay_ms(100);
Write_allLED(0);
}
void  Write_allLED(unsigned char DATA){
unsigned char i;
Write_COM(0x8F);//顯示控制
Write_COM(0x40); //數(shù)據(jù)命令
STB_low;
TM1638_Write(0xc0);
for(i=0;i<16;i++)
    TM1638_Write(DATA);
STB_high;
}
//---------------------------------------------------------------------------TM1638.h------------------------------------------------------------------------------
#ifndef _TM1638_H
#define _TM1638_H
#include "msp430f6638.h"
#include <stdint.h>
#define CPU_F ((double)20000000)
#define _delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define _delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define DIO_high (P3OUT |= BIT5)
#define DIO_low  (P3OUT &= ~BIT5)
#define CLK_high (P3OUT |= BIT4)
#define CLK_low  (P3OUT &= ~BIT4)
#define STB_high (P3OUT |= BIT2)
#define STB_low  (P3OUT &= ~BIT2)
#define DIO_IN   (P3DIR &= ~BIT5) //輸入狀態(tài)
#define DIO_OUT   (P3DIR |= BIT5)  //輸出狀態(tài)
#define DIO_READ  (P3IN & BIT5)   //讀引腳電平

void TM1638_Write(unsigned char DATA);   //寫數(shù)據(jù)函數(shù)
unsigned char TM1638_Read(void);         //讀數(shù)據(jù)函數(shù)
void Write_COM(unsigned char cmd);       //發(fā)送命令字
unsigned char Read_key(void);
void Write_DATA(unsigned char add,unsigned char DATA);  //指定地址寫入數(shù)據(jù)
void Write_allLED(unsigned char flag);     //控制全部LED函數(shù),flag表示LED狀態(tài)
void init_TM1638(void);
#endif


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:585335 發(fā)表于 2019-7-16 20:01 | 只看該作者
好像不行啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:585335 發(fā)表于 2019-7-16 20:01 | 只看該作者
按鍵有問題
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人在线网 | 欧美亚洲免费 | 久久精品国产精品青草 | 亚洲福利视频一区二区 | 久久久久国产一区二区三区 | 乳色吐息在线观看 | 91精品一区二区三区久久久久 | 黄色一级毛片 | 99热.com | 午夜免费福利片 | 久久久久国产一区二区三区四区 | 天色综合网 | 精品久久久久久国产 | 国产免费一区二区 | 日本欧美黄色片 | 亚洲欧美综合精品另类天天更新 | 999久久久| 日韩黄色免费 | 欧美日韩最新 | 国产乱码久久久 | 美女国内精品自产拍在线播放 | 99精品视频在线 | 一区二区福利视频 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | h视频免费在线观看 | 亚洲视频二区 | 欧美日韩一区在线观看 | 午夜影院黄 | 一区观看| 亚洲精品自拍 | 亚洲精品一区二区三区在线 | 激情三区 | 亚洲狠狠丁香婷婷综合久久久 | 国产精品久久久久免费 | 超碰97免费在线 | 淫片专区| 国产欧美精品一区二区 | 日操夜操 | 色偷偷噜噜噜亚洲男人 | 国产精品久久久亚洲 | 欧美精品在欧美一区二区少妇 |