<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=30&amp;t=14059&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-01-11T20:35:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=14059&amp;mode</id>
<entry>
<author><name><![CDATA[jerzyk31]]></name></author>
<updated>2016-01-11T20:35:53+01:00</updated>
<published>2016-01-11T20:35:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=150287#p150287</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=150287#p150287"/>
<title type="html"><![CDATA[Re: [PIC18F][LCD 8bit] Prośba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=150287#p150287"><![CDATA[
Dzięki za poradę. Poniżej plik z bitami konfiguracyjnymi:<br /><br />main.h<br />[syntax=c]#pragma config PLLDIV = 5<br />#pragma config CPUDIV = OSC4_PLL6<br />#pragma config FOSC = HS    <br />#pragma config USBDIV = 1          <br />#pragma config IESO = OFF        <br />#pragma config PWRT = OFF        <br />#pragma config BOR = OFF        <br />#pragma config VREGEN = OFF  <br />#pragma config WDT = OFF<br />#pragma config PBADEN = OFF      <br />#pragma config LPT1OSC = OFF         <br />#pragma config MCLRE = ON                  <br />#pragma config LVP = OFF     <br />#pragma config ICPRT = OFF       <br />#pragma config XINST = OFF       <br />#pragma config DEBUG = OFF<br />#pragma config WRTD = OFF[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3173">jerzyk31</a> — 11 sty 2016, o 20:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2016-01-02T13:15:27+01:00</updated>
<published>2016-01-02T13:15:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=149410#p149410</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=149410#p149410"/>
<title type="html"><![CDATA[Re: [PIC18F][LCD 8bit] Proźba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=149410#p149410"><![CDATA[
<!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 2 sty 2016, o 13:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jerzyk31]]></name></author>
<updated>2016-01-04T20:03:31+01:00</updated>
<published>2016-01-02T12:12:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=149406#p149406</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=149406#p149406"/>
<title type="html"><![CDATA[[PIC18F][LCD 8bit] Prośba o sprawdzenie kodu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14059&amp;p=149406#p149406"><![CDATA[
Witam,<br /><br />proszę o sprawdzenie i napisanie dlaczego nie działa mi tryb 8 bitowy. Korzystałem z książki Mirka, z informacji jakie &quot;onkel okular&quot; proponował i nadal lipa. Tryb 4bitowy działa bez zarzutu a 8 bitów albo mam krzaki albo nic nie mam (czarne kwadraty).<br /><br />Dodam, że używam kompilatora XC8, uC: PIC18F4550<br /><br />Z góry dziękuję za pomoc.<br /><br />Plik LCD44780.h<br />[syntax=c]/* <br /> * File:   LCDHD44780.h<br /> * Author: jerzyk<br /> *<br /> * Created on 3 listopad 2015, 17:52<br /> */<br /><br />#include &lt;htc.h&gt;<br />#include &lt;xc.h&gt;<br /><br />#ifndef _XTAL_FREQ<br />#define _XTAL_FREQ  20000000<br />#endif<br /><br />#define LCD_RW_PIN 'P' // 'P' -&gt; assigned to pin or 'G' if ground<br /><br />#define LCD_4BIT 0<br />#define LCD_8BIT 1<br /><br />#define LCD_SET_BAR 0<br /><br />#define LCD_RS_DIR  TRISCbits.TRISC6<br />#define LCD_RS      PORTCbits.RC6<br />#define LCD_EN_DIR  TRISCbits.TRISC7<br />#define LCD_EN      PORTCbits.RC7<br /><br />#if (LCD_RW_PIN == 'P')<br />#define LCD_RW_DIR      TRISCbits.TRISC0<br />#define LCD_RW          PORTCbits.RC0<br />#endif<br /><br />#if LCD_8BIT<br />#define LCD_DATA_DIR    TRISD<br />#define LCD_DATA_PORT   PORTD<br />#define LCD_D7          PORTDbits.RD7<br />#endif<br /><br />#if LCD_4BIT<br />#define LCD_DB4_DIR  TRISDbits.TRISD4<br />#define LCD_DB4      PORTDbits.RD4<br />#define LCD_DB5_DIR  TRISDbits.TRISD5<br />#define LCD_DB5      PORTDbits.RD5<br />#define LCD_DB6_DIR  TRISDbits.TRISD6<br />#define LCD_DB6      PORTDbits.RD6<br />#define LCD_DB7_DIR  TRISDbits.TRISD7<br />#define LCD_DB7      PORTDbits.RD7<br />#endif<br /><br />/************** Line Addr Mapping ******************/<br />#define LCD_LINE1 0x80<br />#define LCD_LINE2 0xC0<br />#define LCD_LINE3 0x94<br />#define LCD_LINE4 0xD4<br /><br />/************ LCD Command Mapping *****************/<br />#define LCD_CMD_CLS         0x01<br />#define LCD_CMD_HOME        0x02<br />#define LCD_CMD_CURSOR_ON   0x0a<br />#define LCD_CMD_CURSOR_OFF  0x08<br />#define LCD_CMD_CURSOR_INC  0x06<br />#define LCD_CMD_DSP_ON      0x0c<br />#define LCD_CMD_DSP_OFF     0x08<br />#define LCD_OP_8BIT         0x38<br />#define LCD_OP_4BIT         0x28<br /><br /><br />const char _LCD_bar&#91;6&#93;&#91;8&#93; = {<br />    {0x00,0x00,0x00,0x00,0x00,0x00,0x00},<br />    {0x10,0x10,0x10,0x10,0x10,0x10,0x10},<br />    {0x18,0x18,0x18,0x18,0x18,0x18,0x18},<br />    {0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e},<br />    {0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f}<br />};<br /><br />const char _LCD_dataBank&#91;8&#93; = { 0x80,0x81,0x82,0x83,0x84,0x85,0x86 };<br />const char _LCD_dataBankReg&#91;8&#93; = {0x00,0x01,0x02,0x03,0x04,0x05,0x06};<br /><br />void _LCD_NibbleOut(unsigned char);<br />void _LCD_WriteNibble(unsigned char);<br />void LCD_SetSign(unsigned char nr, unsigned char *def_znak);<br />void LCD_Init(void);<br />void LCD_WriteCmd(unsigned char);<br />void LCD_WriteData(unsigned char);<br />void LCD_WriteText(const char*);<br />void LCD_Home(void);<br />void LCD_Clear(void);<br />void LCD_GoTo(int x, int y);<br />void LCD_BargraphTest();<br /><br />#if LCD_8BIT<br />void LCD_Busy();<br />#endif<br /><br /><br />#if (LCD_4BIT == LCD_8BIT)<br />#error &quot;*** LCD mode is set at 8 and 4 or exempted! Please check your configuration! ***&quot;<br />#endif[/syntax]<br /><br />Plik LCD44780.c<br />[syntax=c]#include &quot;LCD44780.h&quot;<br /><br />#if LCD_4BIT<br />void _LCD_WriteNibbleOut(unsigned char c){<br />    if(c &amp; 0x01)<br />        LCD_DB4 = 1;<br />    else<br />        LCD_DB4 = 0;<br /><br />    if(c &amp; 0x02)<br />        LCD_DB5 = 1;<br />    else<br />        LCD_DB5 = 0;<br /><br />    if(c &amp; 0x04)<br />        LCD_DB6 = 1;<br />    else<br />        LCD_DB6 = 0;<br /><br />    if(c &amp; 0x08)<br />        LCD_DB7 = 1;<br />    else<br />        LCD_DB7 = 0;<br />}<br /><br />void _LCD_WriteNibble(unsigned char c){<br />    LCD_EN = 1;<br />    _LCD_WriteNibbleOut(c &gt;&gt; 4);<br />    LCD_EN = 0;<br />    LCD_EN = 1;<br />    _LCD_WriteNibbleOut(c);<br />    LCD_EN = 0;<br />    __delay_us(50);<br /><br />}<br />#endif<br /><br />void LCD_WriteCmd(unsigned char code){<br />#if LCD_4BIT<br />    LCD_RS = 0;<br />    _LCD_WriteNibble(code);<br />#endif<br />    <br />#if LCD_8BIT<br />    LCD_Busy();<br />    LCD_RS = 0;<br />    LCD_RW = 0;<br />    LCD_EN = 1;<br />    LCD_DATA_PORT = code;<br />    for(int i=0;i&lt;6;i++)<br />        __delay_ms(10);<br />    LCD_EN = 0;<br />#endif<br />}<br /><br />void LCD_Init(void){<br />    <br />    <br />#if LCD_4BIT<br />    unsigned char count;<br />    LCD_DB4_DIR = 0;<br />    LCD_DB5_DIR = 0;<br />    LCD_DB6_DIR = 0;<br />    LCD_DB7_DIR = 0;<br />#endif<br />    <br />#if (LCD_RW_PIN == 'P') &amp;&amp; (LCD_4BIT)<br />    LCD_RW_DIR = 0;<br />    LCD_RW = 0;<br />#endif<br />    <br />#if LCD_8BIT<br />    LCD_DATA_DIR = 0;<br />    LCD_DATA_PORT = 0;<br />#endif<br />    <br />    LCD_EN_DIR = 0;<br />    LCD_RS_DIR = 0;<br />    __delay_ms(15);<br />    LCD_RS = 0;<br />    LCD_EN = 0;<br />    <br />#if LCD_4BIT    <br />    for(count = 0; count &lt; 4; count++){<br />        LCD_EN = 1;<br />        _LCD_WriteNibbleOut(0x03);<br />        LCD_EN = 0;<br />        __delay_ms(5);<br />    }<br />    LCD_EN = 1;<br />    _LCD_WriteNibbleOut(0x02);<br />    <br />    LCD_EN = 0;<br />    __delay_ms(1);<br />    <br />    LCD_WriteCmd(LCD_OP_4BIT);<br />    LCD_WriteCmd(LCD_CMD_DSP_OFF);<br />    LCD_WriteCmd(LCD_CMD_CLS);<br />    __delay_ms(2);<br />    LCD_WriteCmd(LCD_CMD_CURSOR_INC);<br />    LCD_WriteCmd(LCD_CMD_DSP_ON);<br />    __delay_ms(1);<br />#endif<br />    <br />#if LCD_8BIT<br />    LCD_WriteCmd(LCD_OP_8BIT);<br />    LCD_WriteCmd(LCD_CMD_CURSOR_INC);<br />    LCD_WriteCmd(LCD_CMD_DSP_OFF);<br />    LCD_WriteCmd(LCD_CMD_CLS);<br />#endif<br />    <br />#if LCD_SET_BAR<br />    // setup bar graph elements<br />    for(int j=0;j&lt;6;j++){<br />        LCD_SetSign(_LCD_dataBank&#91;j&#93;,_LCD_bar&#91;j&#93;);<br />    }<br />#endif<br />}<br /><br />void LCD_Home(void){<br />    LCD_WriteCmd(LCD_CMD_HOME);<br />    __delay_ms(2);<br />}<br /><br />void LCD_Clear(void){<br />    LCD_WriteCmd(LCD_CMD_CLS);<br />    __delay_ms(2);<br />}<br /><br />void LCD_GoTo(int x, int y){<br />#if LCD_4BIT<br />    LCD_WriteCmd(0x80|(x+(0x40*y)));<br />#endif<br />#if LCD_8BIT<br />    <br />#endif<br />}<br /><br />void LCD_WriteData(unsigned char data){<br />#if LCD_4BIT<br />    LCD_RS = 1;<br />    _LCD_WriteNibble(data);<br />#endif<br />    <br />#if LCD_8BIT<br />    LCD_Busy();<br />    LCD_RS = 1;<br />    LCD_RW = 0;<br />    LCD_EN = 1;<br />    LCD_DATA_PORT = data;<br />    LCD_EN = 0;<br />#endif<br />}<br /><br />void LCD_WriteText(const char *string){<br />    while(*string){<br />        LCD_WriteData(*string++);<br />    }<br />}<br /><br />#if LCD_SET_BAR<br />void LCD_BargraphTest(){<br />    char x,i;<br />    LCD_GoTo(0,0); LCD_WriteText(&quot;Up   &quot;);<br />    for(x=0;x&lt;16;x++){<br />        for(i=0;i&lt;5;i++){<br />            LCD_GoTo(x,1);<br />            LCD_WriteData(_LCD_dataBankReg&#91;i&#93;);<br />            for(int t=0;t&lt;10;t++)<br />            __delay_ms(2);<br />        }<br />    }<br />    for(int t=0;t&lt;100;t++)<br />    __delay_ms(1);<br />    LCD_GoTo(0,0); LCD_WriteText(&quot;Down   &quot;);<br />    for(x=15;x&gt;=0;x--){<br />        for(i=4;i&gt;=0;i--){<br />            LCD_GoTo(x,1);<br />            LCD_WriteData(_LCD_dataBankReg&#91;i&#93;);<br />            for(int t=0;t&lt;10;t++)<br />                __delay_ms(2);<br />            if(i == 0) break;<br />        }<br />        if(x == 0) break;<br />    }<br />}<br />#endif<br /><br /><br />#if LCD_8BIT<br />void LCD_Busy(void){<br />    LCD_D7 = 1;<br />    LCD_RS = 0;<br />    LCD_RW = 1;<br />    LCD_EN = 1;<br />    for(int i=0;i&lt;6;i++)<br />        __delay_ms(10);<br />    while(LCD_D7);<br />    LCD_D7 = 0;<br />}<br />#endif<br /><br />void LCD_SetSign(unsigned char nr, unsigned char *def_znak){<br />register unsigned char c;<br />LCD_WriteCmd( 64+((nr&amp;0x07)*8) );<br />for(unsigned char i=0;i&lt;8;i++){<br />c = *(def_znak++);<br />LCD_WriteData(c);<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3173">jerzyk31</a> — 2 sty 2016, o 12:12</p><hr />
]]></content>
</entry>
</feed>