Gömülü C, elektronik araçlar geliştirmek için yazılım alanında en popüler programlama dilidir. Her işlemci gömülü yazılımla ilişkilendirilmiştir. Gömülü C Programlama işlemci tarafından belirli işlevleri gerçekleştirmede önemli bir rol oynar. Günlük hayatımızda çamaşır makineleri, cep telefonları, dijital kamera vb. Birçok elektronik cihazı sıklıkla kullanıyoruz, gömülü C ile programlanan mikrodenetleyicilere dayalı olarak çalışacaktır.
Gömülü Sistem Programlama
Yazılan C kodu daha güvenilir, taşınabilir ve ölçeklenebilir ve aslında anlaşılması çok daha kolay. İlk ve en önemli araç, gömülü bir sistemin çalışmasına karar veren gömülü yazılımdır. Gömülü C programlama dili, en çok mikro denetleyicileri programlamak için kullanılır.
Gömülü C Programlama Eğitimi (8051)
Gömülü C programlama tam bir donanımla ilgili programlama tekniği olduğundan, programı yazmak için gömülü tasarımcıların belirli işlemcilerin veya denetleyicilerin donanımı hakkında yeterli bilgiye sahip olması gerekir.
Programlama Eğitimi
Daha önce, montaj seviyesinde programlama kullanılarak birçok gömülü uygulama geliştirildi. Bununla birlikte, C, COBOL ve Pascal gibi çeşitli üst düzey dillerin ortaya çıkmasıyla bu sorunun üstesinden gelmek için taşınabilirlik sağlamadılar. Ancak, geniş çapta kabul gören C diliydi. gömülü sistemler uygulama geliştirme ve bunu yapmaya devam ediyor.
Yerleşik sistem
Gömülü sistem, gömülü C programlama yazılımı ve donanım kısmı büyük ölçüde mikro denetleyicilerden oluşan bir kombinasyon olarak tanımlanır ve belirli bir görevi yerine getirmesi amaçlanır. Bu tür gömülü sistemler, çamaşır makineleri ve video kaydediciler, buzdolapları vb. Gibi günlük hayatımızda kullanılmaktadır. Gömülü sistem ilk olarak 8051 mikro denetleyiciler tarafından tanıtıldı.
Yerleşik sistem
8051 Mikrodenetleyiciye Giriş
8051 mikro denetleyici temel bir mikro denetleyicidir ve ilk olarak 1970 yılından bu yana ‘Intel Corporation’ tarafından tanıtılmıştır. 8086 işlemci mimarisi tarafından geliştirilmiştir. 8051, Philips, Atmel, dalls vb. Gibi farklı üreticiler tarafından geliştirilmiş bir mikro denetleyici ailesidir. 8051 mikro denetleyiciler küçük çocuk oyuncaklarından büyük otomotiv sistemlerine kadar birçok gömülü üründe kullanılmıştır.
8051 Mikrodenetleyici
8051 mikro denetleyici 8 bitlik 'CISC' mimarisi . Arabirimli çevre aygıtlarını kontrol etmek için programlanmış tek bir entegre yonga içine yerleştirilmiş bellekler, seri iletişim, kesintiler, giriş / çıkış portları ve zamanlayıcı / sayaçlardan oluşur. Program mikro denetleyicinin RAM'inde saklanır, ancak programı yazmadan önce RAM'in farkında olmalıyız. organizasyon mikrodenetleyicinin.
Gömülü Sistem Programlama: Temel Beyan
Her işlev, belirli bir görevi yerine getiren bir ifadeler koleksiyonudur ve bir veya daha fazla işlevin koleksiyonuna programlama dili denir. Her dil bazı temel unsurlardan ve gramer kurallarından oluşur. C dili programlaması, bir C programı yazmak için karakter seti, değişkenler, veri türleri, sabitler, anahtar sözcükler, ifadeler vb. İle çalışmak üzere tasarlanmıştır. Tüm bunlar başlık dosyası veya kitaplık dosyası altında değerlendirilir ve şu şekilde temsil edilir:
#Dahil etmek
Gömülü C Programlama Geliştirme
C dilinin uzantısı Gömülü C programlama dili olarak adlandırılır. Yukarıdakiyle karşılaştırıldığında, C dilinde gömülü programlama, veri türleri ve anahtar sözcükler gibi bazı ek özelliklere sahiptir ve başlık dosyası veya kitaplık dosyası şu şekilde temsil edilir:
#Dahil etmek
Gömülü C Ek Anahtar Sözcükler
- sbit
- bit
- SFR
- uçucu
- makrolar tanımlar
'Sbit', mikro denetleyicinin tek PIN kodunu bildirmek için kullanılır. Örneğin P0.1 pinine led bağlanır, değerin direk port pinine gönderilmesi tavsiye edilmez, önce pini başka bir değişkenle bildirmemiz gerekir, sonra programın herhangi bir yerinde kullanabiliriz.
Sözdizimi: sbit a = P0 ^ 1 // ilgili pini bir değişkenle bildirir //
a = 0x01 // değeri port pinine gönder //
'Bit', değişkenin durumunu kontrol etmek için kullanılır.
Sözdizimi: bit c // bit değişkenini bildirir //
c = a // c değişkenine bir değer atanır //
if (c == 1) // true veya false koşulunu kontrol edin //
{
… ..
……
}
'SFR' anahtar sözcüğü, SFR kayıtlarına başka bir adla erişmek için kullanılır. SFR kaydı bir özel işlev kaydı , adresi belirterek çevreyle ilgili tüm kayıtları içerir. SFR kaydı, SFR anahtar sözcüğü ile bildirilir. SFR anahtar sözcüğü büyük harflerle yazılmalıdır.
Sözdizimi: SFR bağlantı noktası = 0x00 // 0x00, bağlantı noktası değişkeni tarafından bildirilen bir bağlantı noktası 0 adresidir //
Port = 0x01 // sonra değeri port0'a gönderin //
gecikme ()
bağlantı noktası = 0x00
gecikme ()
'Uçucu' anahtar kelime, gömülü sistem geliştirmede en önemlisidir. Uçucu anahtar kelime değeri ile bildiren değişken beklenmedik şekilde değiştirilemedi. Bellek eşlemeli çevresel kayıtlarda, ISR'ler tarafından değiştirilen global değişkenlerde kullanılabilir. Verileri iletmek ve almak için geçici anahtar sözcüğü kullanmadan, kod hatası veya bir optimizasyon hatası meydana gelecektir.
Sözdizimi: volatile int k
Makro, ön işlemci yönergesi olarak ifade bloğunu bildirmek için kullanılan bir addır. Ad her kullanıldığında, makronun içeriği ile değiştirilir. Makrolar #define'ı temsil eder. Tüm bağlantı noktası pinleri makrolar tarafından tanımlanır.
Sözdizimi: #define dat Po // tüm bağlantı noktası bir değişken tarafından bildirilir //
dat = 0x01 // veri port0'a gönderilir //
Temel Gömülü C Programları
Mikrodenetleyici programlaması her biri için farklı olacaktır. işletim sistemi türü . Linux, Windows, RTOS vb. Gibi birçok işletim sistemi mevcut olsa da. Bununla birlikte, RTOS, gömülü sistem geliştirme için çeşitli avantajlara sahiptir. Bu makalede, bir 8051 mikro denetleyici kullanarak gömülü C programlaması geliştirmek için temel gömülü C programlaması anlatılmaktadır.
Gömülü C Programlama Adımları
- 8051 mikro denetleyici ile yanıp sönen LED
- 8051 mikro denetleyici kullanarak 7 segmentli ekranda Numara Görüntüleme
- 8051 mikro denetleyici kullanarak Zamanlayıcı / Sayaç hesaplamaları ve programı
- 8051 mikro denetleyici kullanarak Seri İletişim hesaplamaları ve programı
- 8051 mikro denetleyici kullanarak Programları Kes
- 8051 mikro denetleyici kullanarak Tuş Takımı Programlama
- 8051 mikro denetleyici ile LCD Programlama
8051 Mikrodenetleyici kullanarak LED Yanıp Sönüyor
LED, çoğu uygulamada, çoğunlukla gösterge amacıyla kullanılan yarı iletken bir cihazdır. Sonuçların farklı aşamalarda geçerliliğini kontrol etmek için test sırasında gösterge olarak çok çeşitli uygulamalar bulmaktadır. Çok ucuzdurlar ve çeşitli şekil, renk ve boyutlarda kolayca bulunabilirler. LED'ler tasarlamak için kullanılır mesaj görüntüleme panoları ve trafik kontrol sinyal lambaları vb. Burada LED'ler, 8051 mikrodenetleyicinin PORTO'su ile arayüzlenir.
8051 Mikrodenetleyici kullanarak LED Yanıp Sönüyor
1. 01010101
10101010
#include // başlık dosyası //
void main () // program yürütme durum noktası //
{
işaretsiz int i // veri türü //
while (1) // sürekli döngü için //
{
P0 = 0x55 // hexa değerini port0'a gönder //
için (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // hexa değerini port0'a gönder //
için (i = 0i<30000i++) //normal delay//
}
}
2. 00000001
00000010
00000100
.
.
10.000.000
#Dahil etmek
void main ()
{
imzasız i
işaretsiz karakter j, b
süre (1)
{
P0 = 0x01
b = P0
için (j-0j<3000j++)
için (j = 0j<8j++)
{
b = b<<1
P0 = b
için (j-0j<3000j++)
}
}
}
3. 00001111
11110000
#Dahil etmek
void main ()
{
imzasız i
süre (1)
{
P0 = 0x0F
için (j-0j<3000j++)
P0 = 0xF0
için (j-0j<3000j++)
}
}
4. 00000001
00000011
00000111
.
.
11111111
#Dahil etmek
void main ()
{
imzasız i
işaretsiz karakter j, b
süre (1)
{
P0 = 0x01
b = P0
için (j-0j<3000j++)
için (j = 0j<8j++)
0x01
P0 = b
için (j-0j<3000j++)
}
}
8051 Mikrodenetleyiciyi Kullanarak 7 Segmentli Ekranda Numaraları Görüntüleme
7 segmentli görüntüler birçok sistemde sayısal bilgileri görüntülemek için kullanılan temel elektronik ekranlardır. Uygun LED kombinasyonları açıldığında, 0'dan 9'a kadar rakamları gösterecek şekilde sırayla bağlanan sekiz LED'den oluşur. Bir seferde yalnızca bir rakam görüntüleyebilirler.
8051 Mikrodenetleyiciyi Kullanarak 7 Segmentli Ekranda Numaraları Görüntüleme
1. Dört 7 segmentli ekranda '0 - F' arasındaki sayıları görüntülemek için WAP?
#Dahil etmek
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}
seni imzalamadım, j
a = b = c = d = 1
süre (1)
{
için (i = 0i<10i++)
{
P2 = n [i]
için (j = 0j<60000j++)
}
}
}
2. 7 segmentli ekranlarda ’00 ile 10 ’arasındaki sayıları görüntülemek için WAP?
#Dahil etmek
sbit a = P3 ^ 0
sbit b = P3 ^ 1
geçersiz ekran1 ()
geçersiz display2 ()
geçersiz gecikme ()
void main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
seni imzalamadım, j
ds1 = ds2 = 0
süre (1)
{
için (i = 0, i<20i++)
ekran1 ()
ekran2 ()
}
}
geçersiz ekran1 ()
{
a = 1
b = 0
P2 = s [ds1]
gecikme ()
a = 1
b = 0
P2 = s [ds1]
gecikme ()
}
geçersiz display2 ()
{
ds1 ++
eğer (ds1> = 10)
{
ds1 = 0
ds2 ++
eğer (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
geçersiz gecikme ()
{
unsignedint k
(k = 0k için<30000k++)
}
8051 Mikrodenetleyici kullanarak Zamanlayıcı / Sayaç Hesaplamaları ve Programı
Gecikme, uygulama yazılımı geliştirmede önemli faktörlerden biridir. Bununla birlikte, normal gecikme, zamanlayıcı gecikmesini uygulamak için bu sorunun üstesinden gelmek için değerli bir sonuç vermeyecektir. zamanlayıcılar ve sayaçlar Sayım darbeleri ile değerli zaman gecikmesini sağlamak için birçok uygulamada kullanılan mikrodenetleyicinin donanım bileşenleridir. Her iki görev de yazılım tekniği ile gerçekleştirilir.
Zamanlayıcı Gecikmesi
T1M2 (timer1 ve mode2) kullanarak 500us zaman gecikmesi oluşturmak için WAP?
#Dahil etmek
void main ()
{
imzasız karakter i
TMOD = 0x20 // zamanlayıcı modunu ayarla //
için (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // zaman gecikmesini ayarlayın //
TH1 = 0x00
TR1 = 1 // zamanlayıcı oN //
(TF1 == 0) // iken bayrak bitini kontrol edin //
TF1 = 0
}
TR1 = 0 // zamanlayıcı kapalı //
}
Normal Döngü Gecikmesi
geçersiz gecikme ()
{
unsignedint k
(k = 0k için<30000k++)
}
8051 Mikrodenetleyici kullanarak Seri Haberleşme Hesaplamaları ve Programı
Sinyalin iletilmesi ve alınması için genellikle seri iletişim kullanılır. 8051 mikro denetleyici, UART seri iletişim Rx ve Tx pinleri tarafından iletilen ve alınan sinyaller. UART, veri baytlarını alır ve ayrı bitleri sıralı bir şekilde gönderir. Kayıtlar, hafızadaki verileri toplamanın ve saklamanın bir yoludur. UART, yarı çift yönlü bir protokoldür. Yarı çift yönlü, verilerin aynı anda değil, aktarılması ve alınması anlamına gelir.
8051 Mikrodenetleyici kullanarak Seri Haberleşme Hesaplamaları ve Programı
1. Seri pencereye 'S' karakterini iletmek için WAP baud hızı olarak 9600 kullanıyor mu?
28800, 8051 mikro denetleyicinin maksimum baud hızıdır
28800/9600 = 3
Baud hızı '3', zamanlayıcılarda saklanır
#Dahil etmek
void main ()
{
SCON = 0x50 // seri iletişimi başlat //
TNOD = 0x20 // zamanlayıcı modunu seçti //
TH1 = 3 // baud hızını yükle //
TR1 = 1 // Zamanlayıcı AÇIK //
SBUF = ’S’ // karakteri kayıt defterine kaydedin //
while (TI == 0) // kesme kaydını kontrol et //
TI = 0
TR1 = 0 // zamanlayıcıyı kapat //
while (1) // sürekli döngü //
}
2. Hiper terminalden veri almak ve bu verileri Mikroişlemcinin PORT 0'a 9600 baud kullanarak göndermek için WAP?
28800, 8051 mikro denetleyicinin maksimum baud hızıdır
28800/9600 = 3
Baud hızı '3', zamanlayıcılarda saklanır
#Dahil etmek
void main ()
{
SCON = 0x50 // seri iletişimi başlat //
TMOD = 0x20 // zamanlayıcı modunu seçti //
TH1 = 3 // baud hızını yükle //
TR1 = 1 // Zamanlayıcı AÇIK //
PORT0 = SBUF // veriyi SBUF'tan port0'a gönder //
while (RI == 0) // kesinti kaydını kontrol et //
RI = 0
TR1 = 0 // zamanlayıcıyı kapat //
while (1) // karakter alındığında programı durdur //
}
8051 Mikrodenetleyiciyi Kullanarak Programları Kes
Kesinti, mevcut programı durdurmaya ve diğer programı hemen yürütmeye zorlayan bir sinyaldir. 8051 mikro denetleyici, dahili ve harici olmak üzere 6 kesinti sağlar. kaynakları kesmek . Kesinti oluştuğunda, mikro denetleyici mevcut görevi duraklatır ve ISR'yi çalıştırarak kesmeye katılır, ardından mikro denetleyici son göreve geri döner.
Zamanlayıcı 0 kesildiğinde sola kaydırma işlemini gerçekleştirmek için WAP, ardından ana işlevde P0 için kesme işlemi gerçekleştirilsin mi?
#Dahil etmek
işaretsiz karakter b
void timer0 () interrupt 2 // seçilen zamanlayıcı0 interrupt //
{
b = 0x10
P1 = b<<2
}
void main ()
{
işaretsiz karakter a, i
IE = 0x82 // zamanlayıcı 0 kesintisini etkinleştir //
TMOD = 0x01
TLo = 0xFC // kesinti zamanlayıcısı //
TH1 = 0xFB
TR0 = 1
a = 0x00
süre (1)
{
için (i = 0i<255i++)
{
a ++
Po = a
}
}
}
8051 Mikrodenetleyici kullanarak Tuş Takımı Programlama
Matris tuş takımı, kullanıcının gerekli görevleri gerçekleştirmesine izin vermek için birçok yerleşik uygulamada kullanılan analog bir anahtarlama cihazıdır. Bir matris tuş takımı satırlar ve sütunlar halinde matris biçiminde anahtarların bir düzenlemesinden oluşur. Sıralar ve sütunlar, mikro denetleyiciye, anahtar sırası bir pime bağlanacak ve her sütundaki anahtarlar başka bir pime bağlanacak şekilde bağlanır, ardından işlemleri gerçekleştirir.
8051 Mikrodenetleyici kullanarak Tuş Takımı Programlama
1. WAP, düğmeye basarak LED'i değiştirmek için
#Dahil etmek
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
geçersiz gecikme ()
void main ()
{
süre (1)
{
a = 0
b = 1
c = 1
d = 1
gecikme ()
a = 1
b = 0
c = 1
d = 1
geçersiz gecikme ()
{
imzasız karakter i
TMOD = 0x20 // zamanlayıcı modunu ayarla //
için (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // zaman gecikmesini ayarlayın //
TH1 = 0x00
TR1 = 1 // zamanlayıcı oN //
(TF1 == 0) // iken bayrak bitini kontrol edin //
TF1 = 0
}
TR1 = 0 // zamanlayıcı kapalı //
}
2. Tuş takımındaki '1' tuşuna basarak LED'i AÇMAK için WAP?
#Dahil etmek
sbit r1 = P2 ^ 0
sbit c1 = P3 ^ 0
sbit LED = P0 ^ 1
void main ()
{
r1 = 0
eğer (c1 == 0)
{
LED = 0xff
}
}
3. Tuş takımındaki ilgili tuşa basarak yedi segmentteki 0,1,2,3,4,5 sayısını görüntülemek için WAP?
#Dahil etmek
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
eğer (c1 == 0)
{
a = 0xFC
}
Eğer (c2 == 0)
{
a = 0x60
}
eğer (c3 == 0)
{
a = 0xDA
}
Eğer (c4 == 0)
{
a = 0xF2
}
}
8051 Mikrodenetleyici ile LCD Programlama
LCD ekran Bilgiyi bir metin veya resim formatında görüntülemek için birçok uygulamada sıklıkla kullanılan elektronik bir cihazdır. LCD, ekranda karakterleri kolayca gösterebilen bir ekrandır. LCD ekran, mikro denetleyiciye arayüz oluşturmak için kullanılan 8 veri hattı ve 3 kontrol hattından oluşur.
8051 Mikrodenetleyici ile LCD Programlama
LED ekranda “EDGEFX KITS” görüntülemek için WAP?
#Dahil etmek
#define kam P0
voidlcd_initi ()
voidlcd_dat (işaretsiz karakter)
voidlcd_cmd (işaretsiz karakter)
geçersiz gecikme ()
geçersiz görüntüleme (işaretsiz karakter * s, işaretsiz karakter r)
sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit at = P2 ^ 2
void main ()
{
lcd_initi ()
lcd_cmd (0x80)
gecikme (100)
lcd_cmd (0xc0)
ekran ('edgefx kitleri', 11)
süre (1)
}
geçersiz görüntüleme (işaretsiz karakter * s, işaretsiz karakter r)
{
imzasız w
için (w = 0w
lcd_data (s [w])
}
}
voidlcd_initi ()
{
lcd_cmd (0 × 01)
gecikme (100)
lcd_cmd (0 × 38)
gecikme (100)
lcd_cmd (0 × 06)
gecikme (100)
lcd_cmd (0x0c)
gecikme (100)
}
voidlcd_dat (işaretsiz karakter verisi)
{
tarak = o
rs = 1
rw = 0
in = 1
gecikme (100)
in = 0
}
}
voidlcd_cmd (işaretsiz karakter cmd)
{
geldi = cmd
rs = 0
rw = 0
in = 1
gecikme (100)
in = 0
}
void delay (unsigned int n)
{
unsignedint a
için (a = 0a
Umarım bu makale, birkaç örnek programla 8051 mikrodenetleyiciyi kullanan gömülü sistem programlama hakkında temel bilgiler verir. Ayrıntılı gömülü C programlama öğreticisi için lütfen yorumlarınızı ve sorularınızı aşağıdaki yorum bölümüne gönderin.