Tình hình là thế này , em năm nay mới bắt đầu học môn AVR ( dùng ngôn ngữ C ) , mới học đến chương LCD thì được thầy giáo giao một bài tập là LCD hiển thị thời gian có các nút điều chỉnh sử dụng ATEMEGA32 . Hix em còn gà lắm nên mong các bác hướng dẫn em làm bài này với về cả thuật toán và Code . Em mới nhập môn mới học đến LCD thôi ạ nên các bác làm ơn đơn giản dùm ạ , chứ em có tìm được vài bài trên diễn đàn về hiển thị thời gian trên LCD nhưng nhiều linh kiên quá , nhìn mà rối tung lên . Mong các bác giúp đỡ ạ !
Thông báo
Collapse
No announcement yet.
Newbie xin được các cao thủ chỉ giáo
Collapse
X
-
em dùng ngắt timer để đếm thời gian , ví dụ cho timer 50ms ngắt 1 lần thì sau 20 lần ngắt tăng biến giây 1 lần , tuơng tự cho giờ phút. Trong chuơng trình chính em chỉ điều khiển LCD thôi. Đó là thuật toán còn code thì anh ko rành lắm tại chưa viết cho avr.
còn lcd em xem trong link đưa kèm có hướng dẫn giao tiếp đầy đủ với LCD.
Link : http://vagam.dieukhien.net//user_upl.../LCD-VAGAM.rar
Comment
-
Giúp em với các anh ơi , chả hiểu sao cái con số hiển thị giây nó không chạy nữa , chỉ phần giờ thôi các anh ạ , phần ngày tháng em đang nghĩ dở
HTML Code:***************************************************** This program was produced by the CodeWizardAVR V2.03.9 Standard Automatic Program Generator © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 3/7/2012 Author : Tita Titon Company : Comments: Chip type : ATmega32 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 512 *****************************************************/ #include <mega32.h> #include <delay.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x12 ;PORTD #endasm #include <lcd.h> // Declare your global variables here #define UPG PINA.0 #define UPP PINA.1 #define UPS PINA.2 #define UPD PINA.3 #define UPM PINA.4 #define UPY PINA.5 unsigned char gio=0,phut=0,giay=0,ngay=1,thang=1,nam=10; unsigned int dinhthoi; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { #asm("cli") dinhthoi++; if(dinhthoi == 100) { dinhthoi=0; giay++; { if(giay==100) { giay=0; phut++; { if(phut==60) { phut=0; gio++; { if(gio==24) { gio=0; ngay++; { if(ngay==31) { ngay=1; thang++; { if(thang==12) { thang=1; nam++; } } } } } } } } } } } TCNT0=6; #asm("sei") } void hienthi (void) { lcd_gotoxy(0,0); lcd_putsf("TIME: "); lcd_gotoxy(6,0); lcd_putchar(48+gio/10); lcd_gotoxy(7,0); lcd_putchar(48+gio%10); lcd_gotoxy(8,0); lcd_putsf(":"); lcd_gotoxy(9,0); lcd_putchar(48+phut/10); lcd_gotoxy(10,0); lcd_putchar(48+phut%10); lcd_gotoxy(11,0); lcd_putsf(":"); lcd_gotoxy(12,0); lcd_putchar(48+giay/10); lcd_gotoxy(13,0); lcd_putchar(48+giay%10); lcd_gotoxy(0,1); lcd_putsf("DATE:"); lcd_gotoxy(5,1); lcd_putchar(48+ngay/10); lcd_gotoxy(6,1); lcd_putchar(48+ngay%10); lcd_gotoxy(7,1); lcd_putsf("-"); lcd_gotoxy(8,1); lcd_putchar(48+thang/10); lcd_gotoxy(9,1); lcd_putchar(48+thang%10); lcd_gotoxy(10,1); lcd_putsf("-"); lcd_gotoxy(11,1); lcd_putsf("2"); lcd_gotoxy(12,1); lcd_putsf("0"); lcd_gotoxy(13,1); lcd_putchar(48+nam/10); lcd_gotoxy(14,1); lcd_putchar(48+nam%10); } void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0xFF; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // 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: 1000.000 kHz // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x03; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; 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 // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // LCD module initialization lcd_init(16); #asm("sei") while (1) { // Place your code here hienthi(); if(!UPG) {delay_ms(50); gio++; if(gio>23) gio=0; } if(!UPP) {delay_ms(50); phut++; if(phut>59) phut=0; } if(!UPS) {delay_ms(50); giay++; if(giay>59) giay=0; } if(!UPD) {delay_ms(50); ngay++; if(ngay>31) ngay=1; } if(!UPM) {delay_ms(50); thang++; if(thang>12) thang=1; } if(!UPY) {delay_ms(50); nam++; if(nam>99) nam=0; }; } }
Last edited by quyenmovic; 08-03-2012, 03:58.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi LamVoNhấp nháy có thể do chu kỳ hoạt động bị rút ngắn quá dẫn đến không đủ nguồn nuôi ic, bác thử tăng giá trị tụ nguồn phụ nuôi ic và giảm giá trị điện trở hạn dòng cho nó xem có cải thiện không....
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 08:45 -
-
Trả lời cho Mạch tự động bật nguồnbởi nhathung1101Bác đúng là hệ Pháp, nên toàn quên chữ "d".
Nếu em được như bác, đúng 0h mới được stand by với hũ rượu và vợ thì tuyệt.
Nhưng đời không như là mơ, em và lão Đinh Vặn ngấm đủ mà.
Lão Đinh Vặn...-
Channel: Điện tử gia dụng
hôm nay, 00:17 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi nhathung1101Vì bản chất của nó hoạt động theo dòng. Áp chỉ để mức giới hạn.
Cứ hiểu như bạn khôn hơn 10 người, nhưng khả năng thu nhận kiến thức chỉ bằng 1/10 người khác, thì nó sẽ tự điều chỉnh thôi.-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 23:41 -
-
Trả lời cho Mạch tự động bật nguồnbởi nhathung1101Ựa... có lý...
Dưng mà lão chỉ dùng 1 con opto là nguy hiểm lắm.
Có khi nó on lúc lão với ấy ấy về nhà lúc vắng vợ thì khổ. Nên phải thêm cái mạch logic nữa mới được....-
Channel: Điện tử gia dụng
Hôm qua, 23:20 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi lct1610Bác có cách nào khác ngoài quấnlại/rút bớt vòng dây BA (và mua mới ) k nhỉ ? Tại gỡ ra cũng khá lằng nhằng và kì công...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 19:30 -
-
Trả lời cho Thắc mắc về hạ áp cho adapter laptopbởi mèomướpDạ với mức áp chênh lệch quá nhìu thì ngoài chỉnh hồi tiếp thì chú cần quấn lại thứ cấp biến áp nữa ạ. Tùy loại mà có thể sẽ khéo léo rút bớt vòng dây đỡ phải tách lõi ferit ạ...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 18:57 -
-
bởi lct1610E có adapter laptop cũ hiệu asus chạy tốt ,có đầu ra ổn định ở 19,4v dòng 3,42A ( công suất 60w). E định là hạ nó xuống 12v để cấp nguồn cho đầu camera. Và e đã thử bằng cách can thiệp vào phần hồi tiếp (sử dụng ic DAS001 hay TSM103W) thông...
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 18:44 -
-
bởi nguyendinhvanỞ đây thì cũng chỉ có mấy cái máy tập gym là cùng, vào Nhà máy thì không đủ tuổi, mà bài thực hành thì không đủ cơm trưa.
Mà mấy cái máy gym thì cần giải pháp đồng bộ tốt hơn là biện pháp chắp vá....-
Channel: Đặt hàng
26-12-2024, 23:12 -
-
Trả lời cho Mạch tự động bật nguồnbởi nguyendinhvanMấy cái hệ thống Minh Thông đó là tôi tránh xa.
Vì một ngày mình bấm nút La- bô mấy lần, bấm vào những giờ nào nó cũng lưu vào datalog.
Dễ lộ bảo mật.
...-
Channel: Điện tử gia dụng
26-12-2024, 23:00 -
-
Trả lời cho Mạch tự động bật nguồnbởi vi van phamĐinh Vặn và Nhà Thùng ngồi uống bia thì cúp điện. Đinh Vặn vào trạng thái stanby, cầm ly bia mà không uống được. Đến khi có điện, cảm biến của Đinh Vặn phát huy chức năng, cầm chai bia tu 1 hơi.
Nhà Thùng vào trạng thái stanby,...-
Channel: Điện tử gia dụng
26-12-2024, 07:47 -
Comment