đồng hồ kỹ thuật số sử dụng picbasic pro

J

jojokatada

Guest
i hi tất cả mọi người muốn thực hiện kỹ thuật số sử dụng đồng hồ hiển thị picmcu trên LCD với thời gian và ngày.i đã tìm thấy một số trang web, nhưng nó không được viết bằng pbp và được đăng trong tập tin hex như vậy tôi không thể sử dụng chương trình con.
i cũng được tìm thấy trong các diễn đàn edaboard nhưng chủ yếu là không sutiable cho dự án của tôihttp://hobby_elec.piclist.com/e_clock_v2.htmhttp://www.josepino.com/6/index.htmlhãy giúp các sơ đồ và chương trình con

đánh giá cao

 
Bạn có biết cách sử dụng timer / quầy của PIC không?

Nếu có thì bây giờ bạn có thể tạo một đồng hồ kỹ thuật số.

Một đồng hồ kỹ thuật số là gì, nhưng một vòng lặp và thói quen tăng và thiết lập lại một thói quen.

Tôi nghĩ rằng PICBasic có thói quen sẵn sàng cho interfacing vào màn hình LCD và bàn phím.

 
Chào!

Khi tôi đã tạo ra một đồng hồ kỹ thuật số nhị phân (với led cho thời gian và ngày trong tuần) sử dụng một 16F628 (A).Sử dụng màn hình LCD với PBP là dễ dàng hơn vì bạn không phải lo lắng về led ghép kênh, chỉ cần sử dụng LCDOUT DEFINE lệnh và các chân kết nối với LCD.

Tôi nghĩ rằng 16F628 (A) là rất thích hợp cho các dự án của bạn.Bạn có thể sử dụng PBP nhưng thường lệ thời gian chính xác phải lắp ráp (lắp vào các chương trình cơ bản).Tôi đã sử dụng một ngắt từ TMR1 này.Load TMR1 đăng ký với các giá trị được định nghĩa và tràn TMR1 everytime 2 lần (mỗi 0.5s trong dự án của tôi) tăng biến giây.Những thói quen cần được ngắt trong lắp ráp vì cơ bản có độ trễ để ngắt, những gì có thể thỏa hiệp với độ chính xác.Không cần nhiều hơn một xtal (tôi sử dụng 4MHz XT cho Dao động chính), nhưng oscillator PIC phải được Xtal, như tiếng kêu vang gốm và RC hoặc tạo dao động nội bộ không đủ cho đồng hồ.

Trong thói quen cơ bản, chỉ cần tạo ra các biến cho giờ, phút, giây và ngày.Tăng và rõ ràng các biến khi các giá trị nhất định đang đạt được.Chỉ cần nó.Một thói quen để điều chỉnh và thiết lập các giá trị phải được thực hiện.Sử dụng 3 nút bấm để làm điều đó.Một trong số họ gọi thường trình điều chỉnh, giá trị còn lại của hai lựa chọn và thiết lập.Một lựa chọn là kết nối một buzzer cho tôi một / O port để làm một báo động âm thanh.

 
hi rkodaira

bạn có thể chia sẻ mã của bạn.
i có nghĩa là các chương trình con?

 
Hi Jojo!

Chắc chắn tôi có thể cung cấp cho bạn gián đoạn code của tôi (chèn nó trong đầu của chương trình cơ bản):

ASM
Myint
Movwf wsave
SWAPF STATUS, W
Clrf STATUS
Movwf ssave
Movf PCLATH, W
Movwf psave
Movlw 221
Movwf TMR1L
Movlw 11
Movwf TMR1H
BCF PIR1, 0
INC halfsec
BTFSS halfsec, 1
GOTO xxx
Clrf halfsec
INC unsec
xxx movf psave, W
Movwf PCLATH
SWAPF ssave, W
Movwf STATUS
SWAPF wsave, F
SWAPF wsave, W
BSF interr, 0
RETFIE

ENDASM

=============================================
Và những dòng cơ bản:

INTCON =% 11000000 'bật Gie và PEIE
T1CON =% TMR1 Cấu hình 00.110.101 'với đồng hồ / 4 và prescaler 1 / 8
PIE1.0 = 1 'cho phép ngắt tràn TMR1

================================================
wsave, psave, ssave là byte biến (hệ thống)
halfsec, unsec và interr là các biến byte
interr chỉ là một biến cờ nói rằng nếu các ngắt thường lệ đã được chạy (rất hữu ích nếu bạn đang ở trong một thói quen cơ bản và cần phải đi để gây cản trở dòng inicialization)

Lưu ý rằng trước hết, các ngắt thói quen tiết kiệm W, PCL và Tình trạng nội dung và khôi phục chúng sau khi thói quen chính là chạy.

Những thói quen làm việc với các đồng hồ chính 4MHz.Vì vậy, mỗi chỉ lệnh sẽ chi 1us
Tôi nạp TMR1 đăng ký với giá trị 11 * 256 221 = 3037, do đó, TMR1 sẽ tràn sau khi 65.536-3.037 = 62.499 đếm.Như tôi đặt prescaler đến 1 / 8, có nghĩa là 62.499 tính sẽ chi 62499 * 8 thời gian của đồng hồ / 4 = 62499 * 8us = 499.992 chúng tôi, chỉ cần thêm 8us dành cho đến khi TMR1L movlw và bạn có 500.000 hệ = 0.5s đếm chính xác.Chỉ cần thêm một biến Auxiliar (halfsec) và tăng các đơn vị (unsec giây) biến mỗi hai đếm trên halfsec.Bạn có biến unsec incremented mỗi 1s.Unsec là cơ sở cho phần còn lại của đồng hồ.Mỗi unsec thời gian đạt đến 60, bạn rõ ràng nó và biến phút tăng, cùng với phút biến.mỗi khi đạt đến 60, bạn giờ tăng biến, vv.Chỉ cần gửi các biến đến các LCD.

 
đánh giá cao cho sourcecode nhưng tôi có một hardtime hiểu của nó

 
ai hiểu lệnh này giải thích cho em với
DQ_IN          VAR PORTE.2
DQ ở đây nghĩa là gì vậy ạ?
 

Welcome to EDABoard.com

Sponsor

Back
Top