基于DS18B20的51单片机控制恒温箱.

基于DS18B20的51单片机控制恒温箱.
基于DS18B20的51单片机控制恒温箱.

#include"reg51.h"

sbit DQ =P1^4; //定义通信端口

sbit add_le=P1^0;//显示地址锁存

sbit data_le=P1^1;//显示数据锁存

sbit led_key = P1^3;//指示当前显示温度状态亮表示为按键灭表示为当前 sbit light_ctrl = P1^5; //AC灯控制

unsigned char inrup=0x00;

char dis[6];

code unsigned char table[16] = {0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0xff,0x00,

0xff,0x00,0xff,0xbf};

char key_data = 25;

char temp_now ;

//延时函数

void delay(unsigned int i)

{

while(i--);

}

//初始化函数

Init_DS18B20(void)

{

unsigned char x=0;

DQ = 1; //DQ复位

delay(8); //稍做延时

DQ = 0; //单片机将DQ拉低

delay(80); //精确延时大于 480us

DQ = 1; //拉高总线

delay(14);

x=DQ; //稍做延时后如果x=0则初始化成功 x=1则初始化失败 delay(20); }

//读一个字节

ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

for (i=8;i>0;i--)

{

DQ = 0; // 给脉冲信号

dat>>=1;

DQ = 1; // 给脉冲信号

if(DQ)

dat|=0x80;

delay(4);

}

return(dat);

}

//写一个字节

WriteOneChar(unsigned char dat)

{

unsigned char i=0;

for (i=8; i>0; i--)

{

DQ = 0;

DQ = dat&0x01;

delay(5);

DQ = 1;

dat>>=1;

}

}

//读取温度

ReadTemperature(void)

{

unsigned char a=0;

unsigned char b=0;

unsigned int t=0;

float tt=0.0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作

WriteOneChar(0x44); // 启动温度转换

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度a=ReadOneChar();

b=ReadOneChar();

t=b;

t<<=8;

t=t|a;

tt=t*0.0625;

//t= tt*10+0.5; //放大10倍输出并四舍五入---此行没用

return(t);

}

void int_it0(void) interrupt 0

{

delay(1500);

light_ctrl = 0;

key_data++;

if(key_data>125)

key_data = 125;

led_key = 1;

inrup=0xff;

}

void int_it1(void) interrupt 2

{

delay(1500);

light_ctrl = 0;

key_data--;

if(key_data < -50)

key_data = -50;

led_key = 1;

inrup=0xff;

}

void display(void )

{

unsigned char n;

unsigned char m;

m = 0x10;

for(n=0;n<4;n++)

{

P3 = P3&0x0f;

P3 = P3|m;

delay(1);

P2 = table[dis[n]];

m=m<<1;

delay(500);

}

}

void main()

{

unsigned int a;

int temp0;

EX0 = 1; //允许外部中断0中断 IT0 = 1; EX1 = 1;

IT1 = 1;

EA =1; //开总中断

led_key = 0;

light_ctrl = 0;

add_le = 0;

data_le = 0;

DQ = 0;

while(1)

{

temp0=ReadTemperature();//读温度 temp_now = temp0*0.0625;

if(temp_now<=key_data)

light_ctrl = 1;

else

light_ctrl = 0;

if(temp_now>=0)

{

dis[0]=14;

dis[1]=temp_now/100%10; dis[2]=(temp_now/10)%10; dis[3]=temp_now%10; } else

{

// dis[0] = 15;

dis[1] = 15;

dis[3]=(0-temp_now)%10;

dis[2]=(0-temp_now) /10%10;

}

for(a=0;a<10;a++)

display();

if(led_key == 1)

{

a=0;

for(;a<200;)

{

inrup=0x00;

if(key_data >= 0)

{

dis[0]=14;

dis[1]=key_data/100%10;

dis[2]=(key_data /10)%10;

dis[3]=key_data%10;

}

else

{

// dis[0] = 15;

dis[1] = 15;

dis[3]=(0-key_data)%10;

dis[2]=(0-key_data) /10%10;

}

for(a=0;(inrup!=0xff)&&(a<200);a++)

{

display();

}

}

led_key = 0;

}

}

}总体描述:

数码管显示当前温度和设定温度

当按键按下时,触犯中断。进行设定温度的加减,同时断开继电器的触发。此时数码管上显示的温度为设定温度。发光二极管D4亮,指示当前显示的为设定温度。一段时间不按键时,程序自动跳转回去(否则一直显示当前温度),显示当前温度,指示发光二极管D4灭,并开始控制。

由于51驱动能力有限,故用两个三极管驱动继电器。

具体描述:

温度传感器 DS18B20 仿真方式:

打开:显示当前温度。

如下DS18B20显示温度为24度

按键设置要稳定的温度

当按键按下后,指示灯亮,表示现在显示的是设置温度,假设将温度设置为30度

因为30度大于当前温度所以在延时一定时间后继电器打开

51单片机超高精度6路舵机控制程序

51单片机超高精度6路舵机控制程序 #include //包含单片机寄存器的头文件 #define uchar unsigned char #define uint unsigned int P0M1=0X00; P0M0=0XFF;//设置P0 为强推挽输出 sbit servo0=P0^0; sbit servo1=P0^1; sbit servo2=P0^2; sbit servo3=P0^3; sbit servo4=P0^4; sbit servo5=P0^5; sbit servo6=P0^6; sbit servo7=P0^7; uchar serVal[2]; uint pwm[]={1382,1382,1382,1382,1382,1382,1382,1382}; //初始90度,(实际是1382.4,取整得1382) uchar pwm_flag=0; uint code ms0_5Con=461; //0.5ms计数(实际是460.8,取整得461) uint code ms2_5Con=2304; //2.5ms计数 /******************************************************************** * 功能: 串口初始化,晶振11.0592,波特率9600,使能了串口中断 ***********************************************************************/ void Com_Init() { TMOD |= 0x20; //用定时器设置串口波特率 TH1=0xFD; //256-11059200/(32*12*9600)=253 (FD) TL1=0xFD;//同上 TR1=1;//定时器1开关打开 REN=1; //开启允许串行接收位 SM0=0;//串口方式,8位数据 SM1=1;//同上 EA=1; //开启总中断 ES=1; //串行口中断允许位 } /******************************************************************** * 功能: 舵机PWM中断初始化 ***********************************************************************/ void Timer0Init()

基于单片机的智能电饭煲的控制毕业设计

华北水利水电学院 North China Institute of Water Conservancy and Hydroelectric Power 毕业设计 题目:基于单片机的电饭煲智能控制系统的设计

华北水利水电学院 毕业设计任务书 题目:基于单片机的电饭煲智能控制系统的设计 专业:电子信息工程 班级学号:200915512 姓名: 李玉平 指导教师:郑辉 设计期限:2011 年2 月21日开始 2011年5 月27日结束 院、系:信息工程学院 2011年2月21 日

一、毕业设计的目的 通过本次设计掌握产品设计的流程,能熟练的使用AT89C51单片机,并根据设计要求选择合适的元器件,充分理解相关软件,对整个产品设计时的调试等必要的环节有更深刻的体会。 本设计通过选认元件、连线焊接、调试检测等过程,培养了搜集资料和调查研究的能力,方案论证选择的能力,理论分析与设计运算的能力,巩固了计算机软硬件和应用系统设计方面的能力。 二、主要设计内容及基本要求 1.本设计包含以下部分:按键电路、上电复位电路、晶振电路、电源电路、显示电路、MCU系统部分、机械控制电路等部分。 2.基本要求: (1)要求定时工作时间和实时时间对比达到长时间精确地定时功能。 (2)要求定时时间和实时时间相同时通过51单片机控制光耦驱动电路来控制电饭煲的工作。 三、重点研究问题 1.单片机的内部结构,显示电路的调试。 2.部分功能电路的软件设计:键盘显示电路、报警电路、工作指示电路。 四、主要技术指标或主要设计参数 根据模块电路,设计出完整的电路原理图,焊接出实物,并对产品进行调试。电源部分为单片机系统提供的电压为5V,为光耦提供的电压为12V。 五、设计成果 拟做出一个基于AT89C51单片机对电饭煲的智能控制系统的设计,设计出整体原理图,并做出实物,同时做出一份符合要求的毕业论文。

51红外循迹小车报告(舵机版)最终版

简易教程

前言 往届全国大学生电子设计竞赛曾多次出现了集光、机、电于一体的简易智能小车题目,此次,笔者在通过多次论证、比较与实验之后,制作出了简易小车的寻迹电路系统。 整个系统基于普通玩具小车的机械结构,利用小车的底盘、前后轮电机及其自动复原装置,能够平稳跟踪路面黑色轨迹运行。系统分为检测、控制、驱动三个模块。首先利用光电对接收管和路面信号进行检测,然后经过比较器处理,对软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。 智能小车能在画有黑线的白纸“路面”上行驶,这是由于黑线和白纸对光线的反射系数不同,小车可根据接收到的反射光的强弱来判断“道路”---黑线,最终实现简单的循迹运动。 个人水平有限,有错误不足之处,还望各位前辈同学多多包含,指出修正,完善。谢谢! 李学云王维 2016年7月27号

目录 前言 (1) 第一部分硬件设计 (1) 1.1 车模选择 (1) 1.2传感器选择 (1) 1.3 控制模块选择 (2) 第二部分软件设计及调试 (3) 2.1 开发环境 (3) 2.2总体框架 (3) 2.3 舵机程序设计与调试 (3) 2.3.1 程序设计 (3) 2.3.2 调试 (3) 2.3.3 程序代码 (4) 2.4 传感器调试 (5) 2.4.1 传感器好坏的检测 (5) 2.4.2 单片机能否识别信号并输出信号 (5) 2.5 综合调试 (7) 附录1 (9) 第一篇舵机(舵机及转向控制原理) (9) 1.1概述 (9) 1.2舵机的组成 (10) 1.3舵机工作原理 (11) 1.4舵机使用中应注意的事项 (12) 1.5如何利用程序实现转向 (12) 1.6舵机测试程序 (13) 附录2 (14) 第二篇光电红外传感器 (14) 2.1传感器的原理 (14) 2.2红外光电传感器ST188 结构图 (15) 2.3传感器的选择 (15) 2.4传感器的安装 (16) 2.5使用方法 (16) 2.7红外传感器输入输出调试程序 (17)

基于单片机的电饭煲设计

控制系统综合实训报告 学院计算机与控制工程学院 专业班级自动化115 学生姓名马洪星 指导教师朱玲 成绩

单片机在智能电饭煲控制系统中的应 用 摘要 随着新科技时代的到来,越来越多的新型智能化家电融入了我们的生活。而电饭煲作为与人们生活息息相关的家电,其功能也向着智能化的方向发展。本文基于单片微处理器PICl6F872研制成功了YZ系列微电脑电饭煲智能控制器,阐述了工作原理,并给出了硬件电路。精度高、稳定性高、易操作是本系统的重要特性,中断嵌套是设计软件的难点,温度控制是本系统的重点。 关键词 PIC单片机智能电饭煲硬件分析 YZ系列微机电脑电饭煲系统,是应用美国著名芯片Microchip公司合作开发的新一代模糊、逻辑控制智能电饭煲。采用日本National模糊控制技术原理,能自动根据米饭量的多少。利用“煮饭专家”的工艺技术,对吸水、加热、沸腾、焖饭、膨胀、保温等六个阶段的工艺自动进行火力调节,从而煮出比一般电脑电饭煲更加松软可口的米饭同时拥有快速煮饭、精确煮饭、一小时粥汤、二小时粥汤、三小时粥汤保温以及预约定时煮饭等功能。本系统硬件结构简单,运行稳定可靠,软硬兼备,具有完善的控制功能和抗干扰能力。 一、工作电气图

图1工作电气图 二、工作原理 YZ系列微机电脑电饭煲控制器电路包括如下几个部分:单片机,电源及稳压电路,键盘输入电路,蜂鸣报警电路,LED显示电路,温度检测电路及加热控制电路。其中单片机控制采用PICl6F872封装,它能满足电饭煲的控制需要。电源及稳压电路由高压器、整流电路和稳压电路组成;键盘输入电路由K1、R13、K2、R14组成;即在A/D输入端键入键盘信号,蜂鸣报警电路由晶体管Q2、SP1及电阻R12组成;LED显示电路由两部分组成。一部分是7段数码管用于显示预置定时时问,另一部分是6个LED指示灯,用于显示煮饭、快煮、l小时粥汤、2小时粥汤、3小时粥汤及保温。温度检测电路十分简单,由偏置电阻R10、R1l 和热敏电阻RT1、KT2组成。控制器电路如图2所示 图2控制器电路框图

基于51单片机的USB键盘设计与实现

三江学院 本科生毕业设计(论文)题目基于51单片机的USB键盘设计与实现高职院院(系)电气工程及其自动化专业 学生姓名梁邱一学号 G105071013 指导教师孙传峰职称讲师 指导教师工作单位三江学院 起讫日期 2013年12月10日至2014年4月12日

摘要 随着计算机技术的不断更新和多媒体技术的快速发展,传统的计算机外设接口因为存在许多缺点已经不能适应计算机的发展需要。比起传统的AT,PS/2,串口,通用串行总线USB,具有速度快,使用方便灵活,易于扩展,支持即插即用,成本低廉等一系列优点,得到了广泛的应用。 本论文阐述了51系列单片机和USB的相关内容,详细介绍了系统的一些功能设计,包括硬件设计和软件设计。在程序调试期间用简单的串口通信电路,通过串口调试助手掌握了USB指令的传输过程,这对整个方案的设计起到了很大的指导作用。论文以单片机最小系统配合模拟键盘组成的USB键盘硬件系统,通过对D12芯片的学习与探索,在其基本命令接口的支持下,结合硬件进行相应的固件程序设计,使其在USB协议下,实现USB模块与PC的数据通信,完成USB键盘的功能模拟。 总结论文研究工作有阐述USB总线的原理、对本设计的系统要求作出了分析、根据要求选定元件和具体编程方案、针对系统所要实现的功能对相关芯片作了详细介绍以及在硬件部分设计了原理图。 关键词:USB;D12;PC

Abstract With the rapid development of computer technology and multimedia technology constantly updated, traditional computer peripheral interface because there are many shortcomings have been unable to meet the development needs of the https://www.360docs.net/doc/a210631946.html,pared to traditional AT, PS / 2, serial, Universal Serial Bus USB, with fast, flexible and easy to use, easy to expand, support Plug and Play, a series of advantages, such as low cost, has been widely used. This paper describes the 51 series and USB related content, detailing some of the features of the system design, including hardware and software design.During debugging a simple serial communication circuit, through the serial port debugging assistant master USB transfer instructions, which designed the entire program has played a significant role in guiding.Thesis smallest single-chip system consisting of analog keyboard with a USB keyboard hardware system, by learning and exploration D12 chips, with the support of its basic command interface, in conjunction with the corresponding hardware firmware design, making it in the USB protocol, USB module data communication with the PC, the USB keyboard to complete the functional simulation. This paper summarizes research work has elaborated the principle of the USB bus, the system is designed to require the analysis, components and solutions based on the specific requirements of the selected programming for the system to achieve the function of the relevant chips are described in detail in the hardware part of the design as well as the principle of Figure. Keywords:USB;D12;PC

舵机控制程序

在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,

获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占

空比的变化改变舵机的位置。一般舵机的控制要求如图1所示。 图1 舵机的控制要求 单片机实现舵机转角控制可以使用FPGA、模拟电路、单片机来产生舵机的控制信号,但FPGA成本高且电路复杂。对于脉宽调制信号的脉宽变换,常用的一种方法是采用调制信号获取有源滤波后的直流电压,但是需要50Hz(周期是20ms)的信号,这对运放 器件的选择有较高要求,从电路体积和功耗考虑也不易采用。5mV 以上的控制电压的变化就会引起舵机的抖动,对于机载的测控系统而言,电源和其他器件的信号噪声都远大于5mV,所以滤波

电路的精度难以达到舵机的控制精度要求。 也可以用单片机作为舵机的控制单元,使PWM信号的脉冲宽度实现微秒级的变化,从而提高舵机的转角精度。单片机完成控制算法,再将计算结果转化为PWM信号输出到舵机,由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。 单片机系统实现对舵机输出转角的控制,必须首先完成两个任务:首先是产生基本的PWM周期信号,本设计是产生20ms的周期信号;其次是脉宽的调整,即单片机模拟PWM信号的输出,并且调整占空比。当系统中只需要实现一个舵机的控制,采用的控制方式是改变单片机的一个定时器中断的初值,将20ms分为两次中断执行,一次短定时中断和一次长定时中断。这样既节省了硬件电路,也减少了软件开销,控制系统工作效率和控制精度都很高。 具体的设计过程: 例如想让舵机转向左极限的角度,它的正脉冲为2ms,则负脉冲为 20ms-2ms=18ms,所以开始时在控制口发送高电平,然后设置定时器在

51单片机程序:按键控制舵机角度

#include "reg52.h" unsigned char count; //0.5ms次数标识 sbit pwm =P2^7 ; //PWM信号输出 sbit jia =P2^4; //角度增加按键检测IO口 sbit jan =P2^5; //角度减少按键检测IO口 unsigned char jd=5; //角度标识 void delay(unsigned char i)//延时 { unsigned char j,k; for(j=i;j>0;j--) for(k=125;k>0;k--); } void Time0_Init() //定时器初始化 { TMOD = 0x01; //定时器0工作在方式1 IE = 0x82; TH0 = 0xfe; TL0 = 0x33; //11.0592MZ晶振,0.5ms TR0=1; //定时器开始 } void Time0_Int() interrupt 1 //中断程序 { TH0 = 0xfe; //重新赋值 TL0 = 0x33; if(count< jd) //判断0.5ms次数是否小于角度标识 pwm=1; //确实小于,PWM输出高电平 else pwm=0; //大于则输出低电平 count=(count+1); //0.5ms次数加1 count=count%40; //次数始终保持为40 即保持周期为20ms } void keyscan() //按键扫描 { if(jia==0) //角度增加按键是否按下 { delay(10); //按下延时,消抖 if(jia==0) //确实按下 { jd++; //角度标识加1 count=0; //按键按下则20ms周期从新开始 if(jd==6) jd=5; //已经是180度,则保持 while(jia==0); //等待按键放开

电饭煲课程设计+程序

课程设计任务书 专业年级班 一、设计题目 电饭煲控制器 二、主要内容 电饭煲控制器有预约功能,有烹饪大米饭、粥、保温、冷饭加热等功能 三、具体要求 1.具体功能 大米饭:当达到105°时,停止加热,并在15分钟后通过蜂鸣器提示用户。 粥:开始加热后,通过测温元件监视锅底温度,使锅底温度保持在99°~100.5°之间(100°时停止加热、99°时开始加热),此种状态持续20分钟,之后通过蜂鸣器提示用户过程结束。

保温:使锅底温度维持在50°~60°之间。 冷饭加热:锅底加热至100°,使锅底温度保持在99°~100.5°之间(100°时停止加热、99°时开始加热),此种状态持续5分钟,之后通过蜂鸣器提示用户过程结束。 2.定时 用户可以是电饭煲在预约时间(倒计时方式)开始工作,最长预约时长为12小时。 3.控制面板 四个发光管分别与大米饭、粥、保温、冷饭加热相对应,另一发光管用于区分工作与预约,两位数码管用于预约时间及倒计时。按键有:开始键、功能键、加键、减键。 四、进度安排 1、了解任务要求,确定具体方案 2、lcd12864液晶屏子程序设计 3、DS18B20温度传子程序感器设计 4、设计单片机按键功能程序 5、根据任务要求编写程序,设计按键电路

6、检验设计效果,完善功能 五、完成后应上交的材料 电饭煲控制器论文 六、总评成绩 指导教师签名日期年月日 系主任审核日期年月日

摘要 电饭煲控制器有预约功能,有烹饪大米饭、粥、保温、冷饭加热等功能.。基于stc89c52单片机控制的电饭煲控制器,有lcd液晶屏显示和ds18b20温度检测功能,还有定时工作选择功能。 关键字:电饭煲温度控制 DS18B20 LCD12864 键盘按键

51单片机控制舵机程序精度,数量,占用时间优化方案及程序

#include #include //本程序经软仿真调试在机器周期为1us时理论误差为0,不需要占用太多的cpu运行时间就可以控制8路舵机,精度为1ms-2ms 平均分成100份,在时间消耗和舵机数量上 //明显优于网上常见的舵机控制程序,keil3使用9(最高)编译器优化时达到理论误差为0,编译器优化级别过低时无法使用unsigned char gai; unsigned char nt[8]; unsigned char nw[8]; unsigned char pwmbuffer[8] = {50,50,50,50,50,50,50,50}; void set(unsigned char m,unsigned char n){ if((m<8)&&(n<101)){ //如果输入合法则记录新数据并将状态改变标志置位pwmbuffer[m] = n; gai = 1; } } void tim(void){ unsigned char a1,a2,tempt,tempw; //a1,a2作为循环变量,tempt,tempw作为排序交换用临时变量 for(a1 = 0; a1 < 8; a1++){ //由舵机控制数据设置用于排序的表(两行八列)nt[a1] = pwmbuffer[a1]; //第几个舵机所需的高电平时长 nw[a1] = 1 << a1; //用第几位置一来表示第几个舵机 } for(a1 = 0; a1 < 7; a1++){ //简单排序算法,找出最小的与第一个交换,在从剩余的中找出最小的与第二个交换,以此类推 unsigned char min = a1; //用于记录哪一个是最小的 for(a2 = a1 + 1; a2 < 8; a2++){ //从剩余项中找出最小的 if(nt[a2] < nt[min]){ min = a2; } } tempt = nt[a1]; //交换 tempw = nw[a1]; nt[a1] = nt[min]; nw[a1] = nw[min]; nt[min] = tempt; nw[min] = tempw; } for(a1 = 1; a1 < 8; a1++){ //之前记录应该变成低电平的输出口,之后记录应该是低电平的输出口nw[a1] |= nw[a1-1]; } a2 = 0; for(a1 = 0; a1 < 7; a1++){ //去掉重复 if(nt[a1] != nt[a1 + 1]){ nt[a2] = nt[a1]; nw[a2] = nw[a1]; a2++; } } nt[a2] = nt[7]; nw[a2] = nw[7]; for(a2++; a2 < 8; a2++){ nt[a2] = 0; nw[a2] = 0xFF;

单片机模糊控制在电饭煲中得应用

单片机模糊控制在电饭煲中的应用 摘要:介绍用新型HT46R47型单片机和模糊控制技术实现的电饭煲。他具有电路简单、成本低廉、节省能源、安全可靠等特点。<--摘 关键词:单片机;模糊逻辑;电路设计;抗干扰;温度采样;电饭煲 目前,市场上的电饭煲大部分采用固定功率的方式加热,能源利用率低、功能单一,难以满足人们的日益增长的生活需求。开发功能齐全、成本低廉、节省能源、安全可靠的微电脑电饭煲,是非常有必要的。 1 电饭煲的工作原理及硬件组成 系统选用以低成本、功耗小、性能良好的8位A/D型HT46R47单片机为控制核心的控制电路。引脚如图1所示。 他的主要特性如下: ·工作电压:f SYS=4 MHz:2.2~5.5 V; ·13位双向输入/输出口; ·8位带溢出中断的可编程定时/计数器,具有7级预分频器; ·石英晶体或RC振荡器; ·看门狗定时器; ·2 048×14位的程序存储器PROM; ·64×8位的数据存储器RAM; ·在V DD=5 V且系统时钟为8 MHz时,指令时钟为0.5μs; ·四通道9位的A/D转换器; ·指令执行时间皆为1或2个指令周期低电压复位功能。 1.1 工作原理 电饭煲的工作原理如图2所示。通电后,系统进入待机状态,此时系统可接收用户的功能选择,用户所选功能通过显示电路显示出来,当用户按下确定键时,MCU开始对温度进行监测,对

各种功能进行相应的加热控制,直至功能结束时,发出声音报警提示。 1.2 硬件电路设计 (1)MCU MCU是电饭煲的核心部分,完成数据采集、输入、处理、输出、显示等功能。 (2)测温元件数的热敏电阻。由于热敏电阻值的变化与温度的变化是非线性关系,为了提高温度的测量分辨率和系统的抗干扰性能,设计电路如图3所示。 图3中,R t是负温度系数的热敏电阻;与R1并联后的阻值与温度的变化接近线性关系,提高分辨率;R2起分压作用;O点为测量点:当温度变化时,R t阻值发生变化,O点的电压也跟随变化,测量O点则可测量出温度的变化;C1是防止干扰引起O点的电压突变。 (3)加热执行电路 MCU通过PB1输出方波控制信号,通过电容偶合、整流后送到三极管的B极,放大后驱动继电器工作。这样有方波输出时,继电器接通发热盘电源,没有方波输出时,则断开发热盘电源。

单片机控制舵机

舵机如下所示: 有三根线,一般依次是地,电源(5V左右),信号(信号的幅值>=3.3V),不清楚各个脚打开舵机一测量就知道了。 2.其工作原理是: 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏 置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。 3.舵机的控制: 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为 0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制 关系是这样的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2.0ms-----------135度;

2.5ms-----------180度; 重要说明: 1:上面部分还是成线形关系的,Y=90X-45(X单位是ms,Y单位是度数:) 2:上面所说的0度45度等是指度45度位置(什么意思呢:我说明一下就知道了,就拿45度位置来说,若舵机停在0度位置,下载45度位置程序后则舵机停在45度,即顺时针走了45度,若当时舵机在135度位置,则反转90度到45度位置。所以舵机不存在正转反转问题。这点非常重要。 3:若想转动到45度位置,要一直产生1.0ms的高电平(即PA0=1; Delay(1ms);PA0=0;Delay(20ms);要不停的产生这个高低电平,产生PWM脉冲 请看下形象描述吧: 下面是我在ATMEGA32上的测试程序,开发软件:ICC AVR #include typedef struct BYTE_BIT { unsigned BIT0:1; unsigned BIT1:1; unsigned BIT2:1; unsigned BIT3:1; unsigned BIT4:1; unsigned BIT5:1;

电饭煲设计说明书

摘要 电饭煲,又称作电锅、电饭锅,是大家耳熟能详的家用电器,使用方便,清洁卫生,还具有对食品进行蒸、煮、炖等多种操作功能。常见的电饭锅分为保温自动式、定时保温式以及新型的微电脑控制式三类。普通电饭煲主要由发热盘、限热器、保温开关、杠杆开关、限流电阻、指示灯、插座等组成。 本次课程设计,任务是设计一个微机控制电饭煲的系统智能电饭煲主要由电源部分和控制电路组成,电源部分为220V交流电经过变压器和整流桥后变为一定幅值的直流电,再经过稳压芯片LM7805,输出为+5V的直流电,作为单片机控制部分的电源,控制部分的控制方法大致为:用户按下启动键之后,系统设置一定的加热时间,本系统的加热时间是10分钟,当加热时间到达10分钟或当电热盘温度达到预定的警报限制的要求后,由蜂鸣器和二极管组成的报警系统开始报警,一段时间后,如果没有人员切断电流,系统自动将继电器的开关打开,以切断电热盘的电源,关键词:单片机电饭煲定时报警

目录 第一章概述 (3) 1.1 设计任务 (3) 1.2 设计思路 (3) 第二章硬件部分介绍 (5) 2.1 单片机介绍 (5) 2.2 电源电路 (6) 2.3 液晶显示电路 (7) 2.4 温度检测部分 (10) 2.5 光电隔离电路 (12) 2.6 继电器控制电路 (13) 2.7 其他硬件部分介绍 (15) 第三章程序设计 (17) 3.1 LCD显示定时时间程序简介 (17) 3.2 DS18B20程序 (20) 3.3其他程序 (23) 总结 参考文献

第一章概述 1.1 设计任务 微机控制电饭煲系统的设计任务如下: 1.人工操作启动,键盘应设置加热,停止,时间+,时间-选择等 2.加热10分钟,可以用液晶显示屏来显示加热时间。 3.加热完成后报警,通过温度传感器或定时器判断加热是否完成,如果完成,单片机发出信号,控制蜂鸣器响。 4.自动或人工切断电流,一旦加热完成,除了报警之外,还应该在一定时间之后切断加热电流,确保电饭煲设备以及其他事物的安全,避免因为电流引起火灾。 1.2 设计思路 智能电饭煲主要由电源部分和控制电路组成,电源部分由220V交流电经变压器再通过整流桥变为直流电,作为稳压芯片7805的输入,7805的输出为5V的直流电,为单片机系统提供电源,控制部分的控制方法大致为:用户按下启动键之后,系统自动设定加热时间,本系统的加热时间是10分钟,当加热时间到达10分钟或当电热盘温度达到预定的警报限制的要求后,继电器的开关打开,以切断电热盘的电源,同时单片机系统中的蜂鸣器响来达到报警的功能,当下降到一定的温度范围后通电加热,闭合继电器。以使电热盘始终保持在适合的温度范围内。除此之外,对任务书中做出一点改进,即用户可以根据需要自己加时间或者减时间,每按一次改变时间按键,时间减少或增加1分

51单片机按键控制数码管程序

#define uint unsigned int #define uchar unsigned char uchar c; sbit p10=P1^0; sbit p11=P1^1; sbit p12=P1^2; sbit p13=P1^3; sbit p14=P1^4; sbit p15=P1^5; sbit p16=P1^6; sbit p17=P1^7; void delay(uint z); int b[]={0,1,2,3,4,5,6,7};//设置每一位显示的数字 unsigned char code Tab[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳极数码管 int a[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { EA=1; EX0=1; IT0=1; P1=0xff; while(1) { for(c=0;c<8;c++)//数码管扫描显示

P2=a[c]; P0=Tab[b[c]]; delay (1); } } } void delay(uint z) { uint a,b; for(a=z;a>0;a--) for(b=110;b>0;b--); } int_0()interrupt 0 { EA=0; if(p10==0) b[0]=(b[0]+1)%10; if(p11==0) b[1]=(b[1]+1)%10; if(p12==0) b[2]=(b[2]+1)%10; if(p13==0) b[3]=(b[3]+1)%10; if(p14==0) b[4]=(b[4]+1)%10; if(p15==0) b[5]=(b[5]+1)%10; if(p16==0) b[6]=(b[6]+1)%10; if(p17==0) b[7]=(b[7]+1)%10;

51控制舵机程序大全

#include void InitTimer0(void) { TMOD = 0x01; TH0 = 0x0B1; TL0 = 0x0E0; EA = 1; ET0 = 1; TR0 = 1; }void delay(1)(void) { unsigned char a,b,c; for(c=1;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--); } void main(void) { InitTimer0(); P1_2=0; while(1); } void Timer0Interrupt(void) interrupt 1 { //20ms中断 TH0 = 0x0B1; TL0 = 0x0E0; P1_2=1; delay(1); P1_2=0; }

#include #include #include #define uchar unsigned char #define uint unsigned int sbit IN1=P0^0; sbit IN2=P0^1; sbit EA1=P0^5; sbitdj=P0^7; //舵机口 uint t=0;//中断次数 ucharzk;//高电平中断次数uchar p=0;//定义pwm占空比void delay(uint z) { uinti,j; for(i=0;i>8;//100us一次中断TL0=-100%256; if(t==0)zk=p; if(t=zk) dj=0; t++; if(t>=200) t=0;//20mspwm周期 } void turn_left() { IN1=1;IN2=0;EA1=1;//电机工作p=5;//0.5ms delay(600); } void turn_right() { IN1=1;IN2=0;EA1=1;//电机工作p=25;//2.5ms delay(600);

基于单片机的家电远程控制系统设计

目录 第一章绪论 (1) 第二章远程控制的内容 (1) 2.1 智能家用电器主要的特点 (1) 2.2 智能家电具备的基本功能 (2) 第三章系统设计的原理 (2) 3.1 总体设计原理 (2) 3.2 硬件模块分析 (4) 3.3 软件模块分析 (5) 第四章系统软件设计分析 (5) 4.1 软件设计原理 (5) 4.2 系统程序设计流程图 (6) 第五章系统的应用 (7) 5.1 系统的应用前景 (7) 5.2 系统的使用说明 (8) 第六章小结 (9) 后记 (10) 参考文献 (11) 附录电路总体设计图 (12)

基于单片机的家电远程控制系统设计 第一章绪论 随着新型科技电子产品日益发达和人们生活水平的不断提高,受到潜移默化的影响,人们对生活质量以及家居环境的要求也在与日俱增,人们开始追求家庭生活现代换,舒适化,以及安全性等问题,特别是家电的选择和使用上,智能家居的出现正好满足了人们的需求。随着电话通信网络的出现,利用电话实现远程控制已经在智能小区的管理中得到了广泛的应用,而移动通信技术的发展刚好为家电的远程控制奠定了基础。 本文介绍了一种电话远程控制技术。本系统采用单片机控制家用电器的远程控制、远程电话,用户可以通过手机、电话到家用电器(如太阳能、冰箱)远程控制其工作状态,以满足用户需求为各种各样的家用电器,不仅如此,用户也可以根据你的需求和基于住宅需求不同的家用电器控制,达到了用户自己的家庭住宅最好的国家规定。 本次作品所使用到元器件都选择性价比较高的,这就可以在节约电器成本的前提下创造出更大的利用价值。智能家居的优点主要体现在它不受时间和空间的限制,这就可以为人们节约大量的时间。不仅如此,我们也可以在各路终端接上传感器从而实现对周围环境的监听,这就达到了一个对家居电器进行安全性的监护作用,也避免了很多不必要的麻烦。远程监控还可以应用到企业的自动化控制的系统领域中去,可以为企业节约很多的资本,也可以应用到家庭医疗保健中,不仅降低了医疗保健成本,而且还有益于身心更加健康,我们把测量的结果直接传给医生,可以省去去医院排队等候的麻烦,也可以应用于网络家庭教育,帮助学生能够更好的学习。 第二章远程控制的内容 有了这些智能家用电器,我们不难建造一个拥有智能家居的环境,有了智能家居,我们就可以节约大量的时间做更多的事情。例如,我们可以在回家的路上可以提前打开家里的电饭煲,把空调打开调到合适的温度,这样回家以后我们就可以舒适地吃上香喷喷的米饭了,但是,这在以前是不可能实现的。就目前而言,我们大多数家庭使用的还是传统的家用电器,本次课题主要设计了一款利用单片机控制家用电器的原理进行远程的电话控制系统。 2.1 智能家用电器主要的特点 一、网络化功能:将智能家电通过家庭局域网连接到一起,然后同互联网相连,以实现信息的共享。 二、智能化:智能家电利用传感器来感知周围的环境,然后根据环境的不同自动改变参数。 三、开放性:兼容性。生产智能家电平台具有相同的开放和兼容标准。 四、节能化:智能家电可以根据周围环境自动调整自己的工作状态。

51单片机按键控制花样灯

51单片机按键控制花样灯 时间:2018-09-10 13:50:11 来源:51hei 作者: /**************************************************** * 本程序实现用按键控制花样灯。 * * 当K1按下时,灯从0xfe向左跑一遍; * * 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置; * * 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。 * * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。 * * 当K5键按下时,结束任意正在进行的程序,使LED灯全部熄灭。 * ******************************************************/ ************************************************* 连接方法:P0接独立按键JP5。P2接LED灯接口JP1 * ***********************************************************/ #include //头文件,函数声明 #include //定义按键所在位 sbit K1=P0^0。 sbit K2=P0^1。 sbit K3=P0^2。 sbit K4=P0^3。 sbit K5=P0^4。 unsigned char led。 unsigned char j。 void delayms(unsigned char ms> // 1ms标准延时 { while(ms--> { for(j=0。j<110。j++>。 //还是无法设置比较标准的延时,如1S等;所以应该用定时器延时才最准确 } } void main(> { //P2=led。 unsigned int i。

51单片机一个定时器控制多路舵机

#ifndef __interrupt0_H__ #define __interrupt0_H__ void interrupt0() //STM中断服务子程序 { _t2af = 0 ; switch (cnt) { case 0: PWMOUT_2 = PWMOUT_3 = PWMOUT_4 = PWMOUT_5 = PWMOUT_6 = 0; PWMOUTbuf_1 = (PWMbuf - PWMOUTbuf_1); _tm2al = PWMOUTbuf_1 & 0x00ff; _tm2ah = PWMOUTbuf_1 >>8 ; //重新定义计数初值 if( PWMOUTbuf_1 >= PWMOUTbufmin1 && PWMOUTbuf_1 <= PWMOUTbufmax1) {PWMOUTbuf_1 = PWMOUTcnt_1; PWMOUT_1 = 1;} else {PWMOUTbuf_1 = PWMbuf-PWMOUTcnt_1; PWMOUT_1 = 0 ; cnt = 1;} //判断脉宽是否在正常范围之内 break; case 1: PWMOUT_1 = PWMOUT_3 = PWMOUT_4 = PWMOUT_5 = PWMOUT_6 = 0; PWMOUTbuf_2 = (PWMbuf - PWMOUTbuf_2); _tm2al = PWMOUTbuf_2 & 0x00ff; //重新定义计数初值 _tm2ah = PWMOUTbuf_2 >> 8; if(PWMOUTbuf_2 >= PWMOUTbufmin1 && PWMOUTbuf_2 <= PWMOUTbufmax1) {PWMOUTbuf_2 = PWMOUTcnt_2; PWMOUT_2 = 1;} else {PWMOUTbuf_2 = PWMbuf-PWMOUTcnt_2;PWMOUT_2 = 0;cnt = 2;} //判断脉宽是否在正常范围之内 break; case 2: PWMOUT_1 = PWMOUT_2 = PWMOUT_4 = PWMOUT_5 = PWMOUT_6 = 0; PWMOUTbuf_3 = (PWMbuf - PWMOUTbuf_3); _tm2al = PWMOUTbuf_3 & 0x00ff; //重新定义计数初值 _tm2ah = PWMOUTbuf_3 >> 8; if(PWMOUTbuf_3 >= PWMOUTbufmin1 && PWMOUTbuf_3 <= PWMOUTbufmax1) {PWMOUTbuf_3 = PWMOUTcnt_3; PWMOUT_3 = 1;}

智能电饭煲控制系统课程设计.

广州学院 课程设计说明书 智能电饭煲控制系统设计 院(系)机械工程学院 专业机械工程及自动化 班级 学生姓名 指导老师 2012 年1月1日

课程设计任务书 兹发给2009级机械工程及自动化班学生课程设计任务书,内容如下: 1.设计题目:智能电饭煲控制系统设计 2.应完成的项目: (1)智能电饭煲控制系统整体方案设计 (2)智能电饭煲控制系统硬件电路设计 (3)智能电饭煲控制系统软件程序设计 (4)完成电路原理图1张、软件程序清单1份 3.参考资料以及说明: [1]余永权.单片机与家用电器智能化技术[M].北京:电子工业出版社,1995. [2]李士勇.模糊控制·神经控制和智能控制论[M].黑龙江:哈尔滨工业大学出版社,1998 [3]周鲜成.模糊电饭煲的控制原理[J].株洲工学院学报,2000, 14 (6) : 35-37. [4]李宇成,卢俊峰.电饭煲的模糊控制器[J].北方工业大学学报,1998, 10 (3) : 85-90. 4.本设计任务书于2012 年12月24日发出,应于2013年1月4日前完成,然后进行答辩。 指导教师签发2012 年12 月24 日2

课程设计评语: 课程设计总评成绩: 指导教师签字: 年月日1

目录 摘要 (2) 第一章绪论 (1) 1.1背景及发展 (1) 1.2设计任务 ........................................ 错误!未定义书签。第二章智能电饭煲控制系统整体设计方案................. 错误!未定义书签。第三章智能电饭煲控制系统硬件设计.. (3) 3.1单片机的选择 (3) 3.2传感器DS18B20的简介 ............................ 错误!未定义书签。 3.3显示模块的设计 (5) 3.4键盘模块的设计 (6) 3.5火力控制模块 (7) 3.6电源模块设计 (8) 3.7功率调节 (8) 第四章智能电饭煲控制系统软件设计 (10) 4.1主程序设计 (10) 4.2子程序设计 (11) 4.2.1定时功能控制流程 (11) 4.2.2 加热功能控制流程 (13) 结束语 (14) 参考文献 (15) 附录 (16) 附录1:智能电饭煲控制系统电路原理图 (16) 附录2:智能电饭煲控制系统软件源程序清单 (17)

相关文档
最新文档