成绩:
《单片机应用实践》报告
专 业: 通信工程
学 号:
姓 名: 指导老师:
福州大学阳光学院电子信息工程系
一. 设计目的与意义
随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。无论是在工业方面,农业方面或者是平民大众的生活当中,我们都能看到温度计的身影。
传统的温度检测以热敏电阻和AD590为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差。测温准确度低,检测系统也有一定的误差。因此,利用新型温度传感器取代旧式的温度传感器是必然的趋势,新型的温度传感器的优势越来越得到体现,越来越普及。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。
本设计的温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,测温传感器使用DS18B20,LCD以串口传送数据,实现温度显示,能准确达到以上要求。同时计时器的应用,使得温度计在使用时能够提示运行时间,设置报警时间等。
二. 设计的主要功能
(1)
功能1,采集一路温度信号,温度范围为0~100℃,温度传感器可采用DS18B20,采集的数据系统自动存储并显示,温度显示精确到小数一位,温度超限自动报警。
功能2,方波信号输出,输出波形的频率范围为1Hz~1kHz,频率可调,输出波形幅度范围固定5V。
按键操作功能,按键切换功能1和功能2。
采用多位数码管或LCD显示,显示当前温度值或当前方波频率。
(2) (3) (4)
三. 硬件设计
1、设计系统框图如下图:
图1-1 系统框图
1
温度传感器 AT89S52 温度控制 显示设备 报警电路 键盘设定
利用AT89S52芯片控制温度传感器DS18B20进行实时温度检测并显示,同时当LCD液晶显示器接收到来自AT89S52单片机传送来的温度信息后,分别显示了当前的温度,温度上限,温度下限。 2、AT89S52的引脚如图4-1所示:
图1-2 AT89S52单片机引脚图
3、晶振电路
在晶振电路中,主要用到了XTAL1和XTAL2两个引脚。
(1)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 (2)XTAL2:来自反向振荡器的输出。
在晶振电路中,AT89S52具有两种晶振方式,一种是片内时钟振荡方式,但需要在引脚外接石英晶体和振荡电容,振荡电容的值一般取10-30pf。另一种是外部时钟方式,即将XTAL1接外部时钟,XTAL2脚悬空。本设计的晶振电路如图1-3所示。
图1-3 晶振电路
2
4、温度采集电路
温度控制电路主要运用到了DS18B20和AT89S52。如何使两者连接实现功能是温度控制电路的主要设计目的。
图1-4 DS18B20管脚图
在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。内部寄生电源I/O口线要接5KΩ左右的上拉电阻。这里采用的是第一种连接方法,如图图1-5所示:
图1-5 温度采集电路
传感器数据采集电路主要指DS18B20温度传感器与单片机的接口电路。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式考虑到实际应用中寄生电源供电方式适应能力差且易损坏,此处采用电源供电方式,I/O口接单片机的P1.3口。 5、液晶显示电路
液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB线路板,背光源,结构器件装配在一起的组件。
在显示电路中,VSS接地,VDD接5V正电源, VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,为了获得最佳对比度,VEE接地。
3
图1-6 液晶显示电路图
6、报警电路和按键电路
图1-7 报警电路
图1-8 按键电路
4
四. 软件设计
1、流程图
开始 初始化中断和定时器 显示初始化 SET键被按下? N 从DS18B20读取温度并显示 Y 按键设置 温度极限 Y N 执行报警程序 返回 图5-1 主程序流程
2、主要程序 (1)、管脚定义
#define KeyPort P3 //定义按键端口
bit ReadTempFlag;//定义读时间标志 sbit SPK=P1^2; //定义喇叭端口 sbit led = P2^0; //管脚定义 sbit led0 = P1^0; //管脚定义 sbit KEY=P3^4; //定义按键输入端口 unsigned char count=0; //定义变量 void Init_Timer0(void);//定时器初始化
5
unsigned char KeyScan(void);//键盘扫描 (2)、串口通讯初始化 void UART_Init(void) {
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装 TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
TR1 = 1; // TR1: timer 1 打开 //EA = 1; //打开总中断 //ES = 1; //打开串口中断 TI=1; } (3)、初始化液晶
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定 LCD_Clear(); //清屏 Init_Timer0();
UART_Init(); //UART:是一种通用串行数据总线,用于异步通信。 Init:初始化
Lcd_User_Chr(); //写入自定义字符
LCD_Write_Char(7,0,'h'); //LCD第1行第7列显示h LCD_Write_Char(8,0,'a');
LCD_Write_String(1,1,\"welcome\"); //LCD第2行第1列开始显示welcome
{ KEY=1; //按键输入端口电平置高(KEY=3^4) 开始工作按钮
LCD_Init(); //初始化液晶 DelayMs(20); //延时有助于稳定 LCD_Clear(); //清屏
Init_Timer0(); //初始化定时器 UART_Init();
Lcd_User_Chr(); //写入自定义字符 LCD_Write_Char(7,0,'h'); LCD_Write_Char(8,0,'a');
LCD_Write_String(1,1,\"welcome\"); (4)、温度上限下限 switch(TempFlag) {
case 0: //输出温度上限下限
sprintf(displaytemp,\"H.%3d L.%3d \
6
LCD_Write_String(0,1,displaytemp);//显示第二行 break;
case 1:LCD_Write_String(0,1,\"over tempH \"); DelayMs(0);SPK=!SPK;//超温发出大约500Hz的方波 频率越大声音越尖 break;//超温发出大约500Hz的方波 频率越大声音越尖
case 2:LCD_Write_String(0,1,\"under tempL \");DelayMs(0); SPK=!SPK;//超温发出大约500Hz的方波 频率越大声音越尖
break; //低温发出大约500Hz的方波 频率越大声音越尖 default:break; }
if(ReadTempFlag==1) {
ReadTempFlag=0;
temp=ReadTemperature(); temperature=temp*0.0625;
temp>>=4; if(temp>tempH)
TempFlag=1; //高于高温标志 else if(temp TempFlag=0; //正常显示标志 sprintf(displaytemp,\"Temp %6.2f \打印温度值%6.2f的格 式含义是,数字整体长度包括小数点为6位,保留两位小数。 LCD_Write_String(0,0,displaytemp);//显示第一行 LCD_Write_Char(13,0,0x01);//写入温度右上角点 LCD_Write_Char(14,0,'C'); //写入字符C } } } (5) 定时器初始化子程序 void Init_Timer0(void) { TMOD |= 0x01; //使用方式1,16位定时器,使用\"|\"符号可以在使用多个定时器时不受影响 //TH0=0x00; //给定初值 //TL0=0x00; EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } 7 五. 仿真结果 1、仿真原理图: 图1-9仿真原理图 2、温度仿真结果 图1-10 测试温度仿真 8 3、方波仿真结果 图1-11 测试方波仿真 六. 心得体会 在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。 本次设计的温度计主要由AT89S52和DS18B20来实现功能的。因此需要通过查阅资料来了解这些器件的基本结构,主要功能和注意事项等等。 在设计完成之后,设计合理的程序和通过仿真软件模拟仿真,又再一次检验了设计的成果。最后在实物焊接完成后,整个设计才圆满完成。温度计设计作为一种比较简单的单片机设计,只有突出其在简单,方便,使用,便捷方面,这个设计才有其意义。 整个设计从确定题目,到寻找相关资料,再到选择合适的器件,接着对电路图的绘制,程序的编写,仿真的进行,实物的焊接,最终调试。一步步走过来,一点点的进步,花了大量的时间和精力,而成果也是喜人的。 通过这次设计,不仅锻炼自己分析问题、处理问题的能力,还提高了自己的动手能力。但同时也发现了自己的不足,特别是在程序的编写方面,这在整个设计过程中给我造成了很大的困扰,其次是方波设计方面,我只设计出了频率为500HZ,幅度为5V的方波,但是要求是频率在1Hz~1kHz之间可变。这在设计过程中没有设计好,未能达到要求,自己程序方面还有待加强。 9 因篇幅问题不能全部显示,请点此查看更多更全内容