《自动化专业单片机程序.doc》由会员分享,可在线阅读,更多相关《自动化专业单片机程序.doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、题1:直流电机速度控制#include #define uchar unsigned charsbit LED1=P21;sbit LED2=P22;sbit Q1=P20;sbit sw1=P10;sbit sw2=P11;void delay1ms(uchar t) /定义延时函数 uchar i,j; for(i=0;it;i+) for(j=0;j120;j+);main() uchar flag; /定义标志位 sw1=1;sw2=1; /按键IO口置1作输入 Q1=0;LED1=1;LED2=1; /电机不转,灯灭 while(1) if(sw1=0) /若sw1键按下,flag置
2、1 delay1ms(10); if(sw1=0) flag=1; if(sw2=0)/若sw2键按下,flag置2 delay1ms(10); if(sw2=0) flag=2; if(flag=1) Q1=1;LED1=0;LED2=1; /电机全速运转 if(flag=2) Q1=1;delay1ms(20);Q1=0;delay1ms(20);LED1=1;LED2=0; 题2:四路抢答器#include #define uchar unsigned charuchar dis5=0xc0,0xf9,0xa4,0xb0,0x99; /字符04共阳极字段码 void delay1ms(u
3、char t) /延时函数 uchar i,j; for(i=0;it;i+) for(j=0;j120;j+); main() uchar key; /定义变量读取按键数据 P0=0; while(P1=0xff); /无按键等待 key=P1;/有键按下 delay1ms(10);/延时去抖动key=P1; switch(key) case 0xfe: P2=dis1;break;/SW1键按下,显示1 case 0xfd: P2=dis2;break; case 0xfb: P2=dis3;break; case 0xf7: P2=dis4;break; default: P2=0xff
4、; while(1); /等待系统复位 题3:防盗声光报警#include #define uint unsigned intsbit sw1=P10; /定义位变量sbit sw2=P11;sbit led1=P20;sbit led2=P21;sbit buz=P22;void delay1ms(uint t) /延时函数 uint i,j; for(i=0;it;i+) for(j=0;j120;j+); main() sw1=1;sw2=1; /开关IO口置1作输入 while(1) if(sw1=1&sw2=0) /正常情况 led1=1;led2=1;buz=1; if(sw1=0
5、|sw2=1) /异常情况 buz=0; /蜂鸣器叫 led1=0;led2=1;delay1ms(500);/两灯交替点亮 led1=1;led2=0;delay1ms(500); 题4:三人表决器#include#define uint unsigned intsbit sw1=P10; /主裁判开关 sbit sw2=P11;sbit sw3=P12;sbit LED1=P00; /发光二极管控制位sbit Q1=P01; /蜂鸣器控制位 void delay(uint t)/延时函数 uint i,j; for(i=0;it;i+) for(j=0;j120;j+); main() P
6、1=0xff; /P1口置1作输入 while(sw1=0) /当主裁判闭合 if(sw2=0|sw3=0) Q1=0;LED1=0; /蜂鸣器叫,灯亮 delay(2000); /延时2秒 Q1=1;while(1); /蜂鸣器停叫,等待复位 else Q1=0; /两副裁判都不同意,蜂鸣器叫 题6:便池自动冲水系统#include #define uint unsigned intsbit sw1=P10;/定义开关控制位sbit lr3=P11;/定义继电器控制位void delay1ms(uint t) /延时函数 uint i,j; for(i=0;it;i+) for(j=0;j1
7、20;j+); main() sw1=1; /开关控制位置作输入 while(1) if(sw1=0) /开关闭合 lr3=0;delay1ms(2000);lr3=1;/继电器接通2秒 while(sw1=0) ; if(sw1=1) /开关断开 lr3=0;delay1ms(5000);lr3=1; /继电器接通5秒 while(sw1=1); 题7:洗衣机水位设定系统#include sbit di=P10; /定义水位设定位变量sbit zhong=P11;sbit gao=P12;sbit adi=P14;/定义水位检测位变量sbit bzhong=P15;sbit cgao=P16
8、;sbit lr3=P20;/继电器控制位变量main() di=1;zhong=1;gao=1; /水位设定开关置作输入 while(1) if(di=0)/若设定低水位 while(adi=0) lr3=0; /a点为低电平,继电器接通 lr3=1; /水位达到a点,继电器断开 if(zhong=0) while(bzhong=0) lr3=0; lr3=1; if(gao=0) while(cgao=0) lr3=0; lr3=1; 题8:产品计数器#include #define uchar unsigned charuchar code dis10=0xc0,0xf9,0xa4,0x
9、b0,0x99,0x92, 0x82,0xf8,0x80,0x90;/ 字符09共阳极字段码sbit sw1=P17; /定义按键控制位sbit P10=P10; /定义数码管位选控制位sbit P11=P11;void delay1ms(uchar t) /延时函数uchar i,j; for(i=0;it;i+) for(j=0;j9) /十进制加法 ge=0;shi+; if(shi9)shi=0; 题9:水塔水位自动循环系统#include sbit bdi=P10;/设定低水位检测控制位 sbit cgao=P11;/设定高水位检测控制位 sbit jr3=P20; /设定继电器控制
10、位 sbit lr4=P21; /设定发光二极管控制位 main() while(bdi=0)jr3=0;lr4=0; /水位没达到b点,继电器接通,灯亮 while(cgao=0) jr3=0;lr4=0;/水位没达到c点,继电器接通,灯亮 while(bdi=1&cgao=1) jr3=1;lr4=1;/水位c点 while(bdi=1&cgao=0) ; /放水题11:计数指示灯#include #define uchar unsigned charsbit D1=P20; /定义发光二极管控制位sbit D2=P21;sbit D3=P22;sbit sw1=P10; /定义按键控制位
11、void delay1ms(uchar t)/延时函数 uchar i,j; for(i=0;it;i+) for(j=0;j120;j+); main() uchar i;/定义统计按键次数变量 sw1=1;/按键IO口置1作输入 while(1) if(sw1=0) /键按下 delay1ms(10);/延时去抖动 if(sw1=0) i+;while(sw1=0);/按键计数值加1,等待键松开 switch(i%4) case 0: D1=1;D2=1;D3=1;break; case 1: D1=0;D2=1;D3=1;break; case 2: D1=0;D2=0;D3=1;bre
12、ak; case 3: D1=0;D2=0;D3=0;break; 题14:数码管显示E和F#include #define uchar unsigned charsbit k1=P10; /定义按键控制位sbit lr9=P11;/定义三极管控制位void delay1ms(uchar t) /延时函数 uchar i,j; for(i=0;it;i+) for(j=0;j120;j+); main() uchar m; /定义统计按键次数变量 k1=1;/按键IO口置1作输入 while(1) if(k1=0) /键按下 delay1ms(10);/延时去抖动 if(k1=0) m+; w
13、hile(k1=0) ;/计数值加1,等待键松开 if(m=1) lr9=0;P0=0x86; /显示字符E if(m=2) lr9=0;P0=0x8e;m=0;/显示字符F,计数值清0 题15:障碍物检测#include #define uchar unsigned charsbit P20=P20;/定义光电开关输入位sbit D1=P10;/定义发光二极管控制位sbit D2=P11;void delay1ms(uchar t)/延时函数 uchar i,j; for(i=0;it;i+) for(j=0;j120;j+); main() uchar i; P20=1; /IO口置1作输入 while(1) if(P20=0)/有障碍物,红灯闪烁3次 for(i=0;i3;i+) D1=0;delay1ms(200); D1=1;delay1ms(200); if(P20=1) /无障碍物,绿灯闪烁3次 for(i=0;i3;i+) D2=0;delay1ms(200); D2=1;delay1ms(200); for(i=0;i20;i+) /延时2秒,进行下轮检测 delay1ms(100);
限制150内