Sơ đồ ghép nối điều khiển biển quảng cáo.

Một phần của tài liệu Ứng dụng AVR thiết kế biển quảng cáo cho cửa hàng BOOK NEW tại Hà Nội (Trang 47 - 60)

- Địa chỉ thanh ghi đơn trực tiếp:

Khối xử lý Khối hiển

3.2 Sơ đồ ghép nối điều khiển biển quảng cáo.

Hình 24: Khối hiển thị. 3.3 Code chương trình. #include <mega8.h> #include <string.h> Unsigned char s[200]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0};

const char AA[]={248,36,34,36,248,0}; const char BB[]={254,146,146,146,108,0}; const char CC[]={124,130,130,130,68,0}; const char DD[]={254,130,130,130,124,0}; const char EE[]={254,146,146,146,146,0}; const char FF[]={254,18,18,18,18,0}; const char GG[]={124,130,146,146,116,0}; const char HH[]={254,16,16,16,254,0}; const char II[]={130,130,254,130,130,0};

const char JJ[]={66,130,254,2,2,0}; const char KK[]={254,16,40,68,130,0}; const char LL[]={254,128,128,128,128,0}; const char MM[]={254,8,16,8,254,0}; const char NN[]={254,8,16,32,254,0}; const char OO[]={124,130,130,130,124,0}; const char PP[]={254,18,18,18,12,0}; const char QQ[]={124,130,162,66,188,0}; const char RR[]={254,18,50,82,140,0}; const char SS[]={76,146,146,146,100,0}; const char TT[]={2,2,254,2,2,0};

const char UU[]={126,128,128,128,126,0}; const char VV[]={62,64,128,64,62,0}; const char WW[]={254,32,16,32,254,0}; const char XX[]={198,40,16,40,198,0}; const char YY[]={6,8,240,8,6,0};

const char ZZ[]={194,162,146,138,134,0}; const char S0[]={124,130,130,130,124,0}; const char S1[]={136,132,254,128,128,0}; const char S2[]={242,146,146,146,158,0}; const char S3[]={146,146,146,146,254,0}; const char S4[]={30,16,16,16,254,0};

const char S5[]={158,146,146,146,242,0}; const char S6[]={254,146,146,146,242,0}; const char S7[]={2,2,2,2,254,0};

const char S8[]={254,146,146,146,254,0}; const char S9[]={158,146,146,146,254,0};

unsigned char i,j; unsigned int n=1,k=0; char

str[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,248,36,34,36,248,0,248,36,34,36,248,0,248,36,34,36,248,0,248,36,34,36,248,0,24 8,36,34,36,248,0};

unsigned char chu[]=" book new";

void chip(unsigned char t) //void select chip (select colunm) { if (t==1) { PORTC.0=0; PORTC.1=1; PORTC.2=1; } else if (t==2)

{ PORTC.0=1; PORTC.1=0; PORTC.2=1; } else { PORTC=0xFF; } } void scan(void) { if (n==32) n=0; if (n<16) { chip(0); PORTD=n; chip(1); } else if (n<32) { chip(0); PORTD=(n-16);

chip(2); } } void hienthi(void) { scan(); //PORTB=str[n+k]; PORTB=s[n+k]; }

interrupt [TIM0_OVF] void timer0_ovf_isr(void) {

TCNT0=0xDC; PORTB=0x00; n++;

hienthi();

// Place your code here }

// Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) {

// Reinitialize Timer 1 value TCNT1H=0xF7;

for(i=0;i<strlen(chu)6;i++) { if (k<strlen(chu)*6) k++; else k=0; } for (i=strlen(chu)6;i>0;i++) {if (k>0) k--; else k=strlen(chu)6; }

// Place your code here }

// Declare your global variables here

void main(void) {

// Declare your local variables here // Input/Output Ports initialization // Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00;

DDRB=0xFF;

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out // State6=T State5=T State4=T State3=T State2=1 State1=1 State0=1

PORTC=0x07; DDRC=0x07;

// Port D initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00;

DDRD=0xFF;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 125.000 kHz TCCR0=0x03;

TCNT0=0xDC;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 7.813 kHz // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x05; TCNT1H=0xF7; TCNT1L=0x03; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;

TCCR2=0x00; TCNT2=0x00; OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off

// INT1: Off MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x05;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00

// Global enable interrupts for (i=0;i<strlen(chu);i++) {

switch (chu[i]) {

case 'a': for (j=0;j<6;j++) s[i*6+j]=AA[j]; break; case 'b': for (j=0;j<6;j++) s[i*6+j]=BB[j]; break; case 'c': for (j=0;j<6;j++) s[i*6+j]=CC[j]; break; case 'd': for (j=0;j<6;j++) s[i*6+j]=DD[j]; break;

case 'e': for (j=0;j<6;j++) s[i*6+j]=EE[j]; break; case 'f': for (j=0;j<6;j++) s[i*6+j]=FF[j]; break; case 'g': for (j=0;j<6;j++) s[i*6+j]=GG[j]; break; case 'h': for (j=0;j<6;j++) s[i*6+j]=HH[j]; break; case 'i': for (j=0;j<6;j++) s[i*6+j]=II[j]; break; case 'j': for (j=0;j<6;j++) s[i*6+j]=JJ[j]; break; case 'k': for (j=0;j<6;j++) s[i*6+j]=KK[j]; break; case 'l': for (j=0;j<6;j++) s[i*6+j]=LL[j]; break; case 'm': for (j=0;j<6;j++) s[i*6+j]=MM[j]; break; case 'n': for (j=0;j<6;j++) s[i*6+j]=NN[j]; break; case 'o': for (j=0;j<6;j++) s[i*6+j]=OO[j]; break; case 'p': for (j=0;j<6;j++) s[i*6+j]=PP[j]; break; case 'q': for (j=0;j<6;j++) s[i*6+j]=QQ[j]; break; case 'r': for (j=0;j<6;j++) s[i*6+j]=RR[j]; break; case 's': for (j=0;j<6;j++) s[i*6+j]=SS[j]; break; case 't': for (j=0;j<6;j++) s[i*6+j]=TT[j]; break; case 'u': for (j=0;j<6;j++) s[i*6+j]=UU[j]; break; case 'v': for (j=0;j<6;j++) s[i*6+j]=VV[j]; break; case 'w': for (j=0;j<6;j++) s[i*6+j]=WW[j]; break; case 'x': for (j=0;j<6;j++) s[i*6+j]=XX[j]; break; case 'y': for (j=0;j<6;j++) s[i*6+j]=YY[j]; break; case 'z': for (j=0;j<6;j++) s[i*6+j]=ZZ[j]; break;

case '0': for (j=0;j<6;j++) s[i*6+j]=S0[j]; break; case '1': for (j=0;j<6;j++) s[i*6+j]=S1[j]; break; case '2': for (j=0;j<6;j++) s[i*6+j]=S2[j]; break; case '3': for (j=0;j<6;j++) s[i*6+j]=S3[j]; break; case '4': for (j=0;j<6;j++) s[i*6+j]=S4[j]; break; case '5': for (j=0;j<6;j++) s[i*6+j]=S5[j]; break; case '6': for (j=0;j<6;j++) s[i*6+j]=S6[j]; break; case '7': for (j=0;j<6;j++) s[i*6+j]=S7[j]; break; case '8': for (j=0;j<6;j++) s[i*6+j]=S8[j]; break; case '9': for (j=0;j<6;j++) s[i*6+j]=S9[j]; break; default: break; } } #asm("sei") while (1) {

// Place your code here

}; }

Đề tài làm biển quảng cáo tuy không phài là một đề tài mới và cũng không phải là một đề tài lớn nhứng khá thông dụng và tiện ích trong cuộc sống hàng ngày của chúng ta. Thông qua đề tài lần này em đã học được rất nhiều kiến thức bổ ích, và cũng đã rút ra được rất nhiều kinh nghiệm có giá trị.

Kết quả đạt được: Tìm hiểu được cơ bản vi điều khiển AVR Atmega8, IC 74HC154, ma trận LED8x8. Thực hiện mô phỏng được biển quảng cáo cho cửa hang BOOK NEW

Áp dụng ngôn ngữ lập trình C để viết chương trình điều khiển cho hệ thống.

Hạn chế: Biển quảng cáo còn đơn giản, chưa được đẹp mắt, chưa có sản phẩm thất ứng dụng trong cuộc sống.

Hướng phát triển: từ đề tài lần này có đã tạo cho em được những kiến thức cơ bản về thiết kế biển quảng cáo từ đó có thể áp dụng tạo ra được nhưng biển quảng cáo đa dạng phức tạp hơn. Và cũng là tiền đề để em có thể tạo ra được những sản phẩm thật sạu này ứng dụng nhiều hơn trong thực tế.

Một phần của tài liệu Ứng dụng AVR thiết kế biển quảng cáo cho cửa hàng BOOK NEW tại Hà Nội (Trang 47 - 60)

Tải bản đầy đủ (DOC)

(61 trang)
w