2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Percobaan ini bertujuan untuk merancang dan mengimplementasikan sistem kalender abadi berbasis tampilan LCD12864 mikrokontroler STC89C52, dan mengintegrasikan sensor suhu untuk mewujudkan fungsi pemantauan suhu. Sistem ini memiliki fungsi lonceng dan alarm setiap jam, dan meminta melalui bel. Desain ini tidak hanya dapat mewujudkan tampilan jam dan suhu dasar, tetapi juga memiliki fungsi alarm tertentu, sehingga cocok untuk skenario rumah atau kantor.
Sirkuit ini terutama terdiri dari mikrokontroler, layar LCD, sensor suhu dan bel. Tampilan layar LCD12864 dihubungkan ke mikrokontroler melalui antarmuka paralel, sensor suhu DS18B20 dihubungkan ke mikrokontroler melalui antarmuka kabel tunggal, dan bel dikontrol melalui port I/O mikrokontroler.
Setelah sistem dinyalakan, sistem diinisialisasi terlebih dahulu, termasuk inisialisasi tampilan LCD, inisialisasi jam, inisialisasi interupsi, dll. Kode inisialisasinya adalah sebagai berikut:
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 */
}
Sistem terus-menerus menyegarkan waktu di loop utama dan menampilkannya melalui layar LCD. Pada saat yang sama, nilai suhu dibaca melalui sensor DS18B20 dan ditampilkan pada LCD.
while ( 1 )
{
Clock_Fresh( clock_time ); /* 时间刷新 */
Lcd_Clock( clock_time ); /* 时间显示 */
Sensor_Fresh( temperature ); /* 温度更新 */
Lcd_Temperture( temperature ); /* 温度显示 */
/* 整点报时 */
if ( (*clock_time == 0x59)