




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机C语言程序设计项目抢答器的实现抢答器的实现任务目录任务一开关控制LED灯显示任务二数码管显示按键按下次数任务三多路抢答器的实现开关控制LED灯显示任务介绍开关闭合,8个LED灯依次点亮,实现流水灯效果;开关断开,8个LED灯全亮。硬件电路单片机最小系统电路、8个LED灯电路、开关电路软件设计双分支结构实现程序,识别闭合时,实现流水灯;否则,8个LED全部点亮。开关控制LED灯显示1顺序结构程序设计2选择结构程序设计3循环结构程序设计4函数、数组主要内容5按键、数码管顺序结构程序设计AB按照程序中语句书写的顺序从上到下一条一条依次执行概念任务分析首先点亮D1,保持一段时间后,熄灭D1,点亮D2,保持一段时间后,熄灭D2,点亮D3……依次类推,直到点亮D8,然后停止流水灯效果流水灯电路序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED灯LED-RED
83排阻RX81K1流水灯控制原理端口的控制电平为低,LED灯亮;端口的控制电平为高,LED灯灭端口数据D8D7D6D5D4D3D2D1状态1灭灭灭灭灭灭灭亮端口数据:0XFE11111110状态2灭灭灭灭灭灭亮灭端口数据:0XFD11111101状态3灭灭灭灭灭亮灭灭端口数据:0XFB11111011流水灯程序设计端口数据D8D7D6D5D4D3D2D10xfe灭灭灭灭灭灭灭亮0xfd灭灭灭灭灭灭亮灭0xfb灭灭灭灭灭亮灭灭0xf7灭灭灭灭亮灭灭灭0xef灭灭灭亮灭灭灭灭0xdf灭灭亮灭灭灭灭灭0xbf灭亮灭灭灭灭灭灭0x7f亮灭灭灭灭灭灭灭通过赋值语句分8次将数据依次输出到P1口流水灯程序设计P1=0XFE…………延时P1=0XFD延时voidmain() {P1M0=0X00;P1M1=0X00;while(1){
P1=0xfe;
delay_nms(1000);
P1=0xfd; delay_nms(1000);
P1=0xfb; delay_nms(1000);
P1=0xf7; delay_nms(1000);
P1=0xef; delay_nms(1000);
P1=0xdf; delay_nms(1000);
P1=0xbf; delay_nms(1000);
P1=0x7f; delay_nms(1000); }}主函数赋值语句函数调用语句P1=0X7F延时流水灯工作的原理、设计流程、源程序51单片机顺序结构程序设计的原理和方法小结if语句if–else语句
选择语句选择结构程序设计开关控制灯序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED灯LED-RED
13排阻RX81K14按键button1选择结构程序设计LED灯开关原理按键按下时,P3.2=0按键松开时,P3.2=1P1=0xFFP1=0x00LED开关程序设计if(表达式)语句语句YN表达式条件:判断P3.2电平的高低状态执行语句:P1输出高低电平LED开关程序设计#include<stc15.h>sbitSW=P3^2voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;P1=0X00; while(1) { if(SW==0)P1=0xff; if(SW==1)P1=0X00; }}确定灯初始为亮循环判断操作关系运算符==而非赋值运算符=sbitSW=P3^2LED开关程序设计if(表达式)语句1else
语句2P1=0x00P1=0xff高低P3.2语句1语句2真假表达式LED开关程序设计#include<stc15.h>sbitSW=P3^2voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;P1=0X00; while(1) { if(SW==0)P1=0xff; elseP1=0X00; }}双分支if-else语句LED开关的工作原理51单片机分支结构程序设计小结If语句和if-else语句实现了LED开关国家法律、国家利益、人民利益高于一切。我们不仅要学好专业知识,有高超的专业技术能力,设计出高质量的产品,还要具有强烈的法制意识,高尚的职业道德,良好的技术操守,为我们的国家我们的社会贡献自己的力量。if–elseif-else语句switch语句
选择语句多分支结构程序设计开关控制灯序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED灯LED-RED
43排阻RX81K14按键button4多分支语句if(表达式1)语句1elseif(表达式2)语句2…………elseif(表达式n)语句nelse语句n+1条件是按键引脚上电平的高低,语句i是LED引脚上输出高低电平LED开关分析要求:4个按键对应4个指示灯,S1按下,仅D1亮,S2按下,仅D2亮,S3按下,仅D3亮,S4按下,仅D4亮,其他情况,灯全灭。LED开关分析要求:4个按键对应4个指示灯,S1按下,仅D1亮,S2按下,仅D2亮,S3按下,仅D3亮,S4按下,仅D4亮,其他情况,灯全灭。(P34==0)&&(P35==1)&&(P36==1)&&(P37==1)(P34==1)&&(P35==0)&&(P36==1)&&(P37==1){D1=0;D2=1;D3=1;D4=1;}{D1=1;D2=0;D3=1;D4=1;}4个LED开关程序设计#defineD1P10#defineD2P11#defineD3P12#defineD4P13#defineS1P34#defineS2P35#defineS3P36#defineS4P37
voidmain(){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;D1=1;D2=1;D3=1;D4=1;while(1){
if((S1==0)&&(S2==1)&&(S3==1)&&(S4==1)){D1=0;D2=1;D3=1;D4=1;}
elseif((S1==1)&&(S2==0)&&(S3==1)&&(S4==1)){D1=1;D2=0;D3=1;D4=1;} elseif((S1==1)&&(S2==1)&&(S3==0)&&(S4==1)){D1=1;D2=1;D3=0;D4=1;}
elseif((S1==1)&&(S2==1)&&(S3==1)&&(S4==0)){D1=1;D2=1;D3=1;D4=0;}else{D1=1;D2=1;D3=1;D4=1;}}}复合语句关系运算符==逻辑运算符&&多分支语句switch(表达式){case常量表达式1:[语句组1][break;]case常量表达式2:[语句组2][break;]
…
…
…
…
…
…
…
……
…
…case常量表达式n:[语句组n][break;][default:语句组n+1]}执行过程:先计算表达式的值,然后依次与每一个case中的常量表达式的值进行比较,若有相等的,则从该case开始依次往下执行,若没有相等的,则从default开始往下执行。条件算法分析(P3^4==0)&&(P3^5==1)&&(P3^6==1)&&(P3^7==1)(P3^4==1)&&(P3^5==0)&&(P3^6==1)&&(P3^7==1)(P3^4==0)&&(P3^5==1)&&(P3^6==1)&&(P3^7==1)(P3^4==1)&&(P3^5==0)&&(P3^6==1)&&(P3^7==1)P3端口:需要保留位“&”上1,不需保留的“&”上0即P3&二进制数11110000即P3&0xf0位与常量值计算P3口P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0&0xf011110000S1按下:0xe011100000S2按下:0xd011010000S3按下:0xb010110000S4按下:0x7001110000S1S2S3S4S1S2按下:0xc011000000S1-S4按下:0x00000000004个LED开关程序设计#include<stc15.h>voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break;//点亮D1 case0xd0:P1=0xfd;break;//点亮D2 case0xb0:P1=0xfb;break;//点亮D3 case0x70:P1=0xf7;break;//点亮D4default:P1=0xff;//否则灭灯} } }存放开关S4~S1的状态if-elseif-else语句实现了4路开关LED51单片机多分支结构程序设计小结switch语句实现了4路开关LED#include<stc15.h>voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break;//点亮D1 case0xd0:P1=0xfd;break;//点亮D2 case0xb0:P1=0xfb;break;//点亮D3 case0x70:P1=0xf7;break;//点亮D4default:P1=0xff;} } }while(1)无限循环实例循环结构程序设计1while语句2do-while语句
3for语句
循环语句循环结构程序设计while(表达式){
循环体语句}循环体真假表达式voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;while(1){ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break; case0xd0:P1=0xfd;break; case0xb0:P1=0xfb;break; case0x70:P1=0xf7;break;default:P1=0xff;} } }循环结构程序设计do{
循环体语句}while(表达式);voidmain(void){P1M0=0x00;P1M1=0X00;P3M0=0x00;P3M1=0X00;unsignedcharkey_value=0;
do{ key_value=P3&0xf0;switch(key_value){ case0xe0:P1=0xfe;break; case0xd0:P1=0xfd;break; case0xb0:P1=0xfb;break; case0x70:P1=0xf7;break;default:P1=0xff;} }while(1);
}循环结构之延时函数/*延时函数*/voiddelay_ms(unsignedintms){unsignedinti;
do{ i=MAIN_Fosc/13000;
while(--i);}while(--ms);}#defineMAIN_Fosc 11059200L //定义主时钟循环执行i次空操作“;”循环次数i值的计算i是估算值,时间不精准for语句for(表达式1;表达式2;表达式3){
循环体语句}YN
表达式2
表达式3
表达式1
循环体for(i=0;i<10;i++){
循环体语句}voiddelay_ms(unsignedintms){;;;;}voidmain() {
P1=0xfe;
delay(20000);
P1=0xfd; delay(20000);
P1=0xfb; delay(20000);
P1=0xf7; delay(20000);
P1=0xef; delay(20000);
P1=0xdf; delay(20000);
P1=0xbf; delay(20000);
P1=0x7f; delay(20000);
while(1); //结束}流水灯程序顺序结构顺序结构循环结构设计流水灯程序8次P1=0XFE…………延时1秒P1=0XFD延时1秒P1=0X7F延时1秒P1=常数1…………延时1秒P1=常数2延时1秒P1=常数8延时1秒过程不变数据在变数据变量算法表示循环结构设计流水灯程序“<<”运算端口数据1D7D6D5D4D3D2D10xfe111111100xfd111111010xfb111110110xf7111101110xef111011110xdf110111110xbf101111110x7f011111111111111011111100<<111111101+111111010<<111111011+1led=(led<<1)+1;循环结构设计流水灯程序8次P1=常数1…………延时1秒P1=常数2延时1秒P1=常数8延时1秒满8次吗否是循环体语句组:P1=led;延时Led=(led<<1)+1;变量led赋初始值0xfe循环结构设计流水灯程序voidmain() {unsignedchar i,led;P1M0=0x00;P1M1=0X00;while(1){
led=0xfe;
for(i=0;i<8;i++) { P1=led; delay_ms(1000); led=led<<1; led=led+1;
}}}外循环体内循环体满8次?否是循环体语句组:P1=led;延时Led=(led<<1)+1;变量赋初始值循环结构之流水灯程序小结初始化循环控制循环体100%循环结构程序设计鲁迅先生说:伟大的成绩和辛勤劳动是成正比例的,有一分劳动,就有一分收获,日积月累,从少到多,奇迹就可以创造出来。voidmain() {unsigned
chari,led;
P1M0=0x00;P1M1=0X00;while(1){ led=0xfe; for(i=0;i<8;i++) {P1=led; delay(1000); led=led<<1; led=led+1;
}}}实例任务循环结构实现流水灯库函数标准库函数是由C51编译器提供的,用户可以直接调用,以头文件的形式给出//STC15.HsfrP0=0x80;sbitP00=P0^0;sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitP04=P0^4;sbitP05=P0^5;sbitP06=P0^6;sbitP07=P0^7;intrins.h库函数Intrins.h功能_cror_(v,n)将字符型数据向右环移若干位_crol_(v,n)将字符型数据向左环移若干位_iror_(v,n)将整形型数据向右环移若干位_irol_(v,n)将整形型数据向左环移若干位_lror_(v,n)将长整形型数据向右环移若干位_lrol_(v,n)将长整形型数据向左环移若干位_nop_()空操作,相当于汇编语言中的NOPv为变量,n为移位的位数环移函数_crol_(led,1)环移是指数据在内部进行循环移位,最高位和最低位不会丢弃也不会填01111111011111101
voidmain() {P1M0=0x00;P1M1=0X00;unsignedchar i,led;while(1){
led=0xfe;
for(i=0;i<8;i++)
{
P1=led;
delay_ms(1000); led=led<<1;led=led+1;} }}voidmain() {P1M0=0x00;P1M1=0X00;unsignedcharled;led=0xfe;while(1){
P1=led; delay_ms(1000); led=_crol_(led,1);}}库函数intrins.h库函数中的移位操作函数小结用库函数中的环移函数设计了流水灯程序函数定义和调用
自定义函数是用户根据需要自行编写的函数,它必须先定义再调用。voiddelay_ms(unsignedintms){unsignedinti;
do{ i=MAIN_Fosc/13000; while(--i);}while(--ms);}voidmain() {P1M0=0x00;P1M1=0X00;unsignedchari,led;led=0xfe;while(1){ P1=led; delay_nms(1000); led=_crol_(led,1);}}函数调用函数定义自定义函数voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i);}while(--ms);}函数类型函数名(形式参数表){局部变量定义函数体语句return表达式;}自定义函数voidmove_left(unsignedcharval){unsignedchari;P1=val;for(i=0;i<8;i++) { delay_ms(1000); P1=_crol_(P1,1); }}voidmain(void){P1M0=0x00;P1M1=0X00;unsignedcharled;while(1){ led=0xfe;move_left(led);led=0x7f;move_right(led);}}设计2个函数,函数功能是分别是流水灯D1~D8逐个移动和D8~D1逐个移动,在主函数中调用函数,实现流水灯正反向反复流动。voidmove_right(unsignedcharval){unsignedchari;P1=val;for(i=0;i<8;i++) { delay_ms(1000); P1=_cror_(P1,1); }}voidmain() {P1M0=0x00;P1M1=0X00;unsigned char led;led=0xfe;while(1){ P1=led; delay_ms(1000); led=_crol_(led,1);}}}数组数组端口数据D8D7D6D5D4D3D2D1D2亮:0xfd11111101D8亮:0x7f01111111D7亮:0xbf10111111D4亮:0xf711110111D5亮:0xef11101111D6亮:0xdf11011111D1亮:0xfe11111110D3亮:0xfb11111011霓虹灯:依次点亮D2D8D7D4D5D6D1D3数据变化无规律,无法用算法表示数据霓虹灯数据数组voidmain() //主函数{P1M0=0x00;P1M1=0X00;
while(1)//无限循环
{ P1=0xfd;
delay_ms(1000);
P1=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 茶艺师文化交流活动的意义试题及答案
- 2025年土木工程设计考题试题及答案
- 注册土木工程师特殊问题试题及答案
- 软件专业技术资格复习备考及试题及答案
- 2025年度生态园区入驻企业入伙协议书
- 2025年度酒店式公寓房租租赁合同补充协议样本
- 经典茶艺表演案例分析试题及答案
- 妇幼保健员考试常见难点试题及答案解析
- 2025年度智能家居与绿色建筑出租房屋合同
- 2025年度非物质文化遗产会计人才聘请合同
- 医务人员职业安全防护制度流程
- 中国高血压防治指南(2024年修订版)
- 《猫》学习任务群教学设计
- 《始终坚持以人民为中心》教案
- 播音主持说新闻课件
- 组织拳击比赛行业市场突围建议书
- 2024年上海市安全员-B证(项目负责人)理论考试题及答案
- 《T CMADI 085-2022牙槽骨增量用增材制造个性化钛网》
- 我的小手最干净
- 建筑施工企业三级安全教育制度(3篇)
- 《幼儿园保育教育质量评估指南》图文详解课件
评论
0/150
提交评论