首页 单片机led流水灯实验报告

单片机led流水灯实验报告

举报
开通vip

单片机led流水灯实验报告定时器实验—循环彩灯实验 专业班级: 姓 名: 学 号: 同组成员: 指导老师: 日 期: 一、实验目的:      1、学习8031内部计数器的使用和编程方法。    2、进一步掌握中断处理程序的编写方法。 二、实验设备:     EL-8051-III型单片机实验箱 三、实验原理:     1、定时常数的确定      定时器/计数器的输入脉冲周期与机器周期一样, 为振荡频率的1/12。本实验中时钟频率为6.0 MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次...

单片机led流水灯实验报告
定时器实验—循环彩灯实验 专业班级: 姓 名: 学 号: 同组成员: 指导老师: 日 期: 一、实验目的:      1、学习8031内部计数器的使用和编程方法。    2、进一步掌握中断处理程序的编写方法。 二、实验设备:     EL-8051-III型单片机实验箱 三、实验原理:     1、定时常数的确定      定时器/计数器的输入脉冲周期与机器周期一样, 为振荡频率的1/12。本实验中时钟频率为6.0 MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。     时间常数可按下述方法确定:     机器周期=12÷晶振频率=12/(6×106)=2us     设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 数初值为X,则(2e+16-X)×2×106=0.1,可求得X=15535     化为十六进制则X=3CAFH,故初始值为TH1=3CH,TL1=AFH     2、初始化程序      包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行      正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP便不必设置。     3、设计中断服务程序和主程序      中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。 四、实验题目     由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。要求编写程序模拟一循环彩灯。彩灯变化花样可自行设计。例程给出的变化花样为:①L1、L2、…L8依次点亮;②L1、L2、…L8依次熄灭;③L1、L2、…L8全亮、全灭。各时序间隔为0.5秒。让发光二极管按以上规律循环显示下去。 五、实验电路图: 六、实验步骤:      P1.0~P1.7分别接发光二极管L1~L8即可。 七、程序框图:T6.ASM 八、实验讨论 1、​ 彩灯循环控制方式的设计,在这里主要是通过试验箱指示灯显示。在电路中以低电平有效,以0代 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 灯亮,以1代表灯暗。由0、1按不同的规律组合代表不同的点亮方式,同时使其选择不同的频率从而实现多种变化多种频率的花样功能显示。 2、​ 彩灯循环变亮方式选择,在这里设置了彩灯11种不同的循环变化方式,我们用状态机来控制不同的点亮方式,从而达到不同的点亮方式随时切换变化。 3、​ 我们设置的11种变化分别是: 1、从L1~L8一个接着一个亮起来,再从右往左亮起。L8-L1二进制变化为:11111110 →11111100 →11111000 →11110000 →11100000 →11000000 →10000000 →00000000→ 01111111 →00111111 → 00011111 →00001111 →00000111 →00000011 →00000001 →00000000; 2、按01010101,10101010(或红、绿彩灯)交替闪烁。 3、两个灯循环向右一直亮着。L8-L1二进制变化为:11111100 →11111001→11110011 →11100111 →11001111→10011111 →00111111 4、先绿灯一个个亮起来,再红灯一个个变亮。11111110 →11111010 →11101010 →10101010 →00101010 → 00001010→ 00000010 →00000000; 5、从中间向外逐渐亮起,再从两边向内变暗。11100111 →11000011 →10000001 →00000000 →10000001 → 11000011 →111001111 →11111111; 6、流水型。00011100 →10001110 →11000111 →11100011 →01110001 →00111000; 7、左右四个灯,交替变化。11110000 →00001111; 8、一个灯从左往右亮,再一个灯从右往左亮。01111111 →10111111 →11011111 →11101111 →11110111 →11111011 →11111101 →11111110 →11111101 →11111011 →11110111 →11101111 →11011111 →10111111 →01111111 ; 9、从中间左亮一个,右亮一个,如此左右一个个循环亮起。 10、分左右两组,从左往右亮,再从右往左亮。01110111 →00110011 →00010001 →00000000 →11101110 →11001100 →10001000 →00000000; 11、L1~L8全亮,再全灭。11111111 →00000000; 九、实验代码 #include #define uint unsigned int uint count = 0; uint temp = 0xff; 延时程序: void delay() { int i,j; for(i = 0; i < 100; i++) { for(j = 0; j < 100; j++) { ; } } } 子程序: void pattern1() //红绿相间交替闪烁 { for(count = 0; count < 3; count++) { P1 = 0xfaa delay(); P1 = 0x55; delay(); } } Void pattern2() //从中间至两边灯亮,在从两边至中间熄灭 { P1=0xe7; delay(); P1=0xc3; delay(); P1=0x81; delay(); P1=0; delay(); P1=0x81; delay(); P1=0xc3; delay(); P1=0xe7; delay(); P1=temp; delay(); } Void pattern3() //水波循环 { For(count=0;count<3;count++) { P1=0x38;delay(); P1=0x71;delay(); P1=0xe3;delay(); P1=0xc7;delay(); P1=0x8e;delay(); P1=0x1c;delay(); } } Void pattern4() //左右两边交替变亮 { For(count=0;count<3;count++) { P1=0xf0;delay(); P1=0x0f;delay(); } } Void pattern5() //一盏亮灯从右至左,从左至右 { P1=0xfe;delay(); P1=0xfd;delay(); P1=0xfb;delay(); P1=0xf0;delay(); P1=0xef;delay(); P1=0xdf;delay(); P1=0xbf;delay(); P1=0x0f;delay(); P1=0;delay(); } Void pattern6() //从左至右全亮,从右至左全灭 { P1=0xfe;delay(); P1=0xfc;delay(); P1=0xf8;delay(); P1=0xf0;delay(); P1=0xe0;delay(); P1=0xc0;delay(); P1=0x80;delay(); P1=0;delay(); P1=0x80;delay(); P1=0xc0;delay(); P1=0xe0;delay(); P1=0xf0;delay(); P1=0xf8;delay(); P1=0xfc;delay(); P1=0xfe;delay(); P1=temp;delay(); } Void pattern7() //红灯从左至右亮,然后绿灯从右至左亮 { P1=0xfe;delay(); P1=0xfa;delay(); P1=0xea;delay(); P1=0xaa;delay(); P1=0x2a;delay(); P1=0x0a;delay(); P1=0x02;delay(); P1=0;delay(); } Void pattern8() //两盏灯循环亮 { P1=temp; For(count=0;count<3;count++) { P1=0xfc;delay(); P1=0xf9;delay(); P1=0xf3;delay(); P1=0xe7;delay(); P1=0xcf;delay(); P1=0x9f;delay(); P1=0x3f;delay(); P1=0x7e;delay(); } } Void pattern9() //从中间至两边,每次只亮一盏灯 { P1=temp;delay(); P1=0xf7;delay(); P1=0xe7;delay(); P1=0xe3;delay(); P1=0xc3;delay(); P1=0xc1;delay(); P1=0x81;delay(); P1=0x80;delay(); P1=0;delay(); } Void pattern10() //左右部分分别从内向外亮,再从外向内灭 { For(count=0;count<3;count++) { P1=temp;delay(); P1=0x99;delay(); P1=0;delay(); P1=0x99;delay(); } } void pattern11() //闪烁 { for(count = 0; count < 3; count++) { P1 = 0xff; delay(); P1 = 0x00; delay(); } } 主程序: void main() { Pattern1(); Pattern2(); Pattern3(); Pattern4(); Pattern5(); Pattern6(); Pattern7(); Pattern8(); Pattern9(); Pattern10(); Pattern11(); } 十、实验心得 在此次实验中碰到了很多困难,经过老师和同学的帮助,都能够得以解决。使我深深的体会到,团队合作精神的重要和可贵。其次,在此次实验中,我知道了个人思路和团队 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 的重要性。只有思路清晰才能制定好一个完整严密的计划。这样即可以节约时间,也避免了一些不必要的麻烦。先设计好彩灯的显示方式,再进行软件的编译。这需要一个开拓是思维,更需要丰富的想象力。
本文档为【单片机led流水灯实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_556181
暂无简介~
格式:doc
大小:77KB
软件:Word
页数:8
分类:工学
上传时间:2011-05-24
浏览量:948