版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、天津职业技术师范大学电子工程学院电子信息工程课程设计报告同组学生姓名(学号): 李佩航09900130313王芝利09900110502 刘 瑶09900120311 班 级: 电信1302班 任务分工: 李佩航 程序编写 王芝利 电路原理设计 刘 瑶 报告编写 设计时间: 2015年12月28 日 2016 年 1月8日指导教师: 成丹、梅建强 目 录 题目:一、课程设计的目的与要求3二、方案论证选择3三、原理设计3四、程序设计8五、方案实现与测试11六、课程设计小结七、参考文献个人总结19一、 课程设计的目的与要求(含设计指标)1.1设计目的: 要求通过软件设计实现加减乘除计算等功能,并显
2、示。1.2设计要求(1)对计算器硬件系统进行设计,利用AT89S52作为主控器件,组成一个能实现加减乘除等运算的计算器,能进行数据归零,按键提示。(2) 运用keil进行计算器软件系统的设计。1.3设计方案按照系统设计的功能的要求,确定设计系统由主控模块、显示模块、键盘扫描接口电路、按键提示电路4个模块组成。系统构成框图如图所示:系统构成框图1-3-14.单片机最小硬件系统单片机最小应用系统,是指用最少的原件组成的单片机可以工作的系统。对51系列单片机来说,最小系统应包括单片机、晶振电路、复位电路。下面介绍51单片机的最小系统电路图:单片机最小系统图1-4-1二、 方案论证及选择1、方案一:采
3、用FPGA控制FPGA是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达200MHz。由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。但是而基于 SRAM编程的FPGA,其编程信息需存放在外部存储器上 ,需外部存储器芯片 ,且使用方法复杂 ,保密性差,而其对于一个简单的计算器而言,实用FPGA有点大材小用,成本太高。2、方案二:采用AT89S52单片机是单片微型机的简称,故又称为微控制器
4、MCU(Micro Control Unit)。通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:中央处理器CPU,存储器和I/O接口电路等。因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机广泛用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单,实用方便,价格便宜等优点,而其中AT89S52以MCS-51为内核,是单片机中最典型的代表,应用于各种控制领域。 通过以上两种方案论证和比较,从设计的实用性,方便性和成本出发,选择了以AT89S52单片机作为中央处理单元进行计算器的设计,这样设计能够实现对六位浮点数的加减和三位浮点数的乘除运算。三、 原
5、理设计(或基本原理)基本原理,电路仿真,系统组成框图、单元电路设计、总体电路图、元件列表3.1时钟电路 XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振
6、器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。单片机复位电路如下图所示:时钟电路图3-1-13.2复位电路在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51
7、芯片便循环复位。复位后P0P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选用6MHz时,C取22F,Rs约为200,Rk约为1K。复位操作不会对内部RAM有所影响。常用的复位电路如下图所示: 复位电路图3-2-23.3键盘接口电路键盘接
8、口电路如下图所示: 键盘接口电路3-3-34*4矩阵键盘工作原理:矩阵键盘又称为行列式键盘。它由4条I/O线为行线,4条I/O线做列线组成,在行线和列线的每个交叉点上设置一个按键。这样键盘中的按键数为4*4个,所以称之为4*4矩阵键盘,这种行列行线置高电平,接P1口的低四位P1.3- P1.0,列线置低电平,接P1口的高四位P1.7- P1.4高四位为输入,低四位为输出。1.检测当前是否有键按下,采用逐行扫描法,检测方法为先将P1.7-P1.4依次置0,检验P1.3-P1.0状态,若全为1则无键闭合,否则有键闭合。2.取出键抖动,当检测到有键按下后,延时一段时间再做下一步判断。3.若有键按下,
9、应判断究竟是哪一键按下。方法是对键盘的行线进行扫描 将P1.7-P1.4依次置0时,P1.3-P1.0状态表如下:P1.31110P1.21101P1.11011P1.00111闭合状态第一行闭合第二行闭合第三行闭合第四行闭合P10-P13状态表3.4液晶显示电路本设计液晶显示部分采用LCD1206电路图如下: LCD1206电路图3-4-1液晶显示原理:线段的显示:图象形式的液晶显示装置有M×N个基本的显示单元,假设LCD显示64行,每行有128列,一字节的8位对应每8位,即组成方式是由每行16字节,共16×8=128个点而组成的,64×16显示单元与RAM的显
10、示区对应于1024个字节,以对应于每一个显示位置上的每个字节的显示的亮暗程度。例如,屏幕亮和暗的第一行的内容由16个字节的RAM区内容来决定,而当000H - 00FH(000H)= FFH时显示在屏幕左上角的短亮线,长度是8个小点,而当(3FFH)= FFH,就在屏幕的右下角会显示一个简短的亮线;(000H)= FFH(001H)=00H(002H)=00H,. (00EH)=00H(00FH)= 00H,第8段亮线和8个暗线,在屏幕顶部显示一条虚线。这是液晶显示器(LCD)显示的基本原理。字符的显示:一个字符在液晶显示中显示是比较复杂的,因为一个字符是由6×8或者8×8
11、的点阵构成的,不仅要找到和显示在屏幕上的显示RAM的8个字节的位置对应的字节,而且还要使每个字节不同的位是“1”,另一个是“0”,把“1”点亮,而“0”是不亮。用这样的方法来组成一个字符。但是显示字符对于内带有字符发生器的控制器,是比较简单的,可以允许控制器工作在文本模式中,根据液晶屏上开始显示的行和列的号,和就可以找出RAM所对应的地址,设置一个游标,发送这个字符所对应的代码就可以了。汉字的显示:对于汉字的显示一般是采用图形的方式,将要显示的中国汉字的点阵码(字模提取软件)从微机中提取,每个汉字占32B,分为左,右两半,每半各16B,左边是基数1,3,5右边是偶数2,4,6.正确的显示中文字
12、符,根据在LCD上现实的行列号,及行列数可以找出在RAM上所对应的的地址,在光标的位置上加1,发送的第二个字节,先换行再按列对齐,给第三个字节.直到32B完全被显示,就可以在液晶显示屏上得到一个完整的中文字符。LCD1206引脚如下图所示:LCD1206引脚图3-4-2LCD1602采用标准的16脚接口,但在proteus仿真中无字库,故为14脚第1脚:VSS为电源接地第2脚:VCC接5V电源的正极第3脚:V0为液晶显示器的对比度调整端,当接正电源的时时候对比度最弱,而接地电源时对比度最高(而当对比度过高时会 ,就会产生“鬼影”,使用时可以通过接一个10K的电位器来调整对比度)。第4脚:RS为
13、寄存器选择脚,当高电平1时就选择数据寄存器,当低电平0时就选择指令寄存器。第5脚:RW是读写信号线,当高电平时进行读操作,当低电平时进行写操作。第6脚:E(或EN)端为使能端,当高电平1时读取信息,当负跳变时执行指令。第714脚:D0D7为8位双向数据端。在单片机系统中应用晶液显示器作为输出器件有以下几个优点:LCD1602的指令码如下表所示:指令码功能令RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"地址归位000000001X设定DDRAM的地址计数器
14、(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容显示状态开/关0000001DCBD=1: 整体显示 ONC=1: 游标ON B=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容功能设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM 地址设
15、定DDRAM地址0010AC5AC5AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC5AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10将数据D7D0写入到内部的RAM (DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11从内部RAM读取数据D7D0(DDRAM/CGRAM/IRAM/GRAM)3.5蜂鸣器滴滴电路当矩阵键盘有键按下时,蜂鸣器发出滴滴的声音提示。蜂鸣器由单片机P32口控制,用三极管驱动。蜂鸣器报警电路图3-5-
16、13.6课程设计总图: 电路图3-6-1四、程序设计4.1键盘扫描部分程序设计键扫程序的过程为:开始时,先判断是否有键闭合,无键闭合时,返回继续判断,有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。流程图如下:键盘扫描流程图4-1-14.2运算部分程序设计算术运算程序的过程为:首先判断当前输入的运算符是以下运算符中的哪一个+、-、*、/ ,如果是+或者是*,则要先判断运算结果是否会溢出,如果结果溢出则不显示运算结果,没溢出就显示运算结果,若是/,则要先判断除数是否为零,
17、为零就不显示结果,不为零则显示运算结果,若是-,则直接显示运算结果。其流程图如下图所示: 运算流程图4-2-14.3显示部分程序设计显示程序的过程为:显示开始时,先进行LCD的初始化,判断是否显示汉字或ACSII码或图形,若不显示,则返回,若显示的是汉字或ACSII码,则进行相应功能的设置,然后送地址和数据,再判断是否显示完,显示完则返回,没有显示完则继续送地址,若显示的是图形,则先进行相应功能的设置,再送行地址和列地址,然后送数据,最后判断是否显示完,显示完则返回,没有显示完则继续送行地址和列地址。其流程图如下所示:显示流程图4-3-14.4主函数程序设计 主函数流程图如下所示: 主函数流程
18、图4-4-1 五、方案实现与测试(或调试)功能和操作:加减乘除运算和显示。上电后,屏幕初始化。计算。按下数字键,屏幕显示要运算的第一个数字,再按下符号键,然后再按下数字键,屏幕显示要运算的第二个数字,最后按下“”号键,屏幕上显示出计算结果。如果要再次计算,可以按下“ON/C”键清零,或者按下单片机的复位键,重新初始化。 #include<reg51.h>#define uint unsigned int#define uchar unsigned char/-LCD1602-/P00-07= D0-7sbit rs=P22; /指令or数据sbit wela=P21; /读or写s
19、bit lcden=P20; /使能信号/-LCD1602-/-KEY-/P1口/-KEY-/-BUZZER-sbit buzzer = P32;/蜂鸣器/-BUZZER-uchar code table= " "long int data_a,data_b; /第一个数和第二个数long int data_c;/计算结果uchar dispaly10; /显示缓冲/=5ms延时=void Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/*/ 描述: 延时t us函数/*/void LCD_Delay_u
20、s(unsigned int t)while(t-); /t=0,退出/*/ 描述: 延时t ms函数/*/void LCD_Delay_ms(unsigned int t)unsigned int i,j;for(i=0;i<t;i+) /执行t次循环for(j=0;j<113;j+); /执行113次循环/=一声提示音,表示有效输入=void OneBuzzer(void)buzzer=0;Delay5Ms(); buzzer=1;/*/ 描述: 1602液晶写指令/*/void write_com(uchar com) /1602液晶写指令rs=0; /写指令lcden=0;
21、 /使能1602 P0=com; /写入指令comLCD_Delay_ms(1); /延时1mslcden=1; /使能1602LCD_Delay_ms(2); /延时2ms lcden=0; /使能1602/*/ 描述:1602液晶写数据 /*/void write_date(uchar date) /1602液晶写数据rs=1; /写数据lcden=0; /使能1602 P0=date; /写入数据date LCD_Delay_ms(1); /延时1mslcden=1; /使能1602LCD_Delay_ms(2); /延时2mslcden=0; /使能1602/*/ 描述:指定x,y写入
22、字符函数/*/void W_lcd(unsigned char x,unsigned char y,unsigned char Data) if (y = 0)write_com(0x80 + x); /第一行 elsewrite_com(0xc0 + x); /第二行 write_date( Data); /写入数据 /指定x,y写入字符串函数 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) if (y = 0)write_com(0x80 + x); /第一行 elsewrite_com(0xC
23、0 + x); /第二行 while (*s) / write_date( *s); s+; /写入数据 /*/ 描述:初始化液晶,及画面初始化 /*/void init_lcd(void) /初始化液晶,及画面初始化wela=0; /写液晶lcden=0; /使能1602write_com(0x38); /8 位总线,双行显示,5X7 的点阵字符LCD_Delay_us(100); /延时100uswrite_com(0x0c); /开显示,无光标,光标不闪烁write_com(0x06); /光标右移动write_com(0x01); /清屏write_com(0x80); /DDRAM
24、地址归0/=按键检测并返回按键值=unsigned char keynum(void) /键盘扫描函数,使用行列反转扫描法 uchar cord_h,cord_l;/行列值中间变量 P1=0x0f; /行线输出全为0 cord_h=P1&0x0f; /读入列线值 if(cord_h!=0x0f) /先检测有无按键按下 Delay5Ms(); Delay5Ms(); /去抖 if(cord_h!=0x0f) cord_h=P1&0x0f; /读入列线值 P1=cord_h|0xf0; /输出当前列线值 cord_l=P1&0xf0; /读入行线值while(P1&
25、0xf0)!=0xf0);/等待松手OneBuzzer(); return(cord_h+cord_l);/键盘最后组合码值 return(0); /返回该值/*/ 描述: 逐行键盘扫描 /*/short keycheckdown()/* 反转法键盘扫描 */short temp1,temp2,temp,a=0xff;/P2=0xf0;/* 输入行值(或列值) */LCD_Delay_ms(20);/* 延时 */temp1=P2;/* 读列值(或行值) */P2=0xff;/LCD_Delay_ms(20);/* 延时 */P2=0x0f;/* 输入列值(或行值) */LCD_Delay_m
26、s(20);/* 延时 */temp2=P2;/* 读行值(或列值) */P2=0xff;/temp=(temp1&0xf0)|(temp2&0xf);/* 将两次读入数据组合 */unsigned char temp,a;temp=keynum();switch(temp)/* 通过读入数据组合判断按键位置 */ /*case 0x77 :a=0x0d;break;/ 按键/ case 0x7b :a=0x0e; break;/ 按键=case 0x7d :a=0; break;/ 按键0case 0x7e :a=0x0f; break;/ 按键CEcase 0xb7 :a=
27、0x0c;break;/ 按键*case 0xbb :a=0x9;break; / 按键9case 0xbd :a=0x8;break; / 按键8 case 0xbe :a=0x7;break; / 按键7case 0xd7 :a=0x0b;break;/ 按键-case 0xdb :a=0x6;break; / 按键6case 0xdd :a=0x5;break; / 按键5case 0xde :a=0x4;break; / 按键4case 0xe7 :a=0x0a; break;/ 按键+case 0xeb :a=3;break;/ 按键3case 0xed :a=2;break;/ 按
28、键2case 0xee :a=1;break;/ 按键1*/case 0x77 :a=0x0a;break;/ 按键/ case 0x7b :a=0x0b; break;/ 按键=case 0x7d :a=0x0c; break;/ 按键0case 0x7e :a=0x0d; break;/ 按键CEcase 0xb7 :a=0x03;break;/ 按键*case 0xbb :a=0x6;break; / 按键9case 0xbd :a=0x9;break; / 按键8 case 0xbe :a=0xe;break; / 按键7 case 0xd7 :a=2;break;/ 按键-case
29、0xdb :a=0x5;break; / 按键6case 0xdd :a=0x8;break; / 按键5case 0xde :a=0x0;break; / 按键4case 0xe7 :a=1; break;/ 按键+case 0xeb :a=4;break;/ 按键3case 0xed :a=7;break;/ 按键2case 0xee :a=0x0f;break;/ 按键1default :a=0xff;return a;/* 返回按键值 */void display_a() /显示数据adispaly3=data_a%10000/1000; /千dispaly2=data_a%1000/
30、100; /百dispaly1=data_a%100/10; /十dispaly0=data_a%10; /个 write_com(0x80+0); /显示数据aif(data_a>999)write_date('0'+dispaly3); /显示千位if(data_a>99)write_date('0'+dispaly2); /显示百位if(data_a>9)write_date('0'+dispaly1); /显示十位 write_date('0'+dispaly0); /显示个位void display_b
31、() /显示数据bwrite_com(0x80+7); /第一行dispaly3=data_b%10000/1000; /千dispaly2=data_b%1000/100; /百dispaly1=data_b%100/10; /十dispaly0=data_b%10; /个 if(data_b>999)write_date('0'+dispaly3); /显示千位 if(data_b>99) write_date('0'+dispaly2); /显示百位 if(data_b>9) write_date('0'+dispaly1
32、); /显示十位 write_date('0'+dispaly0); /显示个位/计算结果void display_c(x)if(data_c<100000000&&data_c>-1)/溢出时显示错误dispaly8=data_c%1000000000/100000000; /万万dispaly7=data_c%100000000/10000000; /千万dispaly6=data_c%10000000/1000000; /百万dispaly5=data_c%1000000/100000; /十万dispaly4=data_c%100000/10
33、000; /万dispaly3=data_c%10000/1000; /千dispaly2=data_c%1000/100; /百dispaly1=data_c%100/10; /十dispaly0=data_c%10; /个 write_com(0x80+6+0x40); /第一行if(x=4) if(data_c>99999999)write_date('0'+dispaly8); /显示万万if(data_c>9999999)write_date('0'+dispaly7); /千万if(data_c>999999)write_date(
34、'0'+dispaly6); /百万if(data_c>99999)write_date('0'+dispaly5); /十万write_date('0'+dispaly4); /万write_date('.');write_date('0'+dispaly3); /千write_date('0'+dispaly2); /百write_date('0'+dispaly1); /十 write_date('0'+dispaly0); /个 elseif(data_
35、c>99999999)write_date('0'+dispaly8); /显示万万if(data_c>9999999)write_date('0'+dispaly7); /千万if(data_c>999999)write_date('0'+dispaly6); /百万if(data_c>99999)write_date('0'+dispaly5); /十万if(data_c>9999)write_date('0'+dispaly4); /万if(data_c>999)write
36、_date('0'+dispaly3); /千if(data_c>99)write_date('0'+dispaly2); /百if(data_c>9)write_date('0'+dispaly1); /十write_date('0'+dispaly0); /个 else /溢出时显示错误write_com(0x80+11+0x40); /第一行write_date('E'); /显示 E write_date('r'); /显示Rwrite_date('r'); /显
37、示Rwrite_date('o'); /显示Owrite_date('r'); /显示Evoid eql(uchar x)/加减乘除运算switch(x)/*功能键选择*/ case 1:data_c=data_a+data_b;break; /加 /* + S=1 */ /* 数值转换函数 */case 2:if(data_a>=data_b)data_c=data_a-data_b; /* - S=2 */减 elsedata_c=data_b-data_a;W_lcd(5,1,'-'); /负数符号 break; case 3:dat
38、a_c=(data_a*data_b);break; /* * S=3 */乘case 4:if(data_b=0)LCD_Write_String(0,1,"Error !");elsedata_c=(data_a*10000)/data_b;break; /* / S=4 */除/溢出时显示错误case 0:break; void main()uchar key=0xff; /键值初始化uchar n=0; /第1个数可以按1-4次uchar m=5; /第2个数可以按1-4次uchar x=0; data_a=0; /前一个数data_b=0; /后一个数data_c
39、=0; /结果 init_lcd(); /1602液晶初始化display_a(); while(1) key=keycheckdown();/*动态扫描键盘,返回按键对应值,赋给j key=0到f */if(0xff!=key)/*若返回值有效,进入内部处理程序*/ if(key<10) if(n<4)data_a=data_a*10+key;m=5;display_a();n+; /首先输入第一个数 if(m<4)data_b=data_b*10+key;n=5;display_b();m+; /必须按了+-*/才能输入第二个数 else switch(key)/*功能键
40、选择*/case 0xa:n=5;m=0;x=1;W_lcd(5,0,'+');break; /加 /* + S=1 */ /* 数值转换函数 */case 0xb:n=5;m=0;x=2;W_lcd(5,0,'-');break; /* - S=2 */减case 0xc:n=5;m=0;x=3;W_lcd(5,0,'*');break; /* * S=3 */乘case 0xd:n=5;m=0;x=4;W_lcd(5,0,'/');break; /* / S=4 */除case 0xe:n=5;m=5;eql(x);W_lcd
41、(12,0,'=');display_c(x);break; /* = */case 0xf:n=0;x=0;m=5; data_a=0;data_b=0;data_c=0;LCD_Write_String(0,0,table);LCD_Write_String(0,1,table);W_lcd(0,0,'0');break; /* C*/六、总结 我们设计的简易计算器,基于AT89C52单片机,选用4*4矩阵键盘作为输入模块,LCD1602液晶显示模块能实现基本的四则运算,通过这次设计的学习,着重培养了我独立思考、综合运用所学有关知识的能力,能更好的巩固单片机
42、、C 语言、模拟电路、数字电路学习的内容。通过设计,不仅完成了一个作品,更重要的是在实际设计和试验中形成了更加科学合理的认识,不断形成更为合理和具有科学性的思想方式。在这次设计中接住了互联网等途径查询相关信息,并在图书馆查阅了大量单片机资料。这不但扩展了有关单片机领域的眼界,而且完善了以往的知识体系。提高了运用知识的综合能力。 七、参考文献1 邱关源.电路(第四版)M.北京:高等教育出版社,2006.9.2 康华光.电子技术基础模拟部分(第五版)M.北京: 高等教育出版社,2008.1.3 马刚.用Proteus和Keil整合构建单片机虚拟仿真平台J,现代电子技术,2006.24:129-13
43、14 张迎.单片微型计算机原理、应用及接口技术M.国防工业出版社.2007.15 戴佳.单片机C语言应用程序设计实例精讲M,电子工业出版社,2006.6 胡汉才. 单片机原理及接口技术M. 清华大学出版社7 华成英. 模拟电子技术基础M. 高等教育出版社8 凌志浩.AT89C52单片机原理与接口技术M.高等教育出版社,2011.39 阎石. 数字电子技术基础. 高等教育出版社M10 徐爱钧.智能化测量控制仪表原理与设计(第二版).北京航天航空大学出版社,2004.911 孙育才 等.MCS-51系列单片微型计算机及其应用(第4版).东南大学出版社,2004.312 李萍 等.智能仪器实验指导书
44、.大连交通大学出版社,2007.913 周立功.单片机实验与实践.北京航天航空大学出版社,2004.314 龚运新单片机C语言开发技术.清华大学出版社,2006.10个人总结【李佩航】课程设计给我的帮助,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。硬件的设计、编程都要我们自己动手去,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。熟悉单片机的人都知道,要学好单片机可不是一件容易的事,倒不是因为单片机很难学,而是很难找到一本专为单片机入门者而编写的教材。翻一下身边的单片机教材,都好像是为已经懂单片机的人而写的,一般先介绍单片机的硬件结构和指令系统,再是系统扩展和外围器件,顺便讲一些应用设计。如果按照此种学习方法,想进行产品开发,就必须先把所有的知识全部掌握了才可以进行实际应用。当然,这次课设是对我的学习态度的一次检验。对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。我们这次实习所遇到的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国新型粉煤灰混凝土数据监测研究报告
- 2024至2030年中国多功能采暖炉数据监测研究报告
- 2024年四川省成都市中考语文试题含答案
- 2024至2030年中国SB十二直裙数据监测研究报告
- 2024年中国偏式挂头不锈钢喉箍市场调查研究报告
- 非人力资源经理的人力资源管理讲师版
- 仓库内人员流动管理计划
- 出国打工合同
- 动漫行业月度个人工作计划
- 报停启用供用电协议书范本
- 杨正汉-MRI快速采集技术
- 基于DCS的温度控制系统的设计与应用(共35页)
- 除氧器保温施工方案
- 麻醉医师资格分级授权管理能力评价与再授权制及程序培训考核试题及答案
- 大猫英语分级阅读 六级1 A Letter to New Zealand课件
- 职业史及职业危害接触史证明
- 员工合理化建议管理办法
- 第几和几专项训练
- 乡镇村级建制调整改革社会稳定风险评估报告
- GB∕T 41189-2021 蛋鸭营养需要量
- 预包装饮料酒标签通则
评论
0/150
提交评论