![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#61 |
Nhập môn đệ tử
Tham gia ngày: May 2008
Bài gửi: 1
: |
Anh tinhthanthep oi!
- Em đang nghiên cứu về PIC8F877 - Anh co crack của MikroC ver 6 không? Nếu có gửi cho e với (soft và crack luôn nha a ) - Cho em xin mạch nguyên lý và chương trình lịch vạn niên Cảm ơn anh rất nhiều ! Email : jindo1287@yahoo.com Topic của arất hữu ích với tất cả mọi người. |
![]() |
![]() |
![]() |
#62 |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 3
: |
có anh nao giup minh với sao mình tạo Project bằng mikroc nhu file hướng dẩn của bac tinh thần thép nhưng lúc biên dịch nó k dich ra file hex , dó là pic 16F877A, còn nữa nếu muon tạo Project dể khi viết xong cho biên dịch ra file hex cho pic 18F452 thì làm thế nào có bác nào biết xin giup em
|
![]() |
![]() |
![]() |
#63 |
Nhập môn đệ tử
Tham gia ngày: Apr 2008
Bài gửi: 3
: |
![]() có bài viet nay em không hiểu và sau khi viết xong em dịch nó không ra file hex co anh nào biết nhờ chỉ giúp em cảm ơn nhiều
unsigned temp; unsigned short j; void Display_Temperature(unsigned int temp) { //... } Void main() { ADCON1 = 0xFF; PORTA = 0xFF; TRISA = 0xFF; PORB = 0; TRISB = 0; do { ow_Reset(&PORTA,5); ow_write(&PORTA,5,0xCC); ow_write(&PORTA,5,0x44); Delay_us(120); ow_Reset(&PORTA,5); ow_write(&PORTA,5,0xCC); ow_write(&PORTA,5,0xBE); Delay_us(400); j = ow_Read(&PORTA,5); temp = ow_Read(&PORTA,5); temp <<= 8; temp +=j; Display_Temperature(temp); Delay_ms(500); } while (1); }//~! |
![]() |
![]() |
![]() |
#64 |
Nhập môn đệ tử
Tham gia ngày: Mar 2008
Bài gửi: 1
: |
Bác tinhthanthep cho minh hỏi:
- ROM ngoài chỉ chứa giờ phút giây alarm phải không ? - Nếu thay bằng ROM của PIC luôn, thì làm thế nào ? Cảm ơn. |
![]() |
![]() |
![]() |
#65 |
Đệ tử 5 túi
Tham gia ngày: Mar 2008
Nơi Cư Ngụ: Bình Thạnh, TPHCM
Bài gửi: 98
: |
Code:
Lcd_Config(&PORTD,4,7,6,3,2,1,0); // các bạn xem sơ đồ mạch để hiểu được cách khai các tham số của hàm này Lcd_Cmd(Lcd_CLEAR); // xóa màn hình Lcd_Cmd(Lcd_CURSOR_OFF); // tắt con trỏ nhấp nháy của LCD void LCD_DISPLAY() { LCD_Out(1,1,"Hello"); // hiện chứ Hello bắt đầu ở dòng 1 cột 1 LCD_Out(2,1,"Picvietnam"); // hiện chữ Picvietnam bắt đầu ở dòng 2 cột
__________________
------------------------------------------------------------------- Cung cấp bo mạch thực hành Arduino và các mạch sáng tạo. Mời tham quan: https://www.facebook.com/eshop1109 Cung cấp dịch vụ order hàng từ Aliexpress Liên hệ: https://www.facebook.com/Mua-h%E1%BB...5265931515571/ |
![]() |
![]() |
![]() |
#66 | |
Đệ tử 5 túi
Tham gia ngày: Mar 2008
Nơi Cư Ngụ: Bình Thạnh, TPHCM
Bài gửi: 98
: |
![]() Trích:
bác ơi ! mình đã tìm được thư viện lệnh của LCD gòy! nhưng sao viết như bác chỉ mà nó chẳng xuất ra chữ nào hết có file kèm theo đây:
__________________
------------------------------------------------------------------- Cung cấp bo mạch thực hành Arduino và các mạch sáng tạo. Mời tham quan: https://www.facebook.com/eshop1109 Cung cấp dịch vụ order hàng từ Aliexpress Liên hệ: https://www.facebook.com/Mua-h%E1%BB...5265931515571/ |
|
![]() |
![]() |
![]() |
#67 | |
Đệ tử 5 túi
Tham gia ngày: Mar 2008
Nơi Cư Ngụ: Bình Thạnh, TPHCM
Bài gửi: 98
: |
![]() Trích:
ah còn con 24c04 của bác,trong proteus chỉ có 2 chân A1,A2 thôi ,đâu có tới 3 chân như của bác đâu? bác giải thích rõ chút ah! cảm ơn bác nha!
__________________
------------------------------------------------------------------- Cung cấp bo mạch thực hành Arduino và các mạch sáng tạo. Mời tham quan: https://www.facebook.com/eshop1109 Cung cấp dịch vụ order hàng từ Aliexpress Liên hệ: https://www.facebook.com/Mua-h%E1%BB...5265931515571/ |
|
![]() |
![]() |
![]() |
#68 | |
Đệ tử 5 túi
Tham gia ngày: Jan 2008
Bài gửi: 96
: |
Khởi tạo ds1307
Trích:
Theo "lịch vạn niên" của Bác Thép, mình còn thắc mắc 1 điều, nhờ các Huynh xem giúp: Trong hàm INIT_MAIN() có đoạn khởi tạo cho ds1307 như trên. Như thế cứ mỗi lần con PIC được cấp điện lại (mất điện lưới rồi có lại ấy !) thi đồng hồ lại bị Reset theo giá trị mình khởi tạo ban đầu cho nó. Thế hoá ra mỗi lần như vậy phải đi chỉnh lại giờ cho đồng hồ à ! Hay phải xử lý thế nào đây ? mong các Huynh chỉ giúp, xin cám ơn ! thay đổi nội dung bởi: minhsondaklak, 18-07-2008 lúc 10:43 AM. Lý do: lỗi chính tả |
|
![]() |
![]() |
![]() |
#69 |
Nhập môn đệ tử
Tham gia ngày: Jun 2008
Bài gửi: 3
: |
bác Tinhthanthep có thể gửi cho mình cái software và crack của Mickro C với nha. Cảm ơn bác nhiều lắm.Mail của mình là ghetnguoithu3@yahoo.com
|
![]() |
![]() |
![]() |
#70 |
Đệ tử 4 túi
Tham gia ngày: Aug 2006
Bài gửi: 81
: |
http://www.picvietnam.com/forum//showthread.php?t=2505
tìm trong diễn đàn trước rồi hãy hỏi nhé bạn ! ![]() |
![]() |
![]() |
![]() |
#71 |
Đệ tử 5 túi
Tham gia ngày: Jan 2008
Bài gửi: 96
: |
Mô phỏng "Lịch vạn niên" với proteus
Cùng thực hành với "lịch vạn niên"
|
![]() |
![]() |
![]() |
#72 |
Đệ tử 5 túi
Tham gia ngày: Jan 2008
Bài gửi: 96
: |
Khởi tạo ds1307
Hôm nay mình đã cho chạy trên mạch thực nghiệm, kết quả:
- Phần code khởi tạo cho ds1307 chỉ cho chạy 1 lần, để khởi tạo cho IC ds1307 - Sau đó phải xoá đoạn code này đi, biên dịch lại và nạp lại cho PIC thì OK !!! |
![]() |
![]() |
![]() |
#73 |
Đệ tử 6 túi
Tham gia ngày: Jul 2006
Bài gửi: 135
: |
con DS1307 có vùng ram cho người dùng tùy ý sử dụng, sao ta không đặt 1 giá trị bất kì (ví dụ 0xff) tại 1 ô nhớ nào đó (chẳng hạn tại 0x09). Trong hàm main, ta kiểm tra giá trị tại 0x09 của DS1307, nếu = 0xff thì nhảy đến vòng lặp chính, nếu khác thì gọi hàm thiết lập giá trị cho DS1307. Đây là cách mà tôi bẫy DS mỗi khi cúp điện.
|
![]() |
![]() |
![]() |
#74 |
Đệ tử 5 túi
Tham gia ngày: Jan 2008
Bài gửi: 96
: |
![]() Chào meishun !
Bạn có thể nói rõ hơn được không: Lệnh ghi giá trị 0xff vào địa chỉ 0x09 cho DS thì đặt ở đâu được ? |
![]() |
![]() |
![]() |
#75 |
Đệ tử 6 túi
Tham gia ngày: Jul 2006
Bài gửi: 135
: |
ví dụ hàm khởi tạo cho DS1307 tôi trích ra trong 1 project trước kia của tôi (do ưu tiên giao tiếp SPI cho MMC nên tôi thiết lập giao tiếp I2C bằng phần mềm, trình biên dịch MikroC)
Code:
void RTC_init() { unsigned char i,RTC_flag; // dat ba^~y DS1307 RTC_flag = RTC_get(0x08); // doc gia tri tại địa chỉ 0x08 của DS1307 . if(RTCflag!=0xFF) // neu ko phai 0xFF { RTC_setdate(0x21,0x07,0x08); // thi khoi tao gia tri cho DS1307 RTC_settime(0x14,0x30,0x00); Soft_I2C_Start(); // dat cau hinh cho DS Soft_I2C_Write(RTC_ID); Soft_I2C_Write(0x07); //dat con tro tai vi tri nay Soft_I2C_Write(0x10); // tao xung 1Hz tai chan so 7. Soft_I2C_Write(0xFF); // ghi giá trị 0xFF vào ô nhớ có địa chỉ 0x08; Soft_I2C_Stop(); } } unsigned char RTC_get(unsigned char addr); RTC_settime(unsigned char hh, unsigned char mm, unsigned char ss); RTC_setdate(unsigned char dd, unsigned char mm, unsigned char yy); - khi đó, trong hàm main(): Code:
void main() { // thiet lap PORT cho PIC // thiet lap gia tri cho cac thanh ghi chuc nang khac, v.v... RTC_init(); // goi ham khoi tao DS1307 - da co "trap". // cac ham khac .... while (1) { // hien thi hoac cac cong viec khac.... } } Thực tình, việc bẫy này cũng chỉ "khá" hiệu quả thôi. Tôi cung ko hiểu tại sao lâu lâu con DS1307 bị treo (?), một ngày mà cúp điện chừng 3-4 lần là nó chạy "tào lao" thôi. Có lẽ bị sốc nguồn chăng?? |
![]() |
![]() |
![]() |
|
|