|
源の代碼:
#include "TM1638.h"
#include "msp430f6638.h"
#include "stdint.h"
#include "math.h"
#include "string.h"
uint8_t num[8]; [ i]//各個數碼管顯示的值
uint8_t led_flag[8];
const uint8_t tab[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x00};
void init_port(void)
{
P3DIR |= BIT5;
P3DIR |= BIT4 + BIT2;
P1DIR |= BIT0; [ i]// ACLK set out to pins
P1SEL |= BIT0;
}
const uint8_t tab2[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
void TM1638_Write(unsigned char DATA) { [ i]//寫數據函數{
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) { [ i]//讀數據函數
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) { [ i]//發送命令字
CLK_high;
STB_high;
STB_low;
TM1638_Write(cmd);
STB_high;
}
void Write_DATA(unsigned char add,unsigned char DATA) { [ i]//指定地址寫入數據
Write_COM(0x44);
STB_low;
TM1638_Write(0xc0|add);
TM1638_Write(DATA);
STB_high;
}
void init_TM1638(void) {
unsigned char count = 0;
unsigned char times = 1;
while(times--) {
Write_allLED(tab2[count]);
count++;
if(count == 16)
count = 0;
_delay_ms(100);
}
Write_allLED(0xff);
_delay_ms(100);
Write_allLED(0);
}
void Write_allLED(unsigned char DATA) {
unsigned char i;
Write_COM(0x8F);[ i]//顯示控制
Write_COM(0x40); [ i]//數據命令
STB_low;
TM1638_Write(0xc0);
for(i=0;i<16;i++)
TM1638_Write(DATA);
STB_high;
}
int main(void) {
WDTCTL = WDTPW + WDTHOLD;
init_port();
init_TM1638();
char s[10] = {'F', 'F', 'F', 'F'};
int t = strlen(s);
long sum = 0;
for(int i = 0; i < t; i++) {
if(s >= 'A' && s <= 'Z')[ i]
s = (s - 'A') + 10 + '0';
sum += ((s-'0')*(pow(16,t-1-i)));
}
char b[10];
int index = 0;
while(sum/10>1){
b[index] = sum%10;
index ++;
sum = sum/10;
}
b[index] = sum%10;
index ++;
sum = sum/10;
while(index<10){
b[index] = 15;
index++;
}
while(1) {
Write_DATA(4*2,tab[b[7]]);
Write_DATA(5*2,tab[b[6]]);
Write_DATA(6*2,tab[b[5]]);
Write_DATA(7*2,tab[b[4]]);
Write_DATA(0*2,tab[b[3]]);
Write_DATA(1*2,tab[b[2]]);
Write_DATA(2*2,tab[b[1]]);
Write_DATA(3*2,tab[b[0]]);
}
}
結果顯示為:00065535
|
-
-
sy2-2.zip
2018-11-30 22:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
1.98 KB, 下載次數: 7, 下載積分: 黑幣 -5
評分
-
查看全部評分
|