Beispiel #1
0
//This function sets cursor position
void LCD_Cursor(unsigned char Row,unsigned char Col){
	switch(Row){
		case 1: LCD_Command(0x80+ Col -1);break;
		case 2: LCD_Command(0xC0+ Col -1);break;
		default: break;
	}
}
Beispiel #2
0
//LCDShow:在HD44780显示屏上显示数据----------------------------------------*
//功  能:在HD44780显示屏显示str所指向的32个数据                            *
//参  数:str=待显示的数组                                                  *
//返  回:无                                                                *
//内部调用函数:LCD_Command                                                 *
//-------------------------------------------------------------------------*
void LCDShow(INT8U str[])
{
    INT8U i;
    //1. LCD初始化
    LCDInit();
    //2. 显示第1行16个字符
    //2.1设置显示首地址
    LCDCtrl &= ~(1 << LCDRS);    //RS,R/W = 00(写的是指令)
    LCDCtrl &= ~(1 << LCDRW);
    LCD_Command(0x80);           //后7位为DD RAM地址(0x00)
    //2.2写16个数据到DD RAM
    LCDCtrl |=   1 << LCDRS;     //RS,R/W = 10(写的是数据)
    LCDCtrl &= ~(1 << LCDRW);
    //将要显示在第1行上的16个数据逐个写入DD RAM中
    for (i = 0;i < 16;i++)
    {
        LCD_Command(str[i]);
    }
    //3. 显示第2行16个字符
   	//3.1设置显示首地址
   	LCDCtrl &= ~(1 << LCDRS);    //RS,R/W = 00(写的是指令)
    LCDCtrl &= ~(1 << LCDRW);
    LCD_Command(0xC0);           //后7位为DD RAM地址(0x40)
    //3.2再写16个数据到DD RAM
    LCDCtrl |=   1 << LCDRS;     //RS,R/W = 10(写的是数据)
    LCDCtrl &= ~(1 << LCDRW);
    //将要显示在第2行上的16个数据逐个写入DD RAM中
    for (i = 16;i < 32;i++)
    {
        LCD_Command(str[i]);
    }
}
Beispiel #3
0
void LCDInit()
{
	LCD_PinInit();
	Delay_ms(20);
	GPIO_ResetBits(RS_Port, RS_Pin);
	LCD_Send(0x3);
	Delay_ms(5);
	LCD_Send(0x2);
	Delay_ms(5);
	LCD_Send(0x0);
	LCD_Command(0x28);
	LCD_Command(0x08);
	LCD_Command(0x01);
	LCD_Command(0x06);
	LCD_Command(0x0c);
}
/*============================================================================*/
void LCD_CreateChar(unsigned charnum, const unsigned char *chardata){
    unsigned char i;
    charnum &= 0x07;
    LCD_Command(E_SET_CGRAM_ADDR | (charnum << 3));
    for (i = 0; i < 8; i++)
    	LCD_Write(chardata[i]);
}
Beispiel #5
0
main(){
	DDRD = 0x3E;	// set keypad I/O data direction register

	NewKey = 0; 	// reset key variables
	LastKey = 0xFF;

	// Initialize the LCD
    LCD_Command(0x3C);                 // initialize command
    LCD_Command(0x0C);                 // display on, cursor off
    LCD_Command(0x06);
    LCD_Command(0x01);

    // Display Header Information on LCD
    LCD_Command(LINE_1);               // goto lcd line 1
    LCDprint("Keypad Test");
    LCD_Command(LINE_2);               // goto lcd line 2
    LCDprint("Press Keys");
    LCD_Command(LINE_3);               // goto lcd line 3

	// main loop .. endless
	for( ; ;){

		if(kbhit()){				// if new key pressed
			cprint(NewKey);			// display it
		}

	}
}
Beispiel #6
0
void LCD_Goto(char vrsta, char stolpec)
{
	char command;
	if(vrsta == 1) command = 0x80;
	else if(vrsta == 2) command = 0xc0; // Ne dela. Ne vem zakaj
	else return;
	
	command += stolpec;
	LCD_Command(command);
}
Beispiel #7
0
//LCDInit:初始化LCD函数----------------------------------------------------*
//功  能:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1                     *
//参  数:无                                                                *
//返  回:无                                                                *
//内部调用函数:LCD_Command                                                 *
//-------------------------------------------------------------------------*
void LCDInit(void)
{
    INT16U i;
    //定义数据口(PTB0-7)为输出
    LCDData_D = 0xFF;          //数据口为输出
    //定义控制口(PTC0-2)为输出
    LCDCtrl_D |= (1<<LCDE);
    LCDCtrl_D |= (1<<LCDRS);
    LCDCtrl_D |= (1<<LCDRW);
    //设置指令
    LCDCtrl &= ~(1<<LCDRS);    //RS、R/W=00,写指令
    LCDCtrl &= ~(1<<LCDRW);    
    LCD_Command(0x38);
               //||||||||____ 可设任意值(0/1)
               //||||||______ F  = 0,5*7点阵模式
               //|||||_______ N  = 1,2行显示
               //||||________ DL = 1,8位数据总线
               //|||_________ 固定为001
    LCD_Command(0x08);         //关显示,关光标显示,不闪烁	
    LCD_Command(0x01);         //清屏
    for (i=0; i<20000; i++);    //延时>1.6ms
    LCD_Command(0X06);
    LCD_Command(0x14);         //光标右移一个字符位,AC自动加1
    LCD_Command(0x0C);         //开显示,关光标显示,不闪烁
}
/*==================================================================================================================================================================================*/
void LCD_Init( void (*RS_Control)(unsigned char c), void (*RW_Control)(unsigned char c), void (*EN_Control)(unsigned char c), void (*DataControl)(unsigned char c), void (*WaitusFcn)(unsigned int time)){
    __lcd_dvr_io_pins.RS_Control = RS_Control;
    __lcd_dvr_io_pins.RW_Control = RW_Control;
    __lcd_dvr_io_pins.EN_Control = EN_Control;
    __lcd_dvr_io_pins.DataControl = DataControl;
    __lcd_dvr_io_pins.WaitusFcn = WaitusFcn;
    __lcd_dvr_io_pins.EN_Control(0);
    __lcd_dvr_io_pins.RS_Control(0);
    if(__lcd_dvr_io_pins.RW_Control!=NULL)  __lcd_dvr_io_pins.RW_Control(0);
    __lcd_dvr_io_pins.WaitusFcn(LCD_INIT_DELAY_US);

    LCD_IOWrite4(0x03);
    __lcd_dvr_io_pins.WaitusFcn(5);
    LCD_Strobe();
    __lcd_dvr_io_pins.WaitusFcn(200);
    LCD_Strobe();
    __lcd_dvr_io_pins.WaitusFcn(200);
    LCD_IOWrite4(0x02);
    __lcd_dvr_io_pins.WaitusFcn(120);
    LCD_Command(E_FUNCTION_SET | BIT_DL_DATALENGTH_4 | BIT_N_DISP_LINES_2 | BIT_F_FONT_5_10);
    LCD_Command(E_DISPLAY_ON_OFF_CTRL | BIT_D_DISPLAY_OFF);
    LCD_Command(E_CLEAR_DISPLAY);
    LCD_Command(E_ENTRY_MODE_SET | BIT_S_AUTOSCROLL_OFF | BIT_ID_INCREMENT_CURSOR);
}
int main(void)
{
	binToDecDigits(1234, display, 4);
	
    scheduler_init(display);
	serial_init(onReceive);
	
	scheduler_addPeriodicTask(sendText, 5000);
	
	LCD_Initalize();
	LCD_Command(HD44780_DISPLAY_ONOFF|HD44780_DISPLAY_ON);
	LCD_Text("Ala ma kota!");
	
	scheduler_run();
}
Beispiel #10
0
int main()
{
 PINSEL0 = 0x00000000;
 PINSEL1 = 0x00000000;
 //PINSEL2 = 0x00000000;
 Init_Peripherals();
 adc_data();
 DelaymSec(40);
 Init_Peripherals();
 LCD_4Bit_Mode();
 LCD_Init();
 LCD_Command(0x01);
 DelaymSec(15);
 
 
  while(1)
  {
  xTaskCreate(IR1,"IR1",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR1);
  xTaskCreate(IR2,"IR2",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR2);
  xTaskCreate(IR3,"IR3",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR3);
  xTaskCreate(IR4,"IR4",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR4);
  xTaskCreate(IR5,"IR5",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR5);
  xTaskCreate(IR6,"IR6",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR6);
  xTaskCreate(IR7,"IR7",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR7);
  xTaskCreate(IR8,"IR8",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR8);
  xTaskCreate(IR2_IR3,"IR2_IR3",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR2_IR3);
  xTaskCreate(IR3_IR4,"IR3_IR4",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR3_IR4); 
  xTaskCreate(forward,"forward",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xforward);
  xTaskCreate(IR2_IR3_IR4,"IR2_IR3_IR4",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xIR2_IR3_IR4);
  xTaskCreate(lcdprint,"Display",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY+1,&xdisplay);
 	
   
	vTaskStartScheduler();  
   	   

  }
}
Beispiel #11
0
void LCD_Cursor_ShiftRight()
{
    LCD_Command(0x14);
}
Beispiel #12
0
void LCD_DisplayOn_CursorAndBlinkOn()
{
    LCD_Command(0x0f);
}
Beispiel #13
0
void LCD_Cursor_ShiftLeft()
{
    LCD_Command(0x10);
}
Beispiel #14
0
void LCD_DisplayOn_CursorAndBlinkOff()
{
    LCD_Command(0x0c);
}
Beispiel #15
0
void LCD_DisplayOn_CursorOnBlinkOff()
{
    LCD_Command(0x0e);
}
Beispiel #16
0
//This Function puts LCD cursor to Home position
void LCD_Home(void)
{
 LCD_Command(0x80);
}
/*============================================================================*/
void LCD_ScrollPos(unsigned char left_rigth){
    LCD_Command(E_CURSOR_DISPLAY_SHIFT | BIT_SC_SHIFT_DISPLAY | ((left_rigth)? BIT_RL_SHIFT_LEFT: BIT_RL_SHIFT_RIGHT));
}
Beispiel #18
0
void LCD_CursorDecrement_ShiftOn()
{
    LCD_Command(0x05);
}
Beispiel #19
0
void LCD_CursorIncrement_ShiftOff()
{
    LCD_Command(0x06);
}
/*============================================================================*/
void LCD_Cursor(enum enLCDCursorModes mode){
    __lcd_dispctrl &= 0xFC;
    __lcd_dispctrl |= mode;
    LCD_Command(E_DISPLAY_ON_OFF_CTRL | __lcd_dispctrl);
}
Beispiel #21
0
void LCD_CursorDecrement_ShiftOff()
{
    LCD_Command(0x04);
}
Beispiel #22
0
// Clear display, cursor to home
void LCD_Clear()
{
    LCD_Command(0x01);
}
Beispiel #23
0
// Display Function (default 2x40 size)
void LCD_DisplayFunction()
{
    LCD_Command(0x3c);
}
Beispiel #24
0
void LCD_Display_ShiftRight()
{
    LCD_Command(0x1c);
}
Beispiel #25
0
void LCD_Display_ShiftLeft()
{
    LCD_Command(0x18);
}
Beispiel #26
0
void LCD_CursorIncrement_ShiftOn()
{
    LCD_Command(0x07);
}
Beispiel #27
0
//This function enables LCD's internal funcions
void LCD_Init(void)
{
 LCD_Command(0x28);
 LCD_Command(0x0C);
 LCD_Command(0x06);
}
Beispiel #28
0
// Display, cursor and blink off
void LCD_DisplayOff()
{
    LCD_Command(0x08);
}
Beispiel #29
0
void LCD_CursorHome()
{
    LCD_Command(0x02);
}
/*============================================================================*/
void LCD_AutoScroll(unsigned char on_off){
    LCD_Command(E_ENTRY_MODE_SET | ((on_off)? BIT_S_AUTOSCROLL_ON:BIT_S_AUTOSCROLL_ON) | BIT_ID_INCREMENT_CURSOR);
}