最新《C语言编程实训》实训指导书一.doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC语言编程实训实训指导书一C语言编程实训C语言编程实训实训指导书一 适应专业:应用电子技术 广州康大职业技术学院自动化系 二0 一0年十一月 C语言编程实训 实训一 单片机电路的PROTEUS设计与仿真一、 循环彩灯1 实训目的(1) 通过AT89C51单片机控制8个发光二极管发光,实现循环彩灯的闪亮效果。(2) 用PROTEUS设计循环彩灯电路原理图。(3) 掌握使用PROTEUS进行仿真调试的操作步骤与方法。2 PROTEUS电路设计(1) 从PROTEUS库中选取元器件 AT89C51:单片机 10WATT1K:电阻 LED-GREEN:绿色发光二极管 AVX0402NP033P、AV100U25V:电容、电解电容 CRYSTAL:晶振 SW-SPST:开关(2) 放置元器件(3) 放置电源和地(终端)(4) 连线(5) 元器件属性设置(6) 电气检测注意:以上操作方法详见教材单片机原理与接口技术第6章(P62) 绘制完成的电路原理图如下所示: 图1-1 循环彩灯电路原理图 绘制电路原理图时,也可以用1个排阻RX8代替8个1K电阻10WATT1K。3 源程序设计、生成目标代码文件使用KEIL C 软件进行循环彩灯C语言程序的编辑、编译、链接,并生成HEX文件具体操作步骤与方法详见C语言编程实训实训指导书二。附:原程序清单unsigned int i; char j,k;sbit P3_0=P30;void main()while(1)if(P3_0=0)k=0x80;for (j=0;j<8;j+)P1=k;for(i=0;i<5000;i+);k=k>>1;k=0x01;for (j=0;j<8;j+)P1=k;for(i=0;i<5000;i+);k=k<<1;elseP1=0xff;4 PROTEUS仿真(1) 加载目标代码文件鼠标指针指在器件AT89C51上,先右击再左击,在弹出的属性编辑对话框Program File 一栏中单击打开按钮,出现文件浏览对话框,找到.HEX文件,单击“打开”按钮,完成添加文件。在Clock Frequency栏中把频率设定为12MHZ,单击“OK”按钮退出。(2) 全速仿真单击运行按钮,启动仿真,仿真运行片断如图1-2所示。暗点以0.5HZ频率由低位到高位循环移动。二、位操作控制P1口的输出1实训目的(1)编写含有“位变量”定义语句及执行语句的C语言程序,通过AT89C51单片机P1口实现位操作。(2)用PROTEUS设计灯塔信号灯控制电路原理图。2 PROTEUS电路设计从PROTEUS库中选取以下元器件:RES,CAP,NPN,CRYSTAL,LED-YELLOW,OPTOCOUPLER-NPN,AT89C51.BUS设计如图1-3所示。仿真控制按钮,从左至右依次是:运行、单步运行、暂停、停止。 图1-2 循环彩灯仿真片断 图1-3 灯塔信号灯控制电路原理图3 源程序设计、生成目标代码文件使用KEIL C 软件进行灯塔信号灯C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二。附:原程序清单#include"reg51.h" #define uint unsigned int void delayms(uint) ; sbit P1_0=P10; void main() for(;) P1_0=0; delayms(50); P1_0=1; delayms(50); void delayms(uint xms) uint i,j; for(i=xms;i>0;i-) for(j=110;j>0;j-); 4 PROTEUS仿真(1) 加载目标代码文件(2) 全速仿真三、交通信号灯程序设计11实训目的(1)编写含有“switch”语句结构或含有“for”语句结构的C语言程序,通过AT89C51单片机P1口实现交通信号灯控制。(2)用PROTEUS设计交通信号灯反向控制电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件:10WATT1K,AT89C51,AVX0402NP033P,AX100U25V,CRYSTAL,LED-GREEN,SW-SPST按照教材第59页图5-11所示,画出交通信号灯反向控制电路原理图。3源程序设计、生成目标代码文件使用KEIL C 软件进行交通信号灯控制C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P58。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真四、交通信号灯程序设计21实训目的(1)编写采用函数调用结构的C语言程序,通过AT89C51单片机P1口实现交通信号灯控制。(2)用PROTEUS设计交通信号灯直接控制电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件: RES,BUTTON,AT89C51,TRAFFICLIGHTS,按照教材第78页图7-3所示,画出交通信号灯直接控制电路原理图。 3 源程序设计、生成目标代码文件使用KEIL C 软件进行交通信号灯控制C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P78。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真五、中断嵌套控制程序设计1实训目的(1)编写采用中断嵌套结构的C语言程序,通过AT89C51单片机P1、P2口实现2个响应优先级的中断系统控制。(2)用PROTEUS设计中断嵌套控制电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件:3WATT1K7SEG-COM-ANODE74LS47BUTTONAT89C51按照教材第86页图7-11所示,画出中断嵌套控制电路原理图。3源程序设计、生成目标代码文件使用KEIL C 软件进行中断嵌套控制C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P78。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真六、定时器程序设计1实训目的(1)编写含有一维数组语句、定时器初始化与中断函数的C语言程序,通过AT89C51单片机P1口实现时序控制。(2)用PROTEUS设计定时器控制时序电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件: AT89C51,LED-BARGRAPH-GRN按照教材第97页图8-8所示,画出定时器控制时序电路原理图。3源程序设计、生成目标代码文件使用KEIL C 软件进行定时器C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P98。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真七、计数器程序设计1实训目的(1)编写含有宏定义语句、定时器初始化与定时中断程序的C语言程序,通过AT89C51单片机P1口和P3.4引脚实现数码管显示计数值的控制装置。(2)用PROTEUS设计计数值LED显示的电路原理图。2PROTEUS电路设计(1)从PROTEUS库中选取以下元器件:AT89C51,LED-BARGRAPH-GRN按照教材第101页所示,画出计数值LED显示的电路原理图。(2)点击信号发生器图标,在GENERTORS栏中选用DCLOCK探针接入单片机AT89C51的P3.4引脚;(3)点击左键选中DCLOCK探针(选中后显红色),再点击右键,在弹出对话框的Generator Name 项中输入:U1P34/T0,Frequency(HZ)项中输入:600,最后点击“OK”。3源程序设计、生成目标代码文件使用KEIL C 软件进行LED计数器C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P101。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真八、独立式键盘程序设计1实训目的(1)编写含有wile语句、if语句与一维数组语句的C语言程序,通过AT89C51单片机P1、P2口实现独立式8键键盘的控制电路。(2)用PROTEUS设计独立式键盘电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件:7SEG-COM-CAT-GRN,AT89C51,BUTTON按照教材第136页图10-4所示,画出独立式键盘电路原理图。3源程序设计、生成目标代码文件使用KEIL C 软件进行独立式键盘C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P136。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真九、行列式键盘程序设计1实训目的(1)编写含有宏定义语句、一维数组语句、与、或、非、左移等四种运算语句的C语言程序,通过AT89C51单片机P1口实现行列式键盘的控制电路。(2)用PROTEUS设计4×4行列式键盘电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件:7SEG-COM-CAT-GRN,AT89C51,BUTTON按照教材第140页图10-9所示,画出4×4行列式键盘电路原理图。3源程序设计、生成目标代码文件使用KEIL C 软件进行行列式键盘(扫描法)C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P140。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真十、LED静态显示程序设计11实训目的(1)编写采用一维数组语句(含有数码管显示字段码)的C语言程序,通过AT89C51单片机P2口实现数码循环静态显示的控制电路。(2)用PROTEUS设计静态显示电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件:7SEG-COM-CAT-GRN,AT89C51,BUTTON按照教材第159图11-4所示,画出静态显示电路原理图。3源程序设计、生成目标代码文件使用KEIL C 软件进行静态显示C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P159。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真十一、LED静态显示程序设计21实训目的(1)编写采用MAX7221扩展芯片的C语言程序,通过AT89C51单片机P2.0串行输出实现8位数码管静态显示的控制电路。(2)用PROTEUS设计静态显示电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件:7SEG-MPX8-CA-BLUE (或7SEG-MPX8-CC-BLUE ),AT89C51,10WATT10R,MAX7221按照教材第168页图11-11所示,画出8位数码管静态显示电路图。3源程序设计、生成目标代码文件使用KEIL C 软件进行MAX7221扩展8位数码管C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P168。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真十二、LED动态显示程序设计1实训目的(1)编写采用MAX7221扩展芯片的C语言程序,通过AT89C51单片机P2.0串行输出时间信息,实现数字时钟计时电路。(2)用PROTEUS设计数字时钟电路原理图。2PROTEUS电路设计从PROTEUS库中选取以下元器件:7SEG-MPX8-CA-BLUE(或7SEG-MPX8-CC-BLUE ),AT89C51,10WATT10R,MAX7221按照教材第168页图11-11所示,画出数字时钟电路原理图。3源程序设计、生成目标代码文件使用KEIL C 软件进行LED动态显示C语言程序的编辑、编译、链接,并生成HEX文件。具体操作步骤与方法详见C语言编程实训实训指导书二;C语言程序详见教材P169。4PROTEUS仿真(1)加载目标代码文件(2)全速仿真 -