新嵌入式设计方案龙傲天小组.docx
《新嵌入式设计方案龙傲天小组.docx》由会员分享,可在线阅读,更多相关《新嵌入式设计方案龙傲天小组.docx(10页珍藏版)》请在冰豆网上搜索。
新嵌入式设计方案龙傲天小组
盐城师范学院
课程设计报告
系(院、校区):
物电学院
专业:
电子信息工程(通信技术)
学生姓名:
朱程
施天雨
何文
谢金鑫
学号:
12413247
12413234
12413222
12413240
课程设计题目:
嵌入式Linux智能停车终端系统
起迄日期:
6月1日~6月5日
课程设计地点:
逸夫实验楼422
指导教师:
王荣奇周殿凤
1、课程设计综述
本次课程设计由华清远见资深讲师向我们学生展示完整嵌入式项目设计开发流程及方法,以及嵌入式核心技术运用等满足企业真实岗位需求的实用内容,帮助学生在快速熟悉ARM-Linux开发环境的搭建及相关工具的配置及使用,嵌入式项目开发的代码编写规范,以及基于ARM-Linux产品实现细节等,并在行业专家的引导下,体验一个全真案例的实战过程,同时通过更多行业典型应用的示范分析帮助学生更贴近企业的真实需求和行业的发展,为进一步在嵌入式研发行业中发展打下坚实基础。
随着科技的进步,电子技术、计算机技术、通讯技术不断地向各种收费领域渗透,当今的停车场收费系统已经向智能型的方向转变。
先进可靠的停车场收费系统在停车场管理系统中的作用越来越大。
所以本次课程设计就是用嵌入式Linux设计一个只能停车终端系统。
2、开发平台和软件环境
2.1硬件平台
表2.1硬件配置表
名称
说明
CPU
Cortex-A8构架S5PC100
FLASH
2Mnorflash+256MNandFlash
SDRAM
256M
USB
4路USBHost接口,USB2.0-OTG接口
网口
DM9000以太网控制器
串口
2个5线串口,1路3线串口
摄像头
USB2.0接口/Camera接口
I/O
8路I/O
A/D转换器
10bit电压0-3V
LCD
480*320大小
PWM
蜂鸣器实验
2.2软件平台
表2.2软件环境需求表
名称
说明
操作系统
Linux-2.6.26.5
开发工具
GNU工具
启动代码
u-boot1.3.1或者1.3.4
驱动程序
项目所涉及到的硬件驱动(蜂鸣器、ADC,按键、FLASH、USB-CAMERA,SD卡等)
文件系统:
要求根文件系统采用cramfs,用户文件系统采用JFFS2或者yaffs2
协议栈
TCP/IP(TFTP/NFS实验)
服务器
B0A或者APACHE服务器
3、系统软件架构与流程图
3.1软件架构
表3.1系统软件架构图
3.2系统工作流程图
4、课程项目内容
4.1LED模块
4.1.1模块功能说明
开发平台上有四个LED灯硬件资源,主要用于模拟信号提示,也可用于限高报警灯的警报,灯的顺序可由项目开发需求自行决定。
4.1.2模块部分代码
#defineGPG3CON(*(volatileunsignedint*)0xE03001C0)
#defineGPG3DAT(*(volatileunsignedint*)0xE03001C4)
#defineN1000000
voidmydelay(unsignedintcount)
{
while(count>0)
count--;
}
voidmain(void)
{
//GPG3CON=GPG3CON&0xffff0000|0x000011111;
GPG3CON=GPG3CON&(~0xffff)|0x1111;
while
(1)
{
GPG3DAT=0x2;
mydelay(N);
GPG3DAT=0x4;
mydelay(N);
GPG3DAT=0X8;
mydelay(N);
GPG3DAT=0x1;
mydelay(N);
GPG3DAT=0x8;
mydelay(N);
GPG3DAT=0X4;
mydelay(N);
}
4.1.3模块技术点
1.S5PC100硬件平台的GPIO端口控制;
2.学会查看S5PC100硬件平台原理图LED模块;
3.寄存器的位与和位或操作。
4.2PWM模块
4.2.1模块功能说明
脉宽调制(PWM)控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。
也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。
按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。
4.2.2模块部分代码
main.cCreatedon:
2013-5-20
Author:
Administrator
*/
/*
*主函数pwm_music
*/
//包含系统寄存器定义的头文件
#include"s5pc100.h"
//音阶频率表
constunsignedintyinyue[3][7]
={
//DOREMIFASOLAXI
262,294,330,370,415,266,294,//低音
523,578,659,698,784,880,988,//中音
1046,1174,1318,1396,1567,1700,1975//高音
};
voidsoft_delay(unsignedintmloop)
{
while(--mloop>0);
}
voidPwmBeepInit(void)
{
GPD.GPDCON=(GPD.GPDCON&(~0xf0))|(0x2<<4);
TIMER.TCFG0=(TIMER.TCFG0&~0xff)|65;//初始化预分频值是prescal0的预分频值是66
TIMER.TCFG1=(TIMER.TCFG1&~0xf0)|(0<<4);//初始化多路选通开关的值是1/1与prescal0配合使用,
//总的预分频的值是66
TIMER1.TCNTB1=1000;//初始化向下计数值是1000
TIMER1.TCMPB1=500;//初始化比较寄存器的值是500
TIMER.TCON=TIMER.TCON|(1<<9);//TCON寄存器手动更新TCNTB1TCMPB1
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
*调用该函数,可以控制蜂鸣器响起,原理是使能了PWM的TOU1功能为动重装模式
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
voidbeep_on(void)
{
TIMER.TCON=(TIMER.TCON&(~(0xf<<8)))|(1<<11)|(1<<8);
}
//0000111100000000
*调用该函数,可以控制蜂鸣器响起,原理是停止了PWM的TOU1功能
voidbeep_off(void)
{
TIMER.TCON=(TIMER.TCON&(~(0x1<<8)));
}
*设置蜂鸣器发生频*
*输入参数:
unsignedintfre:
设置蜂鸣器的频率值
#defineSYS_SET_FREQUENCE1000000
voidbeep_set_frequence(unsignedintfre)
{
//若蜂鸣器的发声频率为0则返回
if(0==fre)
return;
TIMER1.TCMPB1=SYS_SET_FREQUENCE/(fre+fre);//根据设定频率重新设定计数器比较的值
TIMER1.TCNTB1=SYS_SET_FREQUENCE/fre;//根据频率重新调整计数值
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
*大海的简谱,如果大海能够.....
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
constunsignedchardahai[]=
{
0x13,0x15,0x16,0x16,0x16,0x16,0x21,0x16,0x15,0x15,0x16,0x15,//哀愁
0x13,0x12,0x11,0x11,0x11,0x11,0x12,0x13,
0x13,0x12,0x11,0x11,0x11,0x11,0x21,0x16,0x15,0x15,0x16,0x15,
0x13,0x15,0x16,0x21,0x21,0x16,0x15,0x15,//飘远
};
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
*大海的简谱,控制每一个音的时间1为长时间4为短时间
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
constunsignedchartime[]=
{
4,4,4,2,4,2,4,4,4,2,4,2,//哀愁
4,4,4,2,4,2,2,1,
4,4,4,2,4,2,4,4,4,2,4,2,
4,4,2,4,2,4,4,1//飘远
};
//主函数
intmain()
{
unsignedintloop=0;//循环控制变量
unsignedinta=0;//计算高中低音使用的变量
unsignedintb=0;//计算doremi....使用的变量
unsignedintdelay=0;//计算每一个音延时使用的变量
//GPH0.GPH0CON=(GPH0.GPH0CON)&~(0x3f<<1);//初始化key1-key6的引脚功能为输入
PwmBeepInit();//初始化PWM硬件,此刻没有启动PWM
//while((GPH0.GPH0DAT&(0x3ful<<1))==(0x3ful<<1));//等待有任意一个按键被按下,程序才会向下
while
(1)
{
//循环播放音乐
for(loop=0;loop{
//查大海的简谱表
a=dahai[loop]>>4;//计算出高低音
b=(dahai[loop]&0x0f)-1;//计算出DOREMIFASOLAXI
delay=0x400000ul/time[loop];//计算出每个音的播放间隔时间
beep_set_frequence(yinyue[a][b]);//重新设定频率
beep_on();//发出一个音
soft_delay(delay);//播放延时
beep_off();//关闭蜂鸣器,每个音播放完成后有间隔感
soft_delay(0x10);//关闭蜂鸣器
}
soft_delay(1000000);//播放延时
}
}
4.2.3模块技术点
1.S5PC100芯片的时钟输出原理;
2.开发平台pwm硬件原理图的认识;
3.编写代码控制寄存器输出对应的pwm频率;
4.寄存器单个位操作。
4.3LCD模块
4.4CAM模块
5、项目总结与心得
朱程:
此次课程设计的实训的是由华清远见公司的小王老师带我们完成的。
小王老师看上去比较年轻,给我们很有亲和力,技术上也很强,而且讲解的比较详细,操作上相当娴熟,从他身上我们学到了不少东西,每次出现问题时,我们都会召唤小王老师来帮我们解决,小王老师每次都认真细心地帮我们解决每一个问题,在计算机这个博大深奥的领域我们感觉自己还有好多东西要学,还有好多的东西不懂,嵌入式软件开发应用广泛而且前景很好,目前正处于人才紧缺的关口,嵌入式技术在未来能够得到更加广泛的应用。
学好嵌入式,C语言很重要,所以感觉我们有必要再学习、积累一下这方面的知识。
施天雨:
这次课程设计不仅仅是锻炼了我在操作方面的一些技能,同时,经过这次课程设计,我还从中学到了很多课本上所没有提及的知识。
何文:
通过这一周的课程设计的学习,交流、研讨、评论等对这次课程培训有了全新的认识。
不仅使我更系统的把握新课程,让我仿佛身临其境,专题学习,互相评论,互相讨论,集众师之见,使我的眼界得以开阔,并且对于专业知识和技能的获得有重大的突破和认识。
谢金鑫:
通过这次为数不多的几天计算机实践学习,我们了解了一些关于c语言的知识,理解巩固了我们c语言的理论知识,着对我们将来到社会工作将会有莫大的帮助。
同时它让我知道,只要你努力,任何东西都不会太难.