PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

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

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 27-03-2009, 04:25 PM   #9
silvadk2
Đệ tử 2 túi
 
Tham gia ngày: Nov 2008
Bài gửi: 42
:
Đây là code của em, đo nhiệt độ đưa vào RB8 rồi hiển thị ra LCD, nhưng sao dòng 2 chỉ hiện ra là 0. Em không biết là sai chỗ nào, hic

Code:
#include	<p30f4011.h>
#include 	<string.h>
#include 	<stdio.h>

_FOSC(CSW_FSCM_OFF & HS);	
_FWDT(WDT_OFF);				
_FBORPOR(MCLR_EN & PBOR_ON & BORV_27);
_FGS(CODE_PROT_OFF);		

#define		LCD_EN		LATFbits.LATF2		//Tin hieu Enable cho LCD, chan RF2
#define		LCD_RS		LATFbits.LATF6		//Tin hieu Reset cho LCD, chan RF6
#define		LCD_RW		LATFbits.LATF3		//Tin hieu doc ghi cho LCD, chan RF3
#define 		RW_TRIS 	 TRISFbits.TRISF3
#define 		RS_TRIS 		TRISFbits.TRISF6
#define		E_TRIS 		TRISFbits.TRISF2
#define 		LCD_PORTB 	PORTB
#define		LCD_DATA	LATB				//Cac tin hieu Data cho LCD
#define		LCD_TRIS	TRISB				//Tristate cua cac tin hieu Data cho LCD

#define		LCD_CLEAR		0x01		//Xoa man hinh LCD
#define		LCD_HOME		0x02		//Tro ve dau dong
#define		LCD_NORMAL		0x06		//Che do nhap du lieu binh thuong
#define		LCD_NORMAL_S	0x07		//Che do nhap du lieu binh thuong, dich man hinh
#define		LCD_OFF 		0x08		//Tat man hinh
#define		LCD_ON	 		0x0C		//Bat man hinh
#define		LCD_ON_CRSR 	0x0E		//Bat man hinh va con tro
#define		LCD_ON_BLINK 	0x0F		//Bat man hinh va con tro (nhap nhay)
#define		LCD_8B2L		0x38		//Che do 2 dong, giao tiep 8 bit du lieu
#define		LCD_HOMEL1		0x80		//Ve dau dong 1
#define		LCD_HOMEL2		0xC0		//Ve dau dong 2

#define		ShortDelay()	{Nop() Nop() Nop() Nop() Nop() Nop() Nop() Nop() Nop()}
//***************************************************************************//
unsigned int ADCValue;


//***************************************************************************//
//
//	Function:		LCDdelayms
//	Description:	LCDdelayms for LCD		
//	Input:			Number of ms
//	Output:			None
//
//***************************************************************************//
void LCDdelayms(unsigned int ms)
{
	#define		FCY				2500*4
	unsigned int i=0;
	while(ms--){while(++i<FCY/7);	i=0;}
}
//*************************** END OF LCDDELAYMS ****************************//

void LCD_CMD(unsigned char CMD)
{

	LCD_RW=0;
	LCD_RS = 0;	
    LCD_DATA = CMD;						
	LCD_EN = 1;	ShortDelay();	LCD_EN = 0;
		
}
//************************* End of LCD_CMD *********************************//

void LCD_DAT(unsigned char DATA)
{
	LCD_RW=0;
	LCD_RS = 1;	
    LCD_DATA = DATA;						
	LCD_EN = 1;	ShortDelay();	LCD_EN = 0;	//Xung Enable
	
}
//****************************** END OF LCD_DATA ****************************//



void InitLCD(void)
{
	LCD_CMD(LCD_8B2L);			//Dat che do giao tiep 8-bit, man hinh 2 dong
	LCDdelayms(1);
	LCD_CMD(LCD_8B2L);			//Dat che do giao tiep 8-bit, man hinh 2 dong
	LCDdelayms(1);
	LCD_CMD(LCD_8B2L);			//Dat che do giao tiep 8-bit, man hinh 2 dong
	LCDdelayms(1);
	LCD_CMD(LCD_OFF);			//Tat man hinh
	LCDdelayms(1);
	LCD_CMD(LCD_CLEAR);			//Xoa man hinh
	LCDdelayms(1);
	LCD_CMD(LCD_ON);			//Bat man hinh
	LCDdelayms(1);
	LCD_CMD(LCD_NORMAL);		//Che do nhap lieu binh thuong
								//Cursor move Increment, Not to shift the display
	LCDdelayms(1);
	LCD_CMD(LCD_CLEAR);			//Xoa man hinh
	LCDdelayms(5);
}
//************************** END OF InitLCD *********************************//

void LCD_PutChar(unsigned char character)
{
		LCD_DAT(character);
	LCDdelayms(1);
}
//************************** END of LCD_PutChar *****************************//

void LCD_WriteString(const char *str)
{
//	LCDdelayms(1);
	char ps;
	ps = *str;		
	while(ps>0)		
	{
		str++;			
		if (ps==0) break;
		LCDdelayms(1);
		LCD_DAT(ps);		
    	ps = *str;		
	}	
}
//*********************** END OF LCD_Writestring ****************************//



void LCD_Gotoxy(char x, char y)
{
	char tg;
	LCDdelayms(5);
    switch (y)
	{
		case 1:tg = 0x80+x;
			break;
		case 2:tg = 0xC0+x;
			break;
    }
	LCD_CMD(tg);
}
//************************* END OF LCD_Gotoxy *******************************//

void LCD_Clear(void)
{
	LCD_CMD(LCD_CLEAR);
}

void SystemInit(void)
{
	//Init IO
	TRISB = TRISB & 0xFF00;		//RB0..RB7 Output.
	TRISBbits.TRISB8 = 1;
	TRISFbits.TRISF6 = 0;		
	TRISFbits.TRISF2 = 0;		
	TRISFbits.TRISF3 = 0;		
	LATB = 0xFF00;
	LATFbits.LATF6 = 0;		
	LATFbits.LATF2 = 0;
	LATFbits.LATF3 = 0;		
		//InitLCD
	InitLCD();
}
//******************************* End of SystemInit *************************//
void Init_ADC10(void) {
	ADPCFG = 0xFEFF;		//Cac chan khac la digital, chan AN8/RB8 la analog

	ADCON1 = 0x0040;		//Timer 3 cham dut lay mau va kich hoat
							//viec chuyen doi A/D
	ADCON2 = 0;
	ADCHS =  0x0008 ;				//Kenh 0 doc tin hieu giua AN8 va AVss
	ADCSSL = 0;				//Khong quet cac ngo vao
	ADCON3 = 0x0103;		//Dung 1 TAD cho lay mau, dung clock he thong,
	TMR3 = 0;				//Xoa thanh ghi dem cua Timer 3
	PR3 = 0x03E8;			//Nguong delay cho TMR3 la khoang 1 ms
	T2CON = 0x8010;			//Prescale = 1:8, bat cho TMR3 chay

	_ADIF = 0;				//Xoa co ngat ADC
	_ADIE = 1;				//Cho phep ngat ADC
	_ADON = 1;				//Bat module ADC
	_ASAM = 1;				//Khoi dong che do tu dong lay mau
}
void _ISR _ADCInterrupt(void)
{
	ADCValue = ADCBUF0 ;		
	_ADIF = 0;
}
int main(void)
{
	int ADCVoltage;
	char Nhietdo[40];
	ADPCFG = 0xFEFF; 
	SystemInit();
	Init_ADC10();
	LCD_Gotoxy(1,1);	
	LCD_WriteString("nhiet do la");	
	LCDdelayms(10);
	LCD_Gotoxy(3,2);
	ADCVoltage=ADCValue/2;
	sprintf(Nhietdo, "%d",ADCVoltage );
	LCD_WriteString(Nhietdo);
	
	while(1);		//Dung chuong trinh.
}
//********************************* End of Main *****************************//

thay đổi nội dung bởi: namqn, 27-03-2009 lúc 06:20 PM.
silvadk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Tags
dspic30f adc, dspic30f pwm

Ðiều Chỉnh
Xếp Bà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

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
dsPIC Tutorial 3-Đọc ngõ vào và giao tiếp LCD namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 92 19-02-2017 11:15 PM
dsPIC Tutorial 2-Các kỹ thuật cơ bản namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 33 17-10-2013 11:09 PM
dsPIC Tutorial 1-Tạo và biên dịch một project (ASM30) namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 16 22-08-2012 12:35 AM
dsPIC Tutorial 4-Module UART và I2C namqn dsPIC - Bộ điều khiển tín hiệu số 16-bit 76 09-05-2012 10:55 AM
RF module khanh_pic Tìm mua sản phẩm 22 20-08-2007 11:25 AM


Múi giờ GMT. Hiện tại là 05:02 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