单片机彩灯设计报告.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《单片机彩灯设计报告.doc》由会员分享,可在线阅读,更多相关《单片机彩灯设计报告.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 本文由zqwfreedom贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 单片机课程设计报告 实验人: 实验人: 班 级: 邹奇文 宋康 电嵌 Q0841 0816027 081602014 学 号: 081602014 指导老师: 指导老师: 汪成义 湖 北 经 济 学 院 2010 年 12 月 18 日 目录 一、设计题目 二、设计内容 三、设计要求 四、设计基本流程 五、设计方案 (一)硬件设计 (1)单片机最小系统设计 (2)单片机外部电路设计 (3)总体电路分析 (二)软件编程设计 (1)交通灯三色联动 (2)PWM 亮度变化 (3)循
2、环点亮(速度变化) (4)场景切换 (5)4X4 矩阵键盘 (6)1602LCD 液晶显示 六、学习心得 七、参考文献 八、C 语言源程序 一、设计题目 艺术彩灯控制系统设计 二、设计内容 1设计并实现具有复位功能的单片机小系统。 2利用单片机进行灯光的场景开关控制。 3利用单片机进行灯光的循环点亮控制及速度变化控制。 4利用单片机进行灯光的色彩连续变化效果控制。 5利用单片机进行灯光的三色联动定时控制。 (受器件条件限制, 6. 配合 2 至 5 项中功能,实现液晶屏输出功能或状态信息。 只需仿真方式实现。 ) 7. 以调节 5 或 4 项中的时间为例实现基于 4X4 键盘的输入功能。 (受
3、器件条件限制,只需 仿真方式实现。 ) 三、设计要求 1能启动、停止; 2能通过开关进行功能选择; 3要体现循环、组合和色彩变化的控制功能和效果,实现三色联动定时控制, 控制变化规律的类型或功能不少于 5 种; 4要有完善的课程设计报告 四、设计流程 本课程设计是采用 80C51 单片机设计艺术彩灯,通过 keil 进行 c 语言编程, 通过 protues 进行软件硬件仿真。本设计成果,主要通过按键开关对彩灯进行控 制,包括灯光的场景开关控制、灯光的循环点亮控制及速度变化控制、灯光的色 彩连续变化效果控制、灯光的三色联动定时控制,以上内容均基于面包板完成。 在 4X4 矩阵键盘和 LCD 液
4、晶显示方面均在仿真下完成。 五、设计方案 (一)硬件设计 (1)单片机最小系统设计 ) 80c51 单片机最小系统是由晶体振荡器和复位电路构成,如图所示 晶振电路: 复位电路: (2)单片机外部电路设计 ) 单片机外部电路由八个彩灯,4X4 矩阵键盘,1602LCD 液晶显示和 4 个独 立按键开关组成。以上电路可以完成本课程设计要求的所有功能。 整体电路如图所示: 元件清单:独立按键 21 个,彩灯 8 个,80C51 单片机 1 个,1602LCD 显示器 1 个,1nF 电容 3 个,1K 排阻 1 个,12M 无源晶振 1 个。 (3)硬件设计分析 ) 本硬件设计简单易操作,不死机,只
5、需按键即可达到指定指令,省略模式 选择,简单易懂。 (二)软件设计 (1)交通灯三色联动 ) 本交通灯三色联动采用基本延时的方法实现,稳定性及实时性高。该交通灯为 十字路口交通灯设计,分红、绿、黄三色,其中一方向红灯所亮时间等于另一方 向绿灯、黄灯所亮时间总和。即为基本交通灯。 void jtd() while(1) P1=0x22; delay1s();delay1s();delay1s();delay1s(); P1=0x20; delay500ms(); P1=0x22; delay500ms(); P1=0x00; delay500ms(); P1=0x22; delay500ms()
6、; P1=0x00; delay500ms(); P1=0x22; delay500ms(); P1=0x00; delay500ms(); P1=0x21; delay500ms();delay100ms();delay100ms(); P1=0x14; delay1s();delay1s();delay1s();delay1s(); P1=0x04; delay500ms(); P1=0x14; delay500ms(); P1=0x00; delay500ms(); P1=0x14; delay500ms(); P1=0x00; delay500ms(); P1=0x14; delay5
7、00ms(); P1=0x00; delay500ms(); P1=0x0c; delay500ms();delay100ms();delay100ms(); (2)PWM 亮度变化 ) PWM(Pulse Width Modulation)控制脉冲宽度调制,通过对一系列脉 冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。PWM 脉宽调制, 是靠改变脉冲宽度来控制输出电压,即通过改变占空比来控制输出电压。脉冲宽 度调制波通常由一列占空比不同的矩形脉冲构成, 其占空比与信号的瞬时采样值 成比例。 下图所示为脉冲宽度调制系统的原理框图和波形图。 该系统由一个比较器和 一个周期为 Ts 的
8、正弦波发生器组成。原始信号 x(t)如果大于正弦波信号,比较 器输出正常数 A,否则输出 0。因此,从图中可以看出,比较器输出一列下降沿 调制的脉冲宽度调制波。 原始信号 x(t) + _ PWM 正弦波发生器 调制原理图 调制波形图 定时器/计数器原理: 定时器/计数器原理: 定时器/计数器的核心是 16 位加法计数器,在图中用特殊功能寄存器 TH0、 TL0 及 TH1、TL1 表示。TH0、TL0 是定时器/计数器 T0 加法器的高 8 位和低 8 位, TH1、TL1 是定时器/计数器 T1 加法器的高 8 位和低 8 位。方式寄存器 TMOD 用于 设定定时器/计数器 T0、T1 的
9、工作方式,控制寄存器 TCON 用于对定时器/计数器 启动、停止进行控制。 当定时/计数器用于定时是,加法计数器对内部机器周期 Tcy 计数。由于机 器周期时间是定值,所以对 Tcy 的计数就是定时。当定时/计数器用于计数时, 加法计数器对单片机芯片引脚 T0(P3.4)或 T1(P3.5)上的计数脉冲计数。每 来一个输入脉冲,加法计数器加 1。当由全 1 再加 1 变成全 0 时产生溢出,使溢 出位 TF0 或 TF1 置位,如中断允许,则向 CPU 提出定时/计数中断,如中断不允 许,则只有通过查询方式使用溢出位。 定时器/计数器 T0、T1 的结构框图如下: Tcy T1 T0 TH1
10、内部总线 TL0 TH0 TL1 启动 溢出 中断请求 溢出 工作 方式 启动 工作 方式 TCON TMOD 基本程序代码为: /*/ */ /* 色彩连续变化 /*/ unsigned char CYCLE; /定义周期 定义周期 unsigned char PWM_ON ;/定义高电平时间 定义高电平时间 bit Flag; void delay1(unsigned int cnt) while(-cnt); void FUN10() /色彩连续变化 色彩连续变化 TMOD |=0x01;/定时器设置 0.1ms in 12M crystal 定时器设置 TH0=(65536-100)/
11、256; TL0=(65536-100)%256;/定时 0.1mS 定时 IE= 0x82; /打开中断 打开中断 TR0=1; CYCLE = 10; while(!Flag) delay1(20000); /从一个亮度到下一个亮度间隔时间,速度快可看到连续效果 从一个亮度到下一个亮度间隔时间, 从一个亮度到下一个亮度间隔时间 PWM_ON+; /延时较长,以便能看清楚变化过程 延时较长, 延时较长 if(PWM_ON = CYCLE) Flag=1; while(Flag) /亮度递减 同上,是个相反的过程 亮度递减 同上, delay1(20000); PWM_ON-; if(PWM_
12、ON = 0) Flag=0; /*/ /* */ 定时器中断函数 /*/ void timer0(void) interrupt 1 using 1 TH0=(65536-100)/256; TL0=(65536-100)%256;/定时 0.1mS 定时 if (count=PWM_ON) P2 = 0xaa; count+; if(count = CYCLE) count=0; if(PWM_ON!=0) /如果左右时间是 0 保持原来状态 如果左右时间是 P2 = 0x55;/灯亮 灯亮 (3)循环点亮(速度变化) )循环点亮(速度变化) 本设计采用三种不同速度,通过主函数的扫描按键是
13、否按下,每次按下速度依次 减小: 详细见源程序 (4)场景切换 ) 实现 16 种场景切换,即彩灯的不同亮法,在此不一一赘述。 详细见源程序 (5)4X4 矩阵键盘 矩阵键盘采用先行扫描确定按下键的列数,再通过列扫描确定行数,从而确定具 体是哪个键按下。 程序代码为: uchar keyscan() P2=0xfe; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay50ms(); temp=P2; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0xee:P1=0xff;
14、write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab1num);delay(20); break; case 0xde:P1=0x81; write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab2num);delay(20); break; case 0xbe:P1=0x42; write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab3num);delay(20); break; case 0x7e:P1=0x24; wri
15、te_com(0x80+0x40);for(num=0;num16;num+)write_data(tab4num);delay(20); break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; P2=0xfd; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay50ms(); temp=P2; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0xed:P1=0x18; write_com(0x80+0x40);for(num=0;
16、num16;num+)write_data(tab5num);delay(20); break; case 0xdd:P1=0x24; write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab4num);delay(20); break; case 0xbd:P1=0x42;write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab3num);delay(20); break; case 0x7d:P1=0x81;write_com(0x80+0x40);for(num=0;num16
17、;num+)write_data(tab2num);delay(20); break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; P2=0xfb; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay50ms(); temp=P2; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0xeb:P1=0xc3;write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab6num);del
18、ay(20); break; case 0xdb:P1=0xe7;write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab7num);delay(20); break; case 0xbb:P1=0xff;write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab1num);delay(20); break; case 0x7b:P1=0x7e;write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab8num);delay(20)
19、; break; while(temp!=0xf0) temp=P2; temp=temp&0xf0; P2=0xf7; temp=P2; temp=temp&0xf0; while(temp!=0xf0) delay50ms(); temp=P2; temp=temp&0xf0; while(temp!=0xf0) temp=P2; switch(temp) case 0xe7:P1=0x3c;write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab9num);delay(20); break; case 0xd7:P1=0x18;wr
20、ite_com(0x80+0x40);for(num=0;num16;num+)write_data(tab10num);delay(20); break; case 0xb7:P1=0;write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab11num);delay(20); break; case 0x77:P1=0xff;write_com(0x80+0x40);for(num=0;num16;num+)write_data(tab1num);delay(20); break; while(temp!=0xf0) temp=P2;
21、temp=temp&0xf0; (6)1602LCD 液晶显示 ) 初始化程序: void write_com(uchar com) lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0; void write_data(uchar date) lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0; void init() lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); 在主函数进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 彩灯 设计 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内