Embedded C je nejoblíbenější programovací jazyk v oblasti softwaru pro vývoj elektronických gadgetů. Každý procesor je spojen s integrovaným softwarem. Integrované programování C. hraje hlavní roli při provádění specifických funkcí procesorem. V našem každodenním životě často používáme mnoho elektronických zařízení, jako jsou pračky, mobilní telefony, digitální fotoaparáty atd., Které budou fungovat na základě mikrokontrolérů, které jsou programovány vestavěným C.
Programování vestavěného systému
Napsaný kód C je spolehlivější, přenositelnější a škálovatelnější a ve skutečnosti mnohem snáze srozumitelný. Prvním a nejdůležitějším nástrojem je vestavěný software, který rozhoduje o provozu vestavěného systému. Pro programování mikrokontrolérů se nejčastěji používá programovací jazyk Embedded C.
Výukový program pro Embedded C (8051)
Pro psaní programu musí mít vestavění designéři dostatečné znalosti o hardwaru konkrétních procesorů nebo řadičů, protože vestavěné programování C je úplná programovací technika související s hardwarem.
Výukový programovací program
Dříve bylo mnoho vestavěných aplikací vyvinuto pomocí programování na úrovni sestavení. Neposkytli však přenositelnost k překonání tohoto problému s příchodem různých jazyků na vysoké úrovni, jako jsou C, COBOL a Pascal. Byl to však jazyk C, který získal široké přijetí vývoj aplikací vestavěných systémů a nadále to dělá.
Vestavěný systém
Vestavěný systém je definován jako kombinace zabudovaného programovacího softwaru C a hardwarové části, která se skládá převážně z mikrokontrolérů a je určena k plnění konkrétního úkolu. Tyto typy vestavěných systémů se používají v našem každodenním životě, jako jsou pračky a videorekordéry, chladničky atd. Integrovaný systém byl poprvé představen mikrokontroléry 8051.
Vestavěný systém
Úvod do mikrokontroléru 8051
Mikrokontrolér 8051 je základní mikrokontrolér, který je poprvé představen společností „Intel Corporation“ od roku 1970. Je vyvinutou architekturou procesoru 8086. 8051 je rodina mikrokontroléru, která byla vyvinuta různými výrobci, jako jsou Philips, Atmel, Dalls atd. 8051 mikrokontrolérů byl použit v mnoha vložených výrobcích od malých dětských hraček po velké automobilové systémy.
Mikrokontrolér 8051
Mikrokontrolér 8051 je 8bitový Architektura „CISC“ . Skládá se z pamětí, sériové komunikace, přerušení, vstupních / výstupních portů a časovačů / čítačů zabudovaných do jediného integrovaného čipu, který je naprogramován pro ovládání periferních zařízení, která jsou s ním propojena. Program je uložen v RAM mikrokontroléru, ale před napsáním programu si musíme RAM uvědomit organizace mikrokontroléru.
Programování vestavěného systému: Základní prohlášení
Každá funkce je kolekce příkazů, které provádějí konkrétní úkol, a kolekce jedné nebo více funkcí se nazývá programovací jazyk. Každý jazyk se skládá z několika základních prvků a gramatických pravidel. Programování v jazyce C je navrženo tak, aby fungovalo se znakovou sadou, proměnné, datové typy, konstanty, klíčová slova, výrazy atd. Se používají k napsání programu C. Všechny tyto položky jsou považovány za hlavičkový soubor nebo soubor knihovny a je reprezentován jako
#zahrnout
Integrovaný vývoj programování C.
Rozšíření jazyka C se nazývá programovací jazyk Embedded C. Ve srovnání s výše uvedeným má zabudované programování v jazyce C některé další funkce, jako jsou datové typy a klíčová slova a soubor záhlaví nebo soubor knihovny je reprezentován jako
#zahrnout
Vložená další klíčová slova C.
- sbit
- bit
- SFR
- nestálý
- makra definují
„Sbit“ se používá k deklaraci jediného PIN mikrokontroléru. Například LED je připojena ke kolíku P0.1, nedoporučuje se posílat hodnotu přímo na kolík portu, nejprve musíme deklarovat kolík s jinou proměnnou, poté, co můžeme použít kdekoli v programu.
Syntaxe: sbit a = P0 ^ 1 // deklaruje příslušný pin proměnnou //
a = 0x01 // odeslání hodnoty na pin portu //
„Bit“ se používá ke kontrole stavu proměnné.
Syntaxe: bit c // deklaruje bitovou proměnnou //
c = a // hodnota je přiřazena proměnné c //
if (c == 1) // zkontrolujte podmínku true nebo false //
{
… ..
……
}
Klíčové slovo „SFR“ se používá pro přístup k registrům SFR pod jiným jménem. Registr SFR definovaný jako a registr speciálních funkcí , obsahuje všechny periferně související registry uvedením adresy. Registr SFR je deklarován klíčovým slovem SFR. Klíčové slovo SFR musí být velkými písmeny.
Syntaxe: SFR port = 0x00 // 0x00 je adresa port0, je deklarována proměnnou portu //
Port = 0x01 // poté odešlete hodnotu na port0 //
zpoždění()
port = 0x00
zpoždění()
Klíčové slovo „volatile“ je nejdůležitější ve vývoji vestavěného systému. Proměnnou, která deklaruje hodnotu těkavého klíčového slova, nelze neočekávaně změnit. Může být použit v periferních registrech mapovaných v paměti, globálních proměnných upravených ISR. Bez použití volatilního klíčového slova pro přenos a příjem dat dojde k chybě kódu nebo chybě optimalizace.
Syntaxe: volatile int k
Makro je název, který se používá k deklaraci bloku příkazů jako direktivy před zpracováním. Kdykoli se název použije, nahradí se obsahem makra. Makra představují #define. Celá kolíky portů jsou definována makry.
Syntaxe: #define dat Po // celý port je deklarován proměnnou //
dat = 0x01 // data odesílaná na port0 //
Základní vestavěné programy C.
Programování mikrokontroléru se bude u každého lišit typ operačního systému . I když existuje mnoho operačních systémů, jako jsou Linux, Windows, RTOS atd. RTOS má však pro vývoj vestavěného systému několik výhod. Tento článek pojednává o základním programování vestavěného jazyka C k vývoji integrovaného programování jazyka C pomocí mikrokontroléru 8051.
Integrované programovací kroky C.
- LED bliká pomocí mikrokontroléru 8051
- Zobrazení čísla na 7segmentovém displeji pomocí mikrokontroléru 8051
- Výpočty časovače / čítače a programování pomocí mikrokontroléru 8051
- Výpočty sériové komunikace a program pomocí mikrokontroléru 8051
- Přerušujte programy pomocí mikrokontroléru 8051
- Programování klávesnice pomocí mikrokontroléru 8051
- Programování na LCD s mikrokontrolérem 8051
LED bliká pomocí mikrokontroléru 8051
LED je polovodičové zařízení, které se používá v mnoha aplikacích, většinou pro indikační účely. Je to hledání široké škály aplikací jako indikátorů během testu ke kontrole platnosti výsledků v různých fázích. Jsou velmi levné a snadno dostupné v různých tvarech, barvách a velikostech. LED se používají k návrhu vývěsky a signální světla řízení dopravy atd. Zde jsou LED diody propojeny s PORT0 mikrokontrolérů 8051.
LED bliká pomocí mikrokontroléru 8051
1. 01010101
10101010
#include // hlavičkový soubor //
void main () // bod provedení programu //
{
unsigned int i // datový typ //
while (1) // pro spojitou smyčku //
{
P0 = 0x55 // pošle hexa hodnotu na port0 //
pro (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // pošle hexa hodnotu na port0 //
pro (i = 0i<30000i++) //normal delay//
}
}
2. 00000001
00000010
00000100
.
.
10 000 000
#zahrnout
void main ()
{
unsignedint i
nepodepsaný znak j, nar
zatímco (1)
{
P0 = 0x01
b = P0
pro (j-0j<3000j++)
pro (j = 0j<8j++)
{
b = b<<1
P0 = b
pro (j-0j<3000j++)
}
}
}
3. 00001111
11110000
#zahrnout
void main ()
{
unsignedint i
zatímco (1)
{
P0 = 0x0F
pro (j-0j<3000j++)
P0 = 0xF0
pro (j-0j<3000j++)
}
}
4. 00000001
00000011
00000111
.
.
11111111
#zahrnout
void main ()
{
unsignedint i
nepodepsaný znak j, nar
zatímco (1)
{
P0 = 0x01
b = P0
pro (j-0j<3000j++)
pro (j = 0j<8j++)
0x01
P0 = b
pro (j-0j<3000j++)
}
}
Zobrazení čísel na 7segmentovém displeji pomocí mikrokontroléru 8051
The 7segmentové displeje je základní elektronický displej, který se v mnoha systémech používá k zobrazování číselných informací. Skládá se z osmi LED, které jsou zapojeny postupně tak, aby zobrazovaly číslice od 0 do 9, když jsou zapnuty správné kombinace LED. Mohou zobrazit pouze jednu číslici najednou.
Zobrazení čísel na 7segmentovém displeji pomocí mikrokontroléru 8051
1. WAP pro zobrazení čísel od „0 do F“ na čtyřech 7segmentových displejích?
#zahrnout
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
void main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
nepodepsal tě, j
a = b = c = d = 1
zatímco (1)
{
pro (i = 0i<10i++)
{
P2 = n [i]
pro (j = 0j<60000j++)
}
}
}
2. WAP pro zobrazení čísel od „00 do 10“ na 7segmentových displejích?
#zahrnout
sbit a = P3 ^ 0
sbit b = P3 ^ 1
void display1 ()
void display2 ()
neplatnost zpoždění ()
void main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
nepodepsal tě, j
ds1 = ds2 = 0
zatímco (1)
{
pro (i = 0, i<20i++)
display1 ()
display2 ()
}
}
void display1 ()
{
a = 1
b = 0
P2 = s [ds1]
zpoždění()
a = 1
b = 0
P2 = s [ds1]
zpoždění()
}
void display2 ()
{
ds1 ++
pokud (ds1> = 10)
{
ds1 = 0
ds2 ++
pokud (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
neplatnost zpoždění ()
{
unsignedint k
pro (k = 0 k<30000k++)
}
Výpočty časovače / počítadla a program pomocí mikrokontroléru 8051
Zpoždění je jedním z důležitých faktorů ve vývoji aplikačního softwaru. Normální zpoždění však neposkytne drahocenný výsledek k překonání tohoto problému při implementaci časovaného zpoždění. The časovače a počitadla jsou hardwarové součásti mikrokontroléru, který se používá v mnoha aplikacích k zajištění drahocenného časového zpoždění s počtem impulzů. Oba úkoly jsou implementovány softwarovou technikou.
Zpoždění časovače
WAP pro generování časového zpoždění 500us pomocí T1M2 (časovač1 a režim2)?
#zahrnout
void main ()
{
nepodepsaný znak i
TMOD = 0x20 // nastavit režim časovače //
pro (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // nastavit časové zpoždění //
TH1 = 0x00
TR1 = 1 // časovač o //
While (TF1 == 0) // zkontrolujte příznakový bit //
TF1 = 0
}
TR1 = 0 // časovač vypnut //
}
Normální zpoždění smyčky
neplatnost zpoždění ()
{
unsignedint k
pro (k = 0 k<30000k++)
}
Výpočty sériové komunikace a program využívající mikrokontrolér 8051
Sériová komunikace se běžně používá pro přenos a příjem signálu. Mikrokontrolér 8051 se skládá Sériová komunikace UART signály vysílané a přijímané kolíky Rx a Tx. UART bere bajty dat a posílá jednotlivé bity sekvenčním způsobem. Registry jsou způsob, jak shromažďovat a ukládat data do paměti. UART je poloduplexní protokol. Poloduplex znamená přenos a příjem dat, ale ne současně.
Výpočty sériové komunikace a program využívající mikrokontrolér 8051
1. WAP pro přenos znaku „S“ do sériového okna používá jako přenosovou rychlost 9600?
28800 je maximální přenosová rychlost mikrokontroléru 8051
28800/9600 = 3
Tato přenosová rychlost „3“ je uložena v časovačích
#zahrnout
void main ()
{
SCON = 0x50 // zahájit sériovou komunikaci //
TNOD = 0x20 // vybrán režim časovače //
TH1 = 3 // načíst přenosovou rychlost //
TR1 = 1 // Časovač zapnut //
SBUF = ‘S’ // uloží znak do registru //
while (TI == 0) // zkontrolovat registr přerušení //
TI = 0
TR1 = 0 // VYPNUTO časovač //
while (1) // spojitá smyčka //
}
2. WAP pro příjem dat z hyperterminálu a odeslání těchto dat na PORT 0 mikrokontroléru pomocí 9600 baudů?
28800 je maximální přenosová rychlost mikrokontroléru 8051
28800/9600 = 3
Tato přenosová rychlost „3“ je uložena v časovačích
#zahrnout
void main ()
{
SCON = 0x50 // zahájit sériovou komunikaci //
TMOD = 0x20 // vybrán režim časovače //
TH1 = 3 // načíst přenosovou rychlost //
TR1 = 1 // Časovač zapnut //
PORT0 = SBUF // odeslání dat z SBUF na port0 //
while (RI == 0) // zkontrolovat registr přerušení //
RI = 0
TR1 = 0 // VYPNUTO časovač //
while (1) // zastaví program při přijetí znaku //
}
Přerušujte programy pomocí mikrokontroléru 8051
Přerušení je signál, který nutí zastavit aktuální program a okamžitě provést druhý program. Mikrokontrolér 8051 poskytuje 6 přerušení, která jsou interní a externí přerušit zdroje . Když dojde k přerušení, mikrokontrolér pozastaví aktuální úlohu a postará se o přerušení provedením ISR, poté se mikrokontrolér vrátí zpět k poslední úloze.
WAP provést operaci levého posunu, když dojde k přerušení časovače 0, pak provést operaci přerušení pro P0 v hlavní funkci?
#zahrnout
nepodepsaný znak b
void timer0 () přerušení 2 // vybraný časovač0 přerušení //
{
b = 0x10
P1 = b<<2
}
void main ()
{
nepodepsaný znak a, i
IE = 0x82 // povolit přerušení časovače //
TMOD = 0x01
TLo = 0xFC // časovač přerušení //
TH1 = 0xFB
TR0 = 1
a = 0x00
zatímco (1)
{
pro (i = 0i<255i++)
{
a ++
Po = a
}
}
}
Programování klávesnice pomocí mikrokontroléru 8051
Maticová klávesnice je analogové spínací zařízení, které se používá v mnoha vestavěných aplikacích a umožňuje uživateli provádět nezbytné úkoly. A maticová klávesnice sestává z uspořádání přepínačů v maticovém formátu v řádcích a sloupcích. Řádky a sloupce jsou připojeny k mikrokontroléru tak, že řada přepínačů je připojena k jednomu kolíku a přepínače v každém sloupci jsou připojeny k jinému kolíku, poté proveďte operace.
Programování klávesnice pomocí mikrokontroléru 8051
1. WAP pro přepnutí LED stisknutím spínače
#zahrnout
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
neplatnost zpoždění ()
void main ()
{
zatímco (1)
{
a = 0
b = 1
c = 1
d = 1
zpoždění()
a = 1
b = 0
c = 1
d = 1
neplatnost zpoždění ()
{
nepodepsaný znak i
TMOD = 0x20 // nastavit režim časovače //
pro (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // nastavit časové zpoždění //
TH1 = 0x00
TR1 = 1 // časovač o //
While (TF1 == 0) // zkontrolujte příznakový bit //
TF1 = 0
}
TR1 = 0 // časovač vypnut //
}
2. WAP pro zapnutí LED stisknutím klávesy „1“ na klávesnici?
#zahrnout
sbit r1 = P2 ^ 0
sbit c1 = P3 ^ 0
sbit LED = P0 ^ 1
void main ()
{
r1 = 0
if (c1 == 0)
{
LED = 0xff
}
}
3. WAP pro zobrazení čísla 0,1,2,3,4,5 na sedmi segmentech stisknutím příslušné klávesy na klávesnici?
#zahrnout
sbit r1 = P2 ^ 0
sbit c1 = P3 ^ 0
sbit r2 = P2 ^ 0
sbit c2 = P3 ^ 0
sbit a = P0 ^ 1
void main ()
{
r1 = 0 a = 1
if (c1 == 0)
{
a = 0xFC
}
Pokud (c2 == 0)
{
a = 0x60
}
if (c3 == 0)
{
a = 0xDA
}
Pokud (c4 == 0)
{
a = 0xF2
}
}
Programování na LCD s mikrokontrolérem 8051
The LCD displej je elektronické zařízení, které se často používá v mnoha aplikacích pro zobrazování informací v textovém nebo obrazovém formátu. LCD je displej, který na své obrazovce snadno zobrazuje znaky. LCD displej se skládá z 8 datových linek a 3 kontrolních linek, které se používají k propojení s mikrokontrolérem.
Programování na LCD s mikrokontrolérem 8051
WAP pro zobrazení „EDGEFX SAD“ na LED displeji?
#zahrnout
#define kam P0
voidlcd_initi ()
voidlcd_dat (nepodepsaný znak)
voidlcd_cmd (nepodepsaný znak)
neplatnost zpoždění ()
void display (nepodepsaný znak * s, nepodepsaný znak r)
sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit at = P2 ^ 2
void main ()
{
lcd_initi ()
lcd_cmd (0x80)
zpoždění (100)
lcd_cmd (0xc0)
displej („sady edgefx“, 11)
zatímco (1)
}
void display (nepodepsaný znak * s, nepodepsaný znak r)
{
unsignedint w
pro (w = 0w
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
zpoždění (100)
lcd_cmd (0 × 38)
zpoždění (100)
lcd_cmd (0 × 06)
zpoždění (100)
lcd_cmd (0x0c)
zpoždění (100)
}
voidlcd_dat (nepodepsaný char dat)
{
hřeben = to
rs = 1
rw = 0
in = 1
zpoždění (100)
in = 0
}
}
voidlcd_cmd (nepodepsaný znak cmd)
{
přišel = cmd
rs = 0
rw = 0
in = 1
zpoždění (100)
in = 0
}
void delay (unsigned int n)
{
unsignedint a
pro (a = 0a
Doufám, že tento článek poskytne základní informace o programování vestavěného systému pomocí mikrokontroléru 8051 s několika ukázkovými programy. Podrobný návod k programování v jazyce C najdete v sekci komentářů níže.