实验一 流水灯实验
- 格式:doc
- 大小:30.00 KB
- 文档页数:3
实验一流水灯实验报告一、实验目的1、熟练掌握JC-51A型开发板的使用方法和注意事项。
2、了解简单单片机应用系统的设计方法。
3、掌握应用KEIL软件编辑、编译源汇编程序的操作方法。
4、掌握应用USBISP烧录软件STC-ISP的操作方法。
5、掌握89C52RC单片机的流水灯操作过程。
二、实验内容在JC-51A开发板上实现8个发光LED“流水”的现象,并通过编写程序控制流水现象。
三、实验主要仪器及软件1,JC-51A开发板2,一台电脑3,STC-ISP-V479软件4,KEIL软件四、实验说明当8255 的PA口有低电平输出时,相应的发光二极管就会点亮。
应用这一原理我们可以容易的点亮一个数码管,例如令PA口输出0111 1111时D1就会点亮。
若再把0111 1111向右循环一位,利用PA口输出,就会点亮D2。
在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水”的现象。
五、实验步骤步骤一:把学习板连接到电脑上,把光盘安装到电脑里,注意电脑右下方显示的是COM几端口;步骤二:打开光盘看到“4.程序烧写软件”字样并打开,安装PL-232驱动这个软件,并打开STC手动下载,找到STC_ISP_V479.exe并打开;步骤三:打开看到一个界面,MCU type选择STC89C52RC,COM端口选择刚刚看到的几端口;步骤四:点击open file,选择光盘里5.MINI-V22实例源程序,打开汇编参考样例,打开流水灯2,选择hex格式的文件,点击确定;步骤五:点击download,如果连接不成功,重置下学习板的开关,这时就看到学习板的流水灯的滚动了。
六、广告流水灯程序ORG 00HMOV P2,#80HSTART:MOV A,#0FFH ;赋初值CLR CMOV R2,#8LOOP:RRC A ; 带进位右移MOV P1,ACALL DELAYDJNZ R2,LOOPMOV R2,#7LOOP1:RLC A ; 带进位左移MOV P1,ACALL DELAYDJNZ R2,LOOP1JMP STARTDELAY:MOV R3,#20 ; 延时0.2秒D1: MOV R4,#20 D2: MOV R5,#248DJNZ R5,$DJNZ R4,D2DJNZ R3,D1RETEND七、实验原理图更改此处可以使流水灯速度发生变化八、总结:通过本实验,懂得如何安装kell软件以及实验板,懂得单片机的调试,初步了解并熟悉实验板上单片机I/O口和LED 灯的电路结构,能通过修改程序实现仿真板上不同灯的亮灭情况,并希望通过多次试验对它有更多的了解。
实验一流水灯实验一.实验内容与目的1.实验内容实现LED灯的顺次点亮。
2.实验目的对msp430有初步了解,学会msp430I/O口的使用方法,了解msp430的内部资源,学习尝试使用msp430的时钟、中断。
二.方法与结果用P2口对led的亮灭进行控制(对P2口赋值为0时led点亮,电路图如下),使用msp430比较器0和定时器产生1s的定时,当定时到1s时改变led的状态(流程图如下)。
三.实现程序#include<msp430.h>void main( ){WDTCTL = WDTPW + WDTHOLD; //关闭看门狗中断P2DIR=0xff; //设定P2口为输出P1SEL=0x00; //设定P2口为普通I/O口CCTL0=CCIE; //开启比较器0中断CCR0=32768; //定时时间的选取,当计数器TAR计数到CCR0时,跳到中断TACTL=TASSEL_1+MC_1;//TACTL是计数器的控制寄存器,选择时钟系统,计数方式P2OUT=0xfe; //设定P2口初值_EINT(); //开启总中断LPM3; //进入低损耗模式}#pragma vector=TIMERA0_VECTOR__interrupt void timer() //中断程序{if(P2OUT==0x7f){P2OUT=0xfe;}else{P2OUT=P2OUT<<1;P2OUT=P2OUT|0x01; //位操作,改变led的状态}}四.流水灯实验总结①msp430的P1~P6口都可以用作I/O口,但msp430不能利用对I/O口直接赋值的方法控制I/O口的输出、接收I/O口的输入,而是利用相应的寄存器(PxOUT 和PxIN),对PxOUT赋值就完成了I/O口的输出,将PxIN的值赋给相应变量就完成了I/O口的输入。
另外msp430还有I/O口控制寄存器,PxDIR和PxSEL,PxDIR控制I/O口的输出输入,赋值为‘1’表示输出。
北京科技大学微型计算机原理实验报告学院:____自动化学院________________专业、年级:_自动化1101_ ______________ 姓名:__廖文骏_ ________________学号:_ 20111002124 ____________ 指导教师:___ _____王粉花____________2013年12 月综合实验一按键控制流水灯实验(查询方式)实验学时:2学时一、实验目的1.掌握ATmega16 I/O口操作相关寄存器2.掌握CodeVision AVR软件的使用3. 复习C语言,总结单片机C语言的特点二、实验内容1. 设计一个简单控制程序,功能是8个LED逐一循环发光0.5s,构成“流水灯”。
2. 用两个按键K1和K2控制流水灯(中断方式):(1)当按下K1时,流水灯从左向右流动;(2)当按下K2时,流水灯从右向左流动。
三、实验所用仪表及设备硬件:PC机一台、AVR_StudyV1.1实验板软件:CodeVision AVR集成开发软件、SLISP下载软件四、实验原理ATmega16芯片有PORTA、PORTB、PORTC、PORTD(简称PA、PB、PC、PD)4组8位,共32路通用I/O接口,分别对应于芯片上32根I/O引脚。
所有这些I/O口都是双(有的为3)功能复用的。
其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USRAT、I2C和SPI串行通信、模拟比较、捕捉等应用。
这些I/O口同外围电路的有机组合,构成各式各样的单片机嵌入式系统的前向、后向通道接口,人机交互接口和数据通信接口,形成和实现了千变万化的应用。
每组I/O口配备三个8位寄存器,它们分别是方向控制寄存器DDRx,数据寄存器PORTx,和输入引脚寄存器PINx(x=A\B\C\D)。
I/O口的工作方式和表现特征由这3个I/O口寄存器控制。
AVR通用I/O端口的引脚配置情况:I/O口引脚配置表表中的PUD为寄存器SFIOR中的一位,它的作用相当AVR全部I/O口内部上拉电阻的总开关。
实验一流水灯实验一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机时点亮12发光二极管, 闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示由顺时针改为逆时针方式三、系统硬件设计单片机STC10F08XE 1片发光二极管led 红4个黄4个绿4个按键6个复位电路时钟电路如下图所示:四、系统软件设计#include<reg51.h>sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; void Delay(void){unsigned char i,j,k;for(i=10;i>0;i--)for(j=132;j>0;j--)for(k=150;k>0;k--); }Scan_Key(){ unsigned char FLAG=0;unsigned char n;n=(L1==0)||(L2==0)||(L3==0);if(n) { FLAG=1;}return FLAG; }main(){ unsigned char y,n,s=0,b=1,m=0;unsigned char c=1;unsigned char a[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char h[]={0xff,0x38,0x34,0x2f,0x1f};n=Scan_Key(); for(y=0;y<3;y++){ P2=0; P3=0; Delay(); Delay(); Delay();P2=0xff; P3=0xff; Delay(); Delay(); Delay(); }while(1) { while(1){ m=m+n; P3=0x3f; while(1){ for(;b<9;b++){ n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==0)){P2=a[b];Delay();}else { P2=0xff;break; }if(m%2==0) c=1; P2=0xff; }for(;c<5;c++){n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==0)){ P3=h[c];Delay();}else { P3=0x3f;break;} }if(m%2==0) b=1; break; }if(m%2==1) break; }while(1){ for(;b>0;b--){n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==1)){P2=a[b];Delay(); } else{P2=0xff;break;} P2=0xff; }if(m%2==1) c=4; for(;c>0;c--){ n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==1)){ P3=h[c]; Delay();}else { P3=0x3f;break;} P3=0x3f; }if(m%2==0) break;if(m%2==1) b=8; } } }五、实验过程中遇到的问题及解决方法问题1: 如何实现顺、逆时针依次点亮流水灯?解决: 利用循环右移_cror_(m,1)和循环左移_crol_(n,1)依次点亮。
综合实验:流水灯控制一、实验要求:根据开关状态选择八个流水灯的工作方式,且在任何状态下如有开关状态发生改变,则能立即转入最新开关状态所对应方式工作。
模式一:顺序点亮八个灯,一直循环,直到开关状态改变。
模式二:八个灯闪烁,即八盏灯全亮后全灭,一直循环,直到开关状态改变。
模式三:间隔点亮八个灯,如对八盏灯编号为L1、L2、L3、L4、L5、L6、L7、L8 ,则灯亮的方式为:L1 L3 L5 L7 ,L2 L4 L6 L8 ,L1 L3 L5 L7 ,L2 L4 L6 L8(从左往右循环)。
二、实验内容:开关S1、S2 分别与P3.1、P3.0连接,用于流水灯工作方式控制,开关组合为00、01、02、03,其中00为无效状态,01、02、03分别对应连续方式点亮灯、闪烁、间隔点亮。
八盏灯L1、L2、L3、L4、L5、L6、L7、L8分别与P1.0~P1.7连接,八盏灯为共阴极连接,即高电平点亮。
由于灯的状态改变时间间隔小于肉眼能分辨的最小时间间隔,所以在程序实现的时候必须在灯两种状态之间引入延时处理,以便肉眼能够分辨。
1.延时子程序(条件转移侧N,竖Y此页有效)四、程序代码:ORG 0000HSJMP MAINORG 0030HMAIN:MOV SP,#60HRESCAN:MOV A,#00HMOV P1,A ;灯全灭LCALL SCAN ;扫描P3口状态CJNE R0,#01H,NEXT1AJMP MODE1 ;如果P3=FDH,则转入MODE1执行(灯连续点亮)NEXT1: CJNE R0,#02H,NEXT2AJMP MODE2 ;如果P3=FEH,则转入MODE2执行(灯闪烁)NEXT2: CJNE R0,#03H,NEXT3AJMP MODE3 ;如果P3=FFH,则转入MODE3执行(间隔点亮灯)NEXT3: SJMP RESCAN ;如果P3=FCH(无效状态),则不停的对P3口扫描MODE1: ;灯连续点亮,从左往右(MODE1), P3=FDH MOV A,#00HMOV P1,AMOV R2,#80H ;R2=1000,0000LOOP1: MOV A,R2MOV P1,ARR AMOV R2,A ;A向右移一位后回送R2LCALL DEL200 ;调用200Ms延时子程序LCALL SCAN ;扫描P3口状态CJNE R0,#01H,NEXT01SJMP LOOP1 ;如果P3状态没变,跳到LOOP1执行NEXT01:CJNE R0,#02H,NEXT02AJMP MODE2 ;如果P3变为P3=FEH,跳到MODE2执行NEXT02: CJNE R0,#03H,NEXT03AJMP MODE3 ;如果P3变为P3=FFH,跳到MODE3执行NEXT03: AJMP RESCAN ;如果P3=FCH(无效状态),则不停的对P3口扫描MODE2: ;灯闪烁(MODE2), P3=FEHMOV A,#00HLOOP2: MOV P1,ACPL ALCALL DEL200 ;延时200MsPUSH ACC ;扫描P3状态前,保护现场LCALL SCAN ;扫描P3口POP ACC ;恢复现场CJNE R0,#02H,NEXT001SJMP LOOP2 ;如果状态没变,转到LOOP2执行NEXT001: CJNE R0,#01H,NEXT002AJMP MODE1 ;如果模式改变,P3=FEH,跳到MODE2NEXT002: CJNE R0,#03H,NEXT003SJMP MODE3 ;如果模式改变,P3=FFH,跳到MODE3NEXT003: AJMP RESCAN ;如果P3=FCH(无效状态),则不停的对P3口扫描MODE3:MOV A,#00H ;间隔点亮灯(MODE3),R0=03HMOV P1,AMOV R3,#04H ;R3,R4都用来控制当前趟第一个灯亮的初始位置MOV R4,#04HMOV A,#80H ;准备给P1送1000,0000LOOP3 :MOV P1,ARR ARR ALCALL DEL200 ;延时200MsDJNZ R3,LOOP3 ;判断当前(从第一个开始亮)趟结束MOV R3,#04H ;如果此趟结束,重设计数,为下一次做准备MOV A,#40H ;设置下一趟灯亮的初始位置(第二个)LOOP4: MOV P1,ARR ARR ALCALL DEL200 ;延时200MsPUSH ACC ;保护现场LCALL SCAN ;扫描P3口POP ACC ;现场恢复CJNE R0,#03H,NEXT21DJNZ R4,LOOP4 ;如果模式不变,且该趟没结束,则到LOOP4MOV R4,#04H ;如果此趟结束(模式没变),则重置计数,为下一次做准备MOV A,#80HSJMP LOOP3 ;执行当前模式的第二次亮灯NEXT21:CJNE R0,#01H,NEXT22AJMP MODE1 ;模式改变为MODE1则装到对应位置执行NEXT22: CJNE R0,#02H,NEXT23AJMP MODE2 ;模式改变为MODE2则装到对应位置执行NEXT23: AJMP RESCAN ;如果R0=00H(无效状态),则不停的对P3口扫描DEL200: ;如果晶振频率f=6MHz,误差为0MOV R7,#13HDL1: MOV R6,#14HDL0: MOV R5,#82HDJNZ R5,$ ;R5-1<>0时重复执行此句DJNZ R6,DL0DJNZ R7,DL1RETSCAN:JB P3.0,MM ;P3口状态扫描子程序JB P3.1,VVMOV A,#00HMOV R0,ARETVV:MOV A,#02HMOV R0,ARETMM:JB P3.1,NNMOV A,#01HMOV R0,ARETNN:MOV A,#03MOV R0,ARETEND五、实验分析1、误差分析:假如晶振频率f = 6MHz,那么一个机器周期t = 0.002Ms。
第1篇一、实验目的1. 掌握汽车流水灯电路的设计原理;2. 熟悉汽车流水灯电路的搭建与调试方法;3. 提高动手实践能力,加深对电子电路的理解。
二、实验原理汽车流水灯是一种常见的汽车装饰灯具,其原理是通过控制LED灯的亮灭,形成动态的流水效果。
本实验采用555定时器作为核心元件,通过控制定时器的输出波形,实现LED灯的流水效果。
三、实验器材1. 555定时器1片;2. LED灯8个;3. 电阻10kΩ8个;4. 电阻220Ω1个;5. 电阻1kΩ1个;6. 跳线若干;7. 电路板1块;8. 电源5V。
四、实验步骤1. 搭建电路:根据电路图,将555定时器、LED灯、电阻等元件按照电路图要求连接好。
2. 调试电路:将电源接入电路板,观察LED灯的流水效果。
3. 调整参数:通过调整电阻值,改变LED灯的亮灭时间,实现流水效果的调整。
4. 测试与验证:观察LED灯的流水效果,确保流水灯工作正常。
五、实验结果与分析1. 电路搭建成功,LED灯按照预定效果流水。
2. 通过调整电阻值,可以改变LED灯的亮灭时间,实现流水效果的调整。
3. 实验过程中,注意观察电路板的电压、电流等参数,确保电路安全稳定运行。
六、实验心得1. 通过本次实验,加深了对555定时器、LED灯等电子元件的理解,提高了动手实践能力。
2. 在电路搭建过程中,学会了如何根据电路图进行元件连接,提高了电路搭建速度。
3. 实验过程中,遇到问题及时查阅资料,学会了如何解决问题,提高了自学能力。
4. 通过本次实验,认识到电子电路在实际应用中的重要性,为今后的学习和工作打下了基础。
七、实验总结本次汽车流水灯实验,成功实现了LED灯的流水效果。
通过实验,掌握了汽车流水灯电路的设计原理、搭建与调试方法,提高了动手实践能力。
在今后的学习和工作中,将继续努力,不断提高自己的电子电路水平。
第2篇一、实验目的1. 熟悉汽车流水灯电路的基本组成和工作原理。
2. 掌握汽车流水灯电路的设计和制作方法。
实验一流水灯控制实验
一、实验目的
1.了解51单片机的引脚结构,掌握单片机I/O的基本控制方法,延时时间的估算。
2.熟悉Keil开发环境,51单片机程序下载软件的使用。
3. 编写代码实现LED灯的流水功能,掌握蜂鸣器的打开和关闭方法。
4. 利用开发板下载hex文件后验证功能。
二、实验器材
PC机,CT107D单片机开发板
三、CT107D单片机开发板LED灯和蜂鸣器的电路接线图
注:流水灯的亮灭规律自行设计,要求说明控制流水灯亮灭规律的方法。
下图所示为74HC138译码器、LED灯、蜂鸣器及M74HC573锁存器的电路连接图。
说明:蜂鸣器的打开和关闭。
P06为高电平时,如果LE端有下降沿产生,锁存器会把P0口的数据锁存输出,使Q7引脚保持并输出高电平,再通过U10(ULN2003)反向逻辑驱动器件使N_BUZZ 输出为低,此时蜂鸣器就会鸣叫。
实验一流水灯实验一、实验目的1)简单 I/O 引脚的输出2)掌握软件延时编程方法3)简单按键输入捕捉判断二、实验实现的功能1)开机是点亮 12 发光二极管,闪耀三下2)依据顺时针循环挨次点亮发光二极管3)经过按键将发光二极管的显示改为顺逆时针方式三、系统硬件设计流水灯原理图四、系统软件设计演示程序按键正转闪耀反转五、实验过程中碰到的问题及解决方法1) 每次循环不论正转仍是反转程序,总先是先履行P1 口的 8 位 led 灯。
原由:在利用 KEIL 自带的库函数中的 _crol_ 和_cror_ 时,在正转和反转程序中应当调动次序的,开始没注意到。
更正后显示正常。
2)在开始实验的时候推行的是向来循环的方式,利用按键嵌套。
以后发现不理想,每次按键按到三次以上后进入死循环。
解决方案:利用一个按键,显示一次。
并加入按键开释,防备误动作。
指导老师署名:日期:实验一程序 :/******************************************************************** **************工程说明:本工程主要达成了一下功能:1,复位后演示全部功能2,灯闪耀三次3,流水灯正转4,流水灯反转函数说明:yanshi() :演示程序dengss() :闪耀程序right():正转程序left():反转程序scankey() :按键扫描********************************************************************* **************/#ifndef _led_h#define _led_h#define uint unsigned int#define uchar unsigned charuchar i,j,a,b,c,d;uchar flag=0;//亮灯判断标记uchar aa,bb,cc,dd,ss;sbit H1=P3^6;sbit key1=P0^5;sbit key2=P0^6;sbit key3=P0^7;void delay(uint);//1ms 延时void yanshi(void);//演示全部亮灯方式void dengss(void);//闪耀三次void left(void); //左循环亮灯void right(void);//右循环亮灯void scankey(); //按键扫描#endif#include"stc10.h"#include<intrins.h>#include<led.h> //包含各样变量定义及函数申明main(){yanshi();delay(2000); //两秒后进入可控大循环while(1){scankey();if(flag==0)right();if(flag==1)left();if(flag==2)dengss();}}void delay(uint x){uint i,j;for(i=110;i>0;i--)for(j=x;j>0;j--);}void yanshi(){dengss();right();left();P2=0XFF;P3=0XFF;}void dengss(){for(ss=3;ss>0;ss--)P2=0;P3=0xc3;delay(1000);P2=0xff;P3=0xff;delay(1000);}flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void right(){aa=0xfe;for(a=8;a>0;a--){P2=aa;aa=_crol_(aa,1);delay(500);}bb=0xfb;P2=0xff;//熄灭循环后亮着的for(b=4;b>0;b--){P3=bb;bb=_crol_(bb,1);delay(500);}//D12 保存发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void left(){cc=0xdf;for(c=4;c>0;c--){P3=cc;cc=_cror_(cc,1);delay(500);P3=0xff;// 熄灭 D9dd=0x7f;for(d=8;d>0;d--){P2=dd;dd=_cror_(dd,1);delay(500);}//D1 保存发亮flag+=3;//退出小循环,只亮一次,增大按键扫描频次}void scankey(){H1=0;if(key1==0){delay(10);if(key1==0){flag=0;while(!key1);//等候按键开释}}if(key2==0){delay(10);if(key2==0){flag=1;while(!key2);//等候按键开释}}if(key3==0){delay(10);if(key3==0){flag=2;while(!key3);//等候按键开释}}}实验二准时器或实不时钟实验一、实验目的1)数码管动向显示技术2)准时器的应用3)按键功能定义二、实验实现的功能1) 经过按键能够设定准不时间,启动准时器,准不时间到,让12 个发光二极管闪耀,达成准时器功能。
实验一-51单片机流水灯实验-实验报告5页实验目的:通过51单片机控制LED流水灯的实验,提高学生对于51单片机I/O端口控制的掌握程度,并加深对于“流水灯原理”的理解,在此基础之上,提高同学们对于算法的理解与启发式思路。
实验器材:1. 计算机及Keil C51开发软件。
2. STC89C52单片机开发板一块。
3. LED灯若干(使用的LED有红、黄、绿、蓝、紫共5种,将每种颜色灯各6枚组合成一共30颗灯)。
4. 单片机烧录器。
实验原理:数码管实验就是在P0口中,以位选方式驱动数码管,以位选控制器件的组成电路。
流水灯实验就是在P1口中,以位移方式驱动LED灯,以主控程序的组成电路。
实验内容:实验中使用Keil C51软件编写程序,由程序控制单片机的P1口输出电平,从而控制LED的灯光闪烁。
LED灯的控制方式为从左到右控制LED逐层点亮或逐层熄灭,或者从左到右逐层递增亮度或递增颜色。
另外,LED灯的控制还可以从中间开始点亮或者点熄,并在两边逐层变化。
实验时,需要先理清楚流水灯的控制原理,明确各个控制变量的功能,并制定出相应的算法,在程序中进行实现。
实验步骤:1. 将30个LED灯按照左到右的次序排列好,将其中一个LED固定在开发板上的对应P1口位置上。
2. 根据实验要求,编写一个程序,对于LED的灯光状态进行控制,使LED灯从左到右依次变亮或变暗。
编写程序时可以采用多种实现方式,如如果使用循环语句,可以循环控制LED序列中的每个灯的亮度状态,使得程序能够不断运行直到停止。
3. 编写完成程序后,通过单片机烧录器,将程序烧录到开发板上,并将开发板上的电源连接上。
4. 开发板接通电源后,可以看到电路中的LED发出不同的亮光信号,如果控制程序设计得好,可以实现一些比较有意思的效果,如从起始位置到中间逐渐点亮,或者从中间到两侧依次点亮,等等。
实验结果:通过程序的编写和烧录,可以实现对于LED流水灯的控制。
程序运行期间会通过P1口输出电平信号,控制LED灯的点亮和熄灭,从而实现LED的流水灯效果。
实验一流水灯实验
一、实验目的
1)简单I/O引脚的输出
2)掌握软件延时编程方法
3)简单按键输入捕获判断
二、实验实现的功能
1)开机是点亮12发光二极管,闪烁三下
2)按照顺时针循环依次点亮发光二极管
3)通过按键将发光二极管的显示改为顺逆时针方式
三、系统硬件设计
四、系统软件设计
#include <reg51.h>
sbit a=P0^5;
#define uint unsigned int
#define uchar unsigned char
tab1[]={0x00,0x00,0x00};
tab2[]={0xc3,0xc3,0xc3};
tab3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff}; tab4[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xf7,0xef,0xdf}; tab5[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; tab6[]={0xdf,0xef,0xf7,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; void delay()
{
uint i,j;
for(i=0;i<256;i++)
for(j=0;j<256;j++)
{;}
}
void main(void)
{uchar x,y;
uint s=1;
for(x=0;x<3;x++)
{P2=0xff;P3=0xff;
delay();
P2=tab1[x];
P3=tab2[x];
delay();
}
while(1)
{if(s==1)
{for(y=0;y<12;y++) {P2=tab3[y];
P3=tab4[y];delay();
P2=0xff;P3=0xff;
}
if(a==0)
s=0;
else
s=1;
}
else
{for(y=0;y<12;y++) {P2=tab5[y];
P3=tab6[y];delay();
P2=0xff;P3=0xff;
}
if(a==0)
s=1;
else
s=0;
}
}
}
五、实验过程中遇到的问题及解决方法
1实验中遇到的问题
一开始灯是正着转的,按下按键后是开始反着转了但是当再次按下按键的时候却不会正着转了?
2解决办法
原本是想通过中断来解决的,但那时对终端还不是太会用,就想到了查询,查询按键的信号来改变其转向,当然要通过一个中间变量来实现检测到一次就改变其直然后当进入到该程序是就改变回其原来的值,这样就可以实现正反转的来回转换了。
指导老师签字:
日期:。