嵌入式课程设计报告
班 级: 自动化
学 号:
姓 名:
分 工: (程序编写)
(程序调试)
(程序流程设计及报告)
20##年8月
目录
摘要.................................................................................................... 3
关键字................................................................................................ 3
一、课程设计目的............................................................................. 4
二、课题设计功能............................................................................. 4
LED数码管驱动程序........................................................................ 4
三、模块介绍与使用手册.................................................................. 5
1、开发工具介绍............................................................................ 5
2、开发语言.................................................................................... 5
3、LED数码管驱动程序设计.......................................................... 6
四、测试结果性能分析...................................................................... 8
五、遇到的问题及解决办法.............................................................. 9
六、实验总结..................................................................................... 9
基于Windows CE的嵌入式系统设计
摘要:当今的嵌入式设计队伍处于高度分化状态中。有着多得让人眼花缭乱的实现目标和工具,而windows CE之所以脱颖而出,是因为Windows CE的高级特性,诸如网络、通信以及图形功能,和模块化设计结合在一起,为中级开发人员创建高复杂度嵌入式系统提供了理想的环境。同时,Windows CE提供一个稳定、灵活且被广泛支持的操作系统来处理建立在嵌入式系统上的多种多样的硬件平台和软件应用程序。本次设计,我们使用Windows CE 开发环境,设计并演示了LED数码管驱动程序。
关键字:Wndows CE的嵌入式系统、LED数码管驱动程序、EVC编程语言
Abstract:Today's embedded design teams in a high degree of differentiation in the State. Has a lot of confusing targets and tools, while Windows CE is to stand out, is that the advanced features of Windows CE, such as networking, communications, and graphics capabilities, and modular design work together, for intermediate developers create highly complex provides an ideal environment for embedded systems. At the same time, Windows CE provides a stable, flexible, and is widely supported by the operating system to build embedded systems for a wide variety of hardware platforms and software applications. This design, we use the Windows CE development environment, design and demonstrate LED digital tube led driver.
keyword:Windows CE of embedded system 、GPIO digital tube drivers、LED digital tube drivers
一、课程设计目的
1、对嵌入式程序开发在课堂教学的基础上有进一步的认识。
2、了解Windows CE下编程,掌握EVC的使用。
3、熟悉PXA270-EP实验设备。
二、课题设计功能
LED数码管驱动程序
要求编写一个测试程序,实现PXA270-EP目标板上的LED数码管循环显示数字2,4,6,8。
三、模块介绍与使用手册
1、开发工具介绍
PXA270EP嵌入式实验箱
2、开发语言
由于在Windows CE下开发软件的编译器必须满足两个特点:第一、程序能够相对快速地执行;第二、相对减少对系统资源的消耗。而EVC是最符合这两个特点的,所以本次开发使用的语言是EVC。
3、LED数码管驱动程序设计
(1)设计流程图
(2)程序代码
/**********LED循环显示2,4,6,8**********/
void CLEDDlg::OnButtonSet()
{
// TODO: Add your control notification handler code here
SetTimer(1, 1000, NULL); /设置定时器(1秒)
}
void CLEDDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
static char j=0;
j++;
BOOL b;
BYTE data[4];
DWORD bytes;
UINT val;
if(j==1)
{val=2468;}
if(j==2)
{val=4682;}
if(j==3)
{val=6824;}
if(j==4)
{
j=0;
val=8246;
}
//获取数字内容
memset(data,0,4);
if(b)
{
int i,n;
char str[16];
n=sprintf(str,"%d",val);
n=n>4?4:n;
for(i=0;i<n;i++)
{
data[i]=ledfont[str[i]-'0'];
}
}
//调用驱动程序写到硬件上去
WriteFile(m_hDev,data,4,&bytes,NULL);
CDialog::OnTimer(nIDEvent);
(3)结果显示
四、测试结果性能分析
LED 数码管驱动程序
全部实现 PXA270-EP 目标板上的 LED 数码管操作任务,循环显示数字 2,4,6,8 ,实验结果稳定,数据可靠。
五、遇到的问题及解决办法
1. 实验中开始只是明确要在程序中插入一个宏观变量来把程序的阿拉伯数字和数码管的段显示对应起来,但没有找到其正确插入的位置,导致运行时数码管没有显示。后来经过和其他同学的程序比对,才发现问题所在并解决。
2. 在编写程序时,开始的设计方案是循环移位,不需要每次都赋值,但经编写后运行,调试多次都不出现结果,所以最终版的程序放弃移位操作,改为每次进行赋值,实现2468的循环。
3. 由于j++代码行的位置问题,导致显示过程中直接略过赋值为j==0的情况,开始至变更赋值+1.显示的第一个情况为1300初始值为随机,尔后才能正常显示,这说明在空出的一秒时有出现没有赋Val的情况,后来我们将j++代码行调整到静态赋值下方,所有判断情况的上面,正常实现了循环2.4.6.8。
4. 开始接线时,是以太网线和同步线都接,都设置,但由于操作流程没记清楚,导致连接不成功,后经过和书中的再次比对,我们选择了同步线进行连接,设置方便,实现了最终的显示。
六、实验总结
本次设计,我主要负责的主要是程序调试,在本次实验中,主要是全局变量的定义,还试验箱LED灯的循环显示,数字循环我们设置的是每秒变化一次,每次变换数字向右移。程序虽然简单,但是在程序调试,试验箱与主机的联机等过程中都遇到了问题,在实验中对软件和硬件的了解也加深了。
本次课程设计不仅我们对Windows CE设计有了更深的了解,而且我们在做设计任务时学会了发现问题并且解决问题,也意识到了团队合作的重要性,我相信这种团队合作意识在今后的工作生活中也会发挥出巨大的作用。
第二篇:嵌入式课程设计实验报告
嵌入式系统及机电接口应用
键控直流电动机
小组成员:
赵保顺 081014104
程辉 081014103
黄宇哲 081014106
梁霄 081014102
指导老师: 郑嫦娥
实验日期:20##年11月23日
键控直流电机的正反转实验
1.1背景介绍
一、预备知识
1. 熟悉凌阳单片机的工作原理:
1)I/O口的使用原理和设置;
2)定时器或时基的设置、使用;
3)中断的设定。
2. 熟悉键盘扫描原理。
3. 熟悉汇编语言及 C 语言。
二、直流电机控制原理:
对于普通直流电机,其控制方法比较简单,只需给电机的两根控制线加上适当的电压即可使电机转动起来, 电压越高则电机转速越高。 对于直流电机的速度调节, 可以采用改变电压的方法, 也可采用 PWM调速方法。PWM 调速就是使加在直流电机两端的电压为方波形式,加在电机两端的电压就在 VLoad 和0V之间不停的跳变,对应的电机电压波形如图1所示:
图1
此时加在电机两端的平均电压 Uo=Th/(Th+Tl)*VLoad,可以通过调整 PWM 的占空比来改变 Th 和Tl 的比值。这样就可以通过 PWM 调节加在电机两端的平均电压,从而改变电机的转速。
三、使用芯片的介绍
特点:
(1) 低静态工作电流;
(2) 宽电源电压范围:2.5V-12V;
(3) 每通道具有800mA 连续电流输出能力;
(4) 较低的饱和压降;
(5) TTL/CMOS输出电平兼容,可直接连CPU;
(6) 输出内置钳位二极管,适用于感性负载;
(7) 控制和驱动集成于单片IC之中;
(8) 具备管脚高压保护功能;
(9) 工作温度:0℃-80℃。
描述:
LG9110 是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片 IC 之中,使外围器件成本降低,整机可靠性提高。该芯片有两个 TTL/CMOS 兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过 750~800mA 的持续电流,峰值电流能力可达1.5~2.0A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。LG9110 被广泛应用于玩具汽车电机驱动、步进电机驱动和开关功率管等电路上。
LG9110的外观如图
管脚示意图
管脚的波形图
1.2 设计目的
本课程设计的基本要求是:
1. 熟悉凌阳十六位单片机系统板-61 板的基本构成和使用方法。
2. 了解直流电机的原理及控制方法。
3. 掌握 LG9110的 I/O、定时器等操作方法。
4. 掌握单片机的一般编程技巧。
5. 掌握 61 板系统调试的一般步骤及方法。
1.3 设计题目
利用 61 板的三个按键实现直流电机的转动和速度调节控制。具体要求如下:
1. 开机时电机处于停转状态。
2. 在电机停转状态下,按 KEY1 键使电机正向转动,按 KEY2 键使电机反向转动。
3. 按 KEY3 键使电机停止转动。
1.4设计说明
(1)系统设计
根据设计题目的要求分析,系统分成两个部分:
1. 直流电机驱动和控制;
2. 按键控制。
根据系统的功能现选择 61 板作为单片机控制处理部分,按键采用61 板上自带的三个按键;直流电机驱动则利用 LG9110 芯片实现.来实现控制电机。
(2)硬件连接
硬件连接如图所示:
芯片的2与3号引脚接电源,7与8号口和61板相连接,控制电机转动。8号与5号角接地。
1.5软件流程图
利用汇编语言程序可很容易的实现,电机的控制,其流程图如下:
程序代码:
.DEFINE P_Watchdog_Clear 0x7012
.DEFINE P_IOA_Data 0x7000
.DEFINE P_IOA_Buffer 0x7001
.DEFINE P_IOA_Dir 0x7002
.DEFINE P_IOA_Attrib 0x7003
.DEFINE P_IOB_Data 0x7005
.DEFINE P_IOB_Buffer 0x7006
.DEFINE P_IOB_Dir 0x7007
.DEFINE P_IOB_Attrib 0x7008
.RAM
.VAR Key //定义变量保存键值
.CODE //伪指令.CODE 代码段
.PUBLIC _main
_main:
r1=0x01FF //设置IOA8为同相高电平输出
[P_IOA_Dir]=r1 //设置IOA0~IOA7口为同相低电平输出
[P_IOA_Attrib]=r1 //保证初始时不转动
r1=0x0100
[P_IOA_Data]=r1
r1=0x0040
[P_IOB_Dir]=r1 //IOB8~IOB15为下拉输入
[P_IOB_Attrib]=r1
[P_IOB_Data]=r1
? Loop:
call F_KeyScan
R1=[Key]
cmp r1, 0x0000 //是否有按键按下
je? Loop_1 //若无则继续扫描键盘
r1=r1 Lsr 4 //键值右移8位,利用IOA低8位输出
r1=r1 Lsr 4
r1=r1|1fff // IOA3-IOA8输出高电平
[P_IOA_Data] = r1 //输出键值,控制相应的电机转动
? Loop_1:
r1= 0x0001
[P_Watchdog_Clear]=r1
jmp ? Loop
//进行扫键操作,返回键盘值
.PUBLIC F_KeyScan
F_KeyScan:
r1=[P_IOB_Date]
r1=r1&0x0007 //仅取IOB口低三位的输入值
jz ? Return //为零则代表按键没有按下,返回
call F_Delay //延时,消抖
r2=[P_IOB_Date]
r2=r2&0x0007 //仅取IOB口低三位的输入值
cmp r1, r2 //比较延时前后两次输入值读取的是否相等
je ? Return //相等则返回,r1中保存有按键值
r1=0x0000 //返回0
? Return
[Key]=r1 //返回键值
retf
//延时程序F_Delay
.PUBLIC F_Delay
F_Delay;
r3=0x2ff
? Loop:
r4=0x0001
[P_Watchdog_Clear]=r4
r3-=1
jz ? Exit
jmp ? Loop
? Exit
reft
1.5实验总结
本次实验作为嵌入式系统与机电接口应用的课程设计,我们组选择的是控制电机的正反转,这个看似简单的事情,实际做起来就不那么简单了,首先选择控制电机的芯片,以及原材料的购买,实验线路的设计以及程序的编制,这一切使我们小组每个成员学到了很多书本上没有的知识,真正体会到了什么是理论联系实际。同时也锻炼了我们的动手实践能力。
1.6小组分工
本次实验的材料为小组一起购买。电机与面包板,还有电源是借用实验室。
程序编制:赵保顺,程辉。
实验操作:小组全体赵保顺,程辉,黄宇哲,梁宵。
1.6实验照片剪辑