基于51单片机的简易计算器设计
江西理工大学南昌校区
毕业设计(论文)
课 题 基于51单片机的简易计算器 教 研 室 信 息 工 程 系
专 业 应 用 电 子 技 术
班 级 0 9 应 用 电 子
学生姓名 学号
导师姓名 凌云 职称
2012年5月 1日
摘 要
工程实践教学环节是为了学生能够更好地巩固和实践所学专业知识而设置的,在本次工程实践中,我以《智能化测量控制仪表原理与设计》、《MCS-51系列单片微型计算机及其应用》课程中所学知识为基础,设计了简易计算器。本系统以MCS-51系列中的8051单片机为核心,能够实现两位数的四则运算。该系统通过检测矩阵键盘扫描,判断是否按键,经数据转换把数值送入数码管动态显示。
本系统的设计说明重点介绍了如下几方面的内容:
1)基于单片机简易计算器的基本功能,同时对矩阵键盘及数码管动态显示原理进行了简单的阐述;
2)介绍了系统的总体设计、给出了系统的整体流程框图,并对其进行了功能模块划分及所采用的元器件进行了详细说明;
3)对系统各功能模块的软、硬件实现进行了详细的设计说明。
关键词:MCS-51 8051单片机;计算器;加减乘除
目录
第一章 绪论 . .............................................................................................................. 1
1.2设计目的 ..................................................................................................................................... 1
1.3设计任务 ..................................................................................................................................... 1
1.4 章节安排说明 ............................................................................................................................ 1
第二章 计算器系统简介 . .......................................................................................... 3
2.1 单片机发展现状......................................................................................................................... 3
2.2 计算器系统现状......................................................................................................................... 4
2.3 简易计算器系统简介 . ................................................................................................................ 4
第三章 主要器件简介 . .............................................................................................. 5
3.1 MCS-51系列单片机简介 ........................................................................................................ 5
3.2 其它器件简介 ............................................................................................................................ 8
3.2.1数码管显示 .......................................................................................... 错误!未定义书签。
3.2.2矩阵按键 ................................................................................................................................ 9
第四章 计算器系统设计 . ........................................................................................ 11
4.1 计算器硬件电路设计 . ............................................................................................................. 11
4.2计算器程序设计 ...................................................................................................................... 11
4.2.1存储单元分配 ...................................................................................................................... 11
4.2.2主程序设计 .......................................................................................... 错误!未定义书签。
4.2.3数码管显示数据转换子程序 .............................................................. 错误!未定义书签。
4.2.4数码管动态显示子程序 ...................................................................... 错误!未定义书签。
4.3系统总框图: .......................................................................................................................... 11
4.4程序源代码: .......................................................................................................................... 11
4.5硬件连线图: .......................................................................................................................... 19
总结 . ................................................................................................................................................ 25
参考文献 . .................................................................................................................. 26
第一章 绪论
1.1课题简介
单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中。单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
本系统就是充分利用了8051芯片的I/O引脚。系统统采用MSC-51系列单片机
Intel8051为中心器件来设计计算器控制器,实现了能根据实际输入值显示并存储,计算程序则是参照教材。至于位数和功能,如果有需要可以设计扩充原系统来实现 。
1.2设计目的
通过本次工程实践,运用《智能化测量控制仪表原理与设计》、《MCS-51系列单片微型计算机及其应用》所学知识及查阅相关资料,完成简易计算器的设计,达到理论知识与实践更好结合、提高综合运用所学知识和设计能力的目的。
通过本次设计训练,可以使我们在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。
1.3设计任务
在本次工程实践中,主要完成如下方面的设计任务:
1)简要综述单片机技术发展的国内外现状及数码管动态显示和矩阵键盘基本原理;
2)掌握MCS-51系列某种产品(例如8051)的最小电路及外围扩展电路的设计方法;
3)了解单片机数据转换功能及工作过程;
4)完成主要功能模块的硬件电路设计及必要的参数确定;
5)用protues 软件完成原理电路的绘制;
6)完成系统设计说明书。
1.4 章节安排说明
整个设计总共分为四个章节,第一章是前言部分,主要介绍了设计基于单片机简易计算器的意义、目的及主要内容;第二章简要介绍了单片机发展的国内外现状及键盘扫描,数据转换,和动态显示原理进行了简要的说明。第三章是器件简介,这一部分主要介绍了系统的所用主要器件的选择。第四章是系统详细设计阶段,分为硬件设计和程序设计。按
照程序设计的各部分实现的功能不同,将整个软件系统分成了三个块,并对每一个功能块所采用的元器件进行了详细介绍。此外还编写了主要功能模块的基本程序,详尽阐述了各模块的工作过程。还有总流程图,源代码,硬器件铺线图。
第二章 计算器系统简介
2.1 单片机发展现状
单片机的发展趋势:低功耗CMOS 化;微型单片化;主流与多品种共存;单片机从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:
1)低功耗CMOS 化
MCS-51系列的8051推出时的功耗达630mW ,而现在的单片机普遍都在100mW 左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺) 。象80C51就采用了HMOS(即高密度金属氧化物半导体工艺) 和CHMOS(互补高密度金属氧化物半导体工艺) 。CMOS 虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS 则具备了高速和低功耗的特点,这些特征,更适合于在要求低功耗象电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。
2)微型单片化
现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路) 、WDT(看门狗) 、有些单片机将LCD(液晶) 驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中SMD(表面封装) 越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
3)主流与多品种共存
现在虽然单片机的品种繁多,各具特色,但仍以80C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS 公司的产品,ATMEL 公司的产品和中国台湾的Winbond 系列单片机。所以C8051为核心的单片机占据了半壁江山。而Microchip 公司的PIC 精简指令集(RISC)也有着强劲的发展势头,中国台湾的HOLTEK 公司近年的单片机产量与日俱增,与其低价质优的优势,占据一定的市场分额。此外还有MOTOROLA 公司的产品,日本几大
公司的专用单片机。在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
2.2 计算器系统现状
计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备及电子配件通过人工或机器设备组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。键盘是计算器的输入部件,一般采用接触式或传感式。为减小计算器的尺寸,一键常常有多种功能。显示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。为节省电能,计算器都采用CMOS 工艺制作的大规模集成电路(见互补金属-氧化物-半导体集成电路),并在内部装有定时不操作自动断电电路。计算器可选用的外围设备有微型打印机、盒式磁带机和磁卡机等。
2.3 简易计算器系统简介
本计算器是以MCS-51系列8051单片机为核心构成的简易计算器系统。该系统通过单片机控制,实现对4*4键盘扫描进行实时的按键检测,并把检测数据存储下来。整个计算器系统的工作过程为:首先存储单元初始化,显示初始值和键盘扫描,判断按键位置,查表得出按键值,单片机则对数据进行储存与相应处理转换,之后送入数码管动态显示。整个系统可分为三个主要功能模块:功能模块一,实时键盘扫描;功能模块二,数据转换为了数码管显示;功能模块三,数码管动态显示。
第三章 主要器件简介
3.1 MCS-51系列单片机简介
8051是MCS-51系列单片机的典型产品,以这一代表性的机型进行系统的讲解。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
·中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
·数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM 只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
图3-1 8051内部结构图
·程序存储器(ROM):
8051共有4096个8位掩膜ROM ,用于存放用户程序,原始数据或表格。
·定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序
转向。
·并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、 P1、P2或P3) ,用于对外部数据的传输。
·全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
·时钟电路:
8051内置最高频率达12MHz 的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL 的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
下图是MCS-51系列单片机的内部结构示意图3-2。
图3-2 MCS-51结构图
MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin 封装的双列直接DIP 结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明: MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin 封装的双列直接DIP 结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:如图3-3
图3-3双列直插式封装引脚图
Pin9:RESET/Vpd 复位信号复用脚,当8051通电,时钟电路开始工作,在RESET 引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC 指向0000H ,P0-P3输出口全部为高电平,堆栈指针写入07H ,其它专用寄存器被清“0”。RESET 由高电平下降为低电平后,系统即从0000H 地址开始执行程序。然而,初始复位不改变RAM (包括工作寄存器R0-R7)的状态,8051的初始态。
8051的复位方式可以是自动复位,也可以是手动复位。此外,RESET/Vpd 还是一复用脚,V cc 掉电其间,此脚可接上备用电源,以保证单片机内部RAM 的数据不丢失。见下图3-4为两种复位方式和两种时钟方式:
·Pin30:ALE/当访问外部程序器时,ALE(地址锁存) 的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE 端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE 会跳过一个脉冲。
如果单片机是EPROM ,在编程其间,
·Pin29:将用于输入编程脉冲。 当访问外部程序存储器时,此脚输出负脉冲选通信号,PC 的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU 读入并执行。
·Pin31:EA/Vpp 程序存储器的内外部选通线,8051和8751单片机,内置有4kB 的程序存储器,当EA 为高电平并且程序地址小于4kB 时,读取内部程序存储器指令数据,而超过4kB 地址则读取外部指令数据。如EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA 端必须接地。
在编程时,EA/Vpp 脚还需加上21V 的编程电压。
3.2 其它器件简介
3.2.1 lcd1602 介绍
一:液晶显示器各种图形的显示原理 线段的显示: 点阵图形式液晶由 M×N 个显示单 元组成,假设 LCD 显示屏有 64 行,每行有 128 列,每 8 列对应 1 字节的 8 位, 即每行由 16 字节,共 16×8=128 个点组成,屏上 64×16 个显示单元与显示 RAM 区 1024 字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏 的第一行的亮暗由 RAM 区的 000H ——00FH 的 16 字节的内容决定, (000H ) 当 =FFH 时,则屏幕的左上角显示一条短亮线,长度为 8 个点;当(3FFH )=FFH 时,则 屏幕的右下角显示一条短亮线; (000H ) 当 =FFH, (001H ) =00H, (002H ) =00H, …… (00EH )=00H,(00FH )=00H 时,则在屏幕的顶部显示一条由 8 段亮线和 8 条 暗线组成的虚线。
这就是 LCD 显示的基本原理。 字符的显示 用 LCD 显示一个字符时比较复杂,因为一个字符由 6×8 或 8×8 点阵组成,既要 找到和显示屏幕上某几个位置对应的显示 RAM 区的 8 字节, 还要使每字节的不同 位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成 某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以 让控制器工作在文本方式, 根据在 LCD 上开始显示的行列号及每行的列数找出显 示 RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。 汉字的显示 汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一 般用字模提取软件),每个汉字占 32B ,分左右两半,各占 16B ,左边为 1、3、 5……右边为 2、4、6……根据在 LCD 上开始显示的行列号及每行的列数可找出 显示 RAM 对应的地址, 设立光标, 送上要显示的汉字的第一字节, 光标位置加 1, 送第二个字节,换行按列对齐,送第三个字节……直到 32B 显示完就可以 LCD 上得到一个完整汉字
3.2.2矩阵按键
键盘是单片机系统中最常用的人机对话输入设备,用户通过键盘向单片机输入数据或指令。键盘控制程序需完成的任务有:监测是否有键按下,有键按下时,在无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。
矩阵按键扫描程序是一种节省IO 口的方法, 按键数目越多节省IO 口就越可观,思路:先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但是,在程序的写法上,采用了最简单的方法,使得程序效率最高。本程序中,如果检测到某键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU 时间。
本键盘扫描程序的优点在于:不用专门的按键延时程序,提高了CPU 效率,也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用CPU 时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。
本键盘扫描子程序名叫key ,每次要扫描时用lcall key调用即可。
第四章 计算器系统设计
4.1 计算器硬件电路设计
8051单片机一片,4*4键盘一个,4位共阳极的七段数码管一个,连线和电阻和开关若干。8051单片机的P2口作键盘口,其中P2.4-P2.7为键盘扫描输出线,P2.0-P2.3为键盘扫描输入线。键盘由4*4共16个按键组成,10个数字键(由0-9组成)5个运算符号(加减乘除等于)组成,1个清除键(作用相当于整体复位)。4个数码管用于显示当前数值的千,百,十,个,采用动态显示方式,P1口接4个数码管的七段,P0口分别接4个数码管的公共端,P1口输出数码管的字形码,P0口输出数码管的字位码。
4.2计算器程序设计
4.2.1存储单元分配
30H 单元:数值个位显示单元;31H 单元:数值十位显示单元;32H 单元:数值百位显示单元;33H 单元:数值千位显示单元;23H 单元:第一操作数存储单元;24H 单元:第二操作数存储单元;25H 单元:键值暂存单元;27H 单元:清除键状态;34H-37H 单元:结果数据转换暂存单元;38H-39H 单元:结果高低8位暂存单元;R5单元:操作数计数单元;R4单元:操作数数值位数计数单元;R3单元:运算符号存储单元。
4.3系统总框图:
4.4程序源代码:
这是main 函数
#include "lcd1602.h"
#include "display_lcd1602.h"
#include "interrupt.h"
#include "keypad.h"
uchar
key_val,key_return,count;
uchar ent_buf=0;
uchar aim_buf[8],ori_buf[8]; void main()
{
init_lcd1602();
init_int0();
lastentbuf=5;
while(1)
{
key_scan();
display();
}
Lcd1602.c 文件
#include #include "delay.h"
#define dats P0 #define uchar unsigned char
#define uint unsigned int
sbit RS=P2^5; //LCD1602的寄存器选择 sbit RW=P2^6; //LCD1602的读/写控制 sbit E=P2^7; //DS1602的启动
//向1602写数据
void write_data(uchar dat)
{
RS=1;
delay(5);
E=1;
delay(5);
E=0; }
//向1602写指令
void write_com(uchar cmd) {
RS=0;
dats=cmd;
delay(5);
E=1;
delay(5); E=0; }
//1602初始化
void init_lcd1602() {
E=0;
RW=0;
write_com(0x38);delay(1); write_com(0x01);delay(1); write_com(0x06);delay(1); write_com(0x0c);delay(1); }
Lcd1602.h 文件
#ifndef __lcd1602__h__
#define uchar unsigned char #define uint unsigned int void delay(uchar z);
void write_data(uchar dat); void write_com(uchar cmd); void init_lcd1602();
#endif
Keypad.c 文件
#include #include "_extern.h"
#define port P1
#define state_nokey 0 #define state_keyon 1 #define state_keyoff 2 #define nokey 255 #define key_1 7 #define key_2 8 #define key_3 9
#define key_4 10//除 #define key_5 4 #define key_6 5 #define key_7 6
#define key_8 11//乘 #define key_9 1 #define key_10 2
#define key_11 3
#define key_12 12//减
#define key_13 13//清零 #define key_14 0
#define key_15 15 //等于 #define key_16 16 //加
#define uchar unsigned char
void key_scan() {
static uchar uchar key_value,key_state=0; i,key_line=0x08; switch(key_state) { case state_nokey: for(i=0;i>=1;
case state_keyon: if(key_value==port) { switch(key_value) { case 0xee: case 0xed: case 0xeb: case 0xe7: key_return=key_1;break; key_return=key_5;break; key_return=key_9;break; key_return=key_13;break; case 0xde: case 0xdd: case 0xdb: case 0xd7: key_return=key_2;break; key_return=key_6;break; key_return=key_10;break; key_return=key_14;break; case 0xbe: case 0xbd: case 0xbb: case 0xb7: key_return=key_3;break; key_return=key_7;break; key_return=key_11;break; key_return=key_15;break; } else } case 0x7e: case 0x7d: case 0x7b: case 0x77: default : key_return=key_4;break; key_return=key_8;break; key_return=key_12;break; key_return=key_16;break; break; key_state=2;
break; case state_keyoff:
if((port&0xf0)==0xf0)
{
key_state=0;
} key_return=nokey;
break;
}
}
Keypad.h 文件 #ifndef __keypad__h_
#define __keypad__h_
void key_scan();
#endif
Key_cod.c文件
#include "_extern.h"
#include "key_board.h"
#include
#define en0 0
#define clr 1
#define mul 2
#define div 3 #define sub 4
#define add 5
void ent()
lastentbuf=0;
switch(ent_buf) {
case mul :z=x*y;break;
case div :z=x/y;break; case sub :z=x-y;break; case add :z=x+y;break; } x=z;
} void work()
{
if(lastentbuf)
{x=y;lastentbuf++;}
else
{
ent();
x=z;
} y=0; aim_num=y; ori_num=x;
}
void key_cod()
{
x%=10000000;
} z%=10000000; switch(key_return) { } case 255:;break; case 13: ent_buf=clr;x=y=z=aim_num=ori_num=0;break; case 11: ent_buf=mul;work();break; case 10: ent_buf=div;work();break; case 12: ent_buf=sub;work();break; case 16: ent_buf=add;work();break; case 15: ent();aim_num=y;ori_num=z;break;// change(); default : y=y*10+key_return;aim_num=y;ori_num=x;break; Key_cod.h文件
#ifndef ___key_cod__h__
#define ___key_cod__h__
void key_cod(); #endif
Interrupt.c 文件 #include #include "_extern.h"
#include "keypad.h"
#include "key_cod.h"
void init_int0()
{
IE0=1; IT0=1;
EA=1;
} void int0() interrupt 0
{ uchar i=2; while(i--)
key_scan();
key_cod();
} Interrupt.c 文件 #ifndef __interrupt__h_
#define __interrupt__h_ void uint_time0();
void time0();
void init_int0();
void int0();
#endif
Dispiay_lcd.c1602文件 #include "_extern.h"
#include "devide.h" #include "lcd1602.h"
#define uchar unsigned char
void display()
{
devide();
for(i=8;i>0;i--)
{
write_com(0x80+16-i);
write_data(ori_buf[i-1]);
write_com(0x80+0x40+16-i);
write_data(aim_buf[i-1]);
}
}
Dispiay_lcd.H1602文件
#ifndef __display_lcd1602__h__
#define __display_lcd1602__h__
void display();
#endif
Devide.c 文件
#include "_extern.h"
#define uchar unsigned char uchar code table[10]={"0123456789"};
void devide() {
uchar i;
long aim=aim_num,ori=ori_num;
for(i=0;i
{
ori_buf[i]=table[ori%10];
aim/=10;
ori/=10;
}
while(--i)
{ if(aim_buf[i]=='0') aim_buf[i]=' '; else
i=1;
}
i=8;
while(--i)
{ if(ori_buf[i]=='0') ori_buf[i]=' '; else
i=1; } /* */
}
Devide.h 文件
#ifndef __devide__h__ #define __devide__h__
void devide();
#endif
Delay.c 文件
#define
void delay(uchar z) {
uchar i,j;
for(i=z;i>0;i--)
}
Delay.h 文件
#ifndef __delay__h__
#define __delay__h__
#endif
_extern文件
#ifndef ___extern__h__
#define ___extern__h__
#define
#endif extern extern extern extern uchar key_return,count; long uchar uchar ori_num,aim_num,x,y,z,lastentbuf; ent_buf; aim_buf[8],ori_buf[8]; uchar unsigned char void delay(unsigned char z); for(j=0;j
4.5硬件连线图:
总结 课程设计是培养学生综合运用所学知识, 发现, 提出, 分析和解决实际问题, 锻炼实践能力的重要环节, 是对学生实际工作能力的具体训练和考察过程. 随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,可以说得是苦多于甜,但是可以学到很多很多的的东西。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。通过这次课程设计使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我们在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
参考文献
[1] 徐爱钧 .智能化测量控制仪表原理与设计(第二版).北京航天航空大学出版社,2004.9
[2] 孙育才等.MCS-51系列单片微型计算机及其应用(第4版).东南大学出版社,2004,3
[3] 李萍 等.智能仪器实验指导书.大连交通大学,2007.9
[4] 李建忠. 单片机原理及应用(第一版). 西安电子科技大学出版社,2002
[5] 丁元杰. 单片微机原理及应用(第三版). 北京:机械工业出版社,2005,7