嵌入式花样流水灯的设计

合集下载

单片机实训报告——花样流水灯的制作

单片机实训报告——花样流水灯的制作

单片机实训报告——花样流水灯的制作班级:电气一班学号:110101127姓名:李亚龙一、花样流水灯的设计方案流水灯实际上就是一个带有八个发光二级管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

如果要让P0.0口的LED2亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED1熄灭,就要把P0.0口的电平变为高电平;同理,接在P0.0~P0.7口的其他7个LED的电亮和熄灭的方法同LED2。

因此,要实现流水灯功能我们只要将发光二极管LED2~LED9依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

对8段LED数码管显示器的控制,包括“显示段”和“公共端”两个地方的控制。

其中显示段用来控制字符的形状,公共端用来控制若干个LED中的那一只被选中,前者称为“段选”,后者称为”位选”。

只有二者结合起来,才能在指定的LED上显示指定的字形。

显然,要显示某种字形就应该使此字形的相应字段点亮,按照dp、g、e、f、e、d、c、b、a的顺序,dp为最高位,a为最低位,引脚输入不同的8位二进制编码,可显示不同的数字或字符。

二、花样流水灯的硬件电路设计时钟电路是计算机的心脏,它控制着计算机的工作节奏,CPU 就是通过复杂的时序电路完成不同的指令功能的,89C52的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。

单片机有多种复位电路,本系统采用电平式复位与上电复位方式,如下图所示当上电时C1相当于短路时,使单片机复位,在正常工作时,按下复位键是单片机复位。

显示部分主要是由八个LED和四个七段数码管组成,八个LED 由限流电阻限流后接入89C52的P0口。

三、花样流水灯的软件设计#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit key3=P3^1;sbit key2=P3^2;sbit key1=P3^3;uchar code table[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; uchar code moshi1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar code moshi2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchar code moshi3[]={0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00};uchar code moshi4[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};uchar code moshi5[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};uchar code moshi6[]={0x7e,0x3c,0x18,0x00,0x81,0xc3,0xe7,0xff};uchar moshi,dingshi; //模式,定时uchar shijian,k1; //时间控制uchar num0,num;void delay(uint x) //延时程序{uchar i;while(x--);for(i=0;i<120;i++);}void keyscan() //键盘扫描{if(key1==0){delay(10);if(key1==0) //按键1,模式循环{moshi++;if(moshi==7)moshi=1;TR0=1;k1=1;while(!key1);}}if(key2==0) //按键2,时间调整{delay(10);if(key2==0){shijian++;if(shijian==15)shijian=15;while(!key2);}}if(key3==0) //按键3,时间复位{delay(10);if(key3==0){shijian--;if(shijian==1)shijian=1;while(!key3);}}}void display() //数码管显示{P1=table[moshi];P2=0xfe; //从左向右显示delay(2);P1=0XFF;P2=0XFF; //数码管不显示delay(2);P1=table[dingshi/10]; //十位显示P2=0xfd;delay(2);P1=table[dingshi%10]; //个位显示P2=0xfe;delay(2);}void liushuideng() //流水灯显示{switch(moshi) //模式选择{case 1:P0=moshi1[num];break;case 2:P0=moshi2[num];break;case 3:P0=moshi3[num];break;case 4:P0=moshi4[num];break;case 5:P0=moshi5[num];break;case 6:P0=moshi6[num];break;}}void disp() //显示器{num++;if(num==8){num=0;dingshi--;if(dingshi==0){dingshi=shijian;moshi++;if(moshi==7)moshi=1;}}}void init() //初始化{TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;shijian=5;dingshi=5;moshi=0;P3=P0=0xff;num=num0=0;}void main(){init();while(1){keyscan(); //键盘扫描display(); //数码管显示if(k1==1) //模式选择liushuideng(); //流水灯显示}}void t0_time() interrupt 1 //中断{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num0++;if(num0==6){num0=0;disp();}}四、总结实训中我发现主要问题是在焊接电路板的时候有虚焊,导致电路接触不良,还有多焊导致电路板损坏或短路。

嵌入式系统原理与应用 :流水灯实验

嵌入式系统原理与应用 :流水灯实验
Delay();
}
for(i=0;i<8;i++)
{
P0=tab3[i]; //逐个熄灭D9~D16
Delay();
}
for(i=0;i<8;i++)
{
P3=tab3[i]; //逐个熄灭D17~D24
Delay();
}
for(i=0;i<8;i++)
{
P2=tab3[i]; //逐个熄灭D25~D32
unsigned char code tab3[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,0x00};//左移逐个熄灭
void Delay()
{
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
评语及成绩
教师(签署)
(4)重复上述过程
实验电路
程序及
主要模块流程图
#include <reg51.h>
unsigned char code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};//左移单个点亮
unsigned char code tab2[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,0xff};//右移逐个点亮
void main()
{
unsigned char i;
while(1)
{
//左移单个点亮,VD1---VD2---
for(i=0;i<9个点亮D1~D8,0xfe=11111110 0xfd=11111101

物联网嵌入式技术教案1.3_控制LED流水灯闪烁_教案 V1.0

物联网嵌入式技术教案1.3_控制LED流水灯闪烁_教案 V1.0
1.教师讲解本任务的要求;
2.演示任务1.3的完成效果。
听讲
帮助学生梳理各个任务点,为学习指明路径。
教师介绍完任务的要求,演示任务完成效果,学生将对本任务的要求有一个感性的认识,同时也能吸引其注意力,激发其学习的积极性。
PPT、
实操视频
三、任务分析与计划(10min,PPT第6-8页)
1.引导问题:
《物联网嵌入式技术》课程教案
学年度 学期
项目名称
项目一 花样流水灯控制
授课教师
授课时间
课题名称
1.3任务3 控制LED流水灯闪烁
授课班级
授课类型
新授课
课时
2
教学
目标
知识目标
1.认识GPIO外设接口函数的定义;
2.掌握Cortex-M3 GPIO控制方法。
能力目标
1.能够依据电路图,正确在面包板上搭建电路;
教师讲解任务拓展题要求。
二、简单分析解题思路(1min,PPT第46页)
教师给出解题思路。
听讲
通过课后任务拓展题和课后作业检验学生对本任务的重点和难点的掌握情况,培养其举一反三的能力。PFra bibliotekT教学反思
各组自评、互评
学生通过对自己的实施过程和经验的介绍,锻炼自我展示能力。
课堂任务单
任务小结
(5min)
一、任务小结(5min,PPT第44页)
教师总结本任务所学的知识点与技能点。
听讲
借助思维导图帮助学生梳理任务学习的主要知识点和技能操作步骤,有助于课后巩固。
思维导图
任务拓展
(2min)
一、布置任务拓展题,布置课后作业(1min,PPT第46页)
二、讲解建议的实施步骤(3min,PPT第28页)

嵌入式实验流水灯

嵌入式实验流水灯
实验一 流水灯控制显示
一、实验目的:
1.了解基于ARM7核的LPC2106的管脚功能和特点,掌握I/O控制寄存器的设置方法; 2.掌握ARM7应用系统编程开发方法,能用C语言编写应用程序;
3.熟练掌握ADS1.2软件的使用以及PROTEUS仿真调试的方法;
二、具体任务: 1.采用PROTEUS完成流水灯控制的硬件电路设计,要求单片机选型为飞 利浦公司的LPC2106; 2.用ADS1.2编写C语言应用程序,完成流水灯控制显示; 3.采用PROTEUS将应用程序装载在LPC2106中,进行仿真验证
实验三 计数器(向量中断)
一、实验目的: 1.掌握外部中断寄存器与向量中断寄存器的设置方法; 2.掌握ARM7应用系统编程开发方法,能用C语言编写应用程序; 3.熟练掌握ADS1.2软件的使用以及PROTEUS仿真调试的方法;
二、具体任务: 1.采用PROTEUS完成外部中断的硬件电路设计(按下按键1数码管加1;按下按 键2数码管清零;按下按键3数码管减1 ); 2.用ADS1.2编写C语言应用程序,完成控制; 3.采用PROTEUS将应用程序装载在LPC2106中,进行仿真验证
void delay(uint32 n) {n--;}
int main(void) { uint32 i; while(1){ PINSEL0=0x00000000; PINSEL1=0x00000000; IODIR=0x000003ff; for(i=0;i<11;i++) { IOCLR=0x000003ff; IOSET=1<<i; delay(500000000); delay(500000000); } } return(0); }
计数器电路图
流水灯实验电路图

花样流水灯课程设计

花样流水灯课程设计

单片机课程设计题目:花样流水灯姓名:所在学院:所学专业:班级:学号:指导教师:完成时间:课程设计任务书一.基本情况学时:2周学分:2学分适应班级:09电气工程2班二、课程设计的意义、性质、目标、要求1. 意义课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。

进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不少的,是非常必要的。

2.性质课程设计是提高学生单片机技术应用能力以及文字总结能力的综合训练环节,是配合单片机课程内容掌握、应用得的专门性实践类课程。

3.目标通过典型实际问题的实际,训练学生的软硬件的综合设计、调试能力以及文字组织能力,建立系统设计概念,加强工程应用思维方式的训练,同时对教学内容做一定的扩充。

4.要求(1)课程设计的基本要求单片机课程设计的主要内容包括:理论设计与撰写设计报告等。

其中理论设计又包括选择总体方案,硬件系统设计、软件系统设计;硬件设计包括单元电路,选择元器件及计算参数等;软件设计包括模块化层次结构图,程序流程图。

程序设计是课程设计的关键环节,通过进一步完善程序设计,使之达到课题所要求的指标。

课程设计的最后要求是写出设计总结报告,把设计内容进行全面的总结,若有实践条件,把实践内容上升到理论高度。

(2)课程设计的教学要求单片机课程设计的教学采用相对集中的方式进行,以班为单位全班学生集中到设计室进行。

做到实训教学课堂化,严格考勤制度,在实训期间(两周)累计旷课达到6节以上,或者迟到、早退累计达到8次以上的学生,该课程考核按不及格处理。

在实训期间需要外出查找资料,必须在指定的时间内方可外出。

课程设计的任务相对分散,每3—5名学生组成一个小组,完成一个课题的设计。

小组成员既有分工、又要协作,同一小组的成员之间可以相互探讨、协商,可以互相借鉴或参考别人的设计方法和经验。

嵌入式流水灯实验报告

嵌入式流水灯实验报告

嵌入式流水灯实验报告嵌入式流水灯实验报告引言嵌入式系统是一种特殊的计算机系统,它被嵌入到其他设备中,用于控制和管理设备的各种功能。

流水灯是嵌入式系统中最基础的实验之一,通过控制LED 灯的亮灭顺序,可以展示出流水般的效果。

本文将介绍嵌入式流水灯实验的原理、实施步骤以及实验结果。

实验原理流水灯实验的原理基于二进制数的移位操作。

在嵌入式系统中,LED灯的亮灭状态是通过控制引脚的电平高低来实现的。

通过不断改变引脚的电平状态,可以使LED灯在不同的位置上亮起,从而实现流水灯的效果。

实施步骤1. 准备材料:嵌入式开发板、面包板、导线、电阻、LED灯等。

2. 连接电路:将电阻与LED灯连接,再将它们连接到嵌入式开发板的引脚上。

需要注意的是,根据开发板的引脚电压和LED灯的额定电压,选择合适的电阻以限制电流。

3. 编写程序:使用嵌入式开发工具,编写控制LED灯流水效果的程序。

在程序中,通过改变引脚的电平状态来控制LED灯的亮灭。

4. 烧录程序:将编写好的程序烧录到嵌入式开发板中,使其能够执行程序。

5. 运行实验:将嵌入式开发板连接到电源,启动开发板,观察LED灯的流水效果。

实验结果经过以上步骤,我们成功地实现了嵌入式流水灯实验。

在实验中,LED灯按照一定的顺序亮灭,形成了流水灯的效果。

通过改变程序中的控制逻辑,我们可以实现不同的流水灯效果,如快速流动、逐渐加速或减速等。

结论嵌入式流水灯实验是嵌入式系统学习中最基础的实验之一。

通过这个实验,我们了解了嵌入式系统的基本原理和操作方法。

同时,通过编写程序控制LED灯的亮灭顺序,我们也掌握了嵌入式开发工具的使用技巧。

这个实验为我们进一步学习和探索嵌入式系统打下了坚实的基础。

展望嵌入式系统在现代科技中扮演着重要的角色,它广泛应用于各个领域,如智能家居、智能交通、医疗设备等。

通过学习嵌入式流水灯实验,我们可以更好地理解和应用嵌入式系统的原理和技术。

未来,我们可以进一步深入学习嵌入式系统的高级应用,如无线通信、图像处理等,为实现更多创新和发展做出贡献。

嵌入式系统 流水灯、按键、定时器实验报告

嵌入式系统 流水灯、按键、定时器实验报告

嵌入式系统应用实验报告姓名:学号:学院:专业:班级:指导教师:实验1、流水灯实验1、1实验要求编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。

1、2原理分析实验主要考察对STM32F10X系列单片机GPIO的输出操作。

参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空◇输入上拉◇输入下拉◇模拟输入◇开漏输出◇推挽式输出◇推挽式复用功能◇开漏式复用功能根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。

由于74HC244的OE1与OE2都接地,为相同电平,故A端电平与Y端电平相同且LED 灯共阳,所以,如果要点亮LED,GPIO应输出低电平。

反之,LED灯熄灭。

1、3程序分析软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。

GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO时钟:RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:GPIO_InitStructure、GPIO_Mode = GPIO_Mode_Out_PP;再配置GPIO端口翻转速度:GPIO_InitStructure、GPIO_Speed = GPIO_Speed_50MHz;最后将配置好的参数写入寄存器,初始化完成:GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

初始化完成后,程序循环点亮一个LED并熄灭其她LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。

实验程序流程图如下:硬件方面,根据实验指南,将实验板做如下连接:1、3实验结果实验二、按键实验2、1实验要求利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。

嵌入式流水灯实验

嵌入式流水灯实验

实验三GPIO输出控制实验一、实验目的熟悉LPC2000系列ARM7微控制器的GPIO输入控制.二、实验设备●硬件:PC机一台LPC2131教学实验开发平台一套●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境.三、实验内容1. P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警.2. GPIO 输出实验-流水灯实验实验预习要求:LPC2000 GPIO管脚的设置和控制.四、实验原理1.GPIO 输出实验,蜂鸣器控制在EasyARM2131 开发板上,接有一个蜂鸣器,由P0.7 控制,通过跳线JP11 选择连接.蜂鸣器控制电路如所示.图3-1 蜂鸣器控制电路如果跳线JP11 选择蜂鸣器,当P0.7 输出低电平时,蜂鸣器鸣叫,当P0.7 输出高电平则停止鸣叫.程序设置PINSEL0 使P0.7 连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR 和IO0SET清零和置位P0.7 口,控制蜂鸣器,流程图见图3-2.图3-2 蜂鸣器控制实验流程图2.GPIO 输出实验-流水灯实验单路LED 控制EasyARM2131 开发板上有8 个独立的LED,分别由8 个GPIO口控制,现在使用其中一路进行实验,使用的电路如图3-3所示.图3-3 单路LED 电路图当跳线JP12 连接LED1 时,P1.18 采用灌电流方式驱动LED1,当P1.18 输出低电平时,LED1 点亮,当P1.18 输出高电平时,LED1 熄灭.实验程序首先设置管脚连接GPIO,接着设置P1.18 口为输出模式,然后通过IO1CLR和IO1SET控制P1.18,驱动LED1 的亮灭.GPIO 输出实验-流水灯实验EasyARM2131 开发板上的8 路LED<LED8~LED1>分别可选择P1[25:18]进行控制,电路如图3-4 所示.图3-4 8 路LED 控制电路当跳线JP12 全部选择LED8~LED1 后,P1.25~P1.18 分别控制这8 路LED,就可以进行流水灯实验.流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,程序清单所示为采用人为定义数组控制显示花样的实验程序,流程图如图3-5 所示.图3-5 流水灯花样显示流程图五、实验步骤实验内容1步骤① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程BeepCon_C.② 在user组里编写主程序代码main.c.③将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接.④选择Project->Debug,启动AXD进行JLINK仿真调试.在工程窗口中选择DebugInRAM 生成目标,然后编译连接工程〔单击Make按钮〕.如图所示.选择DebugInRAM生成目标时,编译连接生成的目标代码就是用于在片内RAM 调试.打开ADS开发环境下的[Edit]->[DebugInFLASH Settings...],在"ARM fromELF"下Output format做如图选择,输出文件选择你的文件同一目录下,扩展名’.HEX’⑥ 全速运行程序,程序将会在main.c的主函数中停止〔因为main函数起始处默认设置有断点〕.⑦ 单击Context Variable图标按钮〔或者选择Processor Views->Variables〕打开变量观察窗口,通过此窗口可以观察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口.⑧ 可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确.在FLASH 中调试在工程窗口中选择DebugInFLASH生成目标,然后编译连接工程〔单击Make 按钮〕.选择DebugInFLASH生成目标时,编译连接生成的目标代码就是用于在片内FLASH 调试.编译连接通过后,按键盘的F5 键,启动AXD进行调试.注意,由于程序要烧写到片内FLASH,默认选项在每次装载FLASH 地址的调试文件时,将会擦除FLASH 并下载代码到FLASH 中.脱机运行使用DebugInFLASH生成目标,并进行调试后〔使用JLINK 仿真器〕,程序即烧写到片内FLASH 中.将JLINK 电源断开,重新上电,程序将脱机运行;实验内容2实验步骤① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程LedDisp_C.② 在user组里编写主程序代码main.c.③ 选用DebugInRam生成目标,然后编译工程.④ 将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线短接.⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试.⑥ 全速运行程序,程序将会在main.c的主函数中停止.⑦ 单击Context Variable图标按钮〔或者选择Processor Views->Variables〕打开变量观察窗口,通过此窗口可以观察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口.⑧ 可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断LED1~LED8控制是否正确.〔3〕实验参考程序GPIO输出控制实验的参考程序见3-1.程序清单1 错误!文档中没有指定样式的文字。

嵌入式实验报告(电子表流水灯设计)

嵌入式实验报告(电子表流水灯设计)

山西大学计算机组装与维护论文题目电子表设计学院计算机与信息技术学院专业软件工程指导教师李月香学生姓名曹艳艳学号 2008242001 日期 2010-12-10电子表设计内容提要:LCD 电视是 Liquid Crystal Display 的简称,是液晶显示屏的全称:它包括了TFT,UFB,TFD,STN等类型的液晶显示屏。

LCD 的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。

1888年奥地利植物学家发现了一种白浊有粘性的液体,后来,德国物理学家发现了这种白浊物质具有多种弯曲性质,认为这种物质是流动性结晶的一种,由此而取名为Liquid Crystal即液晶LCD显示器是智能仪器仪表中最常用的显示器件。

近年来一些单片机内部也集成了LCD控制级驱动电路,更方便了单片机在嵌入式系统中的应用,特别是微功耗智能化仪器仪表上的应用。

关键词:LCD 工作原理应用发展参考文献:1.《嵌入式系统应用基础》。

2. 百度百科。

一、实验目的1.熟练掌握单片机控制系统硬件电路的设计、测试;单片机监控程序的编写、调试及运行。

2.学习使用单片机设计出简单的应用系统。

二、实验设备1.PC计算机;2.NEC全系列微控制器(单片机)开发工具EM/EZ-1系统;3.实验系统。

三、实验内容及要求1.设计方案本次使用主要使用了LCD,做了一个电子表。

主函数显示电子表。

P3.0按键中断用来测温度并在LCD上显示。

P4.0按键中断用来进入更改时间的中断。

P4.1按键中断用来进入设置闹钟的中断。

P4.2用来在进入更改时间中断和设置闹钟中断时进行小时的设置。

P4.3用来在进入更改时间中断和设置闹钟中断时进行分钟的十位设置。

P4.4用来在进入更改时间中断和设置闹钟中断时进行分钟的个位设置。

P4.5是一个流水灯和蜂鸣器中断。

2.结构图3.实现的功能1.实现了利用LCD 动态的显示秒数的走动。

花样流水灯的设计

花样流水灯的设计

电子技术课程设计题目花样流水灯的设计院(系)名称信息工程学院专业班级10 专升本一班学号100310026学生姓名江涛指导教师2011年6月16日课程设计任务书2010—2011学年第二学期专业:电子信息工程学号:100310026 姓名:江涛课程设计名称:单片机原理及应用课程设计设计题目:花样流水灯设计完成期限:自2011 年 5 月30 日至2011 年 6 月10 日共 2 周一、设计依据城市夜景中,变幻多姿的霓虹灯历来是一道亮丽的风景。

利用单片机的自动控制功能,设计出相应不同的电路,可以实现彩灯不同模式的流水效果。

本设计通过对器件选择和线路连接进行分析讨论,结合相应的软件设计,达到相应的设计要求。

通过本设计,要求对多种流水灯的连线和程序控制方式进行讨论,并对软件设计能提出相应建设性意见,同时写出合格的课程设计论文。

二、要求及主要内容1.硬件电路设计89C51应用系统设计(晶振电路, 上电复位电路)P1口接八个彩灯P3.0---P3.7接8个开关提供8种控制方式,共实现20种不同的亮灯方式。

2.程序设计:先画流程图再根据流程图写程序(1)主程序设计:查询程序八个分支:停止,1灯流水,2灯流水,1灯间隔,2灯间隔,快速/慢速,循环,正流水/倒流水,每个子程序执行完后返回主程序。

(2)子程序设计:停止;1灯流水子程序设计;2灯流水子程序设计;1灯间隔子程序设计;2灯间隔子程序设计;0.5秒延时子程序;2秒延时子程序;正流水/倒流水子程序设计,循环子程序设计。

3.选芯片, 元件按设计连线4.完成子程序调试(1)实验板与PC机联机。

(2)输入子程序单步执行。

如果流水灯显示错误, 检查接口是否有误, 若无误再检查控制代码,直至符合要求(3)在延时后设断点, 每执行1次流水灯移动1次。

(4)连续执行完成1种流水灯的调试。

(5)改变控制代码逐个完成所有子程序。

5.完成总调试(1)输入主程序及子程序。

(2)按子程序调试执行, 先执行1灯流水, 成功后复位。

嵌入式课程设计流水灯

嵌入式课程设计流水灯

流水灯编程实验目的:掌握GPIO端口的基本控制方法掌握硬件电路仿真方法。

实验内容:1.复习流水灯的工作原理。

2.按教材上3.4节的内容或实验指导书2.1节的内容创建好项目,生成可执行文件。

3.阅读LED示例程序代码。

4.软件模拟,无误后下载到实验板上运行,观察效果。

5.通过硬件仿真的方式调试程序。

分析LED_Init、main这2个函数中每一行代码的作用。

6.修改程序使得灯改变一次状态的时间间隔为0.02、0.01、0.1、0.3、0.5、1、2秒。

7.修改程序使得灯闪动的方向反向。

8.修改循环亮灯的程序,使每次亮灯的起始位置依次下移。

选做进阶版1.用左边4个灯闪烁代表绿灯,右边4个灯闪烁代表红灯,8个灯全亮代表黄灯。

模拟交通信号灯运行(绿灯10秒,红灯20秒,绿到红过渡时黄灯3秒)2.将自己的学号编码用LED灯效果展示出来。

实验原理:电路中有L0,L1,L2,L3,L4,L5,L6,L7共八个发光二极管,当引脚LED_SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。

A~H引脚连接STM32F108VB芯片的PE8~PE15,程序初始化时,对其进行初始设置。

引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。

注意,LED_SEL连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的IO不可用,需对AFIO_MAPR寄存器进行设置,设置其为IO可用。

实验过程及结果描述:按实验内容的步骤一步一步的来。

重点描述实验内容的6、7、8还有选修进阶的1、2.要实现改变灯状态的时间间隔,只需改变delay_ms这函数的里面的参数即可,例如时间间隔改为0.02秒就将参数改为20,1秒就将参数改为1000,(delay_ms()函数里面参数的单位为ms)其它以此类推。

通过参数的改变可以看到灯状态改变的时延相应的改变了。

改变灯的闪动方向则将light左移或者右移位数的值赋给light,例如循环一次左移一位,则light=light<<1,右移则是light=light>>1;这里又涉及到当左移(右移)到最左(右)一位时,再次亮灯时的起始位置设置的问题,这里就可以设置当左移(右移)到最左(最右),设置一个判断语句当左移(右移)到左(右)端点时,将初始值赋给题目要求的位置即可。

花样流水灯设计

花样流水灯设计

一、原理图设计的目的:利用AT89C51,通过控制按键来实现六种流水灯花样的转换,实现花样流水灯的设计,同时通过外部中断0,来控制流水灯的速度.二、各器件的功能作用:1、AT89C51AT89C51有40个引脚,每个引脚都有其功能。

本次设计中,利用P0口当输出口,输出低电平来驱动发光二极管点亮。

利用P1.0~P1.5六个引脚,通过按键接地,然后采用扫描的方式,判断哪个引脚所接按键按下,从而来控制六种流水灯的花样。

利用P3.2引脚外接按键接地,通过控制按键来减慢流水灯的速度,利用P3。

3引脚外接按键接地,通过控制按键来提高流水灯的速度。

利用P3.7输出低电平,导通三极管Q1,从而给八个发光二极管的阳极加高电平,一旦P0口输出低电平就可以驱动发光二极管。

2、八个发光二极管:通过八个发光二极管来实现流水灯的变化,用低电平驱动发光二级管亮,同时,用高电平使其熄灭。

3、按键通过P1.0-P1.5外接的按键来实现流水灯各种花样的变化,当按键按下时,驱动一种流水灯花样的闪烁。

同时,利用按键来提供外部中断,当按下按键时,产生一个外部中断,向CPU申请中断,CPU响应其中断,因此可以用按键来实现提高流水灯闪烁的速度。

通过在RST口处加上一个按钮手动复位电路,利用复位按钮可以使运行中的流水灯复位到初始的状态.4、排阻因为P0口作为输出口时需要外接上拉电阻三、设计原理图:四、程序如下:#include<reg51.h> //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint);//声明延时函数void main(void){uint i;uchar temp;TCON=0x05;IE=0x85;PX1=1;PX0=0;while(1){temp=0x01;for(i=0;i〈8;i++)//8个流水灯逐个闪动{P0=temp;delay(100);//调用延时函数temp〈〈=1;}temp=0x80;for(i=0;i<8;i++) //8个流水灯反向逐个闪动{P0=temp;delay(150);//调用延时函数temp>>=1;}temp=0xFE;for(i=0;i<8;i++)//8个流水灯依次全部点亮{P0=temp;delay(150); //调用延时函数temp<〈=1;}temp=0x7F;for(i=0;i<8;i++)//8个流水灯依次反向全部点亮{P0=temp;delay(150); //调用延时函数temp>>=1;}temp=0x03;for(i=0;i〈4;i++) //两个流水灯顺序点亮P0=temp;delay(150);temp<<=2;}temp=0x30;for(i=0;i<3;i++) //两个流水灯反向点亮{P0=temp;delay(150);temp〉>=2;}temp=0x07;for(i=0;i〈3;i++) //3个{P0=temp;delay(150);temp〈<=3;}temp=0xe0;for(i=0;i〈3;i++)//3流水灯反向点亮{P0=temp;delay(150);temp〉〉=3;}temp=0x0f;for(i=0;i〈3;i++) //4ge{P0=temp;delay(150);temp〈<=4;}temp=0xf0;for(i=0;i〈3;i++)//4流水灯反向点亮{P0=temp;delay(150);temp>〉=4;}}void int0()interrupt 0{uint i;uchar temp;while(1){temp=0x01;for(i=0;i<8;i++) //8个流水灯逐个闪动{P0=temp;delay(800);//调用延时函数temp<<=1;}temp=0x80;for(i=0;i<8;i++)//8个流水灯反向逐个闪动{P0=temp;delay(800);//调用延时函数temp〉〉=1;}temp=0xFE;for(i=0;i<8;i++)//8个流水灯依次全部点亮{P0=temp;delay(800); //调用延时函数temp<<=1;}temp=0x7F;for(i=0;i〈8;i++)//8个流水灯依次反向全部点亮{P0=temp;delay(800); //调用延时函数temp>〉=1;}temp=0x03;for(i=0;i<4;i++)//两个流水灯顺序点亮{P0=temp;delay(800);temp〈〈=2;}temp=0x30;for(i=0;i<3;i++) //两个流水灯反向点亮{P0=temp;delay(800);temp>〉=2;}temp=0x07;for(i=0;i〈3;i++)//3个流水灯顺序点亮{P0=temp;delay(800);temp<〈=3;}temp=0xe0;for(i=0;i<3;i++) //3个流水灯反向点亮{P0=temp;delay(800);temp〉〉=3;}}temp=0x0f;for(i=0;i〈3;i++)//4个流水灯顺序点亮{P0=temp;delay(800);temp<<=4;}temp=0xf0;for(i=0;i〈3;i++)//4流水灯反向点亮{P0=temp;delay(800);temp〉〉=4;}}void delay(uint t)//定义延时函数{register uint bt;for(;t;t-—)for(bt=0;bt<255;bt++); }。

嵌入式流水灯实验

嵌入式流水灯实验
编译连接通过后,按键盘的F5键,启动AXD进行调试。注意,由于程序要烧写到片内FLASH,默认选项在每次装载FLASH地址的调试文件时,将会擦除FLASH并下载代码到FLASH中。
脱机运行
使用DebugInFLASH生成目标,并进行调试后(使用JLINK仿真器),程序即烧写到片内FLASH中。将JLINK电源断开,重新上电,程序将脱机运行;
蜂鸣器控制电路如所示。
图3-1蜂鸣器控制电路
如果跳线JP11选择蜂鸣器,当P0.7输出低电平时,蜂鸣器鸣叫,当P0.7输出高电平则停止鸣叫。程序设置PINSEL0使P0.7连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7口,控制蜂鸣器,流程图见图3-2。
图3-5流水灯花样显示流程图
五、实验步骤
实验内容1步骤
①启动ADS1.2IDE集成开发环境,选择ARM ExecutableImageforlpc2131工程模板建立一个工程BeepCon_C。
②在user组里编写主程序代码main.c。
③将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接gde台ngthengXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。

花样流水灯的设计

花样流水灯的设计

中断程序
• • • • • • • • • • • • void int0_int() interrupt 0 //外部中断0中断后程序会自动跳到这里来执行 { unsigned char i,temp; temp=0x80; for(i=0;i<8;i++) { led=~temp; delay_1(30000); temp>>=1; } }
单片机控制花样流水灯
姓名:潘瑞 学号:10030209 班级:10电子(2)
1.流水灯的功能及显示效果 1.流水灯的功能及显示效果
• 中断控制LED灯的显示 • 显示效果: 1.中间往两边 2.左移 3.右移
硬件电路的设计
程序的流程图
程序调试方法
• 利用Keil和Proteuus仿真,注意平 时的细节。
关键程序
• • • • • • • • • • • • • • • • • • • } void main() { IE=0x85; PX0=1; while(1) { unsigned char i,temp,j,k; temp=0x81; for(i=0;i<4;i++) { led=~temp; delay_0(50000); j=temp&0xf0; j>>=1; k=temp&0x0f; k<<=1; temp=j|k; } }
• void int1_int() interrupt 2 • { • unsigned char i,temp; • temp=0x01; • for(i=0;i<8;i++) • { • led=~temp; • delay_1(30000); • temp<<=1; • } • }

花式流水灯硬件设计报告精品

花式流水灯硬件设计报告精品

一、 设计题目花式流水灯二、 设计目的使用单片机控制LED 的花式亮灭。

三、 设计原理及要求1、设计原理流水灯系统由以下五个部分组成:电源模块、复位电路模块、晶振模块、 AT89C51单片机、LED 灯显示模块等组成。

其硬件框图如图1所示:图1花式流水灯硬件框图8个发光二极管依次接单片机 P0口,当单片机P0口输出低电平时,LED 亮,由程序控制灯亮的顺序,按键采用中断方式控制灯亮的方式。

2.设计要求(1) 以单片机为核心,设计花式流水灯。

(2) 按键中断电路。

(3) LED 显示电路。

四、芯片介绍AT89C51是美国ATME 公司生产的低电压,高性能 CMOS 位单片机,片内含4k bytes 的 可反复擦写的只读程序存储器(PEROM 和128 bytes 的随机存取数据存储器(RAM ,器件采用ATME 公司的高密度、 非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用 8位中央处理器(CPU 和Flash 存储单元,功能强大 AT89C51单片机可为您提夏位电路 模块<=1AT89C5L<=1LED 灯显示模块按笑控制模块供许多高性价比的应用场合,可灵活应用于各种控制领域。

AT89C52主要性能参数:1与MCS-51产品指令和引脚完全兼容 2、 8k 字节可重擦写Flash 闪速存储器 3、 1000次擦写周期 4、 全静态操作:0Hz-24MHz 5、 三级加密程序存储器 6、 256*8字节内部RAM 7、 32个可编程I/O 口线 8、 3个16位定时/计数器9、 8个中断源 10、可编程串行 LART 通道11、低功耗空闲和掉电模式功能特性概述:AT89C51提供以下标准功能: 4k 字节Flash 闪速存储器,128字节内部RAM 32个I /O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C5何降至0Hz 的静态逻辑操作,并支持两种软件可选的节电工作模式。

嵌入式花样流水灯的设计

嵌入式花样流水灯的设计
port_write(LED1,1);
port_write(LED2,1);
port_write(LED3,1);
port_write(LED4,1);
port_write(LED5,0);
port_write(LED6,0);
port_write(LED7,0);
port_write(LED8,0);
程序设计中使用了宏定义定义端口号,编写调用延时函数实现流水灯的循环显示,利用if语句判断拨码开关是否打开。
3
流水灯流程图如图6所示:
图6
3
本次设计的花样流水灯程序代码如下:
//#include "/home/hx/9261/linux-2.6.20/include/asm-arm/termbits.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
port_write(LED4,0);
port_write(LED5,0);
port_write(LED6,0);
port_write(LED7,0);
port_write(LED8,0);
sleep(1);
port_write(LED1,0);
port_write(LED2,0);
port_write(LED3,1);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
port_write(LED4,1);
port_write(LED5,0);
port_write(LED6,0);
port_write(LED7,0);
port_write(LED8,0);
sleep(1);
port_write(LED1,0);
port_write(LED2,0);
port_write(LED3,0);
sleep(1);
port_write(LED1,0);
port_write(LED2,0);
port_write(LED3,0);
port_write(LED4,0);
port_write(LED5,1);
port_write(LED6,1);
port_write(LED7,1);
port_write(LED8,1);
port_write(LED5,0);
port_write(LED6,0);
port_write(LED7,0);
port_write(LED8,0);
sleep(1);
}
}
return 0;
}
/* end of file */
4
将4boma文件夹拷贝到根目录tftpboot在4boma目录下直接运行make后完成编译,编译及结果如下图所示。
手工配置有线连接1的IP信息
配置信息见下图,配置完成后点击保存。
图3
可以通过键入tftp查看一下tftp是否可用。如图4所示。
图4
2.
本系统硬件框图如图5所示,主要由S3C6410开发板,拨码开关模块,LED显示模块等组成。4个拨码开关分别对应8个LED的四种不同的显示方式。
图5
3
3
本次设计的基本思想是,当第一个拨码开关打开时,8个流水实现全亮和全灭的循环显示;否则判断第二个拨码开关是否打开,如果打开,实现流水灯两个从左到右依次循环点亮;否则判断第三个拨码开关是否打开,如果打开,实现流水灯左边四个亮右边四个灭,然后右边四个亮左边四个灭,依次循环;否则判断第四个拨码开关是否打开,如果打开,实现单数的亮双数的灭,然后双数的灭单数的亮,依次循环;否则,流水灯全灭。
{
open_port_device();
return 0;
}
int main(int argc, char *argv[])
{
/*
*硬件初始化
*/
bsp_init();
while (1)
{
//port_write(XDACOUT1,0);
//port_write(ADC1,1);
printf("read key\r\n");
port_write(LED6,0);
port_write(LED7,1);
port_write(LED8,0);
sleep(1);
port_write(LED1,0);
port_write(LED2,1);
port_write(LED3,0);
port_write(LED4,1);
port_write(LED5,0);
if(port_read(MOTERK1))
{
printf("key1=1\r\n");
port_write(LED1,1);
port_write(LED2,1);
port_write(LED3,1);
port_write(LED4,1);
port_write(LED5,1);
port_write(LED6,1);
虚拟机上具体操作如下
4
实验箱显示屏的显示
实验箱上LED显示
5
通过做实验知道当用超级终端是可以不用从实验箱上观察流水灯亮和灭,在超级终端上直接键入root然后输入密码出现和实验箱上一样的标识符,当在虚拟机上ping通并且传送成功后,可以直接在超级终端上挂载程序,挂载成功之后开始运行,这样当开关按下之后可以看到LED灯的亮和灭的变化,比在实验箱上方便多了。
设计工作量要求:
1.完成硬件电路设计;
2.完成软件设计;
3.完成系统仿真;
4.完成实物制作;(作2
5.编写设计说明书。
摘要
随着社会的发展,嵌入式在未来的应用会越来越广泛。随着物联网的时代到来,电器将会与互联网,移动电话成为一体。本次设计以基与嵌入式的简单的流水灯的设计。通过这次的课程设计,使我们基本了解了嵌入式的方法以及培养我们对嵌入式编程的兴趣,与此同时,我们还可以回顾一下C的编程和汇编编程的基础,为将来在嵌入式的学习和工作中做好准备!
程序设计中使用了宏定义定义端口号,编写调用延时函数实现流水灯的循环显示,利用if语句判断拨码开关是否打开。
3
流水灯流程图如图6所示:
图6
3
本次设计的花样流水灯程序代码如下:
//#include "/home/hx/9261/linux-2.6.20/include/asm-arm/termbits.h"
port_write(LED4,0);
port_write(LED5,0);
port_write(LED6,0);
port_write(LED7,1);
port_write(LED8,1);
sleep(1);
}
else if(port_read(MOTERK3))
{
printf("key3=1\r\n");
#include "main.h"
#include "REGS2515.h"
#define GPM2 S3C6410_PIO_PM2
#define GPL1 S3C6410_PIO_PL1
#define GPK2 S3C6410_PIO_PK2
#define GPK8 S3C6410_PIO_PK8
图1
5、安装交叉编译工具
可以通过键入arm-linux-gcc --version)查看一下arm-linux-gcc是否可用。如图2所示。
图2
6、配置网络和tftp
要使网络进行通信和文件传输必须使宿主机和目的主机是相同的网段。这里设置宿主机主机的IP地址:192.168.1.13;目的主机的IP地址:192.168.1.11;检查网络是否通,进入终端使用ping命令启动D6,1);
port_write(LED7,0);
port_write(LED8,1);
sleep(1);
}
else
{
printf("OFF\r\n");
port_write(LED1,0);
port_write(LED2,0);
port_write(LED3,0);
port_write(LED4,0);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
手动设置PC主机、Linux虚拟机以及实验箱上的Ip地址在同一网段,使它们之间能够相互ping通。
1、设置主机PC的IP。
WIN+r键,进入运行,输入cmd,进入终端查看主机Ip地址,输入ipconfig,如图:
2、手动设置ubuntu虚拟机ip地址
进入ubuntu虚拟机,点击系统->首选项->网络连接
port_write(LED7,1);
port_write(LED8,1);
sleep(1);
port_write(LED1,0);
port_write(LED2,0);
port_write(LED3,0);
port_write(LED4,0);
port_write(LED5,0);
port_write(LED6,0);
sleep(1);
}
else if(port_read(MOTERK4))
{
printf("key4=1\r\n");
port_write(LED1,1);
port_write(LED2,0);
port_write(LED3,1);
port_write(LED4,0);
port_write(LED5,1);
port_write(LED1,1);
port_write(LED2,1);
port_write(LED3,1);
port_write(LED4,1);
port_write(LED5,0);
port_write(LED6,0);
port_write(LED7,0);
port_write(LED8,0);
关键字
流水灯,嵌入式,C编程;
1.2S3C6410及实验箱介绍
2
2.1开发环境
1、建立vmware虚拟机
2、使用vmware安装ubuntu
3、安装vmware-tools
4、windows和Ubuntu之间共享文件夹的设置
在虚拟机中,我们可以在/mnt/hgfs/6410目录下访问到我们共享文件夹的内容。如图1所示。
port_write(LED4,0);
port_write(LED5,1);
port_write(LED6,1);
port_write(LED7,0);
port_write(LED8,0);
相关文档
最新文档