单片机常见课程设计题目.docx
《单片机常见课程设计题目.docx》由会员分享,可在线阅读,更多相关《单片机常见课程设计题目.docx(17页珍藏版)》请在冰豆网上搜索。
单片机常见课程设计题目
D1-基于单片机的数字电压表设计
D2-基于单片机的智能电压表设计(温度检测器)
D3-基于单片机的LED流水灯系统设计
D4-基于单片机的智能船模设计
D5-基于单片机的电梯控制模型设计
D6-基于单片机的水位控制系统设计
D7-基于单片机的水位控制系统设计(STC89—51型)
D8-基于单片机的多路数据采集系统设计
D9-基于单片机的抢答器设计
D10-基于单片机的数字温度计设计
D11-基于单片机的智能小车设计
D12-基于单片机的数字温度计设计
D13-基于单片机的遥控器设计
D14-基于单片机的串行通信发射机设计
D15-基于单片机的简易智能电动车设计
D16-基于单片机的太阳能热水器控制器设计
>>>>>>>>>>>>>>>>>憋疯的分割线<<<<<<<<<<<<<<<<<
D17-基于单片机的太阳能热水器控制器设计
D18-MCS-51单片机温度控制系统的设计
D19-直流电动机的转速检测与脉宽调速
D20-基于单片机的智能机器人的设计
D21-基于单片机的简易无线竞赛系统的设计
D22-基于单片机的车辆闯红灯监控系统设计(89C51)
D23-基于单片机控制的井下瓦斯监控系统设计
D24-基于单片机的煤气泄漏检测报警装置设计
D25-基于单片机的井式渗碳炉控制系统设计
D26-基于单片机的蔬菜大棚温湿度智能控制系统设计
D27-基于单片机的电子钟设计
D28-基于单片机的电力线载波节电群控设计
D29-基于单片机的液位控制器设计(8051)
D30-基于单片机的串行通信发射机设计(版本2)
D31-基于单片机的智能八路抢答器设计(AT89C2051)
D32-基于单片机的水位监控器设计(STC12C2052AD)
D33-基于单片机的点阵电子显示屏设计(版1)
D34-基于单片机的智能温度控制系统设计
D35-基于单片机的智能时钟控制器设计
D36-基于单片机的智能温控系统设计(版本1)
D37-基于单片机的智能寻迹避障小车设计
D38-基于单片机的家用太阳能热水器控制器设计
D39-基于单片机的新型抢答计分器设计
D40-基于单片机的热敏电阻测温系统设计
>>>>>>>>>>>>>>>>>憋疯的分割线<<<<<<<<<<<<<<<<<
D41-基于单片机的林火监测系统-飞艇姿态控制系统设计
D42-基于单片机的人性化时钟控制器设计
D43-基于单片机的智能型电话远程遥控器设计
D44-基于单片机的远程通讯控制器设计
D45-基于单片机的温度控制器设计
D46-基于单片机的智能水位控制器设计
D47-基于单片机的水位控制系统设计(版本1)
D48-基于单片机的智能电动小车设计
D49-基于单片机的数码电子时钟设计
D50-基于单片机的数控直流电源设计
D51-基于单片机的交通灯控制器设计
D52-基于单片机的数字温度计设计(STC89C51)
D53-基于单片机的智能小车设计
D54-基于单片机的温度控制器设计
>>>>>>>>>>>>>>>>>憋疯的分割线<<<<<<<<<<<<<<<<<
D55-基于单片机的串行通信发射机设计(版本3)
D56-基于单片机的温度控制系统设计(版本1)
D57-基于单片机的交通灯控制系统设计
D58-基于单片机的电子万年历设计
D59-基于单片机的水位控制器设计
D60-基于单片机的水位控制系统设计(版本2)
D61-基于单片机的数据采集器设计
D62-基于单片机的水位控制系统设计(版本3)
D63-基于单片机的电梯控制系统设计
D64-基于单片机的智能温控系统设计(版本2)
D65-基于单片机的温度控制系统设计(版本2)
D66-基于单片机的数据采集与传输系统设计
D67-基于单片机的交通灯控制系统设计(版本1)
D68-基于单片机的交通灯控制系统设计(版本2)
D69-基于单片机的红外防盗报警器设计
D70-基于单片机的花卉温室控温系统设计
D71-基于单片机的焊机温度控制系统设计(89C51)(版式一)
D72-基于单片机的焊机温度控制系统设计(版式二)
D73-基于单片机的路灯控制器设计
D74-基于单片机技术的水位控制器设计(8051)
D75-基于单片机的车床刀架控制系统设计(MCS-51)
D76-基于单片机的电机智能综合保护装置设计
D77-基于单片机的水位控制器设计(STC89C51)
D78-基于单片机的水位控制器设计(STC89C51+水泵)
D79-基于单片机技术的自动停车器的设计
D80-基于ARM的嵌入式图形用户界面设计
>>>>>>>>>>>>>>>>>憋疯的分割线<<<<<<<<<<<<<<<<<
D81-基于单片机的太阳能热水器控制器设计(版本3)
D82-基于单片机的太阳能热水器控制器设计(版本4)
D83-基于单片机的智能型矿用磁力启动器设计(PIC16F877A单片机)
D84-基于单片机的无氧退火炉温控系统设计(8031)
D85-基于单片机的电厂锅炉过热蒸汽温度监测系统设计(MCS-51)
D86-基于单片机的摩托车里程表研制
D87-基于PIC16F84单片机的IC卡智能水表设计
D88-基于单片机的自动车库门的设计
D89-基于单片机的自动滴灌控制系统的设计
D90-基于单片机的预付费电度表设计
D91-基于单片机的智能电子秤设计
D92-基于单片机的太阳能热水器智能控制器设计
D93-基于单片机的油井巡视定位系统设计
D94-基于单片机的照明控制系统
D95-基于单片机的水位测试系统中数据采集电路设计
D96-基于单片机的锅炉液位控制系统设计
D97-基于单片机的洗衣机设计
D98-基于单片机的锅炉汽包水位控制系统设计
D99-基于单片机的多功能秒表设计
D100-基于单片机的GSM网数据传输设计与实现
D101-锅炉燃烧微机DDC控制系统(含组态)
D102-在单片机上实现USB移动存储
51单片机交通灯protues仿真
1.按键可以选择正常模式和夜间模式
2.按键可以选择正常模式和紧急模式
原理图和仿真效果如下:
南北红灯模式
南北黄灯模式
南北绿灯模式
程序如下:
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharnum;//定时器T0计数变量
ucharnum1;//定时器T1计数变量
ucharkey1num;
ucharkey2num;
ucharkey3num;
uchartemp;//南北时间变量
uchartemp1;//东西时间变量
//ucharflagS1; //状态一标志位
ucharflagS2; //状态二标志位
ucharflagS3; //状态三标志位
ucharflagS4; //状态四标志位
ucharkey1flag;
ucharkey2flag;
ucharkey3flag;
ucharflag;
ucharflag1;
disp[]={11,3,8}; //南北显示时间数值
disp1[]={14,5,3};//东西显示时间数值
uchari;
ucharcodesmg_dm[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,};//数码管段码数组
ucharcodesmg_wm[]={
0x0f,0x1f,0x2f,0x3f,
0x4f,0x5f,0x6f,0x7f,};//数码管位码数组
////////指示灯位定义//////////////
sbitNS_R=P0^0; //南北走向红灯
sbitNS_Y=P0^1; //南北走向黄灯
sbitNS_G=P0^2; //南北走向绿灯
sbitEW_R=P0^3; //东西走向红灯
sbitEW_Y=P0^4; //东西走向黄灯
sbitEW_G=P0^5; //东西走向绿灯
sbitkey3=P3^2;//设置键
sbitkey2=P3^3;//紧急键 切换正常南北紧急东西紧急三种状态
sbitkey1=P3^4;//模式切换键切换正常模式夜间模式
/////////子函数声明//////////////
voidinit();//初始化
voiddelay_ms(uintz);//延时ms级
/////////////////////////////////
voidsmg();//数码管显示
/////////////////////////////////
voidkey();//按键函数
/////////////////////////////////
voidS0();//初始状态
voidS1();//状态1函数
voidS2();//状态2函数
voidS3();//状态3函数
voidS4();//状态4函数 构成一个正常显示的循环
//////////////////////////////////
voidyejian();
voidzhengchang();
voidnaibeijinji();
voiddongxijinji();
////////////主程序///////////////
voidmain()
{
init();
//flagS1=1;//进入状态下
temp=disp[i];//取初值
temp1=disp1[i];//取初值
S0();
TR0=1;
while
(1)
{
key();
if(flag==1)
{
if(key2flag==1)
{
naibeijinji();
TR0=0;
num=0; ///////////////////////////////调试
}
elseif(key2flag==2)
{
dongxijinji();
TR0=0;
num=0;//////////////////////////////调试
}
else
{
TR0=1;
// NS_R=1;NS_Y=1;NS_G=1;/////////////调试
// EW_R=1;EW_Y=1;EW_G=1;
NS_R=0;NS_Y=0;NS_G=0;/////////////调试
EW_R=0;EW_Y=0;EW_G=0;
zhengchang();
}
}
elseif(flag1==1)
{
if(key3flag==1)
{
yejian();
TR0=0;
num=0;
}
else
{
TR0=1;
// NS_R=1;NS_Y=1;NS_G=1;
// EW_R=1;EW_Y=1;EW_G=1;
NS_R=0;NS_Y=0;NS_G=0;/////////////调试
EW_R=0;EW_Y=0;EW_G=0;
zhengchang();
}
}
else
{
zhengchang();
}
}
}
voidyejian()
{
// NS_R=1;NS_Y=0;NS_G=1;
// EW_R=1;EW_Y=0;EW_G=1;
NS_R=0;NS_Y=1;NS_G=0;
EW_R=0;EW_Y=1;EW_G=0;
delay_ms(500);//////////延时太长按键切换会不灵敏
//NS_R=1;NS_Y=1;NS_G=1;
// EW_R=1;EW_Y=1;EW_G=1;
NS_R=0;NS_Y=0;NS_G=0;/////////////调试
EW_R=0;EW_Y=0;EW_G=0;
delay_ms(500);
}
voidzhengchang()
{
if(flagS2==1)
S2();
elseif(flagS3==1)
S3();
elseif(flagS4==1)
S4();
else
S1();
}
voidnaibeijinji()//南北绿灯,东西红灯
{
//NS_R=1;NS_Y=1;NS_G=0;
//EW_R=0;EW_Y=1;EW_G=1;
NS_R=0;NS_Y=0;NS_G=1;
EW_R=1;EW_Y=0;EW_G=0;
}
voiddongxijinji()//东西绿灯,南北红灯
{
//NS_R=0;NS_Y=1;NS_G=1;
//EW_R=1;EW_Y=1;EW_G=0;
NS_R=1;NS_Y=0;NS_G=0;
EW_R=0;EW_Y=0;EW_G=1;
}
voidkey()
{
if(key2==0)
{
delay_ms(10);
if(key2==0)
{
flag=1;
flag1=0;
key2num++;
key2num=key2num%3;
switch(key2num)
{
case0:
key2flag=0;break; //正常模式
case1:
key2flag=1;break; //南北紧急
case2:
key2flag=2;break; //东西紧急
}
}
while(!
key2);
}
if(key3==0)
{
delay_ms(10);
if(key3==0)
{
flag=0;
flag1=1;
key3num++;
key3num=key3num%2;
switch(key3num)
{
case0:
key3flag=0;break; //正常模式
case1:
key3flag=1;break; //夜间模式
}
}
while(!
key3);
}
}
voidS0()
{
//NS_R=0;NS_Y=0;NS_G=0;
//EW_R=0;EW_Y=0;EW_G=0;
NS_R=1;NS_Y=1;NS_G=1;
EW_R=1;EW_Y=1;EW_G=1;
delay_ms(2000);
//NS_R=1;NS_Y=1;NS_G=1;
//EW_R=1;EW_Y=1;EW_G=1;
NS_R=0;NS_Y=0;NS_G=0;
EW_R=0;EW_Y=0;EW_G=0;
}
voidS1()
{
//NS_G=0;//南北绿灯亮
//EW_R=0;//东西红灯亮
NS_G=1;//南北绿灯亮
EW_R=1;//东西红灯亮
if(num==20)
{
num=0;
temp=temp-1;
temp1=temp1-1;
}
if(temp==0)
{
flagS2=1;
//NS_G=1;//南北绿灯灭
//EW_R=0;//东西红灯亮
NS_G=0;//南北绿灯灭
EW_R=1;//东西红灯亮
i=i+1; //1
temp=disp[i];//3
temp1=temp1;
//flagS1=0;
}
smg();
}
voidS2()
{
//NS_Y=0;//南北黄灯亮
//EW_R=0;//东西红灯亮
NS_Y=1;//南北黄灯亮
EW_R=1;//东西红灯亮
//temp=3;
if(num==20)
{
num=0;
temp=temp-1;
temp1=temp1-1;
}
if(temp==0)
{
flagS2=0;
flagS3=1;
//NS_Y=1;
//EW_R=1;
NS_Y=0;
EW_R=0;
i=i+1; //2
temp=disp[i];//8
temp1=disp1[i-1];//5
}
smg();
}
voidS3()
{
//NS_R=0;//南北红灯亮
//EW_G=0;//东西绿灯亮
NS_R=1;//南北红灯亮
EW_G=1;//东西绿灯亮
if(num==20)
{
num=0;
temp=temp-1;
temp1=temp1-1;
}
if(temp1==0)
{
flagS3=0;
flagS4=1;
//NS_R=0;
//EW_G=1;
NS_R=1;
EW_G=0;
i=i+1;
temp=temp;
temp1=disp1[i-1];
}
smg();
}
voidS4()
{
//NS_R=0;//南北红灯亮
//EW_Y=0;//
NS_R=1;//南北红灯亮
EW_Y=1;//
if(num==20)
{
num=0;
temp=temp-1;
temp1=temp1-1;
}
if(temp==0)
{
flagS4=0;
//NS_R=1;
//EW_Y=1;
NS_R=0;
EW_Y=0;
//flagS1=1;
i=i+1;
if(i>2)
{i=0;}
temp=disp[i];
temp1=disp1[i];
}
smg();
}
voidsmg()
{
P2=smg_wm[0];
P1=smg_dm[temp%10];
delay_ms(5);
P1=0X00;
P2=smg_wm[1];
P1=smg_dm[temp/10];
delay_ms(5);
P1=0X00;
P2=smg_wm[2];
P1=smg_dm[temp1%10];
delay_ms(5);
P1=0X00;
P2=smg_wm[3];
P1=smg_dm[temp1/10];
delay_ms(5);
P1=0X00;
}
voidinit()
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
//TR0=1;
//ET1=1;
//TR1=1;
}
voidtime0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
/*
voidtime1()interrupt3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
num1++;
}
*/
voiddelay_ms(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
窗体底端