久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
TM1638資料(.c文件和頭文件)
[打印本頁]
作者:
Amanda1m
時間:
2017-9-21 21:25
標題:
TM1638資料(.c文件和頭文件)
//-------------------------------------------------------------------------------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) //寫數據函數
{
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) //讀數據函數
{
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) //發送命令字
{
CLK_high;
STB_high;
STB_low;
TM1638_Write(cmd);
STB_high;
}
/*!
*函數功能:讀取按鍵值
*輸入參數:無
*輸出參數:無
*返回值: 無
*/
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) //指定地址寫入數據
{
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); //數據命令
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) //輸入狀態
#define DIO_OUT (P3DIR |= BIT5) //輸出狀態
#define DIO_READ (P3IN & BIT5) //讀引腳電平
void TM1638_Write(unsigned char DATA); //寫數據函數
unsigned char TM1638_Read(void); //讀數據函數
void Write_COM(unsigned char cmd); //發送命令字
unsigned char Read_key(void);
void Write_DATA(unsigned char add,unsigned char DATA); //指定地址寫入數據
void Write_allLED(unsigned char flag); //控制全部LED函數,flag表示LED狀態
void init_TM1638(void);
#endif
作者:
菜就一個字
時間:
2019-7-16 20:01
好像不行啊
作者:
菜就一個字
時間:
2019-7-16 20:01
按鍵有問題
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
性生生活大片免费看视频
|
日本成人午夜影院
|
91精品国产色综合久久不卡蜜臀
|
国产精品久久久久婷婷二区次
|
毛片黄片免费看
|
欧美电影免费网站
|
亚洲大片在线观看
|
国产日韩欧美一区
|
亚洲精品国产电影
|
久久国产精品久久国产精品
|
色综合美女
|
亚洲男人天堂av
|
午夜在线电影网
|
夜夜爆操
|
国产中文视频
|
欧美伊人
|
亚洲综合一区二区三区
|
久草在线视频中文
|
亚洲免费精品一区
|
午夜私人影院在线观看
|
久久爆操
|
人人人人干
|
天堂久久一区
|
中文字幕在线观看视频一区
|
国产午夜精品一区二区
|
91最新入口
|
天天拍天天草
|
国产欧美精品一区二区色综合朱莉
|
亚洲视频免费
|
鲁一鲁资源影视
|
午夜视频在线
|
成人精品国产
|
久久精品一区二区
|
欧美日韩久久久久
|
亚洲三级av
|
蜜桃精品噜噜噜成人av
|
久久成人一区
|
紧缚调教一区二区三区视频
|
国产欧美在线观看
|
亚洲高清视频一区二区
|
国产中文视频
|