首页 > 编程知识 正文

简单的单片机毕业设计(单片机本科毕业论文题目)

时间:2023-05-06 17:38:38 阅读:76728 作者:4737

文章目录1概述2引言2.1课题背景与目的3系统设计3.1智能饮水机功能设计3.1.1智能饮水机关键功能:3.1.2智能饮水机显示功能: 3.2系统架构3.3软件部分3.3

简介嗨,你好。 这里是丹成校长。 今天我要介绍一个单片机项目

基于单片机的智能饮水机系统设计与实现

大家可以用于课程设计和毕业设计

技术解答、毕设帮助、开题指导print('q746876041 ' ) )。

2引言2.1课题背景与目的本次设计的智能饮水机是单片机与传感器相结合的一种应用。

该系统设计集成了单片机和电子技术理论,从生活实际出发完善了饮水机的功能。 整个设计系统实现了三个功能,即加热、温度上下限控制和定时加热。 与传统的饮水机相比,由于采用了自动检测与控制的电子设计技术,可以很好地实现水温的测量与控制,具有广阔的应用前景。

系统包括温度传感器、键盘输入模块、输出控制模块、数据传输模块、温度显示模块和出水驱动电路等部分。

3系统设计

3.1智能饮水机功能设计智能饮水机具有过热保护防干烧、 加热至沸腾、 设置温度加热、 超温报警提示、 安全锁定、 电动机出水功能等。

3.1.1智能饮水机关键功能:控制饮水机出水,停水; 热键)负责加热开始和加热停止的控制; 锁定键)按锁定键,禁用其他键; 切换健)按下后用户开始设定所需温度; 温度设定键)将温度提高5,温度在0至100之间循环。 3.1.2智能饮水机显示功能:打开电源指示灯(绿色)电源,电源指示灯点亮; 按加热指示灯(黄色) )加热键,加热指示灯点亮,表示烧水开始作业。 再次按下加热键,指示灯熄灭,停止烧水; 锁定键指示灯(蓝色)锁定其他键功能,指示其他键不可用的指示灯点亮; 超温报警灯(红色)灯点亮,表示水达到设定的加热温度或沸腾停止加热。 数字代码)显示当前水温或用户设定的温度。 蜂鸣器)响了说明水沸腾停止加热。 3.2整个系统构建硬件系统由主控系统、输入输出模块、传感器、其他功能电路和电源部分组成。 主控制系统采用单片机控制,包括对键盘的信息接收和控制、对其他功能电路的控制等,通过软件编程实现预定功能的传感器部分即检测子系统,主要是水印其他功能电路部分包括恒温、防晒、出水等电路,达到功能多样化的电源部分为智能饮水机提供必要的电力,保证饮水机正常工作。

3.3软件部分3.3.1主程序部分程序的初始化主要包括三个环节:

)1)实现各种置栈指针,初始化定时器/计数器0,以及打开中断,启动定时器/计数器; )2)用LED显示当前水温,使其能够显示预设水温; )3)重复键扫描,判断是否有键按下,若无键按下返回显示; 如果键被按下,则实现与按下的键对应的操作。人机对话功能键设置如下:

(1) "出水"键)控制出水和停止出水; )2)“加热”键)控制和停止加热; )3)“锁定”键)用于锁定所有其他键; (4)“切换”键)用于将显示器切换到温度设定画面并开始温度设定; )5)“设定温度”键:以5为间隔在0至100之间逐渐增加水温设定。 //键码void main () {T=100; wile(1) {Lock_key ); if(lock==0) keyscan ); if(flag2==0) temp_display ); if(flag2==1) seg_display(t,0 ); if(temp=t*10 ) {Temp_led=0; Hot=1; Hot_led=1; (if ) tempt*10 ) Temp_led=1; if(temp=1000 ) {Beep=0; Hot=1; Hot_led=1; (if ) temp1000 ) Beep=1; }

3.3.2温度检测温度检测运用DS18B20芯片。 其功能全面、精度高,完全能够满足设计要求。 它把检测到的水温传送给单片机,单片机输出到显示电路显示实时水温。

//键码voidinit_ds18b20({ucharx=0; DQ=1; //DQ复位delay_us () 10; //稍微延迟DQ=0; //单片机将DQ转换为delay_us(100 ); //正确的延迟时间大于480usDQ=1高总线Delay_us(10; x=DQ; //稍微延迟后,如果x=0,则初始化成功x=1,则初始化失败delay_us(20; }uchar ReadOneChar () {uchar i; uchar dat=0; for(I=8; I

>0;i--){DQ = 0;dat>>=1;DQ = 1; if(DQ)dat|=0x80;delay_us(10);}return(dat);}void WriteOneChar(uchar dat){uchar i;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay_us(10);DQ = 1;dat>>=1;}}int ReadTem(){int t;uchar a,b;init_ds18b20();WriteOneChar(0xcc); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换delay_us(200);init_ds18b20();WriteOneChar(0xcc); //跳过读序号列号的操作WriteOneChar(0xbe); //读取温度寄存器等a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;return t;}void temp_display(){uint temp_point;temp=ReadTem()*0.625; //将温度的高位与低位合并temp_point=temp%10; //取出小数位SEG_display(temp/10,temp_point);} 3.3.3 显示程序设计

显示程序是负责点亮 4 支数码管, 并根据单片机送出的数据及时更新显示的数据, 其程序流程图如下

(大家可以换成oled屏显示)

// 关键代码void SEG_display(uchar dat1,uchar dat2){P23=1;P0=table[dat1/100];P20=0;delay_us(80);P20=1;P0=table[dat1/10%10];P21=0;delay_us(80);P21=1;P0=table[dat1%10]|0x80;P22=0;delay_us(80);P22=1;P0=table[dat2];P23=0;delay_us(80);} 3.3.4 键盘扫描程序

键盘扫描程序的任务是在程序运行过程中始终不停的检测是否有按键被按下, 如果检测到有按键被按下, 则进入与该按键对应的程序运行; 若该按键没有被按下, 则继续检测下一个按键, 如此循环, 从而完成每一个按键所对应的功能。

// 关键代码void keyscan(){if(key1==0){delay_ms(2);if(key1==0){flag=~flag;if(flag==1)Out=0;if(flag==0)Out=1;}while(!key1);}if(key2==0){delay_ms(2);if(key2==0){flag1=~flag1;if(flag1==1){Hot=0;Hot_led=0;}if(flag1==0){Hot=1;Hot_led=1;}}while(!key2);}if(key3==0){delay_ms(2);if(key3==0){if(flag2==1) T+=5;if(T>=101)T=0;}while(!key3);}if(key5==0){delay_ms(2);if(key5==0){flag2=~flag2;}while(!key5);}}void Lock_key() // 锁定键盘{if(key4==0){delay_ms(2);if(key4==0){Lock=~Lock;if(Lock==1)Lock_led=0;if(Lock==0)Lock_led=1;}while(!key4);}} 3.4 实现效果

4 最后 技术解答、毕设帮助、开题指导print("Q 746876041")

单片机毕设项目大全:
https://blog.csdn.net/huawei123444/article/details/119822845

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。