嵌入式实习报告
(2)软件调试:
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
七、总结与体会
本系统是以LPC2114芯片为核心部件。此次在软件上是花费时间最多的,我主要通过上网找资料,上图书馆查资料,尽可能的了解有关于这方面的知识。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在ARM的基本原理、及应用系统开发过程,和编程设计思路技巧的方面都有了很大一步的提高。
N
完否?
Y
图1
三.键盘识别软件设计
嵌入式控制系统一般的是配备简易键盘,即根据需要设3~4按键基本能满足使用要求,因此键盘控制软件也是必须的,参考下图
N
有建按下?
Y
N
有建按下?
Y
四、ADC控制软件设计
N转换结束?
Y
N
N-1=0?
Y
图3
五、电路与程序
六、程序源代码
#include "LPC2294.h"
case KEY2 :
data_dis--;//data_temp--;
break;
case KEY3 :
data_set = data_dis;
break;
}
}
}
//=================
// MAIN
//===============
int main(void)
{
cpu_init();
硬件调试可分为静态调试与动态调试两步进行。
静态调试是在用户系统未工作时的一种硬件检测。
1)目测。
检查外部的各种元件或者是电路是否有断点。
2)用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
3)加电检测。
给板加电,检测所有插座或是器件的电源端是否符合要求的值
#define Fpclk 11059200
#define DIS_1 0x06//个位选通
#define DIS_2 0x05//十位选通
#define DIS_3 0x03//百位选通
#define KEY1 0x04 //+
#define KEY2 0x02 //-
#define KEY3 0x01 //ok
typedef unsigned int U32; //无符号32位整型变量
typedef unsigned char U8; //无符号8位整型变量
//typedef signed char int8; //有符号8位整型变量
typedef unsigned short U16; //有符号8位整型变量
4)联机检查。
只有用ARM开发系统才能完成对用户系统的调试。
动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远、由分到合。由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合的调试既告完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
{
key = (U8)IO0PIN>>16;
if(key & 0x07==0x07) //
temp1=0;
}
//??data_temp = data_dis;
key_d = ~ key_d;
switch(key_d)
{
case KEY1 :
data_dis++;//data_temp++;
break;
dis1=temp%10; //个位
}
}
//======================================
//Timer0_ISR
//======================================
void __irq Timer0_ISR(void)
{
cunt++;
if(cunt%10==0)
通过本次ARM实习设计,我在老师的精心指导和严格要求下,不仅获得了丰富的理论知识,而且极大地提高了实践能力,这对我今后进一步学习有极大的帮助。
U16 cunt;
U16 data_dis,data_set;
U8 dis3=10,dis2=10,dis1=10;
U8 flag_dis,dis_n;
U8 timeout;
const U8 led_seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff,0x00};
嵌入式课程设计与总结报告
一、设计实习任务
1.焊接ARM7(LPC2132)最小系统PCB。要求仔细认真焊接,并调试使其能正常工作(提供最简易测试程序)。
2.设计数码管动态扫描显示电路,三个按键的键盘电路,模拟电压取样电路等。要求原理图设计合理,要求有与最小系统板的接口,正确焊接,调试后能正常工作。
3.控制软件设计
//健P016~P018
//定时器0
T0TC = 0;
T0PR = 0;
T0MCR = 0x03;
T0MR0 = Fpclk/1000; //定时1mS
T0TCR = 0x01;
VICIntSelect = VICIntSelect&(~(1<<4));
VICVectCntl0 = 0x20|4;
VICVectAddr0 = (U32)Timer0_ISR;
while(1)
{
/* if(flag_dis)
{
key_do();
flag_dis = 0;
//updata();
display();
}*/
IO0PIN= 0xff;
}
}
七、检测与调试
(1)硬件调试:
硬件调试是利用DVCC实验与开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
在嵌入式控制系统的设计中,系统控制软件的设计是一项非常重要且艰巨的工作,系统能否正常可靠的工作,成败在此一举。因此要求同学们认真仔细的设计、调试控制软件。要求软件语句精炼,整体健壮,有一定的抗干扰能力。
二、数码管动态扫描显示电路控制软件设计
要求显示电路能正常显示数据,数码管无闪烁,明亮,可随时刷新显示的数据,参考流程图见图1。
if(key & 0x07!=0x07) //有按键
{
timeout = 20; //延时20ms
while(timeout!=0);
key = (U8)IO0PIN>>16;
if(key & 0x07!=0x07) //有按键
key_d = key;
temp1=1;
while(temp1)//等待健释放
break;
}
if(dis_n>=3)
dis_n=0;
}
//=========================
//key_do
//按键接于P0.16~18
//=========================
void key_do(void)
{
U8 key,key_d;
U32 temp1;
key = (U8)IO0PIN>>16;
VICIntEnable = (1<<4);
}
void updata(void)
{
U16 temp;
// u8 temp1,temp2,temp3;
//WDT_CONTR=0x3c;
if(data_dis<=999)
{
dis3=temp/100; //百位
temp=temp%100;
dis2=temp/10; //十位
dis_n++;
switch(dis_n)
{
case 1:
IO0PIN=led_seg[dis1] | DIS_1<<8; //显示个位
break;
case 2:
IO0PIN=led_seg[dis2] | DIS_2<<8; //显示十位
break;
case 3:
IO0PIN=led_seg[dis2] | DIS_3<<8; //显示百位
//段吗:0, 1, 2, 3, 4, 5, 6, 7, 8, 9 all_l关显
void __irq Timer0_ISR(void);
void cpu_init(void)
{
PINSEL0 = 0x00;
IO0DIR = 0x3FF;//显示分配在P000~P010,段码P000~P007,位码P008~P010
flag_dis=1;
if(timeout > 0===============================
//display共阳极动态扫描显示
//======================================
display()
{
//WDT_CONTR=0x3c;