PROIECTE 2011
Proiectele realizate in cadrul Laboratorului de SMP, 2011, le gasiti mai jos, Fiecare echipa are de completat in pagina WIKI corespunzatoare proiectului sau capitolele existente.
Punctaj Proiect
-
2p Pagina Wiki in format HTML cu capitolele create - poze(diferite stadii ale proiectului) + schema hardware + listing software (microcontroller + OpenWatcom la Z3)
-
5p Functionalitate proiect - punctaj in functie de cerintele cerute/realizate
-
1p Calitatea proiectului - cat de organizati ati fost in realizarea acestuia, cod format frumos, optimizari etc...
-
2p Nota individuala - participarea voastra in proiect, raspunsul vostru la intrebarile laborantului la presentarea proiectului
Cerinte general valabile:
- Toate proiectele se vor integra software si/sau hardware cu placa EV/Z3. Pentru integrarea hardware se va folosi portul serial al placii EV/Z3
- Logica software de baza se va regasi pe placa EV/Z3 si va fi realizata în C + inline assembly folosind template-ul OpenWatcom de la laborator
- Pagina de wiki trebuie sa contina o descriere a ce a realizat fiecare student in cadrul proiectului
- Daca nu puneti pe site alta schema de proiectare hardware se va folosi cea cu PIC16F628A pusa la dispozitie
- Wiki-ul trebuie updat ca sa vad stadii intermediare ale proiectului
Elemente de electronica
-
Pentru a vedea/comanda un pret estimativ a componentelor va propun www.conexelectronic.ro . Mi-a fost recomandat si mie de ceilalti laboranti.
-
Pentru conectarea la porturile de I/O trebuie sa izolati galvanic folosind optocuploare, ex LTV817 - puteti sa cautati pe site, si rezistente sa limiteze curentul maxim la 5mA U=R*I si trebuie avut in vedere ca rezistentele sa reziste la puterea la care e proiectat circuitul P=U*I...
-
Pentru alte elemente elecronice puteti folosi diode 1N4007, tranzistori BD139/140 de putere mare. Binenteles ca nu sunteti limitati la folosirea acestora, e doar o propunere.
-
Letconul ar trebui sa aiba cam 40W , nu mai mult de 60 oricum , iar fludorul la 1mm-1.5mm. Sa aveti si un voltmetru cu voi.
-
Va recomand inainte sa alegeti proiectul sa cititi cateva elemente de electronica de AICI.
2011_P23
Afisaj LCD
Project Description
Proiectul nostru consta in a adauga un afisaj LCD pentru placa EV/Z3. Componentele de baza sunt placa EV/Z3 si placa ce contine un microcontroller PIC 16F628A, MAX 232 folosit pentru transmiterea pe seriala si un LCD de 1x16 caractere.
Project Requirements
Am ales 3 butoane de pe tastatura placii Z3 si le-am asociat 3 mesaje. Utilizatorul va putea citi cele 3 mesaje si dupa alegerea mesajului dorit va apasa un al patrulea buton pentru a afisa mesajul respectiv pe LCD. Mesajul de pe LCD se va roti spre stanga.
User Flow
Pentru a vedea mesajele pe LCD-ul de la placa EV/Z3 se folosesc tastele A,B,C de pe tastatura placii. Pentru a trimite mesajul catre LCD de pe placuta secundara se apasa tasta F. In momentul in care a fost apasata tasta F mesajul ales a fost transmis pe seriala si acesta se roteste spre stanga (ca un panou publicitar) atat pe LCD-ul de la placa Z3 cat si pe LCD-ul de la placuta secundara.
Pentru a schimba mesajele se editeaza codul programului.
Functionarea aplicatiei presupune ca placuta secundara sa fie alimentata de la o sursa si ca mufa DB9 TATA din partea dreapta sa fie conectata printr-un cablu serial MAMA-MAMA la mufa TATA de la placa EV/Z3.
Required components
Lista de componente este urmatoarea:
- 3 rezistente de 4.7k (250 mW)
- 1 rezistenta de 100R (250 mW)
- 2 rezistente de 100K (250 mW)
- 2 condensatori de 22pF (50V)
- 2 condensatori de 47nF (50V)
- 5 condensatori de 1uF (63V)
- 1 push-button
- 1 oscilator de cuartz 20.000 MHz
- 1 microcontroller PIC16F628A
- 1 stabilizator de 5V
- 1 circuit integrat MAX232
- 2 socluri de 18 pini
- 2 mufe DB9 TATA
- 1 LCD de 1x16 caractere
- 1 potentiometru
Placa ce contine componentele de mai sus:
Pentru proiectarea placutei am folosit schema din laborator la care am adaugat componentele specifice acestui proiect:
Functiile folosite din interfata platform_io.h sunt:
kIo.SerialInit(&serialConf) - initializarea comunicatiei pe seriala
kIo.ReadKey() - citirea butonului apasat de la tastatura
kIo.DisplayString() - afisarea sirului de caractere pe LCD-ul placii Z3
kIo.SerialWrite () - scriere pe seriala
Software Design
Codul pentru placa EV/Z3 a fost scris in OpenWatcom :
#include "platform_io.h"
const char *serialStart = "Please send data";
static SerialConfig serialConf;
unsigned char *car1="Ati apasat A";
unsigned char *car2="Ati apasat B";
unsigned char *car3="Ati apasat C";
unsigned char a=" ";
char c[17];
char aux1,aux2;
int key,i,j;
char b[2];
char convert(int key)
{
static char cod[19] = {'0','2','4','6','8','A','C','E','R','<','1','3','5','7','9','B','D','F','>'};
return cod[key];
}// functia de conversie a caracterelor
static SerialConfig serialConf;
extern const unsigned char __far * const kSystemEprom[];
int main()
{
key = 0;
b[1]='\0';
/* Serial Initialization */
serialConf.baudRate = b9600;
serialConf.parity = none;
serialConf.stopBits = one;
serialConf.wordLength = eight;
kIo.SerialInit(&serialConf);
while(1)
{
key=kIo.ReadKey();
b[1]=convert(key);
if(b[1]=='A')
{
kIo.DisplayString(car1);
j=1;
}
if(b[1]=='B')
{
kIo.DisplayString(car2);
j=2;
}
if(b[1]=='C')
{
kIo.DisplayString(car3);
j=3;
}
if(b[1]=='F')
{
if(j==1)
{kIo.SerialWrite(COM1, car1, 4);
for(i=0;i<16;i++)
c[i]=car1[i];
}
if(j==2)
{kIo.SerialWrite(COM1, car2, 4);
for(i=0;i<16;i++)
c[i]=car2[i];
}
if(j==3)
{kIo.SerialWrite(COM1, car3, 4);
for(i=0;i<16;i++)
c[i]=car3[i];
}
b[1]='D';
// shiftarea textului spre stanga
aux1=c[0];
aux2=a[0];
for(i=0;i<15;i++)
{c[i]=c[i+1];}
for(i=0;i<5;i++)
{a[i]=a[i+1];}
c[15]=aux2;
a[5]=aux1;
}
}
return 0;
}
Codul folosit pentru programarea PIC-ului este scris in MikroC, program care la compilare genereaza fisierul *.HEX care este apoi incarcat in memoria PIC-ului prin ICPROG.
// modul de conectare al pinilor de la LCD la pinii de la PIC
sbit LCD_RS at RA0_bit;
sbit LCD_EN at RA1_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB3_bit;
sbit LCD_D7 at RA2_bit;
sbit LCD_RS_Direction at TRISA0_bit;
sbit LCD_EN_Direction at TRISA1_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB3_bit;
sbit LCD_D7_Direction at TRISA2_bit;
// End LCD module connections
// Define Messages
char m1[] = "Testare ";
char m2[] = " ";
char m3[] = " ";
char a[]=" ";
int i;
char aux1;
char aux2;
char aux3;
void main()
{
CMCON |= 7; // dezactivare comparatoare
Lcd_Init(); // initializare LCD
UART1_Init(9600); // initializare comunicare pe seriala
Delay_ms(100);
do {
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,m1); // Scrie mesajul m1 pe primele 8 caracterele alea LCD
Lcd_Out(2,1,m2); // Scrie mesajul m2 pe urmatoarele 8 caractere
Delay_ms(600);
// cod pentru shiftare mesaj la stanga
aux1=m1[0];
aux2=m2[0];
aux3=m3[0];
for(i=0;i<7;i++)
{
m1[i]=m1[i+1];
}
for(i=0;i<7;i++)
{ m2[i]=m2[i+1];
}
for(i=0;i<7;i++)
{
m3[i]=m3[i+1];
}
m1[7]=aux2;
m2[7]=aux3;
m3[7]=aux1;
while(UART1_Data_Ready()==1)
{
UART1_Read_Text(a,"0",16); //citeste sirul de caractere trimis pe seriala
for(i=0;i<8;i++)
m1[i]=a[i];
for(i=8;i<16;i++)
m2[i]=a[i];}
} while(1);
}
Results [edit]
O imagine de ansamblu a cum functioneaza proiectul, screenshoturi, filmulete cu proiectul functionand. Alte detalii care le credeti importante.
Download [edit]
Arhiva cu schema hardware + cod microcontroller + tot proiectul OpenWatcom.
Arhiva va contine 2 directoare (1 singur pentru proiecte doar software)
Hardware design - schema uC + codul folosit pentru a genera fisierul .HEX
Software design - template-ul Open Watcom folosit
Status
15 Aprilie - achizitionare componente
21 Aprilie - placa secundara ce contine PIC-ul este functionala
17 Mai - testat codul pentru EV/Z3 de transmitere pe seriala
18 Mai - testat codul pentru PIC de citire de pe seriala