Mikroszámítógépek a járműtechnikában
7. sz. melléklet
A program a processzor hőmérsékletét méri és a virtuális LCD-re írja// A hőmérséklet értékét folyamatosan a virtuális LCD-re írja 2 jegyre | |
// Dr K. Gyenes 2010/09/28. | |
#include "compiler_defs.h" | // Compiler dependent macros |
#include "C8051F020_defs.h" | // SFR declarations |
#include "TS_vInterface.h" | // ToolStick Virtual Tools Interface |
typedef unsigned char byte; | |
typedef unsigned int word; | |
// Global Constants | |
#define SYSCLK 22118400 | // External crystal oscillator frequency |
#define SAR_CLK 2500000 | // Desired SAR clock speed |
// Function Prototypes | |
void init_Clock(void); | |
void PORT_Init(void); | |
void LCD_Init(void); |
|
void LCD_dec_bt(byte dat); | |
void delay(byte k); |
|
// ==== Main Routine ==== | |
void main(void) |
|
{ | |
word ad_temp; |
|
float temp; | |
init_Clock(); |
|
PORT_Init(); |
// Initialize port I/O pins |
SilabsInit020(); |
// Call this init function in the |
LCD_Init(); | // Initialize LCD |
ADC0CN = 0x81; |
// Enable AD, left justified. start by ADBUSY |
REF0CN = 0x07; |
// temp sensor, on-chip VREF, |
AMX0SL = 0x0F; |
// Select TEMP sens as ADC mux output |
ADC0CF = 0x81; |
// ADC conv clock = SYSCLK/16, PGA gain = 2 |
while (1) |
// Endless working loop |
{ | |
AD0BUSY = 1; |
// Start A/D conversion |
while (AD0BUSY); |
// Wait for ready |
LCD_ControlWrite(0x01); | // Clear LCD |
ad_temp = ((ADC0H << 8) | ADC0L) - 41857; | |
temp = (100L * ad_temp) / 154; | |
LCD_dec_bt(temp/100); | // Integer part |
LCD_DataWrite(' '); | |
LCD_DataWrite('f'); |
|
LCD_DataWrite('o'); |
|
LCD_DataWrite('k'); |
|
LCD_DataWrite('C'); |
|
delay(100); | |
} | |
} | |
// ==== End of Main ==== | |
void init_Clock(void) | |
{ | |
OSCICN = 0x86; |
//-- 1000 0110b |
while ((OSCICN & 0x10) == 0); | //-- poll for IFRDY -> 1 |
} | |
void PORT_Init (void) | |
{ | |
WDTCN = 0xDE; |
|
WDTCN = 0xAD; |
|
XBR2 = 0x40; |
// Enable the crossbar, weak pull-ups enable |
P74OUT = 0x08; |
// P5[7:4] - LEDs D1-D4 |
P4 = 0xFF; | |
P5 = 0x0F; | // Clear port P5[7:4] (Switch off LEDs). |
} | |
void LCD_Init(void) |
|
{ | |
LCD_ControlWrite(0x0C); | // Display ON, Cursor OFF |
LCD_ControlWrite(0x01); | // Clear LCD |
LCD_ControlWrite(0x06); | // Entry mode increment without shift |
} | |
void LCD_dec_bt(byte dat) | // Write 1 byte 0..255 |
{ | |
byte ones; | |
ones = dat % 10 + 48; | |
dat /= 10; | |
if (dat/10) | |
LCD_DataWrite(dat/10 + 48); | // hundreds |
else LCD_DataWrite(' '); | |
LCD_DataWrite(dat % 10 + 48); | // tens |
LCD_DataWrite(ones); | // ones |
} | |
void delay(byte k) |
|
{ | |
volatile word i,j; | |
for (j=0; j < k; j++) | |
for (i=0; i < 20000; i++) ; | // Dummy statement |
} | |
// ==== End of Module ==== |
Tartalomjegyzék
- Mikroszámítógépek a járműtechnikában
- Impresszum
- Köszönetnyilvánítás
- 1. Ajánlás
- 2. Bevezetés
- 3. A számítástechnika fejlődése (történeti áttekintés)
- 4. Mikroszámítógép-generációk
- 5. Integrált áramkör előállítása
- 6. Aritmetikai műveletek a mikroszámítógépekben
- 7. Az analóg jelek átalakítása
- 8. Kommunikáció a mikroszámítógéppel
- 9. A mikroszámítógép hardverfelépítése
- 10. Az utasítások felépítése
- 11. Megszakítások
- 12. A programfejlesztő környezet
- 13. A mikroszámítógépek programozása
- 14. Az assembler program készítése
- 15. C program készítése
- 16. Az Arduino mikrogép
- 17. Mellékletek
- 1. sz. melléklet • Az ütemjel-generáló assembler program forráskódja
- 2. sz. melléklet • A program G1 gomb ismételt lenyomására ki-be kapcsolja a LED1 lámpát
- 3. sz. melléklet • A program 1 sec idővel villogtatja LED1 lámpát
- 4. sz. melléklet • Megszakítás kiváltása
- 5. sz. melléklet • A/D konverzió
- 6. sz. melléklet • Timer0 villogtatja a négy LED-lámpát
- 7. sz. melléklet • A program a processzor hőmérsékletét méri és a virtuális LCD-re írja
- 8. sz. melléklet • A programbillentyű kezelést valósít meg
- 9. sz. melléklet • Az UART programozása
- 10. sz. melléklet • D/A konverter virtuális oszcilloszkópra
- 11. sz. melléklet • PWM jel generálása
- 12. sz. melléklet • Switch konvertálása decimális formába
- 13. sz. melléklet • Az Arduino szintaktikája
- 14. sz. melléklet • Az Arduino beépített függvényei
- 1. sz. melléklet • Az ütemjel-generáló assembler program forráskódja
- 18. Példatár
- 19. Irodalom
Kiadó: Akadémiai Kiadó
Online megjelenés éve: 2021
ISBN: 978 963 454 711 2
A kötet elsősorban a BME Közlekedésmérnöki Kar mesterszakos hallgatói számára készült az azonos nevű tárgy segédleteként, de hasznos lehet a logisztika, elektrotechnika és számítástechnika témái iránt érdeklődő hallgatók számára is. A szerző azoknak a mechatronika, elektronika és számítástechnika iránt elkötelezett hallgatóknak ajánlja, akik TDK-munkát készítenek, de hasznos lehet a diplomamunkát írók és az államvizsgára felkészülők számára is.
Hivatkozás: https://mersz.hu/gyenes-mechatronika-es-mikroszamitogepek//
BibTeXEndNoteMendeleyZotero