591基于单片机的花式喷泉喷水池控制系统设计
设计思路:
1.按下启动按钮,喷水装置即开始工作。按下停止按钮,则停止喷水。
2.“单步/连续”在单步位置时,喷水只运行一次;在连续位置时,运行一直继续。
3.方式选择开关用来选择喷水池的喷水花样,1-4号喷水管的工作方式选择如下:
①选择开关在位置“1’时。按下启动按钮后,4号喷水,延时2s后,3号也喷水,延时2s后,2号接着喷水,再延时2s,1号喷水,然后一起喷水15 s后停下。若在连续状态时,将继续循环下去。
②选择开关在位置“2”时。按下启动按钮后,1号喷水,延时2s后,2号喷水,延时2s后,3号接着喷水,再延时2s,4号喷水,这样,一起喷水30s后再停下。若在连续状态时,将继续循环下去。
③选择开关在位置“3”时。按下启动按钮后,1、3号同时喷水,延时3 s后,2、4号喷水,1、3号停止喷水;交替运行5次后,1-4号全喷水,30 s后停止。若在连续状态时,将继续循环下去。
④选择开关在位置“4”时。按下启动按钮后,喷水池1-4号水管的工作顺序为:
1—2—3—4按顺序延时2s喷水,然后一起喷水30s,1、2、3和4号分别延时2s停水,再延时1 s,由4—3—2—1反向顺序按2s顺序喷水,一起喷水30e后停止。若在连续状态时,将继续循环下去。
4.不论在什么工作方式下,按下停止按钮,喷水池将停止运行。
sbit DY = P0^0;
/*喷水灯*/
sbit G1 = P3^3;
sbit R2 = P3^4;
sbit R3 = P3^5;
sbit R4 = P3^6;
sbit R5 = P3^7;
void delay(void) //误差 0us
{
unsigned char a,b,c;
for(c=151;c>0;c--)
for(b=107;b>0;b--)
for(a=48;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
void delay15(void) //误差 0us
{
unsigned char a,b,c,n;
for(c=142;c>0;c--)
for(b=168;b>0;b--)
for(a=250;a>0;a--);
for(n=1;n>0;n--);
}
省略
592基于51单片机的简易电子钟加闹钟设计
基于51单片机的电子时钟的设计,从硬件和软件两个方面给出了具体实现过程。该时钟的设计采用功能分块的思想方法,将硬件电路划分为开关电路,显示驱动电路和数码管电路等若干独立模块,而软件的实现则由闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等组成。
文中给出了各个模块的电路图,并用Proteus的ISIS软件对电子时钟系统的各个功能进行了仿真,并给出了相应的仿真结果图像
uchar hour=0, minute=0,flag=0;
void display(uint ge,uint shi,uint fg,uint fs,uint xg,uint xs);
void fm();
uchar code wm[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code dm[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit ke1=P0^4; // 正常调时
sbit ke2=P0^5; //正常调分
sbit ke4=P0^7; //正常调星期(也可不接)
sbit k3=P0^6;//闹钟调时
sbit k5=P0^3; // 闹钟调分
sbit k6=P0^2;//切换闹钟模式
void delay(uint s)
{
uint x,y;
for(x=s;x>0;x--)
for(y=110;y>0;y--);
}
void timer()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
void key()
{
P0=0xfe;
delay(10);
if(ke1==0)
{
k++;
if(k==24)
k=0;
while(!ke1);
}
if(ke2==0)
584 基于51单片机车汽车流量检测电路系统设计
车流量检测系统功能概述:
本系统采用AT89S52作为中央处理单元来采集光电传感器采集车辆类型数据,并计算大小中等车辆的数量,实现实时显示的功能。将当前路段的信息可以通过串口传输给控制中心、控制中心可以通过一线传回来的数据进行分析、实施交通管制。显示模块采用LCD1602来实时显示当前路段运行的状态,系统还设有输入键盘,可以实现手动控制发送数据。
车流量检测系统功能特点:
光电检测功能:能实现对进出路段的车辆进行数据采集。
状态显示:能够显示当前路段的车流量情况。
区分车辆大小:通过三个高低不同的光电对管,对过往车辆的车型大小进行检测并计数。
车流量检测系统是由微处理器单片机、电源模块、复位模块、光电传感模块及显示模块组成
init();
init_timer();
while(1)
{
s_display();
m_display();
b_display();
}
}
void timer0() interrupt 1
{
TH0 = 0xfe;
TL0 = 0xfe;
if(gd1==0&&gd2==0&&gd3==0)
{
delayms(15);
while(gd1==0&&gd2==0&&gd3==0);
b++; s++;m++;
}
if(gd1==0&&gd2==0&&gd3==1)
{
delayms(15);
while(gd1==0&&gd2==0&&gd3==1);
m++; s++;
}
1107基于单片机巡迹避障智能小车系统、寻线、protues仿真c程序
设计思路:采用单片机作为主控电路,使用红外对管传感器,包含六个传感器监测循迹,使用避障传感器。其中两个电机作为小车的方向控制驱动。其中避障传感器、红外监测传感器来控制两个电机的转速,当速度不同时则实现转弯,例如左快右慢则为右转。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp, signal, tt1, t0, t1, t2, t3, t4, t5, t6;
sbit jia = P3 ^ 1;
sbit jian = P3 ^ 2;
uchar time = 20;
void delay_1ms( uint d )
{
uint i;
while ( d-- )
for ( i = 0; i < 75; i++ )
;
}
1140基于51单片机超声波三方向测距系统设计
设计思路,大家参考学习:
1、采用三个超声波测距,速度快,精度高,精度1毫米。
2、按键设置设置报警距离,上限和下限。
3、LCD1602液晶显示。
4、结构简洁,稳固,高效。
#include<reg52.h>
#include <intrins.h>
#include "LCD1602.h"
#include "STCEEPROM.h"
sbit RX1 = P3^4;
sbit RX2 = P3^5;
sbit RX3 = P3^6;
sbit TX = P3^7;
sbit LED = P2^1;
sbit SPEAK = P2^0;
sbit KEY1 = P1^3;
sbit KEY2 = P1^4;
sbit KEY3 = P1^5;
unsigned int time=0;
unsigned int timer=0;
unsigned int S=0,S1=0,S2=0,S3=0;
unsigned int SET_H=100,SET_L=10;
bit flag =0;
unsigned char Table[3]={0};
unsigned char KEY_flag=0;
//延时函数
void Delay_ms(int jj)
{
int ii;
while(jj--)
for(ii=0;ii<116;ii++);
}
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
【资源下载】下载地址:点击下载(1140)
1141基于51单片机超声波水位液位控制系统LCD1602资料
电路设计思路:
1、采用超声波水位液位,速度快,精度高,精度1毫米。
2、按键设置设置报警高度,上限和下限。
3、LCD1602液晶显示。
#include<reg52.h>
#include <intrins.h>
#include "LCD1602.h"
#include "STCEEPROM.h"
sbit RX = P3^6; //定义超声波端口
sbit TX = P3^7;
sbit LED = P2^0; //LED
sbit SPEAK = P2^1; //蜂鸣器
sbit Motor = P2^2; //水泵
sbit KEY1 = P1^3; //设置按键
sbit KEY2 = P1^4; //加按键
sbit KEY3 = P1^5; //减按键
unsigned int time=0;//计时变量
unsigned int timer=0;//计时变量
unsigned int S=0;//当前值
unsigned int SET_H=100,SET_L=10;//最高值和最低值
bit flag =0; //测量标志位
unsigned char Table[5],Table1[5];//显示数组
unsigned char KEY_flag=0; //按键选择标志
//延时函数
void Delay_ms(int jj) //延时函数
{
int ii; //延时变量
while(jj--)//延时n毫秒
for(ii=0;ii<116;ii++);//延时1毫秒
}
void Conut(void) //测量函数
{
time=TH0*256+TL0; //距离计数
TH0=0; //定时器清零
TL0=0; //定时器清零
S=(time*1.87)/10; //算出来是CM、转换
if((S>=7000)||flag==1) //超出测量范围显示“-”
文章转自电设屋,资料百度网盘下载地址 https://www.aiesst.cn/share.html