2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tämän kokeen tarkoituksena on suunnitella ja toteuttaa ikuinen kalenterijärjestelmä, joka perustuu STC89C52-mikrokontrollerin LCD12864-näyttöön, ja integroida lämpötila-anturi lämpötilanvalvontatoiminnon toteuttamiseksi. Järjestelmässä on tuntikohtainen kello- ja hälytystoiminto sekä äänimerkki. Tämä malli ei pysty toteuttamaan vain peruskellon ja lämpötilan näyttöä, vaan siinä on myös tiettyjä hälytystoimintoja, joten se sopii kotiin tai toimistoon.
Piiri koostuu pääasiassa mikro-ohjaimesta, LCD-näytöstä, lämpötila-anturista ja summerista. LCD12864-näyttö on kytketty mikro-ohjaimeen rinnakkaisliitännän kautta, DS18B20-lämpötila-anturi on kytketty mikro-ohjaimeen yksijohtimisliitännällä ja summeria ohjataan mikro-ohjaimen I/O-portin kautta.
Kun järjestelmä on kytketty päälle, se alustetaan ensin, mukaan lukien LCD-näytön alustus, kellon alustus, keskeytyksen alustus jne. Alustuskoodi on seuraava:
void main( void )
{
uchar clock_time[6] = { 0X00, 0X59, 0X23, 0X09, 0X04, 0X11 }; /* 定义时间变量 秒 分 时 日 月 年 */
uchar alarm_time[2] = { 10, 06 }; /* 闹钟设置 alarm_time[0]: 分钟 alarm_time[1] :小时 */
uchar temperature[2]; /* 定义温度变量 temperature[0] 低8位 temperature[1] 高8位 */
Lcd_Initial(); /* LCD初始化 */
Clock_Fresh( clock_time ); /* 刷新时间 */
Clock_Initial( clock_time ); /* 时钟初始化 */
/* 中断初始化 */
EA = 1; /* 开总中断 */
ET0 = 1; /* Timer0 开中断 */
ET2 = 1; /* Timer2 开中断 */
TMOD = 0x01; /* Timer0 工作方式 1 */
RCAP2H = 0x3c;
RCAP2L = 0xb0; /* Timer2 延时 50 ms */
}
Järjestelmä päivittää jatkuvasti pääsilmukan ajan ja näyttää sen LCD-näytön kautta. Samanaikaisesti lämpötila-arvo luetaan DS18B20-anturin kautta ja näytetään LCD-näytöllä.
while ( 1 )
{
Clock_Fresh( clock_time ); /* 时间刷新 */
Lcd_Clock( clock_time ); /* 时间显示 */
Sensor_Fresh( temperature ); /* 温度更新 */
Lcd_Temperture( temperature ); /* 温度显示 */
/* 整点报时 */
if ( (*clock_time == 0x59)