北京科技大学 嵌入式课程设计报告_嵌入式课程设计报告
北京科技大学 嵌入式课程设计报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“嵌入式课程设计报告”。
《嵌入式控制系统》 课程设计报告
学 院
专业班级
姓
名
学
号
指导教师
_
目录
摘要..............................................................................................................................................4
引言
随着芯片技术和电子产品智能化的飞速发展,嵌入式技术越来越受到人们的关注,应用领域几乎遍及所有的电子产品:智能机器人、网络通信、军用设备、汽车导航、环境保护、智能仪器等等。嵌入式系统不仅融合了计算机软、硬件技术、通讯技术和半导体微电子技术,而且针对实际应用系统要求,将相应的计算机直接嵌入到应用系统中,并可针对应用需求对软、硬件进行优化、裁减。
嵌入式控制系统是一门新兴的课程,通过本次课程设计可以更好地掌握这门新技术,对今后的发展有很大帮助。
开发方法和流程,熟悉Intel XScale硬件平台及其应用处理机的使用方法,熟悉WINCE嵌入式系统的基本原理、概念。
4.设计原理 4.1 LED发光原理
LED(Light Emitting Diode),即发光二极管。是一种半导体固体发光器件。它是利用固体半导体置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。
发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,如图1,在P型半导体和N型半导体间有一个过渡层,称为P-N结。在某些半导体材料的P-N结中,注入的少数载流子与多数载流子复合时,会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。P-N结加反向电压,少数载流子难以注入,故不发光。利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。
图1 发光二极管的核心组成部分
图3 控件设计图
其中,显示按钮是作为数码管静态显示的按钮,如显示1235; 亮、灭、闪烁这三个按键是通过GPIO控制发光二极管的状态; 测试按键是实现2,4、6、8数码管循环动态显示的按钮; 复位按键是实现中断次数清零功能的按钮; Apply按键是启动更改的循环显示周期的按键。
以上就是整个课程设计的全部控制界面,通过不同的按钮操作,实现不同的功能。
5.3基本功能的实现
windowsCE是一个界面友好的嵌入式操作系统,系统提供了丰富了控件,极大的方便了用户的开发。C++是优秀的编程语言,在EVC环境下,编写的难度大大降低,尤其是界面的处理。由于实验平台提供了相应的驱动程序,所以本次实验并不需要了解其硬件操作,大大缩短了一个嵌入式应用的开发速度。通过本次嵌入式实
图5 LED数码管循环显示2,4,6,7 6.2 LED数码管清零功能实现结果
通过控制面板上的操作按键,实现清零功能,当按键按下去之后,四个LED数码管的显示数字全部都会变为零。见图6
6.4 频率设置功能实现结果
闪烁周期可以通过键盘输入来进行设置,本课程设计设置的为0~9之间,基值为100ms,通过改变闪烁周期来控制2、4、6、8循环显示的频率。见图8.和图9.图8 闪烁周期为5时的结果
力,也增强了我们的团队协作能力。有什么不懂不明白的地方要及时请教老师或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识。
} //{{AFX_DATA_MAP(CLedDlg)// NOTE: the ClaWizard will add DDX and DDV calls here //}}AFX_DATA_MAP BEGIN_MESSAGE_MAP(CLedDlg, CDialog)
//{{AFX_MSG_MAP(CLedDlg)ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)ON_WM_DESTROY()ON_BN_CLICKED(IDC_BUTTON_ON, OnButtonOn)ON_BN_CLICKED(IDC_BUTTON_OFF, OnButtonOff)ON_BN_CLICKED(IDC_BUTTON_FLASH, OnButtonFlash)ON_WM_TIMER()ON_BN_CLICKED(IDC_BUTTON_TEST, OnButtonTest)ON_BN_CLICKED(IDC_BUTTON_RESET, OnButtonReset)ON_BN_CLICKED(IDC_BUTTON_APPLY, OnButtonApply)//}}AFX_MSG_MAP END_MESSAGE_MAP()
///////////////////////////////////////////////////////////////////////////// // CLedDlg meage handlers
BOOL CLedDlg::OnInitDialog(){
CDialog::OnInitDialog();// Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog
}
void CLedDlg::OnButtonSet(){
//KillTimer(1);m_test=FALSE;UINT val =GetDlgItemInt(IDC_EDIT_NUM,&b,FALSE);memset(data,0,4);if(b){ BOOL b;BYTE data[4];DWORD bytes;// TODO: Add your control notification handler code here m_test=false;m_flash=false;n=0;ntime=0;flashtime=5;SetTimer(1,100,NULL);
return TRUE;// return TRUE unle you set the focus to a control
WriteFile(m_hDev2,&m_bValue,4,&m_dwBytes,NULL);} void CLedDlg::OnButtonOff(){
}
void CLedDlg::OnButtonFlash(){
}
void CLedDlg::OnTimer(UINT nIDEvent){
// TODO: Add your meage handler code here and/or call default
BYTE test[4]={2,4,6,8};BYTE data[4];DWORD bytes;// TODO: Add your control notification handler code here
m_flash=!m_flash;// TODO: Add your control notification handler code here
//KillTimer(1);m_flash=FALSE;m_bValue = TRUE;WriteFile(m_hDev2,&m_bValue,4,&m_dwBytes,NULL);
} if(ReadFile(m_hDev3,&val,sizeof(val),&bytes,NULL)){
if(val!=oldval){ SetDlgItemInt(IDC_EDIT_INTERRUPT,val,FALSE);oldval=val;
} else {
}
} m_test=FALSE;for(i=0;i
flashtime=str[0]-'0';
if(flashtime==0)
{
flashtime=1;
} } }