Gyenes Károly

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 ====
 

Mikroszámítógépek a járműtechnikában

Tartalomjegyzék


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

Kivonat
fullscreenclose
printsave