mirror of
https://github.com/caperren/school_archives.git
synced 2025-11-09 21:51:15 +00:00
Added old LED Dot Matrix Project
This commit is contained in:
@@ -0,0 +1,335 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Wunderboard Makefile Template written by Dan Albert
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# make all = Make software.
|
||||
#
|
||||
# make clean = Clean out built project files.
|
||||
#
|
||||
# make filename.s = Just compile filename.c into the assembler code only.
|
||||
#
|
||||
# To rebuild project do "make clean" then "make all".
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# Target file name.
|
||||
TARGET = main
|
||||
|
||||
# List C source files here.
|
||||
SRC = $(TARGET).c \
|
||||
|
||||
# MCU name, you MUST set this to match the board you are using
|
||||
# type "make clean" after changing this, so all files will be rebuilt
|
||||
MCU = at90usb646
|
||||
|
||||
# Detect platform
|
||||
UNAME = $(shell uname)
|
||||
|
||||
ifeq ($(UNAME),Linux)
|
||||
ENV=unix
|
||||
endif
|
||||
|
||||
ifeq ($(UNAME),Darwin)
|
||||
ENV=unix
|
||||
endif
|
||||
|
||||
ifndef ENV
|
||||
ENV=windows
|
||||
endif
|
||||
|
||||
ifeq ($(ENV),unix)
|
||||
PROGRAM = dfu-programmer
|
||||
PROGRAMFLAGS = $(MCU)
|
||||
ERASE = erase
|
||||
FLASH = flash "$(TARGET).hex"
|
||||
START = start
|
||||
else
|
||||
PROGRAM = "C:/Program Files (x86)/Atmel/Flip 3.4.1/bin/batchisp.exe"
|
||||
PROGRAMFLAGS = -device at90usb646 -hardware USB
|
||||
ERASE = -operation erase F
|
||||
FLASH = -operation loadbuffer "$(TARGET).hex" program verify
|
||||
START = -operation start noreset 0
|
||||
endif
|
||||
|
||||
# Processor frequency.
|
||||
# Normally the first thing your program should do is set the clock prescaler,
|
||||
# so your program will run at the correct speed. You should also set this
|
||||
# variable to same clock speed. The _delay_ms() macro uses this, and many
|
||||
# examples use this variable to calculate timings. Do not add a "UL" here.
|
||||
F_CPU = 8000000
|
||||
|
||||
# Output format. (can be srec, ihex, binary)
|
||||
FORMAT = ihex
|
||||
|
||||
# Object files directory
|
||||
# To put object files in current directory, use a dot (.), do NOT make
|
||||
# this an empty or blank macro!
|
||||
OBJDIR = obj
|
||||
|
||||
# Optimization level, can be [0, 1, 2, 3, s].
|
||||
# 0 = turn off optimization. s = optimize for size.
|
||||
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
||||
OPT = s
|
||||
|
||||
# List any extra directories to look for include files here.
|
||||
# Each directory must be seperated by a space.
|
||||
# Use forward slashes for directory separators.
|
||||
# For a directory that has spaces, enclose it in quotes.
|
||||
EXTRAINCDIRS =
|
||||
|
||||
# Compiler flag to set the C Standard level.
|
||||
# c89 = "ANSI" C
|
||||
# gnu89 = c89 plus GCC extensions
|
||||
# c99 = ISO C99 standard (not yet fully implemented)
|
||||
# gnu99 = c99 plus GCC extensions
|
||||
CSTANDARD = -std=gnu99
|
||||
|
||||
# Place -D or -U options here for C sources
|
||||
CDEFS = -DF_CPU=$(F_CPU)UL
|
||||
|
||||
#---------------- Compiler Options C ----------------
|
||||
# -g*: generate debugging information
|
||||
# -O*: optimization level
|
||||
# -f...: tuning, see GCC manual and avr-libc documentation
|
||||
# -Wall...: warning level
|
||||
# -Wa,...: tell GCC to pass this to the assembler.
|
||||
# -adhlns...: create assembler listing
|
||||
CFLAGS += $(CDEFS)
|
||||
CFLAGS += -O$(OPT)
|
||||
CFLAGS += -funsigned-char
|
||||
CFLAGS += -funsigned-bitfields
|
||||
CFLAGS += -ffunction-sections
|
||||
CFLAGS += -fpack-struct
|
||||
CFLAGS += -fshort-enums
|
||||
CFLAGS += -Wall
|
||||
CFLAGS += -Wstrict-prototypes
|
||||
#CFLAGS += -mshort-calls
|
||||
#CFLAGS += -fno-unit-at-a-time
|
||||
#CFLAGS += -Wundef
|
||||
#CFLAGS += -Wunreachable-code
|
||||
#CFLAGS += -Wsign-compare
|
||||
CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
|
||||
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
||||
CFLAGS += $(CSTANDARD)
|
||||
|
||||
#---------------- Library Options ----------------
|
||||
# Minimalistic printf version
|
||||
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
|
||||
|
||||
# Floating point printf version (requires MATH_LIB = -lm below)
|
||||
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
|
||||
|
||||
# If this is left blank, then it will use the Standard printf version.
|
||||
PRINTF_LIB =
|
||||
#PRINTF_LIB = $(PRINTF_LIB_MIN)
|
||||
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
|
||||
|
||||
# Minimalistic scanf version
|
||||
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
|
||||
|
||||
# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
|
||||
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
|
||||
|
||||
# If this is left blank, then it will use the Standard scanf version.
|
||||
SCANF_LIB =
|
||||
#SCANF_LIB = $(SCANF_LIB_MIN)
|
||||
#SCANF_LIB = $(SCANF_LIB_FLOAT)
|
||||
|
||||
MATH_LIB = -lm
|
||||
|
||||
# List any extra directories to look for libraries here.
|
||||
# Each directory must be seperated by a space.
|
||||
# Use forward slashes for directory separators.
|
||||
# For a directory that has spaces, enclose it in quotes.
|
||||
EXTRALIBDIRS =
|
||||
|
||||
#---------------- Linker Options ----------------
|
||||
# -Wl,...: tell GCC to pass this to linker.
|
||||
# -Map: create map file
|
||||
# --cref: add cross reference to map file
|
||||
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
|
||||
LDFLAGS += -Wl,--relax
|
||||
LDFLAGS += -Wl,--gc-sections
|
||||
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
|
||||
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
|
||||
#LDFLAGS += -T linker_script.x
|
||||
|
||||
|
||||
#============================================================================
|
||||
|
||||
# Define programs and commands.
|
||||
SHELL = sh
|
||||
CC = avr-gcc
|
||||
OBJCOPY = avr-objcopy
|
||||
OBJDUMP = avr-objdump
|
||||
SIZE = avr-size
|
||||
AR = avr-ar rcs
|
||||
NM = avr-nm
|
||||
REMOVE = rm -f
|
||||
REMOVEDIR = rm -rf
|
||||
COPY = cp
|
||||
WINSHELL = cmd
|
||||
|
||||
|
||||
# Define Messages
|
||||
# English
|
||||
MSG_ERRORS_NONE = Errors: none
|
||||
MSG_BEGIN = -------- begin --------
|
||||
MSG_END = -------- end --------
|
||||
MSG_SIZE_BEFORE = Size before:
|
||||
MSG_SIZE_AFTER = Size after:
|
||||
MSG_FLASH = Creating load file for Flash:
|
||||
MSG_EEPROM = Creating load file for EEPROM:
|
||||
MSG_EXTENDED_LISTING = Creating Extended Listing:
|
||||
MSG_SYMBOL_TABLE = Creating Symbol Table:
|
||||
MSG_LINKING = Linking:
|
||||
MSG_COMPILING = Compiling C:
|
||||
MSG_ASSEMBLING = Assembling:
|
||||
MSG_CLEANING = Cleaning project:
|
||||
MSG_CREATING_LIBRARY = Creating library:
|
||||
|
||||
# Define all object files.
|
||||
OBJ = $(SRC:%.c=$(OBJDIR)/%.o)
|
||||
|
||||
# Define all listing files.
|
||||
LST = $(SRC:%.c=$(OBJDIR)/%.lst)
|
||||
|
||||
# Compiler flags to generate dependency files.
|
||||
GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
|
||||
|
||||
# Combine all necessary flags and optional flags.
|
||||
# Add target processor to flags.
|
||||
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
|
||||
|
||||
# Default target.
|
||||
all: begin gccversion sizebefore build sizeafter end
|
||||
|
||||
# Change the build target to build a HEX file or a library.
|
||||
build: elf hex eep lss sym
|
||||
#build: lib
|
||||
|
||||
elf: $(TARGET).elf
|
||||
hex: $(TARGET).hex
|
||||
eep: $(TARGET).eep
|
||||
lss: $(TARGET).lss
|
||||
sym: $(TARGET).sym
|
||||
LIBNAME=lib$(TARGET).a
|
||||
lib: $(LIBNAME)
|
||||
|
||||
# Eye candy.
|
||||
# AVR Studio 3.x does not check make's exit code but relies on
|
||||
# the following magic strings to be generated by the compile job.
|
||||
begin:
|
||||
@echo
|
||||
@echo $(MSG_BEGIN)
|
||||
|
||||
end:
|
||||
@echo $(MSG_END)
|
||||
@echo
|
||||
|
||||
# Display size of file.
|
||||
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
||||
ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf
|
||||
|
||||
sizebefore:
|
||||
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
|
||||
2>/dev/null; echo; fi
|
||||
|
||||
sizeafter:
|
||||
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
|
||||
2>/dev/null; echo; fi
|
||||
|
||||
# Display compiler version information.
|
||||
gccversion :
|
||||
@$(CC) --version
|
||||
|
||||
# Create final output files (.hex, .eep) from ELF output file.
|
||||
%.hex: %.elf
|
||||
@echo
|
||||
@echo $(MSG_FLASH) $@
|
||||
$(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature $< $@
|
||||
|
||||
%.eep: %.elf
|
||||
@echo
|
||||
@echo $(MSG_EEPROM) $@
|
||||
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
|
||||
--change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
|
||||
|
||||
# Create extended listing file from ELF output file.
|
||||
%.lss: %.elf
|
||||
@echo
|
||||
@echo $(MSG_EXTENDED_LISTING) $@
|
||||
$(OBJDUMP) -h -S -z $< > $@
|
||||
|
||||
# Create a symbol table from ELF output file.
|
||||
%.sym: %.elf
|
||||
@echo
|
||||
@echo $(MSG_SYMBOL_TABLE) $@
|
||||
$(NM) -n $< > $@
|
||||
|
||||
|
||||
# Create library from object files.
|
||||
.SECONDARY : $(TARGET).a
|
||||
.PRECIOUS : $(OBJ)
|
||||
%.a: $(OBJ)
|
||||
@echo
|
||||
@echo $(MSG_CREATING_LIBRARY) $@
|
||||
$(AR) $@ $(OBJ)
|
||||
|
||||
|
||||
# Link: create ELF output file from object files.
|
||||
.SECONDARY : $(TARGET).elf
|
||||
.PRECIOUS : $(OBJ)
|
||||
%.elf: $(OBJ)
|
||||
@echo
|
||||
@echo $(MSG_LINKING) $@
|
||||
$(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
|
||||
|
||||
# Compile: create object files from C source files.
|
||||
$(OBJDIR)/%.o : %.c
|
||||
@echo
|
||||
@echo $(MSG_COMPILING) $<
|
||||
$(CC) -c $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
# Compile: create assembler files from C source files.
|
||||
%.s : %.c
|
||||
$(CC) -S $(ALL_CFLAGS) $< -o $@
|
||||
|
||||
## Program
|
||||
.PHONY: program
|
||||
program: all
|
||||
$(PROGRAM) $(PROGRAMFLAGS) $(ERASE)
|
||||
$(PROGRAM) $(PROGRAMFLAGS) $(FLASH)
|
||||
$(PROGRAM) $(PROGRAMFLAGS) $(START)
|
||||
|
||||
doxygen:
|
||||
doxygen
|
||||
|
||||
# Target: clean project.
|
||||
clean: begin clean_list end
|
||||
|
||||
clean_list :
|
||||
@echo
|
||||
@echo $(MSG_CLEANING)
|
||||
$(REMOVE) $(TARGET).hex
|
||||
$(REMOVE) $(TARGET).eep
|
||||
$(REMOVE) $(TARGET).elf
|
||||
$(REMOVE) $(TARGET).map
|
||||
$(REMOVE) $(TARGET).sym
|
||||
$(REMOVE) $(TARGET).lss
|
||||
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)
|
||||
$(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)
|
||||
$(REMOVE) $(SRC:.c=.s)
|
||||
$(REMOVE) $(SRC:.c=.d)
|
||||
$(REMOVEDIR) .dep
|
||||
$(REMOVEDIR) $(OBJDIR)
|
||||
|
||||
# Create object files directory
|
||||
$(shell mkdir $(OBJDIR) 2>/dev/null)
|
||||
|
||||
# Include the dependency files.
|
||||
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
|
||||
|
||||
# Listing of phony targets.
|
||||
.PHONY : all begin finish end sizebefore sizeafter gccversion \
|
||||
build elf hex eep lss sym \
|
||||
clean clean_list
|
||||
@@ -0,0 +1,2 @@
|
||||
[.ShellClassInfo]
|
||||
IconResource=C:\Users\corwinperren\AppData\Roaming\Insync\App\res\shared-folder-vista-7.ico,0
|
||||
@@ -0,0 +1,601 @@
|
||||
//Start the letter definition and put it in the FLASH memory
|
||||
|
||||
//Spc 20
|
||||
char CH200[] PROGMEM = "11111111";
|
||||
char CH201[] PROGMEM = "11111111";
|
||||
char CH202[] PROGMEM = "11111111";
|
||||
char CH203[] PROGMEM = "11111111";
|
||||
char CH204[] PROGMEM = "11111111";
|
||||
char CH205[] PROGMEM = "11111111";
|
||||
char CH206[] PROGMEM = "11111111";
|
||||
char CH207[] PROGMEM = "11111111";
|
||||
//! 21
|
||||
char CH210[] PROGMEM = "11110111";
|
||||
char CH211[] PROGMEM = "11100011";
|
||||
char CH212[] PROGMEM = "11100011";
|
||||
char CH213[] PROGMEM = "11100011";
|
||||
char CH214[] PROGMEM = "11110111";
|
||||
char CH215[] PROGMEM = "11111111";
|
||||
char CH216[] PROGMEM = "11110111";
|
||||
char CH217[] PROGMEM = "11111111";
|
||||
//qt 22
|
||||
char CH220[] PROGMEM = "11001100";
|
||||
char CH221[] PROGMEM = "11001100";
|
||||
char CH222[] PROGMEM = "11001100";
|
||||
char CH223[] PROGMEM = "11001100";
|
||||
char CH224[] PROGMEM = "11111111";
|
||||
char CH225[] PROGMEM = "11111111";
|
||||
char CH226[] PROGMEM = "11111111";
|
||||
char CH227[] PROGMEM = "11111111";
|
||||
//# 23
|
||||
char CH230[] PROGMEM = "11101101";
|
||||
char CH231[] PROGMEM = "11101101";
|
||||
char CH232[] PROGMEM = "11000000";
|
||||
char CH233[] PROGMEM = "11101101";
|
||||
char CH234[] PROGMEM = "11000000";
|
||||
char CH235[] PROGMEM = "11101101";
|
||||
char CH236[] PROGMEM = "11101101";
|
||||
char CH237[] PROGMEM = "11111111";
|
||||
//$ 24
|
||||
char CH240[] PROGMEM = "11110111";
|
||||
char CH241[] PROGMEM = "11000001";
|
||||
char CH242[] PROGMEM = "10110111";
|
||||
char CH243[] PROGMEM = "11000001";
|
||||
char CH244[] PROGMEM = "11110110";
|
||||
char CH245[] PROGMEM = "11000001";
|
||||
char CH246[] PROGMEM = "11110111";
|
||||
char CH247[] PROGMEM = "11111111";
|
||||
//% 25
|
||||
char CH250[] PROGMEM = "11011110";
|
||||
char CH251[] PROGMEM = "10101101";
|
||||
char CH252[] PROGMEM = "11011011";
|
||||
char CH253[] PROGMEM = "11110111";
|
||||
char CH254[] PROGMEM = "11101101";
|
||||
char CH255[] PROGMEM = "11011010";
|
||||
char CH256[] PROGMEM = "10111101";
|
||||
char CH257[] PROGMEM = "11111111";
|
||||
//& 26
|
||||
char CH260[] PROGMEM = "11100111";
|
||||
char CH261[] PROGMEM = "11011011";
|
||||
char CH262[] PROGMEM = "11010111";
|
||||
char CH263[] PROGMEM = "11101111";
|
||||
char CH264[] PROGMEM = "11010110";
|
||||
char CH265[] PROGMEM = "11011001";
|
||||
char CH266[] PROGMEM = "11100010";
|
||||
char CH267[] PROGMEM = "11111111";
|
||||
//' 27
|
||||
char CH270[] PROGMEM = "11111100";
|
||||
char CH271[] PROGMEM = "11111001";
|
||||
char CH272[] PROGMEM = "11110011";
|
||||
char CH273[] PROGMEM = "11100111";
|
||||
char CH274[] PROGMEM = "11001111";
|
||||
char CH275[] PROGMEM = "11111111";
|
||||
char CH276[] PROGMEM = "11111111";
|
||||
char CH277[] PROGMEM = "11111111";
|
||||
//( 28
|
||||
char CH280[] PROGMEM = "11100111";
|
||||
char CH281[] PROGMEM = "11011111";
|
||||
char CH282[] PROGMEM = "10111111";
|
||||
char CH283[] PROGMEM = "10111111";
|
||||
char CH284[] PROGMEM = "10111111";
|
||||
char CH285[] PROGMEM = "11011111";
|
||||
char CH286[] PROGMEM = "11100111";
|
||||
char CH287[] PROGMEM = "11111111";
|
||||
//) 29
|
||||
char CH290[] PROGMEM = "11110011";
|
||||
char CH291[] PROGMEM = "11111101";
|
||||
char CH292[] PROGMEM = "11111110";
|
||||
char CH293[] PROGMEM = "11111110";
|
||||
char CH294[] PROGMEM = "11111110";
|
||||
char CH295[] PROGMEM = "11111101";
|
||||
char CH296[] PROGMEM = "11110011";
|
||||
char CH297[] PROGMEM = "11111111";
|
||||
//* 2A
|
||||
char CH2A0[] PROGMEM = "10111110";
|
||||
char CH2A1[] PROGMEM = "11011101";
|
||||
char CH2A2[] PROGMEM = "11101011";
|
||||
char CH2A3[] PROGMEM = "10000000";
|
||||
char CH2A4[] PROGMEM = "11101011";
|
||||
char CH2A5[] PROGMEM = "11011101";
|
||||
char CH2A6[] PROGMEM = "10111110";
|
||||
char CH2A7[] PROGMEM = "11111111";
|
||||
//+ 2B
|
||||
char CH2B0[] PROGMEM = "11110111";
|
||||
char CH2B1[] PROGMEM = "11110111";
|
||||
char CH2B2[] PROGMEM = "11110111";
|
||||
char CH2B3[] PROGMEM = "10000000";
|
||||
char CH2B4[] PROGMEM = "11110111";
|
||||
char CH2B5[] PROGMEM = "11110111";
|
||||
char CH2B6[] PROGMEM = "11110111";
|
||||
char CH2B7[] PROGMEM = "11111111";
|
||||
//, 2C
|
||||
char CH2C0[] PROGMEM = "11111111";
|
||||
char CH2C1[] PROGMEM = "11111111";
|
||||
char CH2C2[] PROGMEM = "11111111";
|
||||
char CH2C3[] PROGMEM = "11100111";
|
||||
char CH2C4[] PROGMEM = "11000111";
|
||||
char CH2C5[] PROGMEM = "11000111";
|
||||
char CH2C6[] PROGMEM = "11011111";
|
||||
char CH2C7[] PROGMEM = "11111111";
|
||||
// 2D
|
||||
char CH2D0[] PROGMEM = "11111111";
|
||||
char CH2D1[] PROGMEM = "11111111";
|
||||
char CH2D2[] PROGMEM = "11111111";
|
||||
char CH2D3[] PROGMEM = "11000000";
|
||||
char CH2D4[] PROGMEM = "11000000";
|
||||
char CH2D5[] PROGMEM = "11111111";
|
||||
char CH2D6[] PROGMEM = "11111111";
|
||||
char CH2D7[] PROGMEM = "11111111";
|
||||
//. 2E
|
||||
char CH2E0[] PROGMEM = "11111111";
|
||||
char CH2E1[] PROGMEM = "11111111";
|
||||
char CH2E2[] PROGMEM = "11111111";
|
||||
char CH2E3[] PROGMEM = "11100011";
|
||||
char CH2E4[] PROGMEM = "11000001";
|
||||
char CH2E5[] PROGMEM = "11000001";
|
||||
char CH2E6[] PROGMEM = "11100011";
|
||||
char CH2E7[] PROGMEM = "11111111";
|
||||
/// 2F
|
||||
char CH2F0[] PROGMEM = "11111110";
|
||||
char CH2F1[] PROGMEM = "11111100";
|
||||
char CH2F2[] PROGMEM = "11111001";
|
||||
char CH2F3[] PROGMEM = "11110011";
|
||||
char CH2F4[] PROGMEM = "11100111";
|
||||
char CH2F5[] PROGMEM = "11001111";
|
||||
char CH2F6[] PROGMEM = "11011111";
|
||||
char CH2F7[] PROGMEM = "11111111";
|
||||
//0 30
|
||||
char CH300[] PROGMEM = "11100011";
|
||||
char CH301[] PROGMEM = "11011101";
|
||||
char CH302[] PROGMEM = "10111010";
|
||||
char CH303[] PROGMEM = "10110110";
|
||||
char CH304[] PROGMEM = "10101110";
|
||||
char CH305[] PROGMEM = "11011101";
|
||||
char CH306[] PROGMEM = "11100011";
|
||||
char CH307[] PROGMEM = "11111111";
|
||||
//1 31
|
||||
char CH310[] PROGMEM = "11110111";
|
||||
char CH311[] PROGMEM = "11100111";
|
||||
char CH312[] PROGMEM = "11010111";
|
||||
char CH313[] PROGMEM = "11110111";
|
||||
char CH314[] PROGMEM = "11110111";
|
||||
char CH315[] PROGMEM = "11110111";
|
||||
char CH316[] PROGMEM = "11000001";
|
||||
char CH317[] PROGMEM = "11111111";
|
||||
//2 32
|
||||
char CH320[] PROGMEM = "11100011";
|
||||
char CH321[] PROGMEM = "11011101";
|
||||
char CH322[] PROGMEM = "11111101";
|
||||
char CH323[] PROGMEM = "11111011";
|
||||
char CH324[] PROGMEM = "11110111";
|
||||
char CH325[] PROGMEM = "11101111";
|
||||
char CH326[] PROGMEM = "11000000";
|
||||
char CH327[] PROGMEM = "11111111";
|
||||
//3 33
|
||||
char CH330[] PROGMEM = "11000001";
|
||||
char CH331[] PROGMEM = "10111110";
|
||||
char CH332[] PROGMEM = "11111110";
|
||||
char CH333[] PROGMEM = "11110001";
|
||||
char CH334[] PROGMEM = "11111110";
|
||||
char CH335[] PROGMEM = "10111110";
|
||||
char CH336[] PROGMEM = "11000001";
|
||||
char CH337[] PROGMEM = "11111111";
|
||||
//4 34
|
||||
char CH340[] PROGMEM = "11110011";
|
||||
char CH341[] PROGMEM = "11101011";
|
||||
char CH342[] PROGMEM = "11011011";
|
||||
char CH343[] PROGMEM = "10000000";
|
||||
char CH344[] PROGMEM = "11111011";
|
||||
char CH345[] PROGMEM = "11111011";
|
||||
char CH346[] PROGMEM = "11100001";
|
||||
char CH347[] PROGMEM = "11111111";
|
||||
//5 35
|
||||
char CH350[] PROGMEM = "10000000";
|
||||
char CH351[] PROGMEM = "10111111";
|
||||
char CH352[] PROGMEM = "10100001";
|
||||
char CH353[] PROGMEM = "10011110";
|
||||
char CH354[] PROGMEM = "11111110";
|
||||
char CH355[] PROGMEM = "10111110";
|
||||
char CH356[] PROGMEM = "11000001";
|
||||
char CH357[] PROGMEM = "11111111";
|
||||
//6 36
|
||||
char CH360[] PROGMEM = "11100001";
|
||||
char CH361[] PROGMEM = "11011110";
|
||||
char CH362[] PROGMEM = "10111111";
|
||||
char CH363[] PROGMEM = "10100001";
|
||||
char CH364[] PROGMEM = "10011110";
|
||||
char CH365[] PROGMEM = "10111110";
|
||||
char CH366[] PROGMEM = "11000001";
|
||||
char CH367[] PROGMEM = "11111111";
|
||||
//7 37
|
||||
char CH370[] PROGMEM = "10000000";
|
||||
char CH371[] PROGMEM = "10111110";
|
||||
char CH372[] PROGMEM = "11111101";
|
||||
char CH373[] PROGMEM = "11111011";
|
||||
char CH374[] PROGMEM = "11110111";
|
||||
char CH375[] PROGMEM = "11110111";
|
||||
char CH376[] PROGMEM = "11110111";
|
||||
char CH377[] PROGMEM = "11111111";
|
||||
//8 38
|
||||
char CH380[] PROGMEM = "11000001";
|
||||
char CH381[] PROGMEM = "10111110";
|
||||
char CH382[] PROGMEM = "10111110";
|
||||
char CH383[] PROGMEM = "11000001";
|
||||
char CH384[] PROGMEM = "10111110";
|
||||
char CH385[] PROGMEM = "10111110";
|
||||
char CH386[] PROGMEM = "11000001";
|
||||
char CH387[] PROGMEM = "11111111";
|
||||
//9 39
|
||||
char CH390[] PROGMEM = "11000001";
|
||||
char CH391[] PROGMEM = "10111110";
|
||||
char CH392[] PROGMEM = "10111110";
|
||||
char CH393[] PROGMEM = "11000000";
|
||||
char CH394[] PROGMEM = "11111110";
|
||||
char CH395[] PROGMEM = "10111101";
|
||||
char CH396[] PROGMEM = "11000011";
|
||||
char CH397[] PROGMEM = "11111111";
|
||||
//: 3A
|
||||
char CH3A0[] PROGMEM = "11100011";
|
||||
char CH3A1[] PROGMEM = "11000001";
|
||||
char CH3A2[] PROGMEM = "11100011";
|
||||
char CH3A3[] PROGMEM = "11111111";
|
||||
char CH3A4[] PROGMEM = "11100011";
|
||||
char CH3A5[] PROGMEM = "11000001";
|
||||
char CH3A6[] PROGMEM = "11100011";
|
||||
char CH3A7[] PROGMEM = "11111111";
|
||||
//; 3B
|
||||
char CH3B0[] PROGMEM = "11100011";
|
||||
char CH3B1[] PROGMEM = "11100011";
|
||||
char CH3B2[] PROGMEM = "11100011";
|
||||
char CH3B3[] PROGMEM = "11111111";
|
||||
char CH3B4[] PROGMEM = "11100011";
|
||||
char CH3B5[] PROGMEM = "11100011";
|
||||
char CH3B6[] PROGMEM = "11101111";
|
||||
char CH3B7[] PROGMEM = "11111111";
|
||||
//< 3C
|
||||
char CH3C0[] PROGMEM = "11110011";
|
||||
char CH3C1[] PROGMEM = "11100111";
|
||||
char CH3C2[] PROGMEM = "11001111";
|
||||
char CH3C3[] PROGMEM = "10011111";
|
||||
char CH3C4[] PROGMEM = "11001111";
|
||||
char CH3C5[] PROGMEM = "11100111";
|
||||
char CH3C6[] PROGMEM = "11110011";
|
||||
char CH3C7[] PROGMEM = "11111111";
|
||||
//= 3D
|
||||
char CH3D0[] PROGMEM = "11111111";
|
||||
char CH3D1[] PROGMEM = "10000000";
|
||||
char CH3D2[] PROGMEM = "10000000";
|
||||
char CH3D3[] PROGMEM = "11111111";
|
||||
char CH3D4[] PROGMEM = "10000000";
|
||||
char CH3D5[] PROGMEM = "10000000";
|
||||
char CH3D6[] PROGMEM = "11111111";
|
||||
char CH3D7[] PROGMEM = "11111111";
|
||||
//> 3E
|
||||
char CH3E0[] PROGMEM = "11100111";
|
||||
char CH3E1[] PROGMEM = "11110011";
|
||||
char CH3E2[] PROGMEM = "11111001";
|
||||
char CH3E3[] PROGMEM = "11111100";
|
||||
char CH3E4[] PROGMEM = "11111001";
|
||||
char CH3E5[] PROGMEM = "11110011";
|
||||
char CH3E6[] PROGMEM = "11100111";
|
||||
char CH3E7[] PROGMEM = "11111111";
|
||||
//? 3F
|
||||
char CH3F0[] PROGMEM = "11000001";
|
||||
char CH3F1[] PROGMEM = "10111110";
|
||||
char CH3F2[] PROGMEM = "11111001";
|
||||
char CH3F3[] PROGMEM = "11110111";
|
||||
char CH3F4[] PROGMEM = "11110111";
|
||||
char CH3F5[] PROGMEM = "11111111";
|
||||
char CH3F6[] PROGMEM = "11110111";
|
||||
char CH3F7[] PROGMEM = "11111111";
|
||||
//@ 40
|
||||
char CH400[] PROGMEM = "11100001";
|
||||
char CH401[] PROGMEM = "11011110";
|
||||
char CH402[] PROGMEM = "10110010";
|
||||
char CH403[] PROGMEM = "10101010";
|
||||
char CH404[] PROGMEM = "10100001";
|
||||
char CH405[] PROGMEM = "10111111";
|
||||
char CH406[] PROGMEM = "11000001";
|
||||
char CH407[] PROGMEM = "11111111";
|
||||
//A 07
|
||||
char CH070[] PROGMEM = "11110011";
|
||||
char CH071[] PROGMEM = "11101101";
|
||||
char CH072[] PROGMEM = "11011110";
|
||||
char CH073[] PROGMEM = "11000000";
|
||||
char CH074[] PROGMEM = "11011110";
|
||||
char CH075[] PROGMEM = "11011110";
|
||||
char CH076[] PROGMEM = "11011110";
|
||||
char CH077[] PROGMEM = "11111111";
|
||||
//B 815
|
||||
char CH8150[] PROGMEM = "11000001";
|
||||
char CH8151[] PROGMEM = "11011110";
|
||||
char CH8152[] PROGMEM = "11011110";
|
||||
char CH8153[] PROGMEM = "11000001";
|
||||
char CH8154[] PROGMEM = "11011110";
|
||||
char CH8155[] PROGMEM = "11011110";
|
||||
char CH8156[] PROGMEM = "11000001";
|
||||
char CH8157[] PROGMEM = "11111111";
|
||||
//C 1623
|
||||
char CH16230[] PROGMEM = "11100001";
|
||||
char CH16231[] PROGMEM = "11011110";
|
||||
char CH16232[] PROGMEM = "11011111";
|
||||
char CH16233[] PROGMEM = "11011111";
|
||||
char CH16234[] PROGMEM = "11011111";
|
||||
char CH16235[] PROGMEM = "11011110";
|
||||
char CH16236[] PROGMEM = "11100001";
|
||||
char CH16237[] PROGMEM = "11111111";
|
||||
//D 2431
|
||||
char CH24310[] PROGMEM = "11000001";
|
||||
char CH24311[] PROGMEM = "11011110";
|
||||
char CH24312[] PROGMEM = "11011110";
|
||||
char CH24313[] PROGMEM = "11011110";
|
||||
char CH24314[] PROGMEM = "11011110";
|
||||
char CH24315[] PROGMEM = "11011110";
|
||||
char CH24316[] PROGMEM = "11000001";
|
||||
char CH24317[] PROGMEM = "11111111";
|
||||
//E 3138
|
||||
char CH31380[] PROGMEM = "11000000";
|
||||
char CH31381[] PROGMEM = "11011111";
|
||||
char CH31382[] PROGMEM = "11011111";
|
||||
char CH31383[] PROGMEM = "11000011";
|
||||
char CH31384[] PROGMEM = "11011111";
|
||||
char CH31385[] PROGMEM = "11011111";
|
||||
char CH31386[] PROGMEM = "11000000";
|
||||
char CH31387[] PROGMEM = "11111111";
|
||||
//F 3946
|
||||
char CH39460[] PROGMEM = "11000000";
|
||||
char CH39461[] PROGMEM = "11011111";
|
||||
char CH39462[] PROGMEM = "11011111";
|
||||
char CH39463[] PROGMEM = "11000011";
|
||||
char CH39464[] PROGMEM = "11011111";
|
||||
char CH39465[] PROGMEM = "11011111";
|
||||
char CH39466[] PROGMEM = "11011111";
|
||||
char CH39467[] PROGMEM = "11111111";
|
||||
//G 4754
|
||||
char CH47540[] PROGMEM = "11100001";
|
||||
char CH47541[] PROGMEM = "11011110";
|
||||
char CH47542[] PROGMEM = "11011111";
|
||||
char CH47543[] PROGMEM = "11011000";
|
||||
char CH47544[] PROGMEM = "11011110";
|
||||
char CH47545[] PROGMEM = "11011110";
|
||||
char CH47546[] PROGMEM = "11100000";
|
||||
char CH47547[] PROGMEM = "11111111";
|
||||
//H 5562
|
||||
char CH55620[] PROGMEM = "11011110";
|
||||
char CH55621[] PROGMEM = "11011110";
|
||||
char CH55622[] PROGMEM = "11011110";
|
||||
char CH55623[] PROGMEM = "11000000";
|
||||
char CH55624[] PROGMEM = "11011110";
|
||||
char CH55625[] PROGMEM = "11011110";
|
||||
char CH55626[] PROGMEM = "11011110";
|
||||
char CH55627[] PROGMEM = "11111111";
|
||||
//I 5663
|
||||
char CH0[] PROGMEM = "11000000";
|
||||
char CH1[] PROGMEM = "11110011";
|
||||
char CH2[] PROGMEM = "11110011";
|
||||
char CH3[] PROGMEM = "11110011";
|
||||
char CH4[] PROGMEM = "11110011";
|
||||
char CH5[] PROGMEM = "11110011";
|
||||
char CH6[] PROGMEM = "11000000";
|
||||
char CH7[] PROGMEM = "11111111";
|
||||
//J 6471
|
||||
char CH64710[] PROGMEM = "11000000";
|
||||
char CH64711[] PROGMEM = "11111110";
|
||||
char CH64712[] PROGMEM = "11111110";
|
||||
char CH64713[] PROGMEM = "11111110";
|
||||
char CH64714[] PROGMEM = "11011110";
|
||||
char CH64715[] PROGMEM = "11011110";
|
||||
char CH64716[] PROGMEM = "11100001";
|
||||
char CH64717[] PROGMEM = "11111111";
|
||||
//K 7279
|
||||
char CH72790[] PROGMEM = "11011110";
|
||||
char CH72791[] PROGMEM = "11011101";
|
||||
char CH72792[] PROGMEM = "11011011";
|
||||
char CH72793[] PROGMEM = "11000111";
|
||||
char CH72794[] PROGMEM = "11011011";
|
||||
char CH72795[] PROGMEM = "11011101";
|
||||
char CH72796[] PROGMEM = "11011110";
|
||||
char CH72797[] PROGMEM = "11111111";
|
||||
//L 8087
|
||||
char CH80870[] PROGMEM = "11011111";
|
||||
char CH80871[] PROGMEM = "11011111";
|
||||
char CH80872[] PROGMEM = "11011111";
|
||||
char CH80873[] PROGMEM = "11011111";
|
||||
char CH80874[] PROGMEM = "11011111";
|
||||
char CH80875[] PROGMEM = "11011111";
|
||||
char CH80876[] PROGMEM = "11000000";
|
||||
char CH80877[] PROGMEM = "11111111";
|
||||
//M 8895
|
||||
char CH88950[] PROGMEM = "11011110";
|
||||
char CH88951[] PROGMEM = "11001100";
|
||||
char CH88952[] PROGMEM = "11010010";
|
||||
char CH88953[] PROGMEM = "11011110";
|
||||
char CH88954[] PROGMEM = "11011110";
|
||||
char CH88955[] PROGMEM = "11011110";
|
||||
char CH88956[] PROGMEM = "11011110";
|
||||
char CH88957[] PROGMEM = "11111111";
|
||||
//N 96103
|
||||
char CH961030[] PROGMEM = "11011110";
|
||||
char CH961031[] PROGMEM = "11001110";
|
||||
char CH961032[] PROGMEM = "11000110";
|
||||
char CH961033[] PROGMEM = "11010010";
|
||||
char CH961034[] PROGMEM = "11011000";
|
||||
char CH961035[] PROGMEM = "11011100";
|
||||
char CH961036[] PROGMEM = "11011110";
|
||||
char CH961037[] PROGMEM = "11111111";
|
||||
//O 104111
|
||||
char CH1041110[] PROGMEM = "11000001";
|
||||
char CH1041111[] PROGMEM = "10111110";
|
||||
char CH1041112[] PROGMEM = "10111110";
|
||||
char CH1041113[] PROGMEM = "10111110";
|
||||
char CH1041114[] PROGMEM = "10111110";
|
||||
char CH1041115[] PROGMEM = "10111110";
|
||||
char CH1041116[] PROGMEM = "11000001";
|
||||
char CH1041117[] PROGMEM = "11111111";
|
||||
//P 112119
|
||||
char CH1121190[] PROGMEM = "11000001";
|
||||
char CH1121191[] PROGMEM = "11011110";
|
||||
char CH1121192[] PROGMEM = "11011110";
|
||||
char CH1121193[] PROGMEM = "11000001";
|
||||
char CH1121194[] PROGMEM = "11011111";
|
||||
char CH1121195[] PROGMEM = "11011111";
|
||||
char CH1121196[] PROGMEM = "11011111";
|
||||
char CH1121197[] PROGMEM = "11111111";
|
||||
//Q 120127
|
||||
char CH1201270[] PROGMEM = "11100001";
|
||||
char CH1201271[] PROGMEM = "11011110";
|
||||
char CH1201272[] PROGMEM = "11011110";
|
||||
char CH1201273[] PROGMEM = "11011110";
|
||||
char CH1201274[] PROGMEM = "11011010";
|
||||
char CH1201275[] PROGMEM = "11011100";
|
||||
char CH1201276[] PROGMEM = "11100000";
|
||||
char CH1201277[] PROGMEM = "11111111";
|
||||
//R 128135
|
||||
char CH1281350[] PROGMEM = "11000001";
|
||||
char CH1281351[] PROGMEM = "11011110";
|
||||
char CH1281352[] PROGMEM = "11011110";
|
||||
char CH1281353[] PROGMEM = "11000001";
|
||||
char CH1281354[] PROGMEM = "11011011";
|
||||
char CH1281355[] PROGMEM = "11011101";
|
||||
char CH1281356[] PROGMEM = "11011110";
|
||||
char CH1281357[] PROGMEM = "11111111";
|
||||
//S 136143
|
||||
char CH1361430[] PROGMEM = "11100001";
|
||||
char CH1361431[] PROGMEM = "11011110";
|
||||
char CH1361432[] PROGMEM = "11011111";
|
||||
char CH1361433[] PROGMEM = "11100001";
|
||||
char CH1361434[] PROGMEM = "11111110";
|
||||
char CH1361435[] PROGMEM = "11011110";
|
||||
char CH1361436[] PROGMEM = "11100001";
|
||||
char CH1361437[] PROGMEM = "11111111";
|
||||
//T 144151
|
||||
char CH1441510[] PROGMEM = "11000000";
|
||||
char CH1441511[] PROGMEM = "11110011";
|
||||
char CH1441512[] PROGMEM = "11110011";
|
||||
char CH1441513[] PROGMEM = "11110011";
|
||||
char CH1441514[] PROGMEM = "11110011";
|
||||
char CH1441515[] PROGMEM = "11110011";
|
||||
char CH1441516[] PROGMEM = "11110011";
|
||||
char CH1441517[] PROGMEM = "11111111";
|
||||
//U 152159
|
||||
char CH1521590[] PROGMEM = "11011110";
|
||||
char CH1521591[] PROGMEM = "11011110";
|
||||
char CH1521592[] PROGMEM = "11011110";
|
||||
char CH1521593[] PROGMEM = "11011110";
|
||||
char CH1521594[] PROGMEM = "11011110";
|
||||
char CH1521595[] PROGMEM = "11011110";
|
||||
char CH1521596[] PROGMEM = "11100001";
|
||||
char CH1521597[] PROGMEM = "11111111";
|
||||
//V 160167
|
||||
char CH1601670[] PROGMEM = "10111110";
|
||||
char CH1601671[] PROGMEM = "10111110";
|
||||
char CH1601672[] PROGMEM = "11011101";
|
||||
char CH1601673[] PROGMEM = "11011101";
|
||||
char CH1601674[] PROGMEM = "11101011";
|
||||
char CH1601675[] PROGMEM = "11101011";
|
||||
char CH1601676[] PROGMEM = "11110111";
|
||||
char CH1601677[] PROGMEM = "11111111";
|
||||
//W 168175
|
||||
char CH1681750[] PROGMEM = "10111110";
|
||||
char CH1681751[] PROGMEM = "10111110";
|
||||
char CH1681752[] PROGMEM = "10111110";
|
||||
char CH1681753[] PROGMEM = "10110110";
|
||||
char CH1681754[] PROGMEM = "10101010";
|
||||
char CH1681755[] PROGMEM = "10011100";
|
||||
char CH1681756[] PROGMEM = "10111110";
|
||||
char CH1681757[] PROGMEM = "11111111";
|
||||
//X 176183
|
||||
char CH1761830[] PROGMEM = "10111110";
|
||||
char CH1761831[] PROGMEM = "11011101";
|
||||
char CH1761832[] PROGMEM = "11101011";
|
||||
char CH1761833[] PROGMEM = "11110111";
|
||||
char CH1761834[] PROGMEM = "11101011";
|
||||
char CH1761835[] PROGMEM = "11011101";
|
||||
char CH1761836[] PROGMEM = "10111110";
|
||||
char CH1761837[] PROGMEM = "11111111";
|
||||
//Y 184191
|
||||
char CH1841910[] PROGMEM = "10111110";
|
||||
char CH1841911[] PROGMEM = "11011101";
|
||||
char CH1841912[] PROGMEM = "11101011";
|
||||
char CH1841913[] PROGMEM = "11110111";
|
||||
char CH1841914[] PROGMEM = "11110111";
|
||||
char CH1841915[] PROGMEM = "11110111";
|
||||
char CH1841916[] PROGMEM = "11110111";
|
||||
char CH1841917[] PROGMEM = "11111111";
|
||||
//Z 192199
|
||||
char CH1921990[] PROGMEM = "10000000";
|
||||
char CH1921991[] PROGMEM = "11111101";
|
||||
char CH1921992[] PROGMEM = "11111011";
|
||||
char CH1921993[] PROGMEM = "11110111";
|
||||
char CH1921994[] PROGMEM = "11101111";
|
||||
char CH1921995[] PROGMEM = "11011111";
|
||||
char CH1921996[] PROGMEM = "10000000";
|
||||
char CH1921997[] PROGMEM = "11111111";
|
||||
|
||||
|
||||
char chl[ ] = {' ','!','q','#','$','%','&','\'','(',')','*','+',',','-', '.','/',
|
||||
'0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@',
|
||||
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
|
||||
|
||||
PGM_P CHL[] PROGMEM= {
|
||||
CH200,CH201,CH202,CH203,CH204,CH205,CH206,CH207,
|
||||
CH210,CH211,CH212,CH213,CH214,CH215,CH216,CH217,
|
||||
CH220,CH221,CH222,CH223,CH224,CH225,CH226,CH227,
|
||||
CH230,CH231,CH232,CH233,CH234,CH235,CH236,CH237,
|
||||
CH240,CH241,CH242,CH243,CH244,CH245,CH246,CH247,
|
||||
CH250,CH251,CH252,CH253,CH254,CH255,CH256,CH257,
|
||||
CH260,CH261,CH262,CH263,CH264,CH265,CH266,CH267,
|
||||
CH270,CH271,CH272,CH273,CH274,CH275,CH276,CH277,
|
||||
CH280,CH281,CH282,CH283,CH284,CH285,CH286,CH287,
|
||||
CH290,CH291,CH292,CH293,CH294,CH295,CH296,CH297,
|
||||
CH2A0,CH2A1,CH2A2,CH2A3,CH2A4,CH2A5,CH2A6,CH2A7,
|
||||
CH2B0,CH2B1,CH2B2,CH2B3,CH2B4,CH2B5,CH2B6,CH2B7,
|
||||
CH2C0,CH2C1,CH2C2,CH2C3,CH2C4,CH2C5,CH2C6,CH2C7,
|
||||
CH2D0,CH2D1,CH2D2,CH2D3,CH2D4,CH2D5,CH2D6,CH2D7,
|
||||
CH2E0,CH2E1,CH2E2,CH2E3,CH2E4,CH2E5,CH2E6,CH2E7,
|
||||
CH2F0,CH2F1,CH2F2,CH2F3,CH2F4,CH2F5,CH2F6,CH2F7,
|
||||
CH300,CH301,CH302,CH303,CH304,CH305,CH306,CH307,
|
||||
CH310,CH311,CH312,CH313,CH314,CH315,CH316,CH317,
|
||||
CH320,CH321,CH322,CH323,CH324,CH325,CH326,CH327,
|
||||
CH330,CH331,CH332,CH333,CH334,CH335,CH336,CH337,
|
||||
CH340,CH341,CH342,CH343,CH344,CH345,CH346,CH347,
|
||||
CH350,CH351,CH352,CH353,CH354,CH355,CH356,CH357,
|
||||
CH360,CH361,CH362,CH363,CH364,CH365,CH366,CH367,
|
||||
CH370,CH371,CH372,CH373,CH374,CH375,CH376,CH377,
|
||||
CH380,CH381,CH382,CH383,CH384,CH385,CH386,CH387,
|
||||
CH390,CH391,CH392,CH393,CH394,CH395,CH396,CH397,
|
||||
CH3A0,CH3A1,CH3A2,CH3A3,CH3A4,CH3A5,CH3A6,CH3A7,
|
||||
CH3B0,CH3B1,CH3B2,CH3B3,CH3B4,CH3B5,CH3B6,CH3B7,
|
||||
CH3C0,CH3C1,CH3C2,CH3C3,CH3C4,CH3C5,CH3C6,CH3C7,
|
||||
CH3D0,CH3D1,CH3D2,CH3D3,CH3D4,CH3D5,CH3D6,CH3D7,
|
||||
CH3E0,CH3E1,CH3E2,CH3E3,CH3E4,CH3E5,CH3E6,CH3E7,
|
||||
CH3F0,CH3F1,CH3F2,CH3F3,CH3F4,CH3F5,CH3F6,CH3F7,
|
||||
CH400,CH401,CH402,CH403,CH404,CH405,CH406,CH407,
|
||||
CH070,CH071,CH072,CH073,CH074,CH075,CH076,CH077,
|
||||
CH8150,CH8151,CH8152,CH8153,CH8154,CH8155,CH8156,CH8157,
|
||||
CH16230,CH16231,CH16232,CH16233,CH16234,CH16235,CH16236,CH16237,
|
||||
CH24310,CH24311,CH24312,CH24313,CH24314,CH24315,CH24316,CH24317,
|
||||
CH31380,CH31381,CH31382,CH31383,CH31384,CH31385,CH31386,CH31387,
|
||||
CH39460,CH39461,CH39462,CH39463,CH39464,CH39465,CH39466,CH39467,
|
||||
CH47540,CH47541,CH47542,CH47543,CH47544,CH47545,CH47546,CH47547,
|
||||
CH55620,CH55621,CH55622,CH55623,CH55624,CH55625,CH55626,CH55627,
|
||||
CH0,CH1,CH2,CH3,CH4,CH5,CH6,CH7,
|
||||
CH64710,CH64711,CH64712,CH64713,CH64714,CH64715,CH64716,CH64717,
|
||||
CH72790,CH72791,CH72792,CH72793,CH72794,CH72795,CH72796,CH72797,
|
||||
CH80870,CH80871,CH80872,CH80873,CH80874,CH80875,CH80876,CH80877,
|
||||
CH88950,CH88951,CH88952,CH88953,CH88954,CH88955,CH88956,CH88957,
|
||||
CH961030,CH961031,CH961032,CH961033,CH961034,CH961035,CH961036,CH961037,
|
||||
CH1041110,CH1041111,CH1041112,CH1041113,CH1041114,CH1041115,CH1041116,CH1041117,
|
||||
CH1121190,CH1121191,CH1121192,CH1121193,CH1121194,CH1121195,CH1121196,CH1121197,
|
||||
CH1201270,CH1201271,CH1201272,CH1201273,CH1201274,CH1201275,CH1201276,CH1201277,
|
||||
CH1281350,CH1281351,CH1281352,CH1281353,CH1281354,CH1281355,CH1281356,CH1281357,
|
||||
CH1361430,CH1361431,CH1361432,CH1361433,CH1361434,CH1361435,CH1361436,CH1361437,
|
||||
CH1441510,CH1441511,CH1441512,CH1441513,CH1441514,CH1441515,CH1441516,CH1441517,
|
||||
CH1521590,CH1521591,CH1521592,CH1521593,CH1521594,CH1521595,CH1521596,CH1521597,
|
||||
CH1601670,CH1601671,CH1601672,CH1601673,CH1601674,CH1601675,CH1601676,CH1601677,
|
||||
CH1681750,CH1681751,CH1681752,CH1681753,CH1681754,CH1681755,CH1681756,CH1681757,
|
||||
CH1761830,CH1761831,CH1761832,CH1761833,CH1761834,CH1761835,CH1761836,CH1761837,
|
||||
CH1841910,CH1841911,CH1841912,CH1841913,CH1841914,CH1841915,CH1841916,CH1841917,
|
||||
CH1921990,CH1921991,CH1921992,CH1921993,CH1921994,CH1921995,CH1921996,CH1921997};
|
||||
|
||||
//END letter def
|
||||
@@ -0,0 +1,261 @@
|
||||
/* Number of Boards */
|
||||
#define NUM_BOARDS 2
|
||||
|
||||
/* Number of HT1632C Chips */
|
||||
#define CHIP_MAX (NUM_BOARDS*4)
|
||||
#define Y_MAX 15
|
||||
#define X_MAX ((32*NUM_BOARDS)-1)
|
||||
|
||||
/* Pin Assignments for PORTC from 0 to 7 */
|
||||
#define DATA_PIN 0
|
||||
#define CLK_PIN 1
|
||||
#define WR_PIN 2
|
||||
#define CS_PIN 3
|
||||
|
||||
unsigned char ht1632_shadowram[63][CHIP_MAX];
|
||||
unsigned char buffer[8][8];
|
||||
|
||||
#define HT1632_ID_CMD 4 /* ID = 100 - Commands */
|
||||
#define HT1632_ID_RD 6 /* ID = 110 - Read RAM */
|
||||
#define HT1632_ID_WR 5 /* ID = 101 - Write RAM */
|
||||
|
||||
/* HT1632C Control Commands */
|
||||
// #define HT_MASTER 0b100000110000 //Sets chip as master and clock reference
|
||||
// #define EXT_CLK_HT_MASTER 0b100000111000
|
||||
// #define HT_SLAVE 0b100000100000 //Set chips as slave and looks for master clock reference
|
||||
// #define SYS_EN 0b100000000010 //Turns on the boards oscillator
|
||||
// #define LED_ON 0b100000000110 //Turns on the LED Duty cycle generator (for pwm brightness control)
|
||||
// #define COM_OPTION 0b100001000000 //N-MOS Open Drain Option and 8 Common Option (Figure out what this means)
|
||||
// #define PWM_10 0b100101010010 //Used to set a 10/16 PWM Brightness
|
||||
#define HT1632_CMD_SYSDIS 0x00 /* CMD= 0000-0000-x Turn off oscil */
|
||||
#define HT1632_CMD_SYSON 0x01 /* CMD= 0000-0001-x Enable system oscil */
|
||||
#define HT1632_CMD_LEDOFF 0x02 /* CMD= 0000-0010-x LED duty cycle gen off */
|
||||
#define HT1632_CMD_LEDON 0x03 /* CMD= 0000-0011-x LEDs ON */
|
||||
#define HT1632_CMD_BLOFF 0x08 /* CMD= 0000-1000-x Blink ON */
|
||||
#define HT1632_CMD_BLON 0x09 /* CMD= 0000-1001-x Blink Off */
|
||||
#define HT1632_CMD_SLVMD 0x10 /* CMD= 0001-0xxx-x Slave Mode */
|
||||
#define HT1632_CMD_MSTMD 0x18 /* CMD= 0001-10xx-x Use on-chip clock */
|
||||
#define HT1632_CMD_EXTCLK 0x1C /* CMD= 0001-11xx-x Use external clock */
|
||||
#define HT1632_CMD_COMS00 0x20 /* CMD= 0010-ABxx-x commons options */
|
||||
#define HT1632_CMD_COMS01 0x24 /* CMD= 0010-ABxx-x commons options */
|
||||
#define HT1632_CMD_COMS10 0x28 /* CMD= 0010-ABxx-x commons options */
|
||||
#define HT1632_CMD_COMS11 0x2C /* CMD= 0010-ABxx-x commons options */
|
||||
#define HT1632_CMD_PWM 0b100101010010//0xA0 /* CMD= 101x-PPPP-x PWM duty cycle */
|
||||
|
||||
// possible values for a pixel;
|
||||
#define BLACK 0
|
||||
#define GREEN 1
|
||||
#define RED 2
|
||||
#define ORANGE 3
|
||||
|
||||
#define ASSERT(condition) //nothing
|
||||
#define calcBit(y) (8>>(y&3))
|
||||
|
||||
unsigned char xyToIndex(unsigned char x, unsigned char y){
|
||||
unsigned char nChip, addr;
|
||||
|
||||
if (x>=32) {
|
||||
nChip = 3 + x/16 + (y>7?2:0);
|
||||
} else {
|
||||
nChip = 1 + x/16 + (y>7?2:0);
|
||||
}
|
||||
|
||||
x = x % 16;
|
||||
y = y % 8;
|
||||
addr = (x<<1) + (y>>2);
|
||||
|
||||
return addr;
|
||||
}
|
||||
|
||||
static void ht1632_senddata (unsigned char chipNo, unsigned char address, unsigned char data){
|
||||
ht1632_chipselect(chipNo);
|
||||
ht1632_writebits(HT1632_ID_WR, 1<<2); // send ID: WRITE to RAM
|
||||
ht1632_writebits(address, 1<<6); // Send address
|
||||
ht1632_writebits(data, 1<<3); // send 4 bits of data
|
||||
ht1632_chipselect(0);
|
||||
}
|
||||
|
||||
int get_pixel(unsigned char x, unsigned char y) {
|
||||
unsigned char addr, bitval, nChip;
|
||||
|
||||
if (x>=32) {
|
||||
nChip = 3 + x/16 + (y>7?2:0);
|
||||
} else {
|
||||
nChip = 1 + x/16 + (y>7?2:0);
|
||||
}
|
||||
|
||||
addr = xyToIndex(x,y);
|
||||
bitval = calcBit(y);
|
||||
|
||||
if ((ht1632_shadowram[addr][nChip-1] & bitval) && (ht1632_shadowram[addr+32][nChip-1] & bitval)) {
|
||||
return ORANGE;
|
||||
} else if (ht1632_shadowram[addr][nChip-1] & bitval) {
|
||||
return GREEN;
|
||||
} else if (ht1632_shadowram[addr+32][nChip-1] & bitval) {
|
||||
return RED;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
unsigned char decToBcd(unsigned char val){
|
||||
return ( (val/10*16) + (val%10) );
|
||||
}
|
||||
unsigned char bcdToDec(unsigned char val){
|
||||
return ( (val/16*10) + (val%16) );
|
||||
}
|
||||
void ht1632_plot (unsigned char x, unsigned char y, unsigned char color){
|
||||
unsigned char nChip, addr, bitval;
|
||||
|
||||
if (x<0 || x>X_MAX || y<0 || y>Y_MAX)
|
||||
return;
|
||||
|
||||
if (color != BLACK && color != GREEN && color != RED && color != ORANGE)
|
||||
return;
|
||||
|
||||
if (x>=32) {
|
||||
nChip = 3 + x/16 + (y>7?2:0);
|
||||
} else {
|
||||
nChip = 1 + x/16 + (y>7?2:0);
|
||||
}
|
||||
|
||||
addr = xyToIndex(x,y);
|
||||
bitval = calcBit(y);
|
||||
|
||||
switch (color)
|
||||
{
|
||||
case BLACK:
|
||||
if (get_pixel(x,y) != BLACK) { // compare with memory to only set if pixel is other color
|
||||
// clear the bit in both planes;
|
||||
ht1632_shadowram[addr][nChip-1] &= ~bitval;
|
||||
ht1632_senddata(nChip, addr, ht1632_shadowram[addr][nChip-1]);
|
||||
addr = addr + 32;
|
||||
ht1632_shadowram[addr][nChip-1] &= ~bitval;
|
||||
ht1632_senddata(nChip, addr, ht1632_shadowram[addr][nChip-1]);
|
||||
}
|
||||
break;
|
||||
case GREEN:
|
||||
if (get_pixel(x,y) != GREEN) { // compare with memory to only set if pixel is other color
|
||||
// set the bit in the green plane and clear the bit in the red plane;
|
||||
ht1632_shadowram[addr][nChip-1] |= bitval;
|
||||
ht1632_senddata(nChip, addr, ht1632_shadowram[addr][nChip-1]);
|
||||
addr = addr + 32;
|
||||
ht1632_shadowram[addr][nChip-1] &= ~bitval;
|
||||
ht1632_senddata(nChip, addr, ht1632_shadowram[addr][nChip-1]);
|
||||
}
|
||||
break;
|
||||
case RED:
|
||||
if (get_pixel(x,y) != RED) { // compare with memory to only set if pixel is other color
|
||||
// clear the bit in green plane and set the bit in the red plane;
|
||||
ht1632_shadowram[addr][nChip-1] &= ~bitval;
|
||||
ht1632_senddata(nChip, addr, ht1632_shadowram[addr][nChip-1]);
|
||||
addr = addr + 32;
|
||||
ht1632_shadowram[addr][nChip-1] |= bitval;
|
||||
ht1632_senddata(nChip, addr, ht1632_shadowram[addr][nChip-1]);
|
||||
}
|
||||
break;
|
||||
case ORANGE:
|
||||
if (get_pixel(x,y) != ORANGE) { // compare with memory to only set if pixel is other color
|
||||
// set the bit in both the green and red planes;
|
||||
ht1632_shadowram[addr][nChip-1] |= bitval;
|
||||
ht1632_senddata(nChip, addr, ht1632_shadowram[addr][nChip-1]);
|
||||
addr = addr + 32;
|
||||
ht1632_shadowram[addr][nChip-1] |= bitval;
|
||||
ht1632_senddata(nChip, addr, ht1632_shadowram[addr][nChip-1]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void null_buffer(){
|
||||
for(int i=0;i<8;i++)
|
||||
for(int j=0; j<8;j++)
|
||||
buffer[i][j] = 0;
|
||||
}
|
||||
|
||||
void set_buffer(unsigned char chr){
|
||||
for(int i=0; i<sizeof(chl); i++){
|
||||
if(chl[i] == chr){
|
||||
int pos = i*8;
|
||||
for(int j=0;j<8;j++){
|
||||
memcpy_P(buffer[j], (PGM_P)pgm_read_word(&(CHL[j+pos])), 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ht1632_clear(){
|
||||
unsigned char i;
|
||||
|
||||
for (int j=1;j<=CHIP_MAX;j++) {
|
||||
ht1632_chipselect(j);
|
||||
ht1632_writebits(HT1632_ID_WR, 1<<2); // send ID: WRITE to RAM
|
||||
ht1632_writebits(0, 1<<6); // Send address
|
||||
for (i=0; i<64/2; i++) // Clear entire display
|
||||
ht1632_writebits(0, 1<<7); // send 8 bits of data
|
||||
ht1632_chipselect(0);
|
||||
for (i=0; i<64; i++)
|
||||
ht1632_shadowram[i][j] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void ht1632_chipselect(int select){
|
||||
unsigned char tmp = 0;
|
||||
if (select < 0) { // Enable all HT1632C
|
||||
setBPin(CS_PIN, "LOW");
|
||||
for (tmp=0; tmp<CHIP_MAX; tmp++) {
|
||||
clockPulse();
|
||||
}
|
||||
} else if(select==0) { //Disable all HT1632Cs
|
||||
setBPin(CS_PIN, "HIGH");
|
||||
for(tmp=0; tmp<CHIP_MAX; tmp++) {
|
||||
clockPulse();
|
||||
}
|
||||
} else {
|
||||
setBPin(CS_PIN, "HIGH");
|
||||
for(tmp=0; tmp<CHIP_MAX; tmp++) {
|
||||
clockPulse();
|
||||
}
|
||||
setBPin(CS_PIN, "LOW");
|
||||
clockPulse();
|
||||
setBPin(CS_PIN, "HIGH");
|
||||
tmp = 1;
|
||||
for( ; tmp<select; tmp++) {
|
||||
clockPulse();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ht1632_writebits (unsigned char bits, unsigned char firstbit){
|
||||
while (firstbit) {
|
||||
setBPin(WR_PIN, "LOW");
|
||||
if (bits & firstbit) {
|
||||
setBPin(DATA_PIN, "HIGH");
|
||||
}
|
||||
else {
|
||||
setBPin(DATA_PIN, "LOW");
|
||||
}
|
||||
setBPin(WR_PIN, "HIGH");
|
||||
firstbit >>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void ht1632_sendcmd (unsigned char chipNo, unsigned char command){
|
||||
ht1632_chipselect(chipNo);
|
||||
ht1632_writebits(HT1632_ID_CMD, 1<<2); // send 3 bits of id: COMMMAND
|
||||
ht1632_writebits(command, 1<<7); // send the actual command
|
||||
ht1632_writebits(0, 1); /* one extra dont-care bit in commands. */
|
||||
ht1632_chipselect(0);
|
||||
}
|
||||
|
||||
static void ht1632_initialize(){
|
||||
setBPin(CS_PIN, "HIGH");
|
||||
for (int i=1; i<=CHIP_MAX; i++) {
|
||||
ht1632_sendcmd(i, HT1632_CMD_SYSDIS); // Disable system
|
||||
ht1632_sendcmd(i, HT1632_CMD_COMS00); // 16*32, PMOS drivers
|
||||
ht1632_sendcmd(i, HT1632_CMD_MSTMD); // MASTER MODE
|
||||
ht1632_sendcmd(i, HT1632_CMD_SYSON); // System on
|
||||
ht1632_sendcmd(i, HT1632_CMD_LEDON); // LEDs on
|
||||
}
|
||||
ht1632_clear(); // Clear the display
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <avr/pgmspace.h>
|
||||
#include <string.h>
|
||||
#include "font1.h"
|
||||
#include "ht1632c.h"
|
||||
#include "uart.h"
|
||||
|
||||
|
||||
/* Global Definitions */
|
||||
#define F_CPU 1000000UL
|
||||
|
||||
/* Protypes */
|
||||
void initialize(void);
|
||||
void clearArray(void);
|
||||
void setBPin(unsigned char pin, unsigned char *mode);
|
||||
void clockPulse(void);
|
||||
|
||||
/* Main Function */
|
||||
int main(void){
|
||||
|
||||
enum states{
|
||||
setup,
|
||||
drawing,
|
||||
readusart,
|
||||
} currentstate = setup;
|
||||
|
||||
unsigned char STRING1[]="YAY THIS";
|
||||
unsigned char STRING2[]="WORKS!!!";
|
||||
unsigned char STR1CMP[9];
|
||||
unsigned char STR2CMP[9];
|
||||
unsigned char x, i, j;
|
||||
unsigned char send[50];
|
||||
|
||||
while(1){
|
||||
|
||||
switch(currentstate){
|
||||
case setup:
|
||||
initialize();
|
||||
clearArray();
|
||||
PORTB = 0b10000000;
|
||||
PORTC |= 0b10000000;
|
||||
ht1632_initialize();
|
||||
PORTC |= 0b01000000;
|
||||
InitializeUART();
|
||||
PORTC |= 0b00100000;
|
||||
|
||||
sprintf(send, "Initialized...\n");
|
||||
PORTC |= 0b00010000;
|
||||
SendStringUART(send);
|
||||
_delay_ms(200);
|
||||
PORTC = 0;
|
||||
strcpy(STRING1, "YAY THIS");
|
||||
strcpy(STRING2, "WORKS!!!");
|
||||
currentstate = drawing;
|
||||
break;
|
||||
case drawing:
|
||||
for(x=1;x<sizeof(STRING1);x++) {
|
||||
null_buffer();
|
||||
for(i=0;i<8;i++){
|
||||
for(j=0;j<8;j++){
|
||||
set_buffer(STRING1[x-1]);
|
||||
if (~buffer[i][j] & (1<<0)) {
|
||||
ht1632_plot(j+(8*(x-1))-1,i,GREEN);
|
||||
PORTC = ~PORTC;
|
||||
} else {
|
||||
ht1632_plot(j+(8*(x-1))-1,i,BLACK);
|
||||
PORTC = ~PORTC;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for(x=1;x<sizeof(STRING2);x++) {
|
||||
null_buffer();
|
||||
for(i=0;i<8;i++){
|
||||
for(j=0;j<8;j++){
|
||||
set_buffer(STRING2[x-1]);
|
||||
if (~buffer[i][j] & (1<<0)) {
|
||||
ht1632_plot(j+(8*(x-1))-1,i+8,GREEN);
|
||||
PORTC = ~PORTC;
|
||||
} else {
|
||||
ht1632_plot(j+(8*(x-1))-1,i+8,BLACK);
|
||||
PORTC = ~PORTC;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PORTC = 0;
|
||||
currentstate = readusart;
|
||||
break;
|
||||
case readusart:
|
||||
strcpy(STR1CMP, STRING1);
|
||||
strcpy(STR2CMP, STRING2);
|
||||
NewScreen(STRING1, STRING2);
|
||||
|
||||
if((strcmp(STRING1, "RESETRES") == 0)){
|
||||
currentstate = setup;
|
||||
}else if((strcmp(STRING1, STR1CMP) != 0) | (strcmp(STRING2, STR2CMP) != 0)){
|
||||
currentstate = drawing;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Other functions */
|
||||
|
||||
/* Initialize function */
|
||||
void initialize(void){
|
||||
/** Port A is the switches and buttons. They should always be inputs. ( 0 = Input and 1 = Output )*/
|
||||
DDRA=0b00000000;
|
||||
|
||||
/** Port B has the LED Array color control, SD card, and audio-out on it. Leave DDRB alone. ( 0 = Input and 1 = Output )*/
|
||||
DDRB=0b11001111;
|
||||
|
||||
/** Port C is for the 'row' of the LED array. They should always be outputs. ( 0 = Input and 1 = Output )*/
|
||||
DDRC=0b11111111;
|
||||
|
||||
/** Port D has the Serial on it. Leave DDRB alone. ( 0 = Input and 1 = Output )*/
|
||||
DDRD=0b00001000;
|
||||
|
||||
/** Port E has the LED Array Column control out on it. Leave DDRE alone. ( 0 = Input and 1 = Output )*/
|
||||
DDRE=0b00000111;
|
||||
|
||||
/** Port F has the accelerometer and audio-in on it. Leave DDRF alone. ( 0 = Input and 1 = Output )*/
|
||||
DDRF=0b00000000;
|
||||
}
|
||||
|
||||
void clearArray(void){
|
||||
PORTC = 0x00;
|
||||
PORTB |= (1 << PB6) | (1 << PB7); /** Enable latches*/
|
||||
PORTB &= ~((1 << PB6) | (1 << PB7)); /** Disable latches*/
|
||||
}
|
||||
|
||||
/* Set Individual Pins High / Low (3.3V, 0V), Takes in a 0-7 */
|
||||
void setBPin(unsigned char pin, unsigned char *mode){
|
||||
if((strcmp(mode, "HIGH") == 0)){
|
||||
PORTB |= (1 << pin);
|
||||
}else{
|
||||
PORTB &= ~(1 << pin);
|
||||
}
|
||||
}
|
||||
|
||||
/* Clock Pulse for Mode Setting / Readying Data Transmission */
|
||||
void clockPulse(void){
|
||||
setBPin(CLK_PIN, "HIGH"); //Set main clock pin high
|
||||
setBPin(CLK_PIN, "LOW"); //Set main clock pin low
|
||||
}
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
#define SENDSPEED 4
|
||||
|
||||
unsigned char InitializeUART (){
|
||||
unsigned char baud = 12; //((F_CPU/(9600*8UL))-1);
|
||||
|
||||
/* Set baud rate */
|
||||
UBRR1H = (baud >> 8);
|
||||
UBRR1L = baud;
|
||||
/* Set the U2X1 bit */
|
||||
UCSR1A = (1 << U2X1);
|
||||
/* Enable transmitter */
|
||||
UCSR1B = (1 << TXEN1 | 1 << RXEN1);
|
||||
/* Set frame format: 8data, 1stop bit */
|
||||
UCSR1C = (3 << UCSZ10);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** This function needs to write a single byte to the UART. It must check that the UART is ready for a new byte
|
||||
and return a 1 if the byte was not sent.
|
||||
@param [in] data This is the data byte to be sent.
|
||||
@return The function returns a 1 or error and 0 on successful completion.*/
|
||||
|
||||
unsigned char SendByteUART (unsigned char data){
|
||||
|
||||
/*
|
||||
** Checks the buffer empty bit so that data can either be placed in the buffer
|
||||
** or else reuturn a 1
|
||||
*/
|
||||
if((UCSR1A & (1 << UDRE1)) == (1 << UDRE1)){
|
||||
UDR1 = data;
|
||||
_delay_ms(SENDSPEED); //Places data into the UDR1 8-bit data buffer
|
||||
}else {
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** This function needs to writes a string to the UART. It must check that the UART is ready for a new byte and
|
||||
return a 1 if the string was not sent.
|
||||
@param [in] data This is a pointer to the data to be sent.
|
||||
@return The function returns a 1 or error and 0 on successful completion.*/
|
||||
|
||||
unsigned char SendStringUART (unsigned char *data){
|
||||
|
||||
for (int loop = 0 ; data[loop] != '\0'; loop++){
|
||||
unsigned char bytereturn; //Storage for return value of SendByteUART
|
||||
|
||||
/* Sends the current byte based on the loop umber to SendByte */
|
||||
bytereturn = SendByteUART(data[loop]);
|
||||
|
||||
/* Stops sending if SendByteUART had an error */
|
||||
if(bytereturn == 1){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned char GetByteUART(){
|
||||
while(!(UCSR1A & (1 << RXC1)));
|
||||
return(UDR1);
|
||||
}
|
||||
|
||||
unsigned char NewScreen(unsigned char STRING1[], unsigned char STRING2[]){
|
||||
unsigned char UARTREAD[17];
|
||||
unsigned char loop = 0;
|
||||
|
||||
for(; loop < 17 ; loop++){
|
||||
while(!(UARTREAD[loop] = GetByteUART()));
|
||||
}
|
||||
for(loop = 0 ; loop < 8 ; loop ++){
|
||||
STRING1[loop] = UARTREAD[loop];
|
||||
}
|
||||
STRING1[8] = '\0';
|
||||
|
||||
for(; loop < 16 ; loop++){
|
||||
STRING2[(loop-8)] = UARTREAD[loop];
|
||||
}
|
||||
|
||||
SendStringUART(STRING1);
|
||||
SendStringUART(STRING2);
|
||||
SendStringUART("\n");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user