第一范文网 - 专业文章范例文档资料分享平台

嵌入式系统课程设计报告

来源:用户分享 时间:2025/6/28 9:04:50 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

四、源程序

#include config.h

#define TASK_STK_SIZE 64

#define key 0x00001000 //按键 #define adstart 0x00002000 //AD采样开始 #define adend 0x00004000 //AD结束

const uint32 led_code[16]={ 0x0000003F,0x00000006,0x0000005B,0x0000004F, 0x00000066,0x0000006D,0x0000007D,0x00000007, 0x0000007F,0x0000006F,0x00000077,0x0000007C, 0x00000039,0x0000005E,0x00000079,0x00000071 };

OS_STK Task0Stk[TASK_STK_SIZE];

11

OS_STK Task1Stk[TASK_STK_SIZE]; OS_STK Task2Stk[TASK_STK_SIZE]; INT32U i;

void Task0(void *data); void Task1(void *data); void Task2(void *data);

/********************************************************************************************************* 函数名称: main

功能描述: c语言的主函数,由它启动多任务环境

********************************************************************************************************/ int main (void) {

OSInit(); //初始化

OSTaskCreate(Task0, (void *)0, &Task0Stk[TASK_STK_SIZE - 1],1); OSTaskCreate(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE - 1],2); OSTaskCreate(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE - 1],3); OSStart(); return 0; }

void delay(INT32U t) //延时子程序 { uint32 x,y; for(x=t;x>0;x--) for(y=110;y>0;y--); }

void L_Init (void) //初始化

{

PINSEL0=0x00000000;

PINSEL1=0x00000000; IODIR|= 0x00002fFF; }

/********************************************************************************************************* 函数名称:Task0

功能描述: 第一个任务,进行初始化目标板和建立其它任务。

********************************************************************************************************/ void Task0(void *p_arg) {

p_arg = p_arg; TargetInit();

12

L_Init(); for(;;) //无限for循环 {

while((IOPIN&key)!=0);//假如按键没有按下,则一直循环在这里 L_Init();

while((IOPIN&key)==0);//按键被按下又弹起,程序顺序执行 IOCLR= 0x0000ffFF; //清零低16位 OSTaskSuspend(OS_PRIO_SELF); } }

/**************************************************************************************************** 函数名称:Task1

功能描述: 第2个任务,AD转换。

********************************************************************************************************/ void Task1(void *p_arg) {

p_arg = p_arg; L_Init(); for(;;) {

IOCLR=adstart; //输入高低的脉冲电平 delay(100); IOSET=adstart; delay(100); IOCLR=adstart; delay(100);

L_Init();

while((IOPIN&adend)==0);

IOSET=1<<11; //11位为AD的OE使能端 i=IOPIN;

i=i>>15; //AD的输出OUT8到OUT1分别由15到22位控制 OSTaskSuspend(OS_PRIO_SELF); } }

/************************************************************* 函数名称:Task2

功能描述: 第3个任务,LED显示。

*************************************************************/ void Task2(void *p_arg) {

INT32U gw,sw,bw;

p_arg = p_arg;

13

L_Init(); //动态循环显示数码管 while((IOPIN&key)!=0) //假如按键再次按下,则推出显示循环 {

gw = i_x0010_; /* 取个位数据 */ sw = i_x0010_0/10; /* 取十位数据 */ bw = i/100; /* 取百位数据 */ IOSET=(1<<10)|led_code[gw]; //显示个位 delay(10);

IOCLR=0x00000fff; //消影

IOSET=(1<<9)|led_code[sw]; //显示十位 delay(10);

IOCLR=0x00000fff; //消影

IOSET=(1<<8)|led_code[bw]; //显示百位 delay(10);

IOCLR=0x00000fff; //消影 OSTaskResume(2); } }

五、仿真效果。(用屏幕抓图的方式将PROTEUS运行仿真效果图粘贴在下面)

1、最低采样时仿真显示图

2、最高采样时仿真显示图

14

六、实验心得

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际设计能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多专业知识问题,最后在大家一起学习交流下,终于迎刃而解!

15

搜索更多关于: 嵌入式系统课程设计报告 的文档
嵌入式系统课程设计报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c78cv328r309sc9l3ppnv1xep036fc3019eb_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top