微波炉控制器的设计与分析
- 格式:pdf
- 大小:255.93 KB
- 文档页数:19
微波炉控制系统的设计与实现微波炉是当今家庭中必不可少的家用电器之一,其方便、快捷、安全的特点受到了人们的欢迎。
然而,微波炉在工作过程中需要通过控制系统来调节电磁波的输出,以确保食品的加热效果和安全性。
因此,设计和实现一个稳定可靠的微波炉控制系统是必不可少的。
一、控制系统的功能需求微波炉控制系统主要需要完成如下功能:电源控制、电磁波输出控制、时间计时和显示以及安全机制的设计。
其中,电源控制需要控制微波炉的电源输入和输出,以保证稳定工作;电磁波输出控制主要用于调节电磁波的输出功率;时间计时和显示则是通过LED显示屏或者液晶屏来显示时间,并进行倒计时;安全机制用于保证用户的安全,在炉门未关闭时自动切断电源。
二、控制系统的工作原理微波炉的工作原理是通过控制系统来调节电源输入和输出电磁波的功率、频率和时序。
当用户开启微波炉时,系统首先进行电源控制,确保电源正常工作,然后进入电磁波输出控制阶段。
在输出控制阶段中,系统根据用户设定的输出功率和烹饪时间来控制电磁波的输出功率和时序,以确保食品能够均匀加热。
同时,系统还需要进行时间计时和显示,为用户提供倒计时和时间显示功能。
当烹饪结束时,系统自动关闭电源,同时启动安全机制,切断电源,以保证用户的安全。
三、控制系统的硬件设计控制系统的硬件主要包括中央处理器(CPU)、晶振、存储器、显示屏、光电传感器和电源控制模块等。
其中,CPU是控制系统的核心,用于控制微波炉的工作流程。
晶振则提供稳定的时钟信号,为系统提供精准的时间计时功能。
存储器用于存储微波炉的各种工作参数和数据,以便后续的查询和更新。
显示屏则提供时间计时和烹饪过程的显示功能,便于用户操作和使用。
光电传感器则用于检测炉门的关闭状态,以触发安全机制的启动。
电源控制模块用于对电源进行控制和管理,确保系统的稳定性和安全性。
四、控制系统的软件设计控制系统的软件设计涉及到编程语言、操作系统和控制程序的编写等方面。
在编程语言方面,常用的有C语言、汇编语言和嵌入式语言等。
微波炉控制器微波炉是一种微波加热食品的现代化烹调灶具,它由电源、磁控管、控制电路和烹调腔组成。
其中,微波炉控制器部分完成各工作状态之间的切换功能,可以通过硬件语言描述的数字系统来实现。
详细分析微波炉控制器的原理和组成结构,并设计一个简单的具有定时和信息显示功能的微波炉控制器。
一、系统设计要求设计一个具备定时和信息显示功能的微波炉控制器。
要求该微波炉控制器能够在任意时刻取消当前工作,复位为初始状态。
可以根据需要设置烹调时间的长短,系统最长的烹调时间为59分59秒;开始烹调后,能够显示剩余时间的多少。
显示微波炉控制器的烹调状态。
二、系统设计方案分析上述设计要求,微波炉控制器可由以下四个电路模块组成:状态控制电路,其功能是控制微波炉工作过程中的状态转换,并发出相关控制信号;数据装载电路,其功能是根据控制信号选择定时时间,测试数据或计时完成信息的载入;计时电路,其功能是对时钟进行减法计数,提供烹调完成时的状态信号;显示译码电路,其功能是显示微波炉控制器的各状态信息。
图1 微波炉控制器的系统框图微波炉控制器的系统框图如图1所示。
其中,CLK为时钟输入信号,时钟上升沿敏感;RESET为复位信号,高电平有效时系统复位清零;TEST为数码显示管测试信号,高电平有效,用于测试显示管是否正常工作;SET_T为烹调时间设置信号,高电平有效时允许设置烹调时间;DATA为定时时间输入信号,用于设置烹调时间的长短,其由高到低分别表示定时时间分、秒的十位,个位;START为烹调开始信号,高电平有效时开始烹调;输出信号COOK指示微波炉状态,高电平时表示烹调进行时;SEC0、SEC1、MIN0、MIN1分别表示秒个位、秒十位、分个位、分十位。
顶层模块的RTL原理图如下:微波炉控制器的工作流程如下:首先,对系统进行复位清零,使其各电路模块均处于初始状态;当烹调时间设置信号SET_T有效时,读入时间信号DATA[15…0]的取值,此时系统自动复位并显示设置的时间信息,按下开始键START,系统进入烹调状态,COOK信号变为高电平,时钟计数器开始减法计数,显示剩余烹调时间。
基于FPGA 的微波炉控制器的设计一、设计任务及要求该实验主要完成微波炉控制器的设计。
主要功能有复位开关、模式选择、烹调时间设置、LED 指示烹调状态及数码管显示烹调剩余时间。
上电后,系统处于复位状态。
工作时首先进行烹调时间设置,并使用数码管显示时间信息,设要求最长的烹调时间为59分59秒,时间设置完毕后系统处于等待状态状态;选择开始烹调模式时系统进入烹调状态,时间显示数码管按每秒减1的倒计时方式显示剩余烹调时间;烹调结束后,系统回到复位状态。
二、设计方案及流程微波炉控制器系统主要有一下五个电路模块组成:分频模块、模式选择电路、时间设置电路、倒计时模块、显示模块。
分频模块完成系统50MHz 的时钟向1Hz 的分频,使计时器能够按照1S 的频率倒计时。
模式选择电路,其功能是控制微波炉工作过程中模式的切换,选择不同的模式系统计入不同的工作状态。
时间设置模块,该模块主要是可根据用户需求输入烹调时间;倒计时电路会根据用户所设置的时间进行倒计时,由数码管显示电路显示目前烹调状态,同时由LED 灯指示系统反正在烹调。
系统总体框图如下:系统的输入输出信号如下:输入clk ,key0,key1,key2,key3,key4五个信号,输出hex0,hex1,hex2,hex3,sec_flag ,cook 六个信号。
时间设置模块50MHz 分1Hz 的 分频模块数码管显示电路倒计时电路模式选择模块图1 系统总体框图clk作为50MHz分频模块的输入,时钟上升沿有效。
Key3作为模式选择信号,mode0表示系统进入分设置模块,mode1表示系统进入秒设置模块,mode2表示系统设置时间完成,进入烹调状态。
key2的作用是在mode0及mode1模式下对分、秒设置进行加操作,按一下分、秒加1。
key1的作用是在mode0及mode1模式下对分、秒设置进行减操作,按一下分、秒信号减1。
key0作为系统的复位信号,在不同模式下按下key0系统都会进入复位状态,数码管显示”0000”,cook标志的LED灯处于灭状态。
二、文献综述现有市售的微波炉其主要弊端为:不能按既有程序进行烹调,在节能方面也未做过多考虑。
烹调经验告诉我们,家常菜大多可按固定程序烹调、炖肉、煮饭、烘烤。
若采取分时、分档火力加热,则可节能。
微波炉控制系统功能比较齐全,在火力档位设了解冻、烹调、烘烤、保温、自定义加热、自定义烹调以及按给定程序烹调等七种主要功能,其中程序烹调共设置了八种不同的烹调流程,供用户选择。
在控制方面,实现了智能化,信息化管理,并且具有密码开锁功能,即只有知道相应模式键继续运行的号码的人,才能对该机进行操作等等功能。
STC12C5404AD单片机是具有全新流水线和精简指令集结构的高速率、低功耗新一代单片机。
它带有8路10位精度ADC、4路PWM/PCA(可编程计数器阵列)、SPI同步通信口以及内部集成的MAX810专用复位电路。
这些特点不但增加了开发者的使用灵活性,同时还可以帮助用户减小PCB尺寸和系统成本。
此外,STC12C5404AD型处理器还可以通过串口(P3.0/P3.1)直接下载用户程序,从而使其适合于在系统(ISP)及在应用(IAP)中编程,因而可为许多计算密集的嵌入式控制应用领域提供功能强大、使用灵活且性价比高的解决方案。
STC12C5404AD是STC系列单片机,采用RISC型CPU内核,兼容普通8051指令集,片内含有10KB Flash 程序存储器,2KB Flash 数据存储器,512B RAM 数据存储器,同时内部还有看门狗(WDT);片内集成MAX810专用复位电路、8通道10位ADC以及4通道PWM,具有在系统编程(ISP)和在应用编程(IAP),片内资源丰富、集成度高、使用方便。
STC12C5404AD对系统的工作进行实施调度,实现外部输入参数的设置、蓄电池及负载的管理、工作状态的指示等。
电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成。
只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。
浅析智能微波炉控制系统设计的相关要点摘要:微波炉已经逐渐走进了我们大部分的家庭,使用微波炉给我们带来了很多的方便。
而随着控制技术和智能技术的发展,微波炉也朝着智能化、信息化的方向发展。
为此,本文首先对微波炉进行了简要概述,分析了当前智能微波炉的特点,并以某智能微波炉的可编程微波炉控制系统为例进行了探讨。
关键词:智能微波炉;控制系统;设计要点1.微波炉概述微波炉是用微波来加热食品的,微波炉加热过程很短,其中养分和维生素丢失少,并且矿物质、氨基酸的存活率会比其他方法高许多。
与煤炉、煤气相比较而言,其工作时不会产生类似于碳未完全焚烧而导致有害气体和烟尘,其工作加热食物是在炉腔中实现的,不会存在明火,用起来更加安全安心。
微波炉的电路控制系统将220V交流电压通过高压变压器的变压和高压整流器的整流,转换成4200V左右的直流电压,送至磁控管产生微波,微波能量通过波导管传到炉内腔中。
因为金属的特性,微波不能穿过炉内,只能在炉腔中反复折射,反复穿透食品,被脂肪、含有水分的蛋白质的物质吸收能量,加热食品,这样才能完成加热过程。
2.智能微波炉的特点微波炉作为家用电器之一,已广泛进入人们的生活,其类型也从最初的机械控制发展到目前的电脑控制。
采用微电脑控制技术和传感器感测技术,实现微波炉的智能化加热烹调是微波炉技术发展的一大方向。
这种智能微波炉无需使用者在操作按键上输入烹调时间、加热功率、食物重量等参数,只要按下启动键,微波炉内的传感器就检测到食物温度、整齐湿度等参数不断输出给电脑控制芯片,微电脑控制芯片进行一系列的运算、比较、分析之后,输出相应的指令,自动控制微波炉的加热时间和功率大小,实现智能化全自动烹调。
3.智能微波炉控制系统设计实例分析通过上述对智能微波炉特点的分析,当前智能微波炉已经成为微波炉的主流产品,良好的控制系统设计是微波炉正常运行工作的基本保障。
为此,本节对智能微波炉中可编程微波炉控制系统为例进行分析,其除了可以实现常规的解冻、烹调、烘烤基本功能之外,还可以实现微波炉面板关闭的自动监测,通过Internet对微波炉进行远程智能控制等。
微波炉可编程逻辑控制系统设计微波炉可编程逻辑控制系统设计随着人们生活水平的提高,微波炉已经成为广大家庭不可或缺的电器,相信大家对微波炉已经非常熟悉了。
它能够以独特的方式加热食物,既快捷又方便。
但是,目前市场上的微波炉普遍存在着定时不准确、温度控制不稳定、操作复杂等问题,给用户的使用带来了不便。
为此,设计一种微波炉可编程逻辑控制系统,是非常有必要的。
需求分析:我们的系统需要满足以下几个主要功能:1.定时功能:以最短的时间精确地加热食物,避免加热过头。
2.温度控制:通过精确测量微波的温度,避免加热不均匀。
3.操作简单:用户操作界面应该简单直观,方便不同用户的使用。
基于以上需求分析,我们可以开始系统的设计。
硬件方案1.温度传感器:我们需要一种能够准确测量微波温度的传感器,在市面上有很多种温度传感器,常用的有热电偶、热敏电阻、热电阻等。
我们考虑使用一种精度高、反应速度快、稳定性好的热敏电阻。
2.触控屏:使用触控屏可以简化用户的操作,让用户界面更加直观,可触控的屏幕也可以避免误操作和按键损坏等问题。
3.微波开关:微波加热的过程中,需要让微波源开关控制微波闸门的开关,以达到加热的目的。
4.微波管:微波的加热核心是微波管。
我们需要选购高品质的微波管,以确保加热效果稳定并且寿命长。
5.逻辑控制板:所有硬件的控制需要一个逻辑控制板来负责。
我们可以使用单片机或者嵌入式芯片。
软件方案1.程序设计:我们需要编写运行在逻辑控制板上的程序。
程序需要实现用户控制界面、温度传感器数据采集、微波开关控制等功能。
程序同时需要确保稳定高效,以此保证系统的性能。
2.内存管理:部分程序需要保存在逻辑控制板的内存中,因此我们需要实现程序的内存管理。
其中,存储程序的部分,需要保证读写速度快、容量足够。
3.硬件驱动:逻辑控制板需要控制各种硬件,如温度传感器、微波管等。
因此,我们需要考虑如何写好各种硬件的驱动程序以及如何控制硬件的状态。
总结本文介绍了微波炉可编程逻辑控制系统的设计方案,包括硬件方案和软件方案。
上海电力学院嵌入式软件开发基础实验报告题目:专业:电子科学与技术年级:姓名:学号:一.实验原理通过定时器模块、LCD模块、键盘模块等几个模块来实现微波炉控制程序。
表7-1 HD44780引脚信号图7-1 MCU与LCD的连接图7-2 HD44780原理框图列线n1n2n3n4MCU内部上拉电阻键盘接线原理图1 2 3 4 5 6 7 8行线m1m2m3m4+5V接MCU的PTA引脚PTH接线PTH7--LED1_CS3PTH6--LED1_CS2PTH5--LED1_CS1PTH4--LED1_CS0PTH3--SPI2_SSPTH2--SPI2_SPSCKPTH1--SPI2_MOSIPTH0--SPI2_MISO二.实验设备及其连接1.PC 机 一台 2.S12嵌入式开发系统 一台 3.4*4键盘 一个 4. HD44780兼容LCD 一个三.实验内容本次我的期末实验是实现一个基本微波炉控制程序,其功能是当我通过4*4键盘随意输入一个时间,之后我按动键盘上的A 键,LCD 上开始从我输入的时间开始倒计时直到为零为止,如果在倒计时的过程中我按动键盘上的B 键,则键盘将会复位要求重新输入时间。
四.试验程序(1)实验主程序//头文件#include "Includes.h" //总头文件INT8U put1(char c) { char c1; c1=c/10+0x30; return c1; }INT8U put2(char c)PTA 口(KEY1-8)Vcc{char c1;c1=c%10+0x30;return c1;}INT8U put3(INT8U a,INT8U b){INT8U c;c=(a-0x30)+(b-0x30)*10;return c;}//主函数int main(void){ INT8U A[6] ="000000";int f,i;int count=0;int ROB=0;INT8U remember;//定义初始显示缓存并赋初值const INT8U* g_DispalyInit = "please sulu time 00:00:00 ";//receive_data中存放从串口接收来的要被显示的32个数据INT8U receive_data[32];DISABLE_INTERRUPTS; //禁止总中断//1. 芯片初始化MCUInit();//2. 模块初始化KB_Init(); //(2) 键盘初始化SCIInit(); //(1) 串行口初始化LCDInit(); //(2) LCD初始化TimerInit(); //(2) 定时器1初始化//3. 内存初始化//(1) "时分秒"缓存初始化(00:00:00)time[0] = 0;time[1] = 0;time[2] = 0;//(2) 临时变量remember初始化remember = time[2];//(3) 全局变量TimInterCount初始化TimInterCount = 0;//3. 开放总中断ENABLE_INTERRUPTS;//4. 开放各模块中断EnableIOint; //KB_P.7-4输入引脚允许中断EnableSCIReInt; //(1) 开放SCI0接收中断EnableT1OVInt; //(2) 开放定时器1溢出中断//4. LCD显示初始化LCDShow((INT8U *)g_DispalyInit);//程序总循环入口while (1){ if(ROB!=1){for(i=0;i<6;i++){A[i] = KB_Def(KB_valueN);}time[0]=put3(A[1],A[0]);time[1]=put3(A[3],A[2]);time[2]=put3(A[5],A[4]);ROB=1;}if(count!=1){if(KB_DefValue =='A')count=1;elsegoto isrTIMER1;}memcpy(receive_data,"please wait time : : ",32);if (time[2] != remember){ //SCISendN(3, time);//发送当前"时分秒"receive_data[20]=put1( time[0] ) ;receive_data[21]=put2( time[0] ) ;receive_data[23]=put1( time[1] ) ;receive_data[24]=put2( time[1] ) ;receive_data[26]=put1( time[2] ) ;receive_data[27]=put2( time[2] ) ;remember = time[2];LCDShow((INT8U *)receive_data);//remember中存放当前秒值}if(KB_DefValue=='B'){ROB=0;count=0;time[0] = 0;time[1] = 0;time[2] = 0;}isrTIMER1:f=0;}}(2)实验模块程序1、定时模块:#include "Timer.h"void TimerInit(void){TSCR2 = 0x03;TSCR1 = 0x80;}void TimerUpDate(void){if (time[2] != 0){time[2]--;goto isrTIMER1_exit;}if((time[1] == 0)&(time[0] == 0)){goto isrTIMER1_exit;}elsetime[2] = 60;if (time[1] != 0){time[1]--;goto isrTIMER1_exit;}elsetime[1] = 60;if (time[0] != 0){time[0]--;goto isrTIMER1_exit;}elsetime[0] = 0;isrTIMER1_exit:TimInterCount = 0;}2、LCD模块#include "LCD.h" //液晶显示头文件void LCDInit(void){INT16U i;//定义数据口(PTB0-7)为输出LCDData_D = 0xFF; //数据口为输出//定义控制口(PTC0-2)为输出LCDCtrl_D |= (1<<LCDE);LCDCtrl_D |= (1<<LCDRS);LCDCtrl_D |= (1<<LCDRW);//设置指令LCDCtrl &= ~(1<<LCDRS); //RS、R/W=00,写指令LCDCtrl &= ~(1<<LCDRW);LCD_Command(0x38);//||||||||____ 可设任意值(0/1)//||||||______ F = 0,5*7点阵模式//|||||_______ N = 1,2行显示//||||________ DL = 1,8位数据总线//|||_________ 固定为001LCD_Command(0x08); //关显示,关光标显示,不闪烁LCD_Command(0x01); //清屏for (i=0; i<20000; i++); //延时>1.6msLCD_Command(0X06);LCD_Command(0x14); //光标右移一个字符位,AC自动加1 LCD_Command(0x0C); //开显示,关光标显示,不闪烁}void LCDShow(INT8U str[]){INT8U i;//1. LCD初始化LCDInit();//2. 显示第1行16个字符//2.1设置显示首地址LCDCtrl &= ~(1 << LCDRS); //RS,R/W = 00(写的是指令)LCDCtrl &= ~(1 << LCDRW);LCD_Command(0x80); //后7位为DD RAM地址(0x00) //2.2写16个数据到DD RAMLCDCtrl |= 1 << LCDRS; //RS,R/W = 10(写的是数据)LCDCtrl &= ~(1 << LCDRW);//将要显示在第1行上的16个数据逐个写入DD RAM中for (i = 0;i < 16;i++){LCD_Command(str[i]);}//3. 显示第2行16个字符//3.1设置显示首地址LCDCtrl &= ~(1 << LCDRS); //RS,R/W = 00(写的是指令)LCDCtrl &= ~(1 << LCDRW);LCD_Command(0xC0); //后7位为DD RAM地址(0x40) //3.2再写16个数据到DD RAMLCDCtrl |= 1 << LCDRS; //RS,R/W = 10(写的是数据)LCDCtrl &= ~(1 << LCDRW);//将要显示在第2行上的16个数据逐个写入DD RAM中for (i = 16;i < 32;i++){LCD_Command(str[i]);}}void LCD_Command(unsigned char cmd){INT8U i;//1.等待> 40usfor (i=0; i<200; i++);for (i=0; i<200; i++);for (i=0; i<200; i++);for (i=0; i<200; i++);//2.数据送到LCD的数据线上LCDData = cmd;//3.给出E信号的下降沿,使数据写入LCDLCDCtrl |= (1<<LCDE);asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");LCDCtrl &= ~(1<<LCDE); //Lcd结束接收数据for (i=0; i<200; i++);for (i=0; i<200; i++);for (i=0; i<200; i++);for (i=0; i<200; i++);}3、键盘模块#include "KB.h" //键盘扫描识别头文件void KB_Init(void){KB_P = 0x00; //复位KB_PKB_D = 0x0F; //定义7-4为输入,3-0为输出KB_PE = 0xF0; //定义KB_P.7-4允许上拉或下拉KB_PS = 0x00; //定义KB_P.7-4上拉电阻,并且下降沿产生中断KB_IE = 0x00; //定义KB_P.7-4输入引脚禁止中断KB_IF = 0xFF; //清除键盘中断标志位(写1清)}INT8U KB_Scan1(void){INT8U line,i,tmp;line=0xFE; //使第一根行线为0(低电平)for (i = 1; i <= 4; i++) //最多将扫描4根行线{//当前扫描的一行,输出低电平tmp = KB_P;tmp |= 0X0F;KB_P = tmp & line;asm("NOP");asm("NOP");//读取键盘口数据寄存器tmp = KB_P;//通过观察4根列线中是否出现低电平来判断当前行有无按键tmp &= 0XF0; //仅保留列线的值if (tmp != 0xF0) //当前行有键按下{tmp=KB_P; //读取扫描到的键值break; //退出循环不再扫描}else //当前行无按键,准备扫描下一行line = (line << 1) | 0x01;}if (i == 5) //无按键,以后将返回0xfftmp = 0xFF;return (tmp);}INT8U KB_ScanN(INT8U KB_count){INT8U i,KB_value_last,KB_value_now;if (0 == KB_count || 1 == KB_count)return KB_Scan1();//先扫描一次得到的键值,便于下面比较KB_value_now = KB_value_last = KB_Scan1();//以下多次扫描消除误差for (i=0; i<KB_count-1; i++){KB_value_now = KB_Scan1();if (KB_value_now == KB_value_last)return KB_value_now; //返回扫描的键值elseKB_value_last = KB_value_now;}return 0xFF; //返回出错标志const INT8U KB_Table[]={0xEE,'F',0xDE,'B',0xBE,'7',0x7E,'3',0xED,'E',0xDD,'A',0xBD,'6',0x7D,'2',0xEB,'D',0xDB,'9',0xBB,'5',0x7B,'1',0xE7,'C',0xD7,'8',0xB7,'4',0x77,'0',0x00};INT8U KB_Def(INT8U KB_valve){INT8U KeyPress;INT8U i;INT8U j;i = 0;while (1){j = KB_Table[i];//与0(定义表结束标志)相比较if (j == 0) //=0,即表中无次定义值{KeyPress = 0xFF; //返回0xFFbreak;}else{//与键值相比较if(j == KB_valve) //找到{KeyPress = KB_Table[i+1]; //取键定义值break;}else{i += 2; //指向下一个键值,继续判断}}}return KeyPress; //返回键定义值(3)头文件1、[Includes.h]总头文件//1.包含通用头文件#include "Type.h" //类型别名定义#include "isr.h" //中断处理函数头文件#include "MCUInit.h" //芯片初始化头文件//2.包含面向硬件对象头文件#include "LCD.h" //液晶显示头文件#include "SCI.h" //串行通信头文件#include "Timer.h" //定时器头文件#include "KB.h" //键盘扫描识别头文件//3.全局变量声明INT8U TimInterCount; //中断次数INT8U time[3]; //存放时,分,秒INT8U KB_DefValue;INT8U KB_valueN;#pragma LINK_INFO DERIV ATIVE "mc9s12dg128b"2、[KB.h]键盘扫描识别头文件//键盘扫描识别需要用到的头文件#include <mc9s12dg128.h> //MCU映像寄存器名#include "Type.h" //类型别名定//键盘扫描识别寄存器及标志位定义#define KB_P PTH //键盘接在PTH口上#define KB_D DDRH //相应的方向寄存器#define KB_PE PERH //相应的上拉下拉电阻允许寄存器#define KB_PS PPSH //相应的极性选择寄存器#define KB_IE PIEH //相应的中断允许寄存器#define KB_IF PIFH //相应的中断标志寄存器///键盘扫描识别函数声明void KB_Init(void); //键盘初始化INT8U KB_Scan1(void); //扫描读取键值INT8U KB_Def(INT8U KB_valve); //键值转为定义值INT8U KB_ScanN(INT8U KB_count); //多次扫描键盘3、[LCD.h]液晶显示头文件//液晶显示需要用到的头文件#include <mc9s12dg128.h> //MCU映像寄存器名#include "Type.h" //类型别名定义//液晶显示寄存器及标志位定义#define LCDData PORTB //lcd显示数据传送口#define LCDData_D DDRB //数据口方向寄存器#define LCDCtrl PTM //lcd控制信号传送口#define LCDCtrl_D DDRM //控制口方向寄存器#define LCDRS 2 //lcd寄存器选择信号PTM2#define LCDRW 3 //读写信号接PTM3#define LCDE 6 //lcd使能信号接PTM6//液晶显示相关函数声明void LCDInit(void); //液晶显示初始化void LCDShow(INT8U str[]); //在HD44780显示屏上显示数据void LCD_Command(INT8U cmd); //执行给定的cmd命令4、[Timer.h]定时器头文件//定时器需要用到的头文件#include <mc9s12dg128.h> //MCU映像寄存器名#include "Type.h" //类型别名定义//定时器相关函数声明void TimerInit(void); //定时器初始化函数声明void TimerUpDate(void); //定时器更新函数声明//外部变量声明extern INT8U time[3]; //存放时,分,秒extern INT8U TimInterCount; //中断次数五.实验小结通过本次试验我跟进一步的运用了编程软件,并且掌握了综合型实验编程,编程过程中我遇到了许多问题,最终我都一一解决了,可是最终我的实验功能还是没有达到我预想的功能,我输入的时间是乱码,并且在LCD显示的时间也是乱码,这个问题我到最后也没有解决,因而我的这个程序是失败的。