软件技术基础结课研究报告江南大学.docx
- 文档编号:2415182
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:8
- 大小:19.36KB
软件技术基础结课研究报告江南大学.docx
《软件技术基础结课研究报告江南大学.docx》由会员分享,可在线阅读,更多相关《软件技术基础结课研究报告江南大学.docx(8页珍藏版)》请在冰豆网上搜索。
软件技术基础结课研究报告江南大学
《软件技术基础》结课报告
软件技术基础与单片机编程的联系与区别
院系电子工程系
专业微电子学
班级微电子1101
学生姓名杨海平
学号0301110115
任课教师张康立
2013年5月17日
软件技术基础与单片机编程的联系与区别
微电子学专业学生杨海平学号0301110115
关键词:
单片机;编程;单片机最小系统
1、单片机
(一)单片机简介
单片机也被称作“单片微型计算机”、“微控制器”、“嵌入式微控制器”。
单片机一词最初是源于“Single Chip Microcomputer”,简称SCM。
随着SCM在技术上、体系结构上不断扩展其控制功能,单片机已不能用“单片微型计算机”来表达其内涵。
国际上逐渐采用“MCU”(Micro Controller Unit)来代替,形成了单片机界公认的、最终统一的名词。
为了与国际接轨,以后应将中文“单片机”一词和“MCU”唯一对应解释。
在国内因为“单片机”一词已约定俗成,故而可继续沿用。
因为单片机在生活中的应用太广泛,在各大学,高职院校均有授课,其应用可概括为:
1.单片机在智能仪表中的应用
2.单片机在机电一体化中的应用
3.单片机在实时控制中的应用
4.单片机在分布式多机系统中的应用
5.单片机在人类生活中的应用
(2)单片机编程
单片机编程可以使用汇编语言,也可以使用C语言,目前各大专院校都普遍采用C语言编程,因其可移植性好,易于编写编写,调试,维护,且汇编能做的事,c语言大部分都能做。
汇编因其枯燥难懂而不适合在高校内推广展开,但如果是要追求高效,精确,那么就需要用汇编来进行编程。
2、软件技术基础
随着信息技术日益深入人们生活和公作各个环节,作为信息技术的核心--计算机应用技术,对非计算机专业的在校大学生来说显得越来越重要。
掌握计算机基础知识,能够以专业背景为依托,充分有效地利用计算机技术解决未来工作中的专业问题,是对当代理工科大学生的基本要求。
二提高计算机的应用能力,尤其是计算机软件的开发和应用能力是非常必要的。
3、软件技术基础与单片机编程的联系
单片机编程,就目前来讲,个人觉得数据结构简单明了,没有软件技术基础中的数据库,复杂的数据结构,如图形结构,但是有查找。
整个目前我编写的单片机程序,就是简单的结构化程序,按照各外围芯片的要求初始化,然后由单片机的引脚的高低电平来控制它工作或者输入输出数据,一个简单的单片机最小系统就是一个简单的操作系统,很多概念都可以用在单片机最小系统上。
如下个人编的单片机程序,来进行说明:
/********************************************************
*Copyright@HAPPY YOUNG
*ALL RIGHTS RESERVED
软件功能:
计算机向单片机发送数据,单片机接收到数据后,控制LCD显示PC发送的数据
*文件名:
串口通信加LCD.c
*作者:
杨海平(HAPPYYOUNG)江南大学物联网工程学院微电子1101
*开始日期:
2013.4.2921:
26
***********************************************************/
#include
#defineuintunsignedint
#defineucharunsignedchar
#defineon1
#defineoff0
#defineN1
#defineM8
sbitEN=P3^4;
sbitRS=P3^5;
sbitRW=P1^1;
sbitdula=P2^6;
sbitwela=P2^7;
sbitLED1=P1^7;
sbitLED2=P1^6;
ucharInformation,order[M],num=0;
voiddelay(ucharz)
{
ucharx,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
voidWCom(ucharcom)
{
RS=0;
delay(N);
RW=0;
delay(N);
P0=com;
delay(N);
EN=on;
delay(N);
EN=off;
}
voidWDat(uchardat)
{
RS=1;
delay(N);
RW=0;
delay(N);
P0=dat;
delay(N);
EN=on;
delay(N);
EN=off;
}
voidLCDInit()
{
RW=0;
EN=1;
dula=0;
wela=0;
WCom(0x38);
delay(N);//00111000B设置16*2显示,5*7点阵,8位数据接口
WCom(0x0c);
delay(N);//00001100B开显示,不显示光标
WCom(0x06);
delay(N);//当读或写一个字符后地址指针加一,且光标加一
WCom(0x01);//清屏幕指令,将以前的显示内容清除//设置光标初始//出现在第一行第一列
}
voidTimeInit(void)
{
TR1=1;
EA=1;
ES=1;
TMOD=0x20;//设置定时器为工作方式2
TH1=0xf4;//波特率=2400bit/s
TL1=0xf4;
REN=1;
SM0=0;
SM1=1;
}
voidInterr()interrupt4
{
while(RI)
{
RI=0;
Information=SBUF;
order[num]=Information;
delay(5);
if(order[3]=='3')
LED1=0;
WDat(order[num]);
SBUF=order[num];
num++;
if(num>=M)
{
num=0;
WCom(0x80+0x40);
LED2=~LED2;
}
}
}
voidmain()//出现零后能连续输出三个数
{
uchari=0;
ucharcodeName[16]="NAME:
HAPPYYOUNG";//GNUOYYPPAH
LCDInit();
TimeInit();
WCom(0x80);
delay(N);
WCom(0x80);
delay(N);
for(i=0;i<16;i++)
{
WDat(Name[i]);
delay(N);
}
WCom(0x80+0x40);
delay(N);
RI=0;//这一步很重要,如果把它移入while中,那么第一个数据在单片机重启时就已经写入了
while
(1);
//while
(1);
}
其实个人认为MC51单片机检测内部寄存器,如RI的电平值时,就是查找,一旦检测到MC51的RI==1,系统就立即进入while(RI)复合语句中,然后继续查找order[3]是否为’3’,若为’3’,就执行LED=0;即点亮LED1,接着执行复合语句中的进程,通过软件RI=0;语句将其强行置为0,然后系统又恢复到检测内部RI寄存器的电平值,似乎从这里可以认为在单片机中的判断语句就是查找。
1.单片机中的进程管理
单片机系统就是个实时操作系统,也有进程的概念,比如点亮一个灯是一个进程,往LCD中写命令(WCom()函数)也是一个进程,往LCD中写数据(WDat()函数)也是一个进程。
当且仅当执行进程的条件被系统检测到可行,那么该进程就会执行。
单片机里的进程管理相对书上讲的windows进程管理简单得多,甚至可以认为单片机是通过实时检测每个编程者定义的进程执行条件是否满足来管理进程,整个系统就是一顺序结构,一步一步来,当然,单片机中可以有中断,这在软件技术基础中的编程我还没有接触到过。
进程状态也至少有三种:
执行状态,就绪状态,等待状态,只要进程执行条件满总,进程总能执行。
2.单片机中的存储管理
单片机内部有存储结构,但也可以外接存储器,相当于普通电脑可以外接硬盘,U盘,但因为单片机一般都是专用的,为用户编写的程序都是针对某一目的,而不像windows那样,每个地球人都可以使用它完成娱乐,学习,工作,所以相对来讲,一个单片机系统的代码不会很大,而对我们普通大学生来说,8KB已经够用了,很少有要求需要外接存储设备的。
但有些项目需要单片机记住之前的外部设备的一些工作状态参数,而单片机内部不提供这种功能的时候,我们就需要外接记忆存储单元了,比如想用51单片机做个MP3,那么你存储的歌曲就应该放在外部存储单元中。
3.单片机中的设备管理
像windows一样,单片机启动后也会根据编程者编写的程序给相应的外部设备初始化,如上程序的LCDInit();TimeInit();两个函数,就是来初始化LCD和定时器的,通过调节某一参数,我们可以改变外部设备的工作形式,工作状态等。
有些是通过外部锁存器来选择控制哪个外部设备工作,比如用单片机控制六位数码管,通过锁存器来给数码管分配MCU资源,这样可以用很少的I/O口来控制很多外部设备。
4、软件技术基础与单片机编程的区别
还是以上个程序为例,说明下个人观点。
单片机编程首先要自己定义你自己要用到的引脚,比如sbitRW=P1^1;sbitdula=P2^6;sbitwela=P2^7;方便后面对引脚的操作,而在电脑上用VC++编程我们不用管引脚,CPU引脚太多,VC++这个软件已经帮我们做好了基本的初始化。
在单片机中经常要用到while
(1){}语句,这在VC++中的编程是不允许的,自己做过实验,windows会强行关闭该软件。
如果用单片机做可视化操作,必不可少的就是LCD了,相当于电脑的LCD显示屛,在VC++中,我们只要很方便地调用printf()函数输出就可以了,输入时调用scanf()函数,但在单片机中,你可以自己设置LCD的工作模式,比如LCD显示多少行,每个字用多少液晶点阵,光标是否闪烁,这都在LCDInit();中通过对引脚的操作来实现的。
单片机中的中断,很有用处,可以利用这点,单片机执行优先级高的进程,目前我在VC++中编写的程序还没有过中断的使用。
在VC++中,我们能编出树形结构,图形结构,排序等程序,但在基本的单片机应用中,可以没有这些复杂的算法,我们就是些简单的循环语句,选择语句,我们更强调时序逻辑,在什么时候引脚的电平状态是什么样都要求精确,例如对LCD进行初始化,写命令进去的时候连写完一条指令都要延时一段时间,才能写下一条指令,这是由单片机和电脑的硬件决定的,在VC++中如果你定义了
voiddelay(ucharz)
{
ucharx,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
函数,其实相当于没有延时功能,电脑CPU的工作频率是MCU不能望其项背的,这个函数在MCU中延时1ms,而在VC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术 基础 研究 报告 江南 大学