PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 21-06-2013, 09:24 PM   #1
huyphuc92
Nhập môn đệ tử
 
Tham gia ngày: Apr 2013
Bài gửi: 5
:
Post Trợ giúp hiển thị số trên LCD

Đoạn code của em như sau:

//----------------------------------------------------------------------------------------
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=12Mhz)
#include <lcd_lib_4bit.h>
int8 tram,chuc,donvi,nghin;
int16 temp;

//----------------------------------------------------------------------------------------

void main()
{
set_tris_d(0x00);
set_tris_b(0b01);
LCD_init();
while(TRUE)
{
int i;
for(i=0;i<9999;i++)
{
nghin = i / 1000;
temp = i % 1000;
tram = temp / 100;
temp = temp % 100;
chuc = temp / 10;
donvi = temp % 10;

LCD_putcmd(128);
Printf(LCD_putchar"i=%u",nghin);
LCD_putcmd(131);
Printf(LCD_putchar"%u",tram);
LCD_putcmd(132);
Printf(LCD_putchar"%u",chuc);
LCD_putcmd(133);
Printf(LCD_putchar"%u",donvi);
//delay_ms(10);
}
}
}

Tình hình là nó chạy đến 255 lại quay về 0 ???
Anh/chị nào chỉ giúp em với, làm sao cho nó chạy hơn 255 giờ?
Thông cảm giúp em nha, em mới đụng vào VDK, mà trình độ C lại gần = 0.

thay đổi nội dung bởi: huyphuc92, 21-06-2013 lúc 09:30 PM. Lý do: Sai chính tả
huyphuc92 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-06-2013, 12:03 AM   #2
huyphuc92
Nhập môn đệ tử
 
Tham gia ngày: Apr 2013
Bài gửi: 5
:
Nhân tiện em hỏi luôn.
Em viết được đoạn code sau:

// Truong trINH dieu khien dong co buoc 1.8* quay 1 vong thì dao chieu, lap di lap lai, HIEN THI LCD SO BUOC.
// a1 = B0
// a2 = B1
// b1 = B2
// b2 = B3
// LCD:
// D7 = RD7
// D6 = RD6
// D5 = RD5
// RS = RD2
// RW = GND
// E = RD3

//-------------------------------------------------------------------------------------------------------------------------------------------------------------

#include<16f877a.h>
#include<def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=12000000)
#include<lcd_lib_4bit.h>
#byte PORTA=0x05
#byte PORTB=0x06
#byte PORTC=0x07
#byte PORTD=0x08
#byte PORTE=0x09
#use fast_io(b)
#use fast_io(d)
void main(void)
{
LCD_init();
set_tris_d(0);
while(true)
{
int i=99; // Khoi tao i la so nguyen 16bit, i ban dau = 99
LCD_putcmd(128);
Printf(LCD_putchar"step x 8 =");

//-------------------------------------------------------------------------------------------------------------------------------------------------------------
// QUAY THUAN

for(;i>=49;i--) // Vong lap quay thuan, stepper 1.8* quay 1 vong = 400 buoc, 1 vong lap co 8 buoc, nen can 50 vong lap
{
set_tris_b(0);
output_low(PIN_B0); // buoc 1 - cuon a1
delay_ms(50);
output_low(PIN_B2); // buoc 2 - mo cuon b1 = 02 ( a1+b1)
delay_ms(50);
output_high(PIN_B0); // tat a1
delay_ms(50);
output_low(PIN_B1); // mo a2 = 21 ( b1+a2)
delay_ms(50);
output_high(PIN_B2); // tat b1
delay_ms(50);
output_low(PIN_B3); // mo b2 ( a2+b2)
delay_ms(50);
output_high(PIN_B1); // tat a2
delay_ms(50);
output_low(PIN_B0); // mo a1 ( a1+b2)
delay_ms(50);
output_high(PIN_B3); // tat b2
LCD_putcmd(138);
Printf(LCD_putchar"%u",i);
}

//-------------------------------------------------------------------------------------------------------------------------------------------------------------
// QUAY NGHICH

for(;i<49;i--)
{
set_tris_b(0);
output_low(PIN_B0);
delay_ms(50);
output_low(PIN_B3);
delay_ms(50);
output_high(PIN_B0);
delay_ms(50);
output_low(PIN_B1);
delay_ms(50);
output_high(PIN_B3);
delay_ms(50);
output_low(PIN_B2);
delay_ms(50);
output_high(PIN_B1);
delay_ms(50);
output_low(PIN_B0);
delay_ms(50);
output_high(PIN_B2);
LCD_putcmd(138);
Printf(LCD_putchar"%u",i);
}
LCD_putcmd(0x01); // XOA MAN HINH LCD
}
}

// END
//-------------------------------------------------------------------------------------------------------------------------------------------------------------


Em đặt được giá trị cho i rồi, giờ em muốn dùng nút nhấn đặt tại chân RA0 để nhập giá trị cho i, rồi dùng nút start để khởi động động cơ ( chưa bấm start thì không nhúc nhích gì ).

Anh/chị nào chỉ em làm vậy với, gợi ý cũng được, viết dùm em đoạn code cũng được.

À, em hỏi tí, làm sao poss được đoạn code dạng txt vào giữa bài nhỉ?

Đừng chê em kém nha, em mới tập tọe thui, với lại em đang ôn thi tốt nghiệp, tranh thủ lúc rảnh rỗi học PIC.
File Kèm Theo
File Type: zip huyphuc92.zip (17.8 KB, 1 lần tải)

thay đổi nội dung bởi: huyphuc92, 22-06-2013 lúc 12:25 AM. Lý do: Poss nhầm code
huyphuc92 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-06-2013, 11:31 AM   #3
huyphuc92
Nhập môn đệ tử
 
Tham gia ngày: Apr 2013
Bài gửi: 5
:
Talking

Hehe, nghĩ ra câu 1 rồi, int16 i;
huyphuc92 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-07-2013, 08:43 AM   #4
hunke92
Nhập môn đệ tử
 
Tham gia ngày: Jul 2013
Bài gửi: 6
:
các huynh ơi !cho đệ hoỉ cách viết code để viết chữ có dấu trên Lcd 16x2 được k?
hunke92 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 04:43 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam