可以调控的走马灯设计
可以调控的走马灯

单片机课程设计说明书可以调控的走马灯目录1概述 (1)1.1可控走马灯的意义 (1)1.2可控走马灯的发展和现状 (1)2.课题方案设计 (2)2.1系统总体设计要求 (2)2.2 设计方案论证 (2)3.系统硬件设计 (3)3.1 总体设计 (3)3.2 单片机运行的最小系统 (4)3.3 按键电路 (5)3.4 LED显示模块 (5)4.系统软件的设计 (9)5软硬件联调及调试结果 (10)5.1软硬件调试中出现的问题及解决措施 (10)5.2 实物图 (11)5.3 调试结果 (12)结束语 (12)参考文献 (14)附录 (14)附录1 :可以调控的走马灯原理图 (14)附录2 :可以调控的走马灯PCB图 (15)附录3:Ptoteuse 仿真图 (15)附录4:C语言程序清单 (16)附录5:可控走马灯元件清单表 (19)1概述1.1可控走马灯的意义众所周知,走马灯以其绚丽的色彩赢得人们喜爱,在人们的日常生活中很常见,并在一些特定的节日里,重要场合中起着绚烂节日气氛,带给人们欢乐的作用。
可以调控的走马灯打破常规走马灯闪烁固定变化的现状,可根据人们不同的意愿进行编程设计出想要的变换的色彩效果。
1.2可控走马灯的发展和现状当前,可以调控的走马灯广泛应用于各种商业场所,娱乐场所,以及建筑物的装饰等多种场合。
可以说,可控走马灯技术的应用已渗透大到世界博览会,奥林匹克开幕式,小到节日彩灯装饰。
深入研究可控走马灯是产品提高档次和推陈出新的有效途径。
纵观单片机的发展过程,可以预示走马灯的发展趋势,单片机的发展趋势如下:低功耗CMOS化MCS-51系列的80C51推出时的功耗达120mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,更适合于在要求低功耗像电池供电的应用场合。
跑马灯控制电路设计

HDL数字系统课程设计报告书目录一、设计目的2二、设计思路2三、设计过程23.1、系统方案论证23.2、程序代码设计3四、系统调试与结果5五、主要元器件与设备9六、课程设计体会与建议96.1、设计体会96.2、设计建议9七、参考文献10论文摘要:共16个LED灯,连成一排,实现几种灯的组合显示。
通过这次对跑马灯控制电路的设计与制作,了解了设计电路的程序,也了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。
此外,本实验也可通过EDA软件Quartus6.0和modelSim SE 6.0实现。
关键词: HDL数字系统跑马灯设计一、设计目的1、熟悉Verilog HDL程序编程。
2、掌握Altera公司ACEXTM系列EPEK30QC208-2芯片的使用方法。
3、熟悉Quartus II 6.0和Modesim SE 6.0软件的使用。
4、了解16个数码管的显示原理和方法。
二、设计思路1、编写跑马灯设计程序。
2、定义LED灯引脚分配。
3、设计状态控制。
4、下载到EPEK30QC208-2芯片上显示。
三、设计过程3.1、系统方案论证16位LED跑马灯设计框图如图1所示:图1 LED跑马灯设计框图3.2、程序代码设计module paomadeng(rst,clk,sel,led); //端口定义,参数列表input rst,clk; //rst复位,clk为4Hz的时钟信号input[1:0] sel; //sel 状态选择端口output[15:0] led; //led 跑马灯显示reg[15:0] led;reg[15:0] led_r,led_r1;reg t1,dir; //t1控制状态2 led灯的亮次数reg[3:0] t2; //t2控制状态2 led灯的亮次数reg[2:0] t3; //t3控制状态2 led灯的亮次数always(posedge clk)beginif(rst) begin t1<=0;t2<=0;t3<=0;dir<=0;endelsecase(sel)// LED按奇数,偶数依次显示2'b00:beginled_r=16'b0101010101010101;if(t1==0)led<=led_r;else led<=led_r<<1;t1<=t1+1;end// LED顺序依次显示,顺序依次熄灭2'b01:beginif(!dir)beginif(t2==0) begin led_r=16'b0000000000000001;led<=led_r;end else begin led<=(led<<1)+led_r;endif(t2==15) begin dir<=~dir;endt2<=t2+1;endelsebeginif(t2==0) begin led_r=16'b1111111111111110;led<=led_r;endelse begin led<=led<<1; endif(t2==15) begin dir<=~dir;endt2<=t2+1;endend// LED由两侧向中间依次显示,由中间向两侧依次熄灭2'b11:beginif(!dir)beginif(t3==0) beginled_r=16'b0000000000000001;led_r1=16'b1000000000000000;endelsebegin led_r=(led_r<<1)|led_r;led_r1=(led_r1>>1)|led_r1;endled<=led_r|led_r1;if(t3==7)begin dir<=~dir;endt3<=t3+1;endelsebeginif(t3==0) begin led_r=16'b1111111111111110;led_r1=16'b0111111111111111;endelsebegin led_r=led_r<<1;led_r1=led_r1>>1;endled<=led_r&led_r1;if(t3==7)begin dir<=~dir;endt3<=t3+1;endenddefault: ;endcaseendendmodule引脚分配:to,locationrst, pin_47 //复位引脚clk, pin_79//时钟控制引脚sel[0], pin_45 //状态控制引脚sel[1], pin_46//状态控制引脚led[0], pin_19//0—15个LED灯显示引脚led[1], pin_24led[2], pin_25led[3], pin_26led[4], pin_27led[5], pin_28led[6], pin_29led[7], pin_30led[8], pin_31led[9], pin_36led[10], pin_37led[11], pin_38led[12], pin_39led[13], pin_40led[14], pin_41led[15], pin_44四、系统调试与结果1、LED灯和波形结果显示结果如图2,3,4,5,6,7所示图2、先奇数灯亮,即第1、3、5、7、9、11、13、15灯亮图3、偶数灯亮,即第2、4、6、8、10、12、14、16灯亮图4、按照1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16的顺序依次点亮图5、按照1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16的顺序依次熄灭所有灯图6按照1/16、2/15、3/14、4/13、5/12、6/11、7/10、8/9的顺序依次点亮图7、按照1/16、2/15、3/14、4/13、5/12、6/11、7/10、8/9的顺序依次熄灭灯波形显示:图8、LED灯按先奇数,偶数灯亮图9、LED灯依次按顺次亮,顺次熄灭图10,LED灯依次从两边向中间亮,两边向中间熄灭五、主要元器件与设备EDA技术试验箱,EDA软件QuartusⅡ6.0,ModelSim SE 6.0分频芯片:SN74HC04N—2,SN74LS393N—4片LED灯16个LED灯,电脑一台六、课程设计体会与建议6.1、设计体会通过这次对跑马灯控制电路的设计与制作,让我了解了设计电路的程序,也让我了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。
可调控走马灯实训报告

一、摘要本次实训旨在通过设计与实现一个可调控走马灯,提升自己在电子设计、编程以及项目实践能力方面的技能。
在实训过程中,我学习了电路设计、微控制器编程、电机驱动等方面的知识,并通过动手实践,完成了一个具有自主调控功能的走马灯。
本报告将详细描述实训过程、遇到的问题及解决方案,以及对实训成果的总结与反思。
二、实训背景走马灯是一种传统的照明设备,具有美观、节能、环保等特点。
然而,传统的走马灯多为固定模式,缺乏可调控性。
为了提高走马灯的实用性,本次实训旨在设计并实现一个可调控走马灯,使其能够根据用户需求调整灯光模式、速度和亮度。
三、实训目标1. 学习电路设计、微控制器编程、电机驱动等方面的知识;2. 设计并实现一个可调控走马灯,具备以下功能:(1)灯光模式可调:可切换循环、闪烁、渐变等模式;(2)速度可调:可调整灯光闪烁速度;(3)亮度可调:可调整灯光亮度;(4)使用方便:通过按键实现模式、速度和亮度的切换。
四、实训过程1. 硬件设计(1)电路设计:根据实训要求,设计电路图,包括微控制器、按键、电机驱动、电源模块等。
(2)电路制作:根据电路图,制作电路板,并焊接元器件。
2. 软件设计(1)编程:使用C语言编写微控制器程序,实现走马灯的灯光模式、速度和亮度调节。
(2)调试:通过调试软件,对程序进行调试,确保程序运行正常。
3. 系统集成(1)安装:将微控制器、电机驱动、电源模块等安装到电路板上。
(2)调试:对走马灯进行整体调试,确保各个模块协同工作。
五、遇到的问题及解决方案1. 问题:电机启动时电流过大,导致电源不稳定。
解决方案:在电机驱动电路中增加限流电阻,降低启动电流。
2. 问题:按键响应速度慢,影响用户体验。
解决方案:优化程序算法,提高按键响应速度。
3. 问题:灯光亮度调节范围较小。
解决方案:调整电源电压,扩大亮度调节范围。
六、实训成果通过本次实训,我成功设计并实现了一个可调控走马灯。
该走马灯具有以下特点:1. 灯光模式可调,满足不同场景需求;2. 速度可调,适应不同使用习惯;3. 亮度可调,满足个性化需求;4. 使用方便,操作简单。
项目3-可调控的走马灯设计与制作要点

任务3.1 学习键盘接口技术
键盘接口是单片机系统的一个非常常见、实用的接口。用于实 现人机交互中指令的输入。常见的键盘接口有独立式按键和行 列式(也叫矩阵式)键盘。
3.1.1 独立式键盘应用 3.1.2 按键的消抖处理 3.1.3 矩阵式键盘应用
上一页 下一页 返回
3.1.1 独立式键盘应用
上一页 下一页 返回
二、独立式按键的软件设计
按上图的电路,设计出独立式键盘程序如下,此程序中 Keyfun1~Keyfun8分别为每个按键对应的功能子程序标号 (可根据实际需要编写),按键去除抖动采用软件延时,按键 的接口选用P1端口。
汇编源程序清单如下:
START: MOV A ,P1 ;读入键盘状态
上一页 下一页 返回
上一页 下一页 返回
3.2.2 程序编制
本项目对应的C51源程序如下: #include<AT89X51.h> #define u8 unsigned char #define u16 unsigned int u8 ModeNo;//模式编号 u8 MovingBit=0;//移动位数 u8 Tdx; //速度索引 u8 TCounter=0;//延时计数器 u16 Speed;//二极管移动速度 bit Direction=1;//滚动方向 u8 code
ModeDisplay[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x 82,0xF8}; u16 code
上一页 下一页 返回
SpeedCommon[]={0,2,4,6,8,10,15,30,45,80,120,160,200, 240,280};//速度常数
单片机花样走马灯课程设计

花样走马灯一设计目的1.掌握单片机系统设计思路和基本步骤。
2.熟悉Keil C51高级语言集成开发环境。
3.熟练使用基于proteus的单片机系统仿真软件。
4.学会在ISIS 7 Professional下绘制电路原理图。
5.学会 Proteus VSM与uvision3 IDE的联调过程。
二设计要求实现单片机8051设计控制P1口的8个LED灯成花样走马灯。
连续实现以下四种效果:1.单灯左移2.单灯右移3.单灯逐个点亮接着逐个熄灭4.两边向中间逐个点亮接着中间向两边逐个熄灭三总体设计单片机应用系统的研制步骤一般分为:总体设计、硬件电路的构思设计、软件的编制和仿真调试四个阶段。
1.硬件电路设计根据设计要求所需的元器件为AT89C51单片机和LED灯。
该硬件部分由朱艳兵完成,故不再做详细介绍。
2.系统软件分析设计原理:规定灯亮时控制该灯的位设置为低电平,灯灭时该位设置为高电平,为了清楚的看到灯亮时的效果,要设置相应的延时函数,通过数组的引用和函数的调用来实现花样走马灯的设计。
(1)要使走马灯实现单灯左移、单灯右移、单灯逐个点亮接着逐个熄灭、两边向中间逐个点亮接着中间向两边逐个熄灭这四种效果。
(2)可根据上述的规定来设置控制8个LED灯的P1口各个引脚的电平来控制LED灯亮的效果。
①单灯左移:可将P1.0~P1.7各个引脚逐个设置为低电平,即该引脚控制的灯亮时该位就为低电平,即可设置一个数组名为table的数组来存放灯亮时的P1口各个引脚的电平。
②单灯右移:即P1.7先亮,按照P1.7~P1.0的顺序向右移,即该灯亮的时候该位就设置为低电平,反之为高电平,各引脚的电平在数组aa中存放,引用数组aa就可实现单灯右移。
③单灯逐个点亮接着逐个熄灭:可按照P1.0~P1.7的顺序点亮再按照P1.7~P1.0的顺序熄灭,实现原理同单灯左移和单灯右移,各个引脚的电平在数组bb,cc中存放。
④两边向中间逐个点亮接着中间向两边逐个熄灭:即先将P1.0和P1.7同时设置为低电平,全部点亮后再将P1.3和P1.4设置为高电平,依次直至全部熄灭,各个引脚的电平在数组dd中存放。
51单片机8个跑马灯程序设计思路

51单片机8个跑马灯程序设计思路单片机是一种集成电路,内部包含了计算机的主要组件,如中央处理单元(CPU)、存储器等。
通过编程,可以实现各种不同的功能。
在这里,我将以设计一个8个跑马灯的程序为例,来讲解单片机程序的设计思路。
1.硬件准备首先,我们需要准备一个适用于单片机的开发板,例如STC89C52,以及8个LED灯。
将LED灯连接到开发板的GPIO引脚上,并通过电阻进行限流。
使用跳线将GPIO引脚与LED灯的正极连接。
2.程序结构设计在单片机程序中,我们通常会使用循环结构。
因此,在设计跑马灯程序时,我们可以使用一个无限循环,来实现LED灯的闪烁效果。
具体的程序结构如下所示:```c#include <reg52.h>sbit led0 = P0 ^ 0; //第1个LED灯sbit led1 = P0 ^ 1; //第2个LED灯sbit led2 = P0 ^ 2; //第3个LED灯//...sbit led7 = P0 ^ 7; //第8个LED灯void mainwhile (1)//跑马灯代码}}```在这段代码中,我们首先引入头文件`reg52.h`,它包含了STC89C52的寄存器定义和常用函数的声明。
然后,我们定义了8个宏,用于表示8个LED灯所连接的引脚号。
接下来,在`main(`函数中,我们使用一个无限循环`while(1)`,来实现LED灯的闪烁效果。
3.跑马灯实现思路在无限循环中,我们需要通过对GPIO的控制来实现8个LED灯的闪烁。
具体的实现思路如下:- 首先,我们可以定义一个变量`index`,用于表示当前亮起的LED灯的索引值。
初始时,`index`的值为0,表示第一个LED灯亮起。
- 然后,我们可以使用`switch...case`语句来判断当前的`index`值,从而控制不同的LED灯亮起。
- 在每次循环中,我们可以通过对`index`的递增来实现灯的滚动效果。
跑马灯控制设计与实现

② GPIO_Write()函数是向指定IO口写数据,也就是是向寄存器ODR写数 据
n 例如:向PC8写1的代码是: GPIO_WriteBit(GPIOC, GPIO_Pin_8, 1);
n STM32的IO端口操作
n 输入输出函数
1. GPIO_ReadInputDataBit ()函数
n 是读取指定IO口的对应引脚值,也就是读取IDR寄存器的值 n 例如:读取GPIOA.6(既PA6)引脚值:
GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6);
2. GPIO_ReadInputData ()函数
n 常用的IO端口寄存器有6个:CRL、CRH、IDR、ODR、BSRR 和BRR。
STM32
项目二 跑马灯控制设计与实现
STM32的GPIO初始化和输入输出库函数
n STM32的IO端口操作
n 在前面,我们围绕STM32的IO端口寄存器如何使用,进行了详 细的介绍。现介绍一下IO口的操作步骤,步骤如下:
1. 调用RCC_APB2PeriphClockCmd()函数,使能IO口时钟; 2. 调用GPIO_Init()函数,初始化IO口参数; 3. 使用IO口操作方法,对IO口进行各种操作。
STM32
项目二 跑马灯控制设计与实现
STM32的GPIO初始化和输入输出库函数
n STM32的IO端口操作
n 初始化函数
3. GPIO_ReadOutputDataBit ()和GPIO_ReadOutputData ()函数
① GPIO_ReadOutputDataBit ()函数是读取指定IO口某个引脚的输出值 ,也就是读取寄存器ODR相应位的值
61单片机课程设计可以调控的跑马灯

61-单片机课程设计-可以调控的跑马灯1000字设计目的本课程设计旨在通过单片机编程实现一个可调控的跑马灯,加深学生对单片机概念、程序设计、输入输出等方面的理解,提高学生的程序设计能力。
设计实验材料1. 基于8051单片机的电路板2. LED灯3. 电阻器4. 按钮5. 电源(可使用9V电池或其他稳定的直流电源)实验过程1. 搭建基于8051单片机的电路板,连接LED灯和电阻器2. 编写跑马灯程序,其中需要实现以下功能:(1)通过按下按钮,控制灯的亮灭(2)通过另一个按钮,调整灯的亮度(3)通过另一个按钮,调整灯的闪烁频率3. 烧录程序到单片机中4. 连接电源,测试跑马灯的各项功能程序设计本跑马灯程序采用C语言编写,主要实现以下几个功能:1. 初始化LED灯、按键和定时器等相关IO口2. 判断按键被按下,执行相应的操作3. 调整LED灯的亮灭状态,并通过调整亮度和闪烁频率实现可调控功能程序流程:1. 初始化相关IO口和定时器2. 进入主循环3. 判断按钮是否被按下4. 若开始按钮被按下,则设置灯的状态为ON5. 若结束按钮被按下,则设置灯的状态为OFF6. 若调整亮度按钮被按下,则调整PWM占空比,实现亮度调整7. 若调整闪烁频率按钮被按下,则调整定时器的周期,实现闪烁频率调整8. 延时一段时间9. 回到主循环程序代码:```#include <reg52.h>#define LED P1 // LED灯#define PWM P2 // 调整亮度sbit startButton = P3^0; // 开始按钮sbit endButton = P3^1; // 结束按钮sbit pwmButton = P3^2; // 调整亮度按钮sbit freqButton = P3^3; // 调整闪烁频率按钮void timer0_init() // 初始化定时器{TMOD = 0x01;TH0 = 0x3C;TL0 = 0xB0;TR0 = 1;}void pwm_init() // 初始化PWM {TMOD |= 0x02;TL1 = 0x00;TH1 = 0xFD;ET1 = 0;TR1 = 1;}void main(){unsigned long cnt = 0;unsigned char pwm_value = 0; LED = 0x00;PWM = 0x00;timer0_init();pwm_init();while (1){if (startButton == 0){LED = 0x01;}else if (endButton == 0){LED = 0x00;}else if (pwmButton == 0){pwm_value++;if (pwm_value >= 255){pwm_value = 0;}CCAP0H = pwm_value;}else if (freqButton == 0){cnt++;if (cnt >= 1000){cnt = 0;}TH0 = (65536 - 1000) / 256; TL0 = (65536 - 1000) % 256; }while (TF0 == 0); // 等待定时器 TF0 = 0;}}```实验结果将程序烧录到单片机后,连接电源,按下不同的按钮,可调控跑马灯的亮度和闪烁频率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机技术课程设计说明书可以调控的走马灯设计专业学生姓名班级学号指导教师完成日期2011年 6 月 20 日目录1概述 (2)1.1单片机的发展和现状 (2)2课题方案设计 (3)2.1系统总体设计要求 (3)2.2系统模块结构 (3)3系统硬件设计 (3)3.1总体设计 (3)3.2单片机最小系统 (4)3.3按键电路 (5)3.4数码管显示电路 (5)3.5发光二极管显示电路 (6)4系统软件设计 (6)5软硬件联调及调试结果 (7)5.1软硬件调试中出现的问题及解决措施 (7)5.2实物图 (8)5.3调试结果 (9)5.4各模式灯亮 (9)结束语 (10)参考文献 (11)附录 (12)附录1:基于单片机可以调控的走马灯原理图 (12)附录2;基于单片机可以调控的走马灯PCB图 (13)附录3:基于单片机可以调控的走马灯仿真 (14)附录4:程序代码 (15)附录5:元件清单 (20)1概述1.1单片机的发展和现状单片机是所有微处理机中性价比最高的一种,随着种类的不断全面,功能不断完善,其应用领域也迅速扩大。
单片机在智能仪表、实时控制、机电一体化、办公机械、家用电器等方面都有相当的应用领域。
当前,8位单片机主要用于工业控制,如温度、压力、流量、计量和机械加工的测量和控制场合;高效能的16位单片机(如MCS-96、MK-68200)可用在更复杂的计算机网络。
可以说,微机测控技术的应用已渗透到国民经济的各个部门,微机测控技术的应用是产品提高档次和推陈出新的有效途径。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:1.低功耗CMOS化MCS-51系列的80C51推出时的功耗达120mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。
CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,更适合于在要求低功耗像电池供电的应用场合。
所以这种工艺将是今后一段时期单片机发展的主要途径。
2.微型单片化常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
3.主流与多品种共存现在虽然单片机的品种繁多,各具特色,但仍以MCS-51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的WinBond系列单片机。
以8031为核心的单片机占据了半壁江山,在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
2课题方案设计2.1系统总体设计要求1、根据选题查找相关资料;2、确定方案后,画出电路原理图;3、根据设计要求,编写好软件程序(利用Keil软件开发)4、根据电路原理图,在Proteus软件里画好仿真原理图,并将Keil软件开发的可执行文件加载到Proteus软件的仿真芯片中(即单片机芯片中);5、在仿真没有问题的前提下,依据方案,确定选用器件;6、焊接、烧录、调试;7、完成课程设计说明书2.2系统模块结构多功能走马灯设计使用AT98C51芯片,显示效果使用16个LED,设置三个按键,K1-模式键,通过按键调整显示结果,要求有8种模式;K2-加速键,提高走马灯显示效果的速度;K3-减速键,放慢走马灯的显示效果速度;且8种模式通过一个共阴型数码管显示出来,P0和P1引脚控制着16个LED的显示,P2.0、P2.1和P2.2引脚是相应的键控模式,而P3引脚则控制着数码管的显示,通过键控来实现单片机的相关中断,通过计数器/定时器T1设计相关中断来执行K1-模式键要求的功能,利用延时程序和中断程序来执行所要求的相应功能。
3系统硬件设计3.1总体设计1、显示效果使用16个LED;2、设置三个按键,K1-模式键,通过按键调整显示结果,要求有8种模式K2加速键,提高走马灯显示效果的速度;K3-减速键,放慢走马灯的显示效果速度;3、8种模式通过一个共阳型数码管显示出来,比如,走马灯的显示效果为模式一时,数码管显示数字“1”。
4、系统总体设计图如下:图3.1系统总设计图3.2单片机最小系统(1)时钟电路单片机执行指令是在脉冲控制下进行的,因此时钟信号是单片机的基本工作条件。
时钟可以由内部和外部两种方式产生,本设计采用内部方式。
如图所示,在XTAL1和XTAL2引脚上外接定时元件。
定时元件通常采用振荡器和电容组成的并联谐振电路。
X1为振荡器,C1、C2为电容。
振荡的主要频率决定于晶振,电容对振荡频率起微调作用。
其中,晶振选择11.0596MHz。
晶振接在18到19两管脚之间。
(2)复位电路一个时钟周期为振荡周期的2倍,12个时钟周期构成一个机器周期。
在RES引脚上输入一个超过两个机器周期的高电平信号,单片机就可以复位。
时钟频率为12MHz,则有效的复位信号至少应保持2us以上。
下图为单片机的复位电路。
RST复位是9脚,在9脚和31(EA)脚之间接一个复位按钮。
图3.2最小系统图3.3按键电路系统按键电路如下图所示:图3.3按键电路图图中K1接P2.0,K1是模式按钮共有8种模式;K2接P2.1,是用来进行加速的;K3接P2.2,是用来减速的。
3.4数码管显示电路数码显示器件是一种八个LED发光二极管组合显示字符的显示器件,其中七个用于显示字符,一个用于显示小数点,故通常称为七段LED数码显示器。
本电路中共阳极接法,把七段发光二极管的阳极连在一起构成公共阳极,使用时阳极接+5V电源,每个发光二极管的阴极通过电阻与输入端连接,阴极输入低电平时,发光二极管,输入高电平则不亮,连接方法如图;图3.4数码管显示电路图数码管通过排阻RN1接到P3口。
3.5发光二极管显示电路16个发光二极管显示电路如下图所示:图3.5发光二极管显示电路图图中D1,D2,D3,D4到D8分别接的是P1.0,P1.1,到P1.7;D9,D10到D16分别接的是P0.0到P0.7。
4系统软件设计软件程序设计主要由开始、初始化、主程序、以及延时程序等组成。
其程序流程如下图4.1所示:图中K1键用来选择模式的,初始时运行模式0,按一次运行模式1,以此类推按7次则云行模式7,当再一次按下时又运行模式0。
K2键用来加速按的次数越多则速度越快。
K3用来减速同K2按的越多则越慢。
速度的选择可见附录4程序中的调速表,程序通过不同的顺序来改变速度。
图中数码管的数字显示是根据K1的模式选择的,初始时数码管显示0,程序运行模式0,同理当运行模式7时,则数码管显示7。
图4.1程序流程图5软硬件联调及调试结果5.1软硬件调试中出现的问题及解决措施在画PCB 图时发现P3口的排阻RN1只能连接一边,数码管连接不上,后来发现排阻只有输入没有输出所以不行。
原有的电路图如下图5.1所示;修改过的电路图如图5.2所示;图5.1 开始初始化 运行模式0K1按键 K2按键 K3按键模式的选择 加速 减速数码管显示图5.2 5.2实物图(1)正面图(2)反面图5.3调试结果图中为模式2显示。
5.4各模式灯亮1、模式0:灯由左向右一个一个顺序熄灭(第一个熄灭后第二个熄灭时第一个又亮)。
2、模式1:灯由右向左一个一个顺序熄灭(同上)。
3、模式2:四个灯由右向左又由左向右顺序熄灭。
4、模式3:四个灯由右向左又由左向右循环点亮。
5、模式4:六个灯由右向左又由左向右循环熄灭。
6、模式5:一个灯由右向左又由左向右顺序熄灭。
7、模式6:一个灯由右向左又由左向右顺序点亮。
8、模式7:一个灯由右向左又由左向右依次点亮。
结束语我是工学专业的学生,设计是我们将来必需的技能,这次课程设计恰恰给我们提供了一个应用自己所学知识的机会,从到图书馆查找资料到对电路的设计以及程序的编写,对电路的仿真再到最后电路的成型,都对我所学的知识进行了检验。
我深刻的体会到在设计过程中,需要反复实践,其过程很可能相当烦琐,有时花很长时间设计出来的电路还是需要重做,那时心中未免有点灰心,有时还特别想放弃,此时更加需要静下心,查找原因。
总体来说,这次实习我受益匪浅。
在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。
在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。
在这里,我也非常感谢各位老师的耐心辅导以及同学们的热心帮助。
我忠心的感谢各位老师,你们辛苦了!希望在今后的学习过程中,老师能够多加引领我们走向更尖端的科技和更复杂高深的领域,加强专业技术的培训和更多的开展科研创新研究。
通过实践引导我们在理论指导下有所创新,为日后工程实践奠定基础。
参考文献[1] 吴微,文军等.单片机原理及制作[M].武汉:武汉大学出版社,2003[2] 王宏民.LED显示屏的驱动方案[M].哈尔滨:黑龙江电子技术出版社,1999[3] 李华.MCS—51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993[4] 陈元灯、陈宇.LED制造技术与应用[M].北京:电子工业出版社,2009[5] 余锡存,曹国华.单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000[6] 沈国琴. 51单片机C语言开发与实例[M].北京:人民邮电出版社,2008[7] 徐泳龙.单片机原理及应用[M].北京:机械工业出版社,2004[8] 周航慈.单片机应用程序设计[M].北京:北京航空航天大学出版社,1991[9] 陈汝全.实用微机与单片机控制技术[M].成都:电子科技大学出版社,1995[10] 宋贤法. Altium Designer6. x 入门与实用[M].北京:机械工业出版社,2009[11] 刘修文.实用电子电路设计制作300例[M].北京:中国电力出版社,2004[12] 诸昌矜.LED显示屏系统原理及工程技术[M].西安:电子科技大学出版社,2000[13] 游华.大屏幕图文动画显示屏系统[M].电子技术应用,1994附录附录1:基于单片机可以调控的走马灯原理图附录2;基于单片机可以调控的走马灯PCB图附录3:基于单片机可以调控的走马灯仿真附录4:程序代码#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar ModeNo; //模式编号uint Speed;uchar tCount = 0;uchar Idx; //速度取值索引uchar mb_Count = 0; //移动位数bit Dirtect = 1; //滚动方向//断码表Uchar code DSY_CODE[]= = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //调速表uint code sTable[] = {0,1,3,5,7,9,15,30,50,100,200,230,280,300,350};//延时void Delay(uint x){uchar i;while(x--)for(i=0;i<120;i++);}//检测按键uchar GetKey(){uchar K;if(P2 == 0xFF) return 0;Delay(10);switch(P2){case 0xFE:K = 1;break;case 0xFD:K = 2;break;case 0xFB:K = 3;break;default: K=0;}while (P2 != 0xFF);//等待释放按键return K;}////16只LED显示//void Led_Demo(uint Led16){P1 = (uchar)(Led16 & 0x00FF);//显示低8位P0 = (uchar)(Led16 >> 8);}////定时器2//void T0_INT() interrupt 1{if( ++tCount < Speed) return;tCount=0;switch (ModeNo){case 0: Led_Demo(0x0001 << mb_Count);break;case 1: Led_Demo(0x8000 >> mb_Count);break;case 2: if(Dirtect) Led_Demo(0x000F << mb_Count);else Led_Demo(0xF000 >> mb_Count);if(mb_Count == 15) Dirtect= !Dirtect;break;case 3: if(Dirtect) Led_Demo(~(0x000F<<mb_Count));else Led_Demo(~(0xF000>>mb_Count));if(mb_Count == 15) Dirtect= !Dirtect;break;case 4: if(Dirtect) Led_Demo(0x003F<<mb_Count);else Led_Demo(0xFC00>>mb_Count);if(mb_Count == 15) Dirtect= !Dirtect;break;case 5: if(Dirtect) Led_Demo(0x0001 << mb_Count);else Led_Demo(0x8000 >> mb_Count);if(mb_Count == 15) Dirtect= !Dirtect;break;case 6: if(Dirtect) Led_Demo(~(0x0001<<mb_Count));else Led_Demo(~(0x8000>>mb_Count));if(mb_Count == 15) Dirtect= !Dirtect;break;case 7: if(Dirtect) Led_Demo(0xFFFE << mb_Count);else Led_Demo(0x7FFF >> mb_Count);if(mb_Count == 15) Dirtect = !Dirtect;break;}mb_Count = (mb_Count + 1) % 16;}////键盘按键处理//void KeyProcess(uchar Key){switch (Key){case 1://重设模式Dirtect = 1;mb_Count = 0;ModeNo = (ModeNo + 1) % 8;P3 = DSY_CODE[ModeNo];break;case 2://加速if(Idx > 1) Speed = sTable[--Idx]; break;case 3://减速if(Idx < 15) Speed = sTable[++Idx];}}//主程序//void main(){uchar Key;P0 = P1 = P2 = P3 = 0xFF;ModeNo = 0; Idx = 4;Speed = sTable[Idx];P3 = DSY_CODE[ModeNo];IE = 0X82;TMOD = 0X00;TR0 = 1;while(1){Key = GetKey();if(Key != 0) KeyProcess(Key);}}void KeyProcess(uchar Key){switch (Key){case 1://重设模式Dirtect = 1;mb_Count = 0;ModeNo = (ModeNo + 1) % 8;P3 = DSY_CODE[ModeNo];break;case 2://加速if(Idx > 1) Speed = sTable[--Idx]; break;case 3://减速if(Idx < 15) Speed = sTable[++Idx];}}//主程序//void main(){uchar Key;P0 = P1 = P2 = P3 = 0xFF;ModeNo = 0; Idx = 4;Speed = sTable[Idx];P3 = DSY_CODE[ModeNo];IE = 0X82;TMOD = 0X00;TR0 = 1;while(1){Key = GetKey();if(Key != 0) KeyProcess(Key);}}盐城工学院课程设计说明书(2011)附录5:元件清单20。