资讯详情

【电路方案】基于单片机温控电风扇智能调速器设计/单片机出租车打表计价器系统设计/51单片机篮球积分器仿真...

749基于单片机温控电风扇智能调速器的设计

本设计为温控风扇系统,具有敏感的温度感知和显示功能STC89C52单片机作为控制平台控制风扇转速。用户可升高超过设定温度时,可以自动切换到大风档,当温度小于设定温度时,可以自动关闭风扇,控制状态取决于外部温度。高低温保存在温度传感器中DS18B20内部E2ROM最后一个设定值仍然可以保存,性能稳定,控制准确。

#include <reg52.h>          ////调用单片机头文件 #define uchar unsigned char  ///无符号字符型 宏定义 变量范围0~255 #define uint  unsigned int  ///无符号整形 宏定义 变量范围0~65535  ///数字管段选择定义      0     1    2    3    4    5 6  7   8    9  uchar code smg_du[]={0x28,0xee,0x42,0x72,0xe5,0xa8,0x41,0x77,0x20,0xa0,         0x60,0x25,0x39,0x26,0x31,0x71,0xff};  //断码 ///数字管位选择定义 uchar code smg_we[]={0xef,0xdf,0xbf,0x7f}; uchar dis_smg[4] = {0};  uchar smg_i = 3;    ///显示数码管的个位数 sbit dq   = P2^4; //18b20 IO口的定义  bit flag_lj_en;   //按钮连加使能 bit flag_lj_3_en;  ///按钮连续三次使用  加的数量越大  uchar key_time,key_value;      ////用作连加的中间变量 bit key_500ms  ; sbit pwm = P2^3;   uchar f_pwm_l ;   //  uint temperature ;  // bit flag_300ms ; uchar menu_1;       //菜单设计的变量 uint t_high = 300,t_low = 100;    ///温度上下限值 

748基于单片机出租车计价器系统的设计

设计理念:通过单片机主控制显示六位数字管,24c08芯片断电存储,初始读写24c08芯片,按键电路可实现数据控制。

f=05;  u=12;//时 v=00;//分 w=00;//秒 //jiage=d*e; //金额 /24C08 读写驱动程序 sbit scl=P3^4; // 24c08 SCL sbit sda=P3^5; // 24c08 SDA void delay1(unsigned char x) { unsigned int i; for(i=0;i<x;i  ); ;} void flash() { ; ; } void x24c08_init() //24c08 初始化子程序 {scl=1; flash(); sda=1;                     flash();} void start() //启动(I方C)总线 {sda=1; flash(); scl=1; flash(); sda=0; flash(); scl=0; flash();} void stop() //停止(I方C)总线 {sda=0; flash(); scl=1; flash(); sda=1; flash();} void writex(unsigned char j) ///写字节 { unsigned char i,temp; temp=j; for (i=0;i<8;i  ) {temp=temp<<1; scl=0; flash(); sda=CY; flash(); scl=1; flash();} scl=0; flash(); sda=1; flash(); } unsigned char readx() ///读一个字节 { unsigned char i,j,k=0; scl=0; flash(); sda=1; for (i=0;i<8;i  )

583基于51单片机篮球积分器模拟系统(完善)

1.2.1 设计内容

给A、B两队分别设置加分按钮,每个按钮分别实现A、B队加1~9分。 给A、B两队分别设置减分按钮,各按钮按下分别实现给A、B队减1~9分。 (3)设置复位按钮,按下实现A、B队伍总分回到初试分数,显示

(4)预置分通过A,B实现两队加分按钮。

1.2.2 设计要求 方案合理正确,系统稳定可靠。 软件设计要求尽可能简洁、简短、可靠。 硬件电路要求简单明了,以节约成本

 #define delay_led delay(8);          //延时 uint time;                           //比赛时间 uchar t,i; uchar score_A;                       //A方分数 uchar score_B;                       //B方分数 uchar exchangeing;                   ////交换比分时临时变量 bit alarm_enable;                  ///报警使能标志 uchar code table[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99,0x92, 0x82, 0xf8, 0x80, 0x90};  ///共阳极数码管 uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};               ///数码管扫描 sbit led=P3^7;                       //报警灯控制端口 sbit alarm_sound=P3^6;               ////报警声控制端口 sbit A_plus1=P1^0;                   //A方比分加1按钮 sbit A_minus1=P1^3;                  //        减1按钮 sbit B_plus1=P1^4;                   //B方比分加1按钮 sbit B_minus1=P1^7;                  //        减1按钮 sbit minutes_plus=P3^0;     //分钟加按钮 sbit minutes_minus=P3^1;             //分钟减按钮      sbit seconds_plus=P3^2;     //秒加按钮 sbit seconds_minus=P3^3;             //秒减按钮 sbit Pause=P3^4;                     ///计时开始/暂停按钮 sbit exchange=P3^5;      ///换分按钮 sbit A_plus2=P1^1;      //A加2 sbit A_plus3=P1^2;      //A加3 sbit B_plus2=P1^5;                  //B加2 sbit B_plus3=P1^6;         //B加3 //***************************************************** //**延时函数:void delay(uchar y) //*************************************************** void delay(uchar y) 点击并拖动以移动 

593基于51单片机超声模块测距系统

功能说明:protuse里面没有超声波模块,网上信息很少。为了方便大家学习超声波模块。分享我们之前建造的模型。

1.1602显示超声波测距

2.ds18b20温度检测并显示

3.按键调整报警距离。

sbit k1=P3^5; sbit k2=P3^6; sbit csb=P2^5; sbit csbint=P3^2; sbit bg=P2^6; sbit fmq=P3^3;  unsigned char aa[]={' ',' ','D','i','s','t','a','n','c','e,    //Distance  unsigned char bb[11]={' ',' ',' ',' ','.',' ',' ',' ',' ',' ',};  unsignd char cc[]={'A','.','A','A','m'};
unsigned char zf,a1,a2,a3,xs,e,n,m,z;	 //zf 温度正负标志位;a1,a2,a3,按键设定程序中定值的米、分米、厘米临时存储变量
                                             //xs,e 用于按键程序中设定位闪动显示的变量;flag,未用,n,是背光控制标志位变量;m,z;
unsigned int dz,k,s,j,bgz,k;
int temp;
float temperature,csbc,wdz;
bit wh;

main()
{
	TH0=0;
	TL0=0;
	TMOD=0X11;	//T1,T0为16位定时器
	EA=0;
	bg=0;
	n=0;
	m=0;
	z=0;
 	init();
	Init_DS18B20();
    dz=80;
	bb[6]=0xdf;
	bb[7]=0x43;
	e=4;
	cc[0]=dz/100+'0';
点击并拖拽以移动

  

005 基于单片机PID算法的温度控制调节器控制设计

设计思路:

改进PID算法的温度调节器设计,采用单片机为控制器,研究热电阻测温电路,控制量输出电路和温度控制PID算法。

功能实现:

1.采用市电供电。

2.采用单片机。

3.LED数码管显示。

4.4*4键盘输入。

5.热电阻测温0-150℃。

6. 工艺参数断电可保持,AT24C02存储。

7. 电流输出4-20mA,电压输出0-5V。

8.有超偏差报警功能。

9.增量式PID算法。

  

  

#include "Interrupt.h"			  //中断头文件
#include "24C02.h"				  //存储器
#include "delay.h"				  //延时函数
#include "PID.h"				  //改进PID算法
#include "DISPLAY.h"              //数码管显示
sbit Change=P3^6;				  //切换显示按键
sbit Warning=P3^3;
unsigned char key=16,ShowPage=0;
int PID_Data;                           //PID算法输出的计算值
unsigned int LTC1655_WritData=0;	  	//给DA的值
extern PID sPID; 
unsigned int LT1860_ReadData=0;
float LTC1860_Voltage=0;
float RealTemp=0;
float LTC1655_Voltage;       //DA输出电压
void ParaInit(void);         //从存储器中读取参数值

void main(void)
{
	IIC_Init();					    //IIC初始化  24C02初始化
	Timer_Init();				    //定时器1初始化
	Timer_EN();						//打开定时器1中断
	Glob_Interrupt_EN();			//打开全局中断允许
	IncPIDInit();					//改进PID初始化
	ParaInit();						//开机读取上次设定的PID的参数和设定的温度
	Warning=0;

	while(1)
	{
		
		LT1860_ReadData=LTV1860_GetData();	       //读取AD的值
		LTC1860_Voltage=5.0*LT1860_ReadData/4096;  //读到的值转换成电压
		RealTemp=(LTC1860_Voltage+10)/(40-LTC1860_Voltage)*1039-272.72+0.5;	 //电压转换成温度
		if(RealTemp<109) 				  //软件补偿  消除误差  
			RealTemp-=3;
		else if(RealTemp<149) 
			RealTemp-=2;
		else 
			RealTemp-=1;	 


		if((int)RealTemp>150||(int)RealTemp<0) 	 //报警
			Warning=1;
		else 
			Warning=0;

		PID_Data=IncPIDCalc(RealTemp);   //PID算法
		LTC1655_WritData=PID_Data+32767; 	  
		LTC1655_WritWord(LTC1655_WritData);	  //读到的值送到DA

		LTC1655_Voltage=5.0*LTC1655_WritData/65535;
 

590基于单片机炉温温度恒温控制系统设计

设计思路:

测温,温度可设定,继电器电路,数码管显示。此系统用于控温,当设定温度高于实际温度时,继电器吸合加热单元加热,当实际温度大于设定温度时,继电器释放。

#define uchar unsigned char
#define uint   unsigned int
#define DATAPORT P0                    
sbit RED_ALARM=P1^0;
sbit WRITE_ALARM=P1^1;
sbit GREEN_ALARM=P1^2;          		 //绿色指示灯
sbit BLUE_ALARM=P1^3;
sbit P1_4=P1^4;                		 //时钟调整
sbit P1_5=P1^5;                 		 //时钟加
sbit P1_6=P1^6;                  	 //时钟减
sbit DQ = P1^7;   
sbit   L1=P2^3;
sbit   L2=P2^2;
sbit   L3=P2^1;
sbit   L4=P2^0;            		 //定义ds18b20通信端口 
sbit  sda=P2^4;                       //IO口定义
sbit  scl=P2^5;              			 //LCD使能信号
sbit ad_busy=P3^2;              		 //adc中断方式接口
sbit  OUT=P3^7;
sbit anjian=P2^6;//
sbit  RELAY=P2^7;//

 /******延时程序*******/ 

 void delay2(unsigned int m)  

  {  
unsigned int i,j;  
for(i=m;i>0;i--)  
for(j=60;j>0;j--);  
	}  



uchar ad_data;                  		//ad采样值存储					
uchar seconde;                	//定义并初始化时钟变量
uchar minite;
uchar hour;
uchar mstcnt=0;
uchar temp1,temp2,temp,xs;        		//温度显示变量
uchar t,set;
uchar K;
bit ON_OFF=0;
bit outflag;
bit write=0;

void init_timer0(void);   //定时器初始化
void keyscan(void );      //键盘扫描子程序
void set_adj(void);
void inc_key(void);
void dec_key(void);
void delay_18B20(unsigned int i);//
void Init_DS18B20(void) ;
uchar ReadOneChar(void);
void WriteOneChar(unsigned char dat);
void ReadTemperature(void);
void ad0809(void);
void playalarm(void); 
void display();
void DelayMs(uint ms)
  {
   uchar t;
   while(ms--)for(t=0;t<8;t++);
  }

  


标签: 单片机应如何正确驱动继电器l2两种用的继电器431中间继电器dz1bb31继电器31dz中间继电器l010k静中间继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台