单片机原理及应用技术课程设计论文

2024-07-02

单片机原理及应用技术课程设计论文(通用6篇)

篇1:单片机原理及应用技术课程设计论文

智能电子钟(LCD显示)

1、设计内容及要求...............................................................................................2 1.1、设计内容..............................................................................................2 1.2、设计要求..............................................................................................2 1.3、撰写设计报告......................................................................................2

2、总体方案设计...................................................................................................2 2.1、方案图................................................................................................2 2.2、面板布置图.........................................................................................2 2.3、方案讨论.............................................................................................3 2.4、明晰任务.............................................................................................4

3、电路原理图......................................................................................................4

4、程序框图.........................................................................................................5 4.1、显示子程序流程图............................................................................5 4.2、实时时钟芯片 1302 读/写数据流程图............................................6

5、编程序................................................................................................................6

6、调试....................................................................................................................6 6.1、软件调试.............................................................................................6 6.2、仿真调试..............................................................................................7

7、自我感想............................................................................................................7

8、参考书目............................................................................................................8 附录:C 语言编程源程序.......................................................................................8 1.设计内容及要求 1.1、设计内容:

以AT89C51 单片机为核心,制作一个 LCD 显示的智能电子钟。1.2、设计要求:

(1)计时:秒、分、时、天、周、月、年。(2)闰年自动判别。

(3)五路定时输出,可任意关断(最大可到16路)。(4)时间、月、日交替显示。(5)自定任意时刻自动开/关屏

(6)计时精度:误差≤1秒/月(具有微调设置)

(7)键盘采用动态扫描方式查询。所有的查询、设置功能均由功能键K1、K2完成 1.3、撰写设计报告

单片机课程设计是以课题或项目设计方式开展的一门课程,具有较强的综合性、实践性,是工科、工程类院校或职业类院校电类专业在校生的必修课,是将单片机原理与应用课程的理论知识转变为应用技术的重要教学环节。这一环节不但能加深对单片机原理的理解,而且还能培养学生的实践动手能力,开发学生的分析、解决问题的能力。单片机课程设计环节的训练能够让学生知道单片机工程项目的制作过程,使学生尽早了解单片机系统的开发过程。

2.总体方案设计 2.1、方案图

2.2、面板布置图

2.3、方案讨论

方案一:采用实时时钟芯片

实时时钟芯片具备年、月、日、时、分、秒计时功能和多点计时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据进行显示,因此计时功能的实现无需占用 CPU 的时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性 RAM,可用来存放需长期保存但有时也需变更的数据,由于功能完善,精度高,软件程序设计相对简单,且计时不占用 CPU 时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。

方案二:软件控制

利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时及秒表计时。该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术 MCS-51 汇编语言程序设计方法,因此,本系统设计采用此种软件控制方法来实现计时。而由于 Atmel 公司 的AT89C51 是一种自带 4KB Flash 存储器的低电压、高性能的 CMOS 8 位微处理器。该器件采用 Atmel 高密度非易失存储器制造技术制造,与工业标准 的MCS-51 指令集和输出引脚相兼容。AT89C51 将多功能 8 位 CPU 和闪存集成在单个芯片中,是一种高效的微控制器,使用也更方便,寿命更长,可以反复擦除 1000 次。形成了功能强大、使用灵活和具有较高性能价格比的微控制器。它的功能强大而且也比较容易购买,故本设计中所选的单片机为 AT89C51 单片机。2.4、明晰任务

采用 AT89C51 单片机作为系统的控制核心。时钟数据通过市场上流行的时钟芯片 DS1302 来获取。DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和 31 字节静态 RAM,可以通过串行接口与计算机进行通信,使得管脚数量减少。实时时钟/日历电路能够计算 2100 年之前的秒、分、时、日、星期、月、年的,具有闰年自动判断调整的能力。定时电路能够实现自定任意时刻自动开/关屏,采用 LCD LM016L 显示年、月、周、天、时、分、秒。通过按键开关实现微调,确保计时精度:误差≤1 秒/月。DS1302 时钟芯片的主要功能特性:

(1)能计算 2100 年之前的年、月、日、星期、时、分、秒的信息;每月的天数

和闰年的天数可自动调整;时钟可设置为 24 或 12 小时格式。(2)31B 的 8 位暂存数据存储 RAM。(3)串行 I/O 口方式使得引脚数量最少。

(4)DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需 3 根线。

(5)宽范围工作电压 2.0-5.5V。

(6)工作电流为 2.0A 时,小于 300nA。

(7)功耗很低,保持数据和时钟信息时功率小于 1mW。

3.电路原理图

4.程序框图

4.1、显示子程序流程图

4.2、实时时钟芯片 1302 读/写数据流程图

5.编程序 源程序见附录部分 6.调试 6.1、软件调试

目前设计过程中容易造成元件和仪器仪表的损坏,而借助 Keil 和 Proteus进行单片机系统的开发,可以节省设计成本,提高设计速度。Keil 软件包是一个功能强大的开发平台,它包括项目管理器、CX51 编译器、AX51 宏汇编器、BL51/LX51 连接定位器、RTX51 实时操作系统、Simulator 软件模拟器及 Monitor51 硬件目标调试器。它是一种集成化程度高的文件管理编译环境,主要功能为编译 C 语言源程序,汇编程序或混合语言源程序,连接和定位目标文件和库,创建 HEX 文件,调试目标程序等。Keil 是目前最好的 51 单片机开

发工具之一。Keil 支持软件模拟仿真(Simulator)和用户目标调试(Monitor51)两种工作模式。前者不需要任何单片机硬件即可完成用户程序仿真、调试,后者利用硬件目标板中的监控程序可以直接调试目标硬件系统。Proteus 是一个完整的嵌入式系统软件、硬件设计仿真平台,它包括原理图输入系统 ISIS、带扩展的 Prospice 混合模型仿真器、动态元件库、高级图形分析模块和处理器虚拟系统仿真模型 VSM。ISIS 是 Proteus 系统的中心,具有超强的控制原理设计环境。ProteusVSM 最重要的特点是能把微处理器软件作用在处理器上,并和该处理器的任何模拟和数字元件协同仿真,仿真执行目标码就像在真正的单片机系统上运行一样,VSM CPU 模型能完整仿真 I/O 接口、中断、定时器、通用外部设备口及其他与 CPU 有关的外部设备,甚至能仿真多个处理器。6.2、仿真调试 Proteus 仿真

7.自我感想

经历过这么多天不间断的课程设计,我们有挺多感触的,从最基本上说我们看到了,也意识到了自己的不足,对于不断克服的各种阻碍也让我们体会到了课程设计的意义所在。对于只接触课本只动笔杆的我们,面临实际的设计尺寸,让我们很是尴尬,都说理论联系实际,真正到联系的时候才发现挺困难的,不过正是理论知识的各种补充才让我们能最终完成任务,然后深深地体会到理论对现实的指导作用。我们现在最缺乏的就是实际工作经验,而理论联系实践并不像我们想象的那么简单,他需要坚实的理论基础和实际工作经验。坚实的理论基础决定了我必须坚持学习新的知识新的理论,完善了自己的知识结构,才能在以后的实际中轻松面对,才能设计出更好的更有益于人们生活与工作的机械,才能跟上时代的步伐,不被淘汰。在这个一边忙着复习忙着考试又要准备课程设计的日子里,真真正正的体会到了时间的宝贵,有点像高中忙忙碌碌的生活,不过能按时完成课程设计对我们来说也是一个莫大的安慰。严谨和细心是做机械设计的必要态度,要想做好一件事,就必须一丝不苟、态度认真。俗话说:“失之毫厘,谬之千里。”在机械设计上尤其应该注意。在以后的工作中,你的很小的一个疏忽将会造成一个公司很大的损失,甚至给用户带去生命危险,而自己也会为自己的不负责任行为付出代价。再者就是设计中要严谨和细心,对于机械是不能出差错的,任何的微小误差都可能产生不可预计的后果,当然对于我们来说就是设计中要走一些弯路,而且在这个严重缺少时间又惦记回家问题的我们来说也是一个很严重的后果。不过,困难虽是难免的,但我们有信心就能并且已经战胜了困难,完成了这个无比揪心的课程设计。因为时间等各种关系设计中难免有些不足还请老师助教给予批评和帮助。

8.参考文献

《MCS-51 系列单片机原理及应用》 孙涵芳 主编 《新概念 51 单片机 C 语言教程》 郭天祥 主编 《51 单片机课程设计》 周向红 主编 《单片机原理及其应用教程》 张元良 主编 附录:C 语言编程源程序

#include #include //--------#define uint unsigned int #define uchar unsigned char //--------/*ucharcode table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf 8, 0x80,0x98,0x88,0x83,0xc6,0xa1,0x86,0x8e};// 共 阳极数码管代码 */ ucharcode xingqi[8]={0x00,0x07,0x01,0x02,0x03,0x04,0x05, 0x06};//星期显示代码 uchar miao,shi,fen,date,month,day,year,year10,set,mun,set_shi,set_fen,time_ flag;// 全 局 定 义

uint year_data,t;//-----sbit SCLK=P3^5;//DS1302 通讯线定义 sbit DIO=P3^6;sbit RST=P3^7;sbit speak=P0^0;sbit DS=P2^0;//595 通讯线定义 sbit SH_CP=P2^1;sbit ST_CP1=P2^2;sbit ST_CP2=P2^3;sbit ST_CP3=P2^4;sbit ST_CP4=P2^5;sbit ST_CP5=P2^6;sbit ST_CP6=P2^7;sbit ST_CP7=P3^0;sbit ST_CP8=P3^1;sbit OE1=P1^0;sbit OE2=P1^1;sbit OE3=P1^2;sbit OE4=P1^3;sbit OE5=P1^4;sbit OE6=P1^5;sbit OE7=P1^6;sbit OE8=P1^7;sbit K1=P3^2;//按键接口定义 sbit K2=P3^3;sbit K3=P3^4;sbit K4=P0^1;sbit K5=P0^2;//-----void write_595(uchar temp)//写 74HC595 一个字节 { uchar temp_595,i;temp_595=temp;for(i=0;i<8;i++)

{

SH_CP=0;

_nop_();_nop_();_nop_();if(temp_595&0x80){ DS=1;} else { DS=0;} _nop_();_nop_();_nop_();SH_CP=1;temp_595<<=1;} } //--------------void delay(uint z)//Nms 延时 { uint x,y;for(x=z;x>0;x--)for(y=112;y>0;y--);} //-------------void delaynus(uint z)//ums 延时 { uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);} //---------------void write(uchar date)//写入 DS1302 一个字节 { uchar temp,i;RST=1;SCLK=0;temp=date;for(i=0;i<8;i++){ SCLK=0;if(temp&0x01)DIO=1;else DIO=0;SCLK=1;temp>>=1;} } //-----uchar read()//读出 DS1302 一个字节 { uchar a,temp;RST=1;for(a=8;a>0;a--){ temp>>=1;SCLK=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();SCLK=0;if(DIO){ temp=temp|0x80;} else { temp=temp|0x00;} } return(temp);} //---void write_1302(uchar add,uchar dat)//写 DS1302 数据 { RST=0;SCLK=0;RST=1;write(add);write(dat);SCLK=1;RST=0;} //----------uchar read_1302(uchar add)// 读 DS1302 数据 { uchar temp;RST=0;SCLK=0;RST=1;write(add);temp=read();SCLK=1;RST=0;return(temp);} //------------void display()//显示子程序 { miao=read_1302(0x81);//读秒 fen=read_1302(0x83);//读分

shi=read_1302(0x85)&0x3f;//读时 date=read_1302(0x87);//读日 month=read_1302(0x89);//读月 year=read_1302(0x8d);//读年 day=read_1302(0x8B);//读星期 write_595(miao);//显示秒 ST_CP1=0;ST_CP1=1;ST_CP1=0;delaynus(10);write_595(fen);//显示分 ST_CP2=0;ST_CP2=1;ST_CP2=0;delaynus(10);write_595(shi);//显示时 ST_CP3=0;ST_CP3=1;ST_CP3=0;delaynus(10);write_595(date);//显示日 ST_CP4=0;ST_CP4=1;ST_CP4=0;delaynus(10);write_595(month);//显示月 读 ST_CP5=0;ST_CP5=1;ST_CP5=0;delaynus(10);write_595(year);//显示年 ST_CP6=0;ST_CP6=1;ST_CP6=0;delaynus(10);write_595(xingqi[day]);//显示星期 ST_CP7=0;ST_CP7=1;ST_CP7=0;delaynus(10);} //----------void ds1302_init()//1302 初始化 { RST=0;SCLK=0;/* write_1302(0x80,0x00);//设置初始值 SEC write_1302(0x82,0x00);//设置初始值 MIN write_1302(0x84,0x00);//设置初始值 HR write_1302(0x86,0x00);//设置初始值 DATE write_1302(0x88,0x00);//设置初始值 MONTH write_1302(0x8A,0x00);//设置初始值 DAY */ write_1302(0x8C,0x10);//设置初始值 YEAR } //--------------void PORT_INIT()//端口初始化 { P0=0XFE;P1=0X00;P2=0X00;P3=0XFC;} void time_init()//定时器初始化 { TMOD=0x11;//设置定时 器 01 都为工作方式 1 TH0=(65536-50000)/256;//装入初值 TL0=(65536-50000)%256;TH1=(65536-10000)/256;//装入初值 TL1=(65536-10000)%256;PT0=1;//T0 定时器优先级最高 EA=1;//开总中断

ET0=1;//开定时器 0 中断 ET1=1;//开定时器 1 中断 TR0=1;//启动定时器 0 TR1=1;// 启动定时器 1 } //--------------void main(void)//主程序 { PORT_INIT();ds1302_init();time_init();year=read_1302(0x8d);//读年数据 year_data=0x2000|year;write_595(year_data>>8);//显示 2010 年的 20 字样 ST_CP8=0;ST_CP8=1;ST_CP8=0;set_shi=0x09;//闹钟初始值设定 set_fen=0x39;time_flag=0;//标志位 set=0;while(1){ switch(set){ case 0: //设置秒 { display();// 显 示 子 程 序

if((shi==set_shi)&&(fen==set_fen)&&(time_flag==0))小时和分钟 { speak=~speak;if((K2==0)&&(time_flag==0))//按键 K2 停 止闹钟响 { P0&=0XFE;time_flag=1;} delay(10);} } break;} if(fen==set_fen+1)// 当 不 按 下 闹 钟 停止按键,一分钟后自动停止闹 钟 { P0&=0XFE;time_flag=0;} } } //--------void time0()interrupt 1 // 定时 器 0 中断 { TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;mun++;if(mun==15){ mun=0;switch(set){ case 1: //设置秒闪烁 {OE1=1;delay(300);OE1=0;} break;case 2: //设置分闪烁 { OE2=1;delay(300);OE2=0;} break;case 3: //设置时闪烁 { OE3=1;delay(300);OE3=0;} break;case 4: //设置日闪烁 { OE4=1;delay(300);OE4=0;} break;case 5: //设置月闪烁 { OE5=1;delay(300);OE5=0;} break;case 6: //设置年闪烁 { OE6=1;OE8=1;delay(300);OE6=0;OE8=0;} break;case 7: //设置星期闪烁 { OE7=1;delay(200);OE7=0;} break;case 8: //设置闹钟闪烁 { OE2=1;OE3=1;delay(200);OE2=0;OE3=0;} break;} } TR0=1;} //-----------void time1()interrupt 3 // 定时器 1 中断 { TR1=0;//先关定时器 TH1=(65536-20000)/256;TL1=(65536-20000)%256;//-if(K1==0){ delay(10);if(K1==0){ set++;if(set==9){ set=0;write_1302(0x80,miao);//设置初始值 SEC write_1302(0x82,fen);//设置初始值 MIN write_1302(0x84,shi);//设置初始值 HR write_1302(0x86,date);//设置初始值 DATE write_1302(0x88,month);// 设置初始值 MONTH write_1302(0x8A,day);//设置初始值 DAY write_1302(0x8C,year_data);//设置初始值 YEAR } t=50000;while((!K1)&&t){ t--;} } } //-------if(K2==0){ delay(10);if(K2==0){ switch(set){ case 1: { miao++;if((miao&0x0f)>0x09){ miao+=0x10;miao&=0xf0;} if(miao==0x60){ miao=0x00;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen++;if((fen&0x0f)>0x09){ fen+=0x10;fen&=0xf0;} if(fen==0x60){ fen=0x00;} ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi++;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x24)//24 小时制 { shi=0x00;} } else { shi=(shi|0x80)+1;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x12)//12 小时制 { shi=0X80;} } write_595(shi);//显示时 ST_CP3=0;ST_CP3=1;ST_CP3=0;} break;case 4: { date++;if((date&0x0f)>0x09){ date+=0x10;date&=0xf0;} if((date==0x32)&&((month==0x01)||(month==0x03)||(month==0x05)||(month ==0x07)||(month==0x08)||(month==0x10)||(month==0x12))){ date=0x01;} else if((date==0x31)&&((month==0x04)||(month==0x06)||(month==0x09)||(month ==0x11))){ date=0x01;} else if((date==0x29)&&(month==0x02)&&((year_data|read_1302(0x8d))%100!=0)& &((year_data|read_1302(0x8d))%400!=0)){ date=0x01;} else if((date==0x30)&&(month==0x02)&&((year_data|read_1302(0x8d))%100==0)& &((year_data|read_1302(0x8d))%400==0)){ date=0x01;} write_595(date);ST_CP4=0;ST_CP4=1;ST_CP4=0;} break;case 5: { month++;if((month&0x0f)>0x09){ month+=0x10;month&=0xf0;} if(month==0x13){ month=0x01;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data++;if((year_data&0x000f)==0x0a){ year_data+=0x0010;year_data&=0xfff0;} if((year_data&0x00ff)==0xa0){ year_data+=0x0100;//向前进 1 year_data&=0xff00;//后面尾数归 0 } write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day++;if((day&0x0f)==0x08){ day=0x01;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K2)&&t){ t--;} } } //-------------------------if(K3==0){ delay(10);if(K3==0){ switch(set){ case 1: { miao--;if((miao&0x0f)==0x0F){ miao&=0xf9;//减到 0 后,再减一次就归 0, } if(miao==0xF9)//当全部减到 00 时,再 减一次就为 59 { miao=0x59;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen--;if((fen&0x0f)==0x0F){ fen&=0xf9;} if(fen==0xF9){ fen=0x59;} write_595(fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi--;if((shi&0x0f)==0x0F){ shi&=0xf9;} if(shi==0xF9)//24 小时制 { shi=0x23;} } else { shi=(shi|0x80)-1;if((shi&0x0f)==0x0F){ shi&=0xf9;} ST_CP4=0;} break;case 5: { month--;if((month&0x0f)==0x0F){ month&=0xf9;} if(month==0x00){ month=0x12;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data--;if((year_data&0x000f)==0x0F){ year_data&=0xfff9;} if((year_data&0x00f0)==0xF0){ year_data&=0xf999;} write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day--;if((day&0x0f)==0x00){ day=0x07;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K3)&&t)//松手检测 { t--;} } } //---switch(set){ case 8: { if(K4==0){ delay(10);if(K4==0){ if((read_1302(0x85)&0x80)==0x00){ set_shi++;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x24)//24 小时制 { set_shi=0x00;} } else { set_shi=(set_shi|0x80)+1;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小时制 { set_shi=0X80;} write_595(set_shi);// 显示闹 钟的时 ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}

if(set_fen==0x60)

{

set_fen=0x00;

} write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小时制 { set_shi=0X80;} write_595(set_shi);// 显示闹 钟的时 ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}

if(set_fen==0x60)

{

set_fen=0x00;

} write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } } } } //------------------------if(((K4==0)||(K5==0))&&(set==0)){ delay(10);if(((K4==0)||(K5==0))&&(set==0)){ write_595(set_shi);//显示闹钟的时 ST_CP3=0;ST_CP3=1;ST_CP3=0;write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;P1=0XF9;while((!K4)||(!K5));P1=0X00;} } //----------TR1=1;//退出时开定时器 } } //----------

篇2:单片机原理及应用技术课程设计论文

一、课程设计内容编写C程序进行跑马灯及键盘控制根据所用芯片设计外围电路电路焊接程序下载入所焊电路进行系统软硬件综合调试

二、器材

9个二极管、9个330Ω的电阻、11个10K的电阻、2个220Ω的电阻、4个

5.1K的电阻、1个整流二极管IN4007、1个三端稳压集成电路(+5V)LM7805、2个10μF/25V的电容、1个三端稳压芯片(+3.3V)LM1117、1个12MHZ无源晶振、2个33瓷片电容、2个16脚的插槽、2个CD4511BE芯片、1个20脚的插槽、1个74HC573N芯片、1个24脚的插槽、2个七段数码管、1个14脚的插槽、1个HD74HC21P芯片、1个40脚的插槽、1个AT89S52芯片、1个10脚下载口、19个按键、若干细导线。

三、电路结构

四、程序设计

1.跑马灯和键盘控制:

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit P27=P2^7;

sbit P26=P2^6;

uchar a;

uint key;

uchar code table[]={0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0x00,0x11,0x22,0x33,0x44,0x55};

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

main()

{

P1=0xF0;

P2=0x00;

P0=0x00;

a=0x01;

P26=0;

P27=1;

key=0;

EA=1;

EX0=1;

EX1=1;

IT0=0;

IT1=1;

PX0=0;

PX1=1;

while(1);

}

display(uint num)

{

P26=0;

P0=table[num];

delay(20);

P26=1;

P1=0Xf0;

}

void int0()interrupt 0

{

uint i,j,pin;

P27=0;

for(i=0;i<4;i++)

for(j=0;j<4;j++)

{

P1=0xFF&(~(0x01<<(3-i)));

pin=P1;

if(((pin>>(4+j))&0x01)==0)

{key=i+j*4;

IE0=0;

return;

}

}

display(key);

}

void int1()interrupt

2{

P26=1;

while(1)

{

a=_crol_(a,1);

P27=1;

P0=a;

delay(1000);

P27=0;

}

}

2.秒表:

#include

#define uchar unsigned char

#define uint unsigned int

sbit P27=P2^7;

sbit P26=P2^6;

uint a;

uchar b;

main()

{

TMOD=0x01;

TH0=0x3C;

TL0=0xB0;

ET0=1;

EA=1;

TF0=0;

TR0=1;

P0=0xFF;

P2=0x00;

P26=0;

P27=1;

while(1);

}

void Timer0_Overflow()interrupt

1{

TH0=0x3C;

TL0=0xB0;

{ if(a==20)

{a=0;

b=b+1;

if((b&0x0F)==0x0A)b=b+6;

P0=b;

}

a++;

if(b>0x59){b=0x00;P0=b;}

}

}

五、结果分析

1.外部中断0控制按键,此时令P27=0,让8个二极管锁存为初始状态,全灭。同时令P26=0,然后按下按键可以在数码管上同时显示相应的数字,按下16个键可以显示0-9-0-5。

2.外部中断1控制跑马灯,此时令P26=1,让数码管锁存为初始状态,不亮。同时令P27=1,二极管就能大约1秒循环。

3.显示60秒,令P26=0和P27=1,让数码管和二极管都亮,二极管按照0-59循环,数码管就显示0-59秒。

篇3:单片机原理及应用技术课程设计论文

一、单片机原理及应用设计课程教学现状

单片机原理及应用设计这门课程是计算机科学与技术专业的核心课程之一, 其理论的重要性不言而喻, 但目前其在实验教学方面大都停留在传统的实验模式上, 距离培养学生实验动手能力和创新能力还有较大差距。据了解, 大多学生反映, 理论知识可以基本掌握, 验证性的实验也能顺利完成, 但要真正完成一个实际项目, 却无从入手。导致出现这种现象原因很多, 笔者认为主要有以下几点:

(一) 教学模式方面的原因。

在传统的教学模式下, 教师一般主要注重于理论知识的完整性。理论上从单片机的结构讲起, 然后是汇编指令和C语言编程, 接着是硬件接口, 最后再讲一两个实例, 课时基本上就用完了, 再想讲其它东西就没时间了。所开设的实验也大都为基本实验, 主要注重于对学生基本原理和基本方法的训练, 最后只能做几个综合性实验或做一个简单的设计, 整个的学习就结束。

(二) 教师方面的原因。

自从高校扩招以后, 学生的数量急剧增加, 这就导致了师资力量严重短缺, 每个教师承担的课时量都很大, 教学压力过重, 对于单片机原理及应用设计这类专业性和实验性都非常强的课程, 存在着精力投入不够的问题。

(三) 评价体系方面的原因。

就评价体系而言, 目前通行的仍然是以分数的高低来评价学生学习成绩的好坏, 一般是采用平时成绩、实验成绩、考试成绩各占一定的比例来得到学生的最后成绩, 对有些课程来说这种方法是比较科学的, 但对于单片机原理及应用设计这门课来说, 就会存在这样的问题:学生成绩不低, 但是一旦面临实际问题时, 往往无从下手, 这样就没有达到本课程的教学目标。

二、解决单片机原理及应用设计课程教学现状的对策

为了提高单片机原理这门课程的教学质量, 培养学生解决实际问题的能力, 提高设计性实验的开设质量是本门课程教学改革的重点, 建议从以下几点来改革。

(一) 教学模式。

提出和采用新的教学模式, 在实验开设时要特别注重开出的设计性实验的质量。新的教学模式主要包括理论教学和实验教学两个方面, 在理论教学中, 单片机的结构和基本指令讲解要精, 应通过具体实例将相关知识串起来, 力求通过具体实例的讲解达到以较少的理论课时让学生真正掌握单片机的结构和指令的目的。在实验方面, 则采用以开设设计性实验为主验证性实验为辅的方法, 并增加实验课的课时数。适量开设验证性实验, 将大部分实验放在课堂外, 由学生自主完成, 同时增加更多的设计性实验, 供学生们选做, 在老师的精心指导下, 让学生在课外准备, 课内完成, 切实提高学生的实战技能。

(二) 教师的定位。

教师应自觉提高自身的素质, 保证有足够的精力投入到教学中去。教师可以通过平时的积累, 形成难度、层次区分较为合理的项目选题库和作品库, 为教学创造良好的条件, 既可对后续学生的实验起到示范和引导作用, 又减轻了今后的教学负担。要做好这些, 就要求教师牢固树立以教学为中心的观点, 保证足够的精力投入到教学中去。

(三) 评价体系。

作为评价体系, 就是要改变传统的一切以分数论英雄的模式。就单片机原理及应用设计这门课来讲如果学生只是掌握了一些理论知识而没有实战能力, 即使分数再高都不算是学好作为对学生的评价, 笔者认为一定要确立以实践能力为主题的评价体系, 通过对学生所做项目的难易程度、完成的效果等验收情况来给出适当的评价。

三、设计性实验开设与评价体系建立中要注意的几个问题

想搞好单片机原理及应用设计这门课的课程建设, 提高学生的实战能力, 就要重点开设设计性实验。笔者认为要特别注意抓好以下四个方面的结合:

(一) 理论与实验的结合。

理论教学是单片机课程教学中必不可少的组成部分, 但其开设不能再采用传统的教学方法了, 而应设计出一种项目教学或者专题讲授的方式来进行。一是要讲透基础部分, 可以分为单片机的内部结构、指令系统、程序的编写及硬件接口四个专题。二是要针对该课程的特点, 做好五个简单项目, 如外部中断、定时器中断、并口扩展、串口通信、AD和DA转换。三是要再对相关知识点全面整合, 综合演练实战几个较为复杂的综合性项目, 四是制作出作品进行演示。按照这种设计思路, 理论教学大致课时数为40课时, 实验课时数为30课时。据上述分析, 在实验教学中应充分重视设计性实验的开设。与理论教学相对应, 每讲完一个项目时, 就要针对该项目再开设一个设计性实验, 每个实验四课时左右。通过简单的和复杂的项目训练之后, 学生就能基本上掌握单片机开发和设计的基本方法和技能了。在进行实验时, 应要求学生在设计性实验的基础上进一步深化, 将多个部分综合起来设计出一个功能更为完备的实际应用系统。这是一个由理论出发, 通过基础实验、简单的设计性实验、复杂的设计性试验, 最后完成复杂的课程设计的过程, 符合循序渐进的教学规律, 实现了课程理论与实践的完美结合。在此过程中, 设计性实验的开设基本覆盖了本课程的所有知识点, 是学生牢固掌握基本理论, 熟练掌握设计思路, 综合设计的基本方法, 从而达到学以致用的根本目的。

(二) 验证性实验与设计性实验的结合。

验证性实验是指为了验证已经学习过的理论知识所设置的实验;设计性实验是指给定实验目的和实验要求, 由学生自行设计实验方案并且加以实现的实验。验证性实验作为传统的教学方法, 在现在的实验教学中有一定的作用, 可为设计性实验的开设提供必要的基础, 因此在开设设计性实验前开设验证性实验是非常必要的。以验证性实验做基础, 然后在此基础上进行改造, 此方法具有很强的操作性, 并且有利于验证性实验到设计性实验的自然衔接。

(三) 课堂与课外的结合。

设计性实验的开设还要做好课堂与课外的衔接。因为设计性实验是要学生自行设计实验方案并加以实现的实验, 所有的实验不可能仅在几个课时的实验课上完成, 因此主要工作还要在课外时间进行。一方面, 制定实验方案、设计原理图、制作实物等还要在课外完成, 实验课还要在老师的指导下进行调试和测试。另一方面, 设计性实验很难一次性完成, 往往需要多次尝试修改才行, 这些都必须在课外进行。当然要使设计性实验真正达到良好的教学效果, 除了做好理论教学和实验教学的衔接外, 与课外的结合尤其重要, 特别要做好实验室的开放, 让学生们在课外时间能够方便地利用实验室的有利资源, 也可鼓励学生自备一些比较简单的单片机开发的工具, 如简易开发板、烧录器等。

(四) 评价标准的再定位与评价体系建立的思路。

验证性实验一般只涉及到一门课程的一个章节或者是一个知识点的内容, 学生通过验证性实验, 可以使所学的理论知识具体化和形象化, 进而加深对所学知识的理解和掌握, 从而提高了动手能力。设计性实验要突出它的自主设计性, 它可以是对单一知识的简单运用, 也可以是对多知识点的综合运用, 给出实验目的、要求和实验条件, 由学生自行设计实验方案并加以实现, 所以设计性实验带有试探性、研究性, 在时间上也需要课内与课外相结合。由于验证性实验与设计性实验开设的目标不同, 所以最终的考核方式也不同。对于验证性实验而言, 教师可以直接根据学生所做的实验来评判其实验成绩。采用传统的百分制, 只可以评价学生是否掌握了基本理论和设计方法。但设计性实验所涉及的知识点数量的不同, 综合运用的效果的不同, 设计方案是否得当, 步骤是否简易可行, 实验的成本、效果是否令人满意等等, 都不好一概而论, 需要结合各方面来进行综合的评定。因此设计性实验的考核要坚持这样一个原则:淡化结果, 注重过程。对于设计性实验应该要更加重视学生在整个实验设计过程中的表现, 测定结果只可作为考核的次要因素。学生在设计过程中是否有独到新颖的想法, 整个实验思路逻辑是否清楚, 实验过程细节严密还是顾此失彼结果是否可信等都是评定设计实验成绩的重要因素。实验考核要充分鼓励和肯定学生在设计过程中所表现出的敢于挑战、主动学习, 大胆创新的精神以及由此带来的思维水平和实践水平的全面提高。设计性实验不宜采用传统的百分制来评定, 宜采用优、良、中、及格、不及格这五个档次来进行评定, 而且应在设定实验指标上着手, 针对具体实验进行不同的设定, 才能比较准确地评价学生的实验能力。当然这一点仍需在实践中不断探索和改进。

四、结语

单片机原理与接口技术课程是计算机科学与技术专业重要的核心课程之一, 因此必须更加重视设计性实验教学的改革, 提高设计性实验开设的质量, 做好理论与实验的结合。只有做到验证性实验与设计性实验的结合, 课堂和课外的结合, 完善设计性实验的评价体系, 才能培养出符合社会发展所需要的高素质人才。

参考文献

[1].刘朝辉.本科教学的质量危机及应对措施[J].湖南医科大学学报 (社会科学版) , 2010

[2].文莉.高校本科教学质量监控体系[J].湖南科技学院学报, 2009

[3].吕闰生, 张子戌, 胡斌.教学研究型大学本科教学质量监控体系建设与实践[J].河南理工大学学报 (社会科学版) , 2011

篇4:单片机原理及应用技术课程设计论文

关键词:工作过程系统化;单片机;典型工作任务;课程设计

中图分类号:G712文献标识码:A文章编号:1005-1422(2014)09-099-02

《单片机原理及应用》是机电一体化技术专业和电子应用技术专业的一门必修专业技术核心课程。该课程是一门实践性和综合性非常强的专业技能课程,它是毕业生在未来职业生涯中,从是单片机程序的编程、控制系统的自动化控制等岗位的重要课程。培养学生具有单片机的编程、硬件的结构设计的能力及团队协作等综合素质,对提升毕业生就业能力与就业质量具有重要意义。

在传统的单片机课程设计中,理论学习和实践应用基本相脱节,理论部分又相对抽象,故学生的学习热情不高。因此重新设计单片机课程已经迫在眉睫,而基于工作过程系统化的课程设计,则是一个比较有利于提高教学质量的途径。

一、基于“工作过程系统化”课程整体设计理念

打破传统学科型的课程模式,针对实际工作体系重新构建课程模式,转变为基于工作过程的项目课程开发与设计,工作任务为中心、项目课程为主体的课程体系,让学生在完成具体项目的过程中来构建相关理论知识,并发展职业能力。

(1)根据岗位需求和自动化控制系统实践能力的要求,设置课程内容,实现课程内容和职业岗位需求紧密结合;(2)依据工作过程中活动与知识的关系来设计课程,突出工作过程在课程框架中的主线地位,按照工作过程的需求来选择知识,以工作任务为中心整合理论与实践内容;(3)以职业能力为主线:真正以“能力”为主线来设计课程。要按照工作的相关性,而不是知识的相关性来确定课程设置。

二、基于“工作过程系统化”课程开发基本流程

工作任务分析确定——职业行动领域——学习领域——学习情境(工作任务分析与学习领域转换,行动领域归纳与学习情境设计,在课程开发时要平行推进)。具体流程的起点是市场调研,经过人才培养模式改革研讨会、职业行动领域分析、职业行动领域专家评审确认学习领域开发分析、教学计划开发制定、学习领域与学习情境设计等环节,最后确定课程标准体系。

三、基于“工作过程系统化”课程整体设计

(一)课程学习目标设计

根据“工作过程系统化”课程设计理念,按职业活动设计教学活动,在完成工作任务的行动中学习专业知识技能并获得工作过程知识,学生在完成项目工作任务的过程中,构建自己的知识体系,形成包括专业能力、方法能力和社会能力在内的综合职业能力。本课程总体目标是实现学生能力、知识、情感态度与价值观等不同层面职业素养的综合提升和协调发展,培养可持续发展的满足企业需求的技能人才的目标。

1.能力目标:(1)具备一定的单片机硬件图的表达、阅读、分析能力;(2)具备一定单片机C语言编程的能力;(3)具备单片机硬件扩展的能力;(4)初步具备单片机的应用能力如:能应用单片机设计LED广告灯、电子时钟、交通灯远程控制等;(5)对单片机控制电路系统有一定的故障检修能力。

2.知识目标:理解单片机的结构及其工作原理,了解单片机的特点及其发展过程;掌握单片机的指令格式、寻址方式、数据传送类指令、算术运算类指令等各种指令系统。掌握单片机软件编程的方法;掌握单片机的硬件结构及其硬件扩展的方法。

3.职业目标:具有实事求是的科学态度和吃苦耐劳的实践意识;具有开拓和创新精神,具有良好的职业道德和职业素质。

(二)课程内容设计

基于工作过程导向的《单片机原理及应用》课程内容是以学生为中心设计的。它强调以学生直接经验的形成来掌握融合于各项实践行动中的知识、技能和技巧。为了保证学生毕业后能够胜任有关岗位的要求,课程组要与企业专家共同分析单片机技术相关岗位的工作过程与工作任务,明确单片机技术课程对应的职业岗位能力,以工作岗位提取的典型真实产品作为载体,将传统课程体系中的知识、技能、素质内容由易到难分序化为若干个教学项目。根据学生的认知规律以及职业能力成长规律,将课程内容化分为LED彩灯控制与制作、抽奖器设计、数码管电子钟设计、LED点阵屏设计、交通灯远程控制、智能小车控制、数字电压表设计、LCD多功能电子万年历制作等8个项目,又将每一项目分解成2~5个工作任务。各项目的任务内容在授课顺序上符合前后知识的连贯性,前面的内容应为后面的做准备,后面的内容在不断注入新知识的同时,也应该对前面学过的知识与技能进行适当的重复和巩固。

基于工作过程系统化的《单片机原理及应用》课程设计与改革探讨

(三)教学方法与手段设计

1.基于教与学的教学方法。打破学科型课程教学以知识灌输、学生被动接受、实践与理论脱节的实施方式。形成主要进行任务实施、学生主动构建,融教、学、做一体的实施方式;以学生为中心,以教师为主导,完成从明确任务、制定计划内、实施检查到评价反馈整个过程;在培养学生专业能力的同时,促进学生关键(核心)能力的发展和综合素质的提高的特点。

2.情境教学。情境教学是构建接近真实工作环境的情景,将教室与实训室合二为一,形成仿真的工作场所,使教学过程变为生产过程,学习任务变为工作任务,使学生通过学习亲身体验工作,通过与企业合作,学校实训场所与企业生产情景一致,学生日常管理模式与企业一致。采用行动导向教学模式,教、学、做过程中,实行以学生为主体的教学互动,以活动为导向的自主学习。

3.案例教学法。如讲解单片机编程知识时,引入生活、工业控制实例等开展案例教学,如抢答器、电子时钟、交通灯制作等案例,增加学习兴趣和动力,又为学生利用所学知识解决相应的实际问题奠定基础。

4.项目教学法。以生产过程为载体开发教学项目,整个教学围绕各个项目的解决而展开,教师提出引导性问题,学生查找资料进行决策分析,制定出计划,并进行实施,引导学生自主思考。

另外,充分利用网络教学手段(如现在流行的微课、幕课及模拟软件等),提供了网络教学平台,提高学生自主学习的能力。还充分利用现代化多媒体教学手段,提高教学效率。

(四)考核与评价

根据《单片机原理及应用》课程特点,打破传统的考核方式,将每个学习领域的理论教学、实践教学、实习实训、技能认证融为一体进行综合测评,着重考查学生的应用能力。采取过程考核、学校组织技能竞赛考核和结果考核(期末考核)相结合的考核方法。其中过程考核又分为学生自评、学生互评和教师评价相结合;学校组织技能竞赛考核,主要考核学生的通用技能与专业技能;期末考核主要检查学生对基本理论、基本概念的掌握情况以及对知识的综合运用能力。

四、小结

本文介绍了《单片机原理及应用》课程按照基于工作工程导向的设计的理念、对课程的目标设计、内容设计、教学方法设计、资源设计也进行了探讨,实现了课程的初步整体设计,这对《单片机原理及应用》课程的教学具有一定的指导意义。其中教学方法与手段设计方面,采用基于工作过程的“项目引领、任务驱动”教学模式,考核与评价方面,采取过程考核、学校组织技能竞赛考核和结果考核(期末考核)相结合的考核方法,使《单片机原理及应用》课程的学习气氛发生了很大变化,学生的主体意识、协作精神明显增强,职业能力和创造性得到了很好的发展,教学质量明显提高。

参考文献:

[1]石伟平,徐国庆.职业教育课程开发技术[M].上海:上海教育出版社,2006.

[2]王艳春.单片机课程教学改革的实践与探讨[J].吉林广播电视大学学报,2005(2):74-75.

[3]李学峰.基于工作过程导向开发高职课程的“3343”模式[J].中国职业技术教育,2008(19).

[4]罗建,李艳梅.《单片机原理与应用》教学改革[J].四川师范学院学报,2003(1):44-47.

篇5:单片机原理及应用技术课程设计论文

课程编号:13033070 课程类别:必修课

适用专业:电气信息类

学时:10 教研室主任:姜志成大纲执笔人:李春华

大纲审批人:付家才

一、课程设计的性质及目的

1.了解并掌握单片机的原理、结构、指令、接口及应用。

2.提高综合运用所学的理论知识独立分析和解决问题的能力。3.掌握汇编语言程序设计和调试。4.掌握C-51语言的设计和调试。

二、课程设计的要求

1. 根据设计要求,画出硬件接线图及程序的总体流程图,然后进行各控制模块的硬件设计及软件设计。

2.掌握如何应用单片机仿真器来开发应用系统及仿真调试的过程。

三、参考题目

题目一 校园作息时间控制系统

设计要求:

1.作息时间要求实现对上下课打铃、教学楼照明、学生宿舍灯、校园路灯四个开关量的精确控制。月时间累计误差≤1分钟。

2.能实时显示时间,并方便定期进行时间校准。

3.根据应用系统的要求,初步掌握总体结构设计的方法和构思,从中选择一种最佳设计方案。

4.根据应用系统结构规模的要求,掌握单片机外部扩充系统硬件设计的基本过程。

题目二 交通信号灯控制系统

设计要求:

1.设有一个南北(SN)向和东西(WE)向的十字路口,两方向各有两组相同交通控制信号灯,每组各有四盏信号灯,分别为直行信号灯(S)、左拐信号灯(L)、红灯(R)和黄灯(Y),交通控制信号灯布置如图1所示。

2.根据交通流量不同,交通信号灯的控制可实现手动、自动两种控制。平时使用自动控制,高峰区可使用手动控制。手动控制时,用户通过键盘对交通信号灯进行人工控制;自动控制时,交通信号灯控制规律用图2状态转换图来描述。

图1十字路口交通控制信号灯示意图

图2交通控制信号灯控制规律示意图

题目三 环境温度监测系统

设计要求:

1.可以监测8点环境温度信号,可以扩充;

2.测量范围为0.00℃~99.9℃,可以扩充到-55℃~+125℃,精度为±0.5℃; 3.用4位数码管进行循环显示,其中最高位显示通道提示符A~H,低3位显示实际温度值,每秒切换一个通道进行轮流显示;

4.可以随时查看指定通道的温度值(扩充功能)。

四、教学参考文件与教学形式

教学参考文件: 〔1〕付家才,《单片机控制工程实践技术》,化学工业出版社,2003年 〔2〕胡汉才,《单片机原理及接口设计》,清华大学出版社,2002年 〔3〕康华光,《模拟电子技术》,高等教育出版社,2004年 教学形式:根据课程设计大纲的要求,采取指导的形式。

五、考核方式及成绩评定标准

考核方式采取设计报告与实际操作,根据设计的情况和实际操作效果给出成绩,其中设计报告占60%,日常管理(包括迟到、旷课、卫生等)占10%,实际操作占30%。成绩采用优、良、中、及格和不及格五级分制评定。

六、其他必要的说明

篇6:单片机原理及应用技术课程设计论文

——节日彩灯控制器的设计

业:

级:

名:

号:

2014年2月

1.课程设计目的

1.1巩固和加深对单片机原理和接口技术知识的理解;

1.2培养根据课题需要选学参考书籍、查阅手册和文献资料的能力; 1.3学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法; 1.4掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法; 1.5能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图和流程图。

2.课程设计要求

以单片机为核心,设计一个节日彩灯控制器: P1.2(S0)—开始,按此键则灯开始流动(由上而下)。P1.3(S1)—停止,按此键则停止流动,所有灯为暗。P1.4(S2)—上,按此键则灯由上向下流动。P1.5(S3)—下,按此键则灯由下向上流动。实验原理

本题目本质上是由按键控制功能的流水灯,LED工作的方式通过键盘的扫描实现。其中的LED采取共阳极接法,通过依次向连接LED的I/O口送出低电平,可实现题目要求的功能。

3.硬件设计

3.1 控制器中AT89C51单片机硬件结构

AT89C51是一种低功耗/低电压、高性能的八位CMOS单片机,片内有一个4KB的FLASH可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory),它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器技术,而且其输出引脚和指令系统都与MSC—51兼容。片内置通用8位中央处理器(CPU)和FLASH存储单元,片内的存储器允许在系统内改编程序或用常规的非易失性存储器编程。因此,AT89C51是一种功能强、灵活性高且价格合理的单片机,可方便的应用于各种控制领域。

3.2主要元器件

1)电阻:10KΩ(1个)、200Ω(8个)、500Ω(2个)2)电容:10μF(1个)、30pF(2个)3)LED灯(8个)、按钮(4个)、晶振

3.3 原理图

4.软件设计

4.1 设计思想

程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件也占有重要的地位。

在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。4.2软件流程图

4.3 源程序 ORG

0000H AJMP START ORG START: MOV

0030H P0,#0FFH A,#0FEH P1.2,LOOP P1.3,LOOP1 P1.4,LOOP2 P1.5,LOOP3

START MOV JNB JNB JNB JNB AJMP LOOP: MOV

P0,A

DEL LCALL JNB RL AJMP LOOP1: MOV

JNB

JNB AJMP LOOP2: JNB

JNB

JNB

MOV

LCALL

RL AJMP LOOP3: JNB

JNB

JNB

MOV

LCALL

RR AJMP DEL: MOV DEL1: MOV DEL2: MOV DEL3: DJNZ

DJNZ DJNZ RET END

P1.3,LOOP1 A

LOOP

P0,#0FFH P1.4,LOOP2 P1.5,LOOP3

LOOP1

P1.2,LOOP P1.3,LOOP1 P1.5,LOOP3 P0,A

DEL A

LOOP2

P1.2,LOOP P1.3,LOOP1 P1.4,LOOP2 P0,A

DEL A

LOOP3

R5,#02H R6,#0F0H R7,#0F0H R7, DEL3 R6, DEL2

R5, DEL1

5.调试运行

启动仿真如下图所示:(1)P1.2(S0)—开始,按此键则灯开始流动(由上而下)。

(2)P1.3(S1)—停止,按此键则停止流动,所有灯为暗。

(3)P1.4(S2)—上,按此键则灯由上向下流动。

(4)P1.5(S3)—下,按此键则灯由下向上流动。

6.设计心得体会

经过几天的努力,终于完成了本学期的单片机课程设计,过程虽是辛苦的,但从中我学到了很多东西。首先巩固了课上学习的理论知识,对于计算机汇编语言的系统化整体化有了更深的认识。在编写程序的过程中遇到了很多困难经过反复修改不断修正最终才能得以执行。再次是经过搜集资料基本了解了软件的使用。整个设计过程最大的收获就是意识到理论知识扎实的重要性,实践是建立在理论之上的。

参考书目:

上一篇:教师节学生代表致辞下一篇:石材及玻璃幕墙施工合同