Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define uchar unsigned char
- #define uint unsigned int
- const int latchPin = 5, clockPin = 6, dataPin = 3, OE_595 = 4;
- uchar TUBE_SEG[] = {
- 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, // 0-9
- 0x77, 0x7c, 0x39, 0x58, 0x5e, 0x79, 0x71, 0x76, 0x74, 0x38, // A, b, C, c, d, E, F, H, h, L
- 0x54, 0x37, 0x5c, 0x73, 0x50, 0x78, 0x3e, 0x40, 0x00 // n, N, o, P, r, t, U, -, (spasi)
- };
- uchar TUBE_NUM[8] = {0xfe, 0xff, 0xfd, 0xff, 0xfb, 0xff, 0xf7, 0xff};
- uchar dat_buf[8], dat, com_num;
- void TubeDisplayOneBit() {
- uchar tube_dat = TUBE_SEG[dat], bit_num = TUBE_NUM[com_num];
- digitalWrite(latchPin, LOW);
- shiftOut(dataPin, clockPin, MSBFIRST, bit_num);
- shiftOut(dataPin, clockPin, MSBFIRST, tube_dat);
- digitalWrite(latchPin, HIGH);
- }
- void TubeDisplay4Bit(int num) {
- if (com_num < 7) com_num++;
- else com_num = 0;
- dat = dat_buf[com_num];
- TubeDisplayOneBit();
- dat_buf[6] = num % 10;
- num /= 10;
- dat_buf[4] = num % 10;
- num /= 10;
- dat_buf[2] = num % 10;
- num /= 10;
- dat_buf[0] = num % 10;
- }
- void setup() {
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- pinMode(OE_595, OUTPUT);
- delay(100);
- digitalWrite(OE_595, LOW);
- }
- void loop() {
- TubeDisplay4Bit(6543);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement