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; /* 取个位数据 */ sw = i0/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
相关推荐: