??? 09/29/11 13:24 Read: times |
#183936 - Modified program Responding to: ???'s previous message |
Hi to all,
After few days of work on VFD I clear all the problems.The modified program is I am putting for your reference.Hopefully this will help you in developing the VFD driving code. #include <c:c51incstdio.h> #include <c:c51increg52.h> #include <c:c51incintrins.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long int #define CS P24 #define CLK P25 #define DATA P26 #define FILAMENT P20 uchar ms100, displaydigit[9], datareg, data_buffer1, vfdcounter; int init_vfd(), write_vfd1(), data2vfd(); code unsigned char dis_tab[] = { 0xc0, //code for 0 add 0x00 0xf9, //code for 1 add 0x01 0xa4, //code for 2 add 0x02 0xb0, //code for 3 add 0x03 0x99, //code for 4 add 0x04 0x92, //code for 5 add 0x05 0x82, //code for 6 add 0x06 0xf8, //code for 7 add 0x07 0x80, //code for 8 add 0x08 0x90, //code for 9 add 0x09 0xff, //code for blank add 0x0a 0x86, //code for E add 0x0b 0x87, //code for t add 0x0c 0xa1, //code for d add 0x0d 0x88, //code for A add 0x0e 0xc7, //code for L add 0x0f 0x87, //code for T add 0x10 0xc1, //code for U add 0x11 0x8c, //code for P add 0x12 }; init_vfd() { CS = 0; data_buffer1 = 0x05; //9 digit & 13 segment selection data2vfd(); CS = 1; _nop_(); _nop_(); CS = 0; data_buffer1 = 0x40; //auto increment address mode data2vfd(); CS = 1; _nop_(); _nop_(); CS = 0; data_buffer1 = 0x8f; //display on & pulsewidth = 14/16 data2vfd(); CS = 1; } write_vfd1() { CS = 0; data_buffer1 = 0xc0; data2vfd(); data_buffer1 = dis_tab[displaydigit[0]]; //0 data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = dis_tab[displaydigit[1]]; //1 data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = dis_tab[displaydigit[2]]; //2 data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = dis_tab[displaydigit[3]]; //3 data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = dis_tab[displaydigit[4]]; //4 data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = dis_tab[displaydigit[5]]; //5 data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = dis_tab[displaydigit[6]]; //6 data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = dis_tab[displaydigit[7]]; //7 data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = 0xff; //dummy data_buffer1 = ~data_buffer1; data2vfd(); data_buffer1 = dis_tab[displaydigit[7]]; //8 data_buffer1 = ~data_buffer1; data2vfd(); CS = 1; } data2vfd() { for(vfdcounter = 0;vfdcounter != 8;vfdcounter++) { CLK = 0; DATA = data_buffer1 & 0x01; CLK = 1; data_buffer1 = data_buffer1 >> 1; } } void main(void) { SP = 0xa0; P0 = 0xff; P1 = 0xff; P2 = 0xff; P3 = 0xff; init_vfd(); P37 = 0; //Not the part of VFD program displaydigit[0] = 0; displaydigit[1] = 1; displaydigit[2] = 2; displaydigit[3] = 3; displaydigit[4] = 4; displaydigit[5] = 5; displaydigit[6] = 6; displaydigit[7] = 7; displaydigit[8] = 8; write_vfd1(); for(;;) { FILAMENT = 1; ++ms100; if(ms100 == 15) { FILAMENT = 0; ms100 = 0; } } } |
Topic | Author | Date |
How to control Grid voltage of VFD | 01/01/70 00:00 | |
what You mean? | 01/01/70 00:00 | |
bought as module or built by you? | 01/01/70 00:00 | |
voltage is steady | 01/01/70 00:00 | |
RE: "I purchase it from market" | 01/01/70 00:00 | |
I have | 01/01/70 00:00 | |
how | 01/01/70 00:00 | |
code | 01/01/70 00:00 | |
GO OUT FROM INTERRUPT | 01/01/70 00:00 | |
filament power ? | 01/01/70 00:00 | |
ISR changed, FILAMENT IS... | 01/01/70 00:00 | |
Link about VFD | 01/01/70 00:00 | |
what i should read there? | 01/01/70 00:00 | |
Same problem with modified code | 01/01/70 00:00 | |
Work on hardware | 01/01/70 00:00 | |
show pictures | 01/01/70 00:00 | |
DC connection | 01/01/70 00:00 | |
Near to solution | 01/01/70 00:00 | |
just a thought | 01/01/70 00:00 | |
Thanks | 01/01/70 00:00 | |
Modified program | 01/01/70 00:00 | |
make report | 01/01/70 00:00 | |
about Filament | 01/01/70 00:00 | |
RE:about filament | 01/01/70 00:00 | |
PWM | 01/01/70 00:00 |