Jack Hansdampf
/
SPI_LED_and_KEY
main.cpp
- Committer:
- jack1930
- Date:
- 2020-11-09
- Revision:
- 0:9e70ed92f917
File content as of revision 0:9e70ed92f917:
/* mbed Microcontroller Library * Copyright (c) 2019 ARM Limited * SPDX-License-Identifier: Apache-2.0 */ #include "mbed.h" #include "platform/mbed_thread.h" // Blinking rate in milliseconds #define BLINKING_RATE_MS 1 #define Set_data_command 0b00100010 #define Display_ON 0b11110001 #define read_buttons 0b01000010 #define Dig0 0b00000011 int seg7[10]={0b11111100,0b01100000,0b11011010, 0b11110010,0b01100110,0b10110110, 0b10111110,0b11100000,0b11111110, 0b11110110}; int Dig[8]={ 0b00000011, 0b01000011, 0b00100011, 0b01100011, 0b00010011, 0b01010011, 0b00110011, 0b01110011}; int LED[8]={ 0b10000011, 0b11000011, 0b10100011, 0b11100011, 0b10010011, 0b11010011, 0b10110011, 0b11110011}; DigitalOut STB(PB_12); PortOut tastenanzeige(PortC,0xFF); SPI anzeige(PB_15,PB_14,PB_13); void anzeigen(int Nr, int Ziffer) { STB=0; anzeige.write(Set_data_command); STB=1; STB=0; anzeige.write(Dig[Nr]); anzeige.write(seg7[Ziffer]); STB=1; } void ledschalten(int Nr, bool ein) { STB=0; anzeige.write(Set_data_command); STB=1; STB=0; anzeige.write(LED[Nr]); if (ein==true) anzeige.write(0x80); else anzeige.write(0); STB=1; } int main() { int b0, b1, b2, b3; DigitalInOut MOSI(PB_15); MOSI.mode(OpenDrain); STB=1; DigitalOut led(LED1); anzeige.format(8,3); anzeige.frequency(100000); STB=0; anzeige.write(Display_ON); STB=1; while (true) { led = !led; //thread_sleep_for(BLINKING_RATE_MS); for (int i=0;i<8;i++) { anzeigen(i,i); ledschalten(i,(i%2==0)); } STB=0; anzeige.write(read_buttons); thread_sleep_for(BLINKING_RATE_MS); b0=anzeige.write(0xFF); b1=anzeige.write(0xFF); b2=anzeige.write(0xFF); b3=anzeige.write(0xFF); tastenanzeige=b0+(b1>>1)+(b2>>2)+(b3>>3); //tastenanzeige=anzeige.write(0xFF)+(anzeige.write(0xFF)>>1)+(anzeige.write(0xFF)>>2)+(anzeige.write(0xFF)>>3); STB=1; } }