单片机高级实训项目教程(I)

合集下载

单片机高级实训项目教程(I)

单片机高级实训项目教程(I)

21.拉幕式数码显示技术1.实验任务用AT89S51单片机的P0.0/AD0-P0.7/AD7端口接数码管的a-h端,8位数码管的S1-S8通过74LS138译码器的Y0-Y7来控制选通每个数码管的位选端。

AT89S51单片机的P1.0-P1.2控制74LS138的A,B,C端子。

在8位数码管上从右向左循环显示“12345678”。

能够比较平滑地看到拉幕的效果。

2.电路原理图图4.21.13.系统板上硬件连线(1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上;(2.把“三八译码模块”区域中的Y0-Y7用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;(3.把“单片机系统”区域中的P1.0-P1.2端口用3根导线连接到“三八译码模块”区域中的A、B、C“端口上;4.程序设计方法(1.动态数码显示技术;如何进行动态扫描,由于一次只能让一个数码管显示,因此,要显示8位的数据,必须经过让数码管一个一个轮流显示才可以,同时每个数码管显示的时间大约在1ms到4ms之间,所以为了保证正确显示,我必须每隔1ms,就得刷新一个数码管。

而这刷新时间我们采用单片机的定时/计数器T0来控制,每定时1ms对数码管刷新一次,T0采用方式2。

(2.在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。

5.程序框图主程序框图中断服务程序框图图4.21.26.汇编源程序DISPBUF EQU 30H DISPCNT EQU 38H DISPBIT EQU 39HT1CNTA EQU 3AHT1CNTB EQU 3BHCNT EQU 3CHORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV DISPCNT,#8 MOV A,#10如有帮助,欢迎下载。

MOV R1,#DISPBUFLP: MOV @R1,AINC R1DJNZ DISPCNT,LPMOV DISPBIT,#00HMOV T1CNTA,#00HMOV T1CNTB,#00HMOV CNT,#00HMOV TMOD,#01HMOV TH0,#(65536-1000) / 256MOV TL0,#(65536-1000) MOD 256SETB TR0SETB ET0SETB EASJMP $INT_T0:MOV TH0,#(65536-1000) / 256MOV TL0,#(65536-1000) MOD 256MOV A,DISPBITADD A,#DISPBUFMOV R0,AMOV A,@R0MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,P1ANL A,#0F8HADD A,DISPBITMOV P1,AINC DISPBITMOV A,DISPBITCJNE A,#08H,NEXTMOV DISPBIT,#00HNEXT: INC T1CNTAMOV A,T1CNTACJNE A,#50,LL1MOV T1CNTA,#00HINC T1CNTBMOV A,T1CNTBCJNE A,#8,LL1MOV T1CNTB,#00HINC CNTMOV A,CNTCJNE A,#9,LLX如有帮助,欢迎下载。

单片机实训指导书

单片机实训指导书

实训项目一让单片机动起来1、实训目的及要求:1)掌握单片机开发板的使用方法(驱动识别,程序下载)2)掌握单片机程序开发软件KEIL的使用3)掌握单片机程序烧录软件STC-ISP下载软件的使用2、实训内容1)根据实训报告内容编写单片机程序2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录4)完成实训报告内容3、实训准备硬件:单片机开发板、电脑、杜邦线软件:keil uvision4 、STC-ISP4、实训过程1)流程图2)实训程序一:#include "reg52.h"sbit LED=P1^0;void main(){LED=0;while(1);}实训程序二:#include "reg52.h"#define LED P1;void main(){LED=0xaa;while(1);}3)实训步骤①打开KEIL软件编写LED控制程序。

②程序调试无误后,使用KEIL生产HEX文件。

③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。

3)实验现象记录实训程序一:。

实训程序二:。

4)实训报告要求①将实训程序中的注释补充完整,了解每条语句作用。

实训项目二LED的闪烁1、实训目的及要求:1)掌握单片机控制LED点亮和熄灭的方法。

2)了解单片机延时程序的原理及设计。

3)了解单片机中常用的变量类型及其定义方法。

2、实训内容1)根据实训报告内容编写单片机程序2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录4)完成实训报告内容3、实训准备硬件:单片机开发板、电脑、杜邦线软件:keil uvision4 、STC-ISP4、实训过程1)流程图2)实训程序:#include "reg52.h"#define uchar unsigned char //定义uchar为定义字符型变量,范围#define uint unsigned int //定义uint为定义整型变量,范围sbit LED=P1^0;uint i;//定义整型变量ivoid main(){while(1){LED=0;for(i=0;i<20000;i++);LED=1;for(i=0;i<20000;i++);}}3)实训步骤①打开KEIL软件编写LED闪烁控制程序。

高级电工单片机实操教程

高级电工单片机实操教程

高级电工单片机实操教程1. 简介本文档是一份高级电工单片机实操教程,旨在帮助读者掌握单片机的高级电工实操技巧。

单片机是现代电子技术中最常用的控制器之一,广泛应用于各种电子设备和嵌入式系统中。

本教程将深入介绍单片机的高级电工应用,包括使用不同传感器、执行器和通信接口等进行实际操作。

2. 前提条件在阅读本文档之前,读者需要具备基本的单片机知识,包括单片机的结构、寄存器的基本概念、基本编程语法等。

同时,读者需要具备一定的电工基础,包括电路图的阅读、电路元件的连接等。

3. 实验目的本教程旨在通过实操操作,帮助读者达到以下目标:•掌握单片机与常见传感器的连接和使用方法;•熟悉单片机与执行器的接口和驱动方式;•理解单片机与其他设备之间的通信接口,并能进行相应的通信操作;•学会使用单片机进行数据采集、处理和控制。

4. 实验准备在开始实操之前,读者需要准备以下设备和材料:•单片机开发板(如Arduino、树莓派等)•适配器或电池供电器•USB数据线•传感器模块(如温湿度传感器、光敏传感器等)•执行器模块(如电机驱动模块、LED模块等)•面包板、杜邦线等基本电路连接材料5. 实操流程步骤1:搭建实验环境1.将单片机开发板连接到电脑上,使用USB数据线进行连接。

2.将传感器模块和执行器模块插入到开发板上的相应接口。

3.将适配器或电池供电器连接到开发板上,并确保供电正常。

步骤2:传感器实验1.根据传感器的接线图,将传感器模块与单片机开发板进行连接。

这通常包括连接传感器的电源、地线和数据线。

2.在开发环境中编写相应的代码,通过读取传感器数据,并将其显示在开发板上的显示屏上。

步骤3:执行器实验1.根据执行器的接线图,将执行器模块与单片机开发板进行连接。

这通常包括连接执行器的电源和数据线。

2.在开发环境中编写相应的代码,通过控制单片机的输出引脚,实现对执行器的驱动控制。

1.根据通信接口的要求,将相应的设备与单片机开发板进行连接。

内容扩展_单片机入门与提高实训教程_[共2页]

内容扩展_单片机入门与提高实训教程_[共2页]

71 三、硬件连接
连接好串口下载线与电源线,用排线连接JP7与JP3;用杜邦线连接好P20与JP1的6口,P21与JP1的7口,P22与JP1的8口,然后用跳线冒分别接JP2、JP4、JP5、JP6;用排线连接JP28与JP8,用杜邦线连接JP20的CS 与P35,JP20的P37,JP20的RW 与P36,用跳线冒短接JP25的1与2,JP19的1与2。

四、实验内容
程序的运行结果为:拧动电位器,在数码管显示0~255的数值。

程序流程图如图2-13-4所示。

图2-13-4 程序流程图
1.仿真部分
打开仿真电路图后,将DA/AD (二)实验的.hex 文件下载到单片机里面,查看实验结果。

仿真原理图如图2-13-5所示。

2.实物部分
按照“三、硬件连接”连接好电路,打开STC-ISP 烧录工具,将生成的.hex 文件下载到单片机里面,查看实验结果。

五、内容扩展
利用RFID 实验箱上的AD 芯片做一个5 V 电压表,具体代码与仿真见光盘。

单片机高级实训项目教程(I)

单片机高级实训项目教程(I)

如有你有帮助,请购买下载,谢谢!26.点阵式LED简单图形显示技术1.实验任务在8X8点阵式LED显示“★”、“●”和心形图,通过按键来选择要显示的图形。

2.电路原理图图4.26.13.硬件系统连线(1).把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;(2).把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;(3).把“单片机系统”区域中的P2.0/A8端子用导线连接到“独立式键盘”区域中的SP1端子上;4.程序设计内容(1).“★”在8X8LED点阵上显示图如下图所示12H,14H,3CH,48H,3CH,14H,12H,00H(2).“●”在8X8LED点阵上显示图如下图所示00H,00H,38H,44H,44H,44H,38H,00H(3).心形图在8X8LED点阵上显示图如下图所示30H,48H,44H,22H,44H,48H,30H,00H5.汇编源程序CNTA EQU 30HCOUNT EQU 31H如有你有帮助,请购买下载,谢谢!ORG 00HLJMP STARTORG 0BHLJMP T0XORG 30HSTART: MOV CNTA,#00HMOV COUNT,#00HMOV TMOD,#01HMOV TH0,#(65536-4000) / 256MOV TL0,#(65536-4000) MOD 256SETB TR0SETB ET0SETB EAWT: JB P2.0,WTMOV R6,#5MOV R7,#248D1: DJNZ R7,$DJNZ R6,D1JB P2.0,WTINC COUNTMOV A,COUNTCJNE A,#03H,NEXTMOV COUNT,#00HNEXT: JNB P2.0,$SJMP WTT0X: NOPMOV TH0,#(65536-4000) / 256MOV TL0,#(65536-4000) MOD 256MOV DPTR,#TABMOV A,CNTAMOVC A,@A+DPTRMOV P3,AMOV DPTR,#GRAPHMOV A,COUNTMOV B,#8MUL ABADD A,CNTAMOVC A,@A+DPTRMOV P1,AINC CNTAMOV A,CNTACJNE A,#8,NEXMOV CNTA,#00HNEX: RETI如有你有帮助,请购买下载,谢谢!TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHGRAPH: DB 12H,14H,3CH,48H,3CH,14H,12H,00HDB 00H,00H,38H,44H,44H,44H,38H,00HDB 30H,48H,44H,22H,44H,48H,30H,00HEND6.C语言源程序#include <AT89X52.H>unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char codegraph[3][8]={{0x12,0x14,0x3c,0x48,0x3c,0x14,0x12,0x00},{0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00},{0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00}};unsigned char count;unsigned char cnta;void main(void){unsigned char i,j;TMOD=0x01;TH0=(65536-4000)/256;TL0=(65536-4000)%256;TR0=1;ET0=1;EA=1;while(1){if(P2_0 0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P2_0 0){count++;if(count 3){count=0;}while(P2_0 0);}}}}void t0(void) interrupt 1 using 0{。

高级电工单片机实操教程

高级电工单片机实操教程

试题编号3301控制要求:在内部RAM中20H开始的区域中存有二十个无符号数,找出其中最大和最小数, 分别送34H和35H单元。

(注:目标程序于0800H单元开始)ORG 0000HLJMP MAINORG 0800HMAIN : MOV R0, #20H ;从内部20H 单元开始查找MOV R7, #19 ;20 个数需要比较19 次MOV 34H , @R0 ;将20H 单元的内容同时送34H 和35HMOV 35H, @R0LOOP : INC R0 ;指向下一个单元MOV A , @R0 ;读取到ACCCJNE A , 34H , B1 ;将读取的内容与34H 的内容进行比较,不相等跳B1 处SJMP EXIT ;相等则不作其它比较跳EXIT 处B1 : JC XIAO ;若A的内容小于34H的内容则C为1,跳XIAO处MOV 34H , A ;C为0表明A大于34H的内容则替换掉34H的内容SJMP EXIT ;替换后退出不作最小数比较XIAO : CJNE A , 35H , B2 ;作最小数比较,不相等跳B2 处SJMP EXIT ;相等退出到EXIT 处B2 : JNC EXIT ;若A 的内容大于35H 的内容跳EXIT 处MOV 35H , A ;若A 的内容小于35H 的内容则替换掉35H 的内容EXIT : DJNZ R7 , LOOP ;判断比较次数是否完毕SJMP $ ;比较完毕原地等待ENDH g co f (<) ▲H寸co f (<)AJ老(H寸co )人(< __ wbz H 寸io co co f f /―、 X ―、 /―、 X―、 O O、 * 、 * 、 * 、 *0占—“(0占)呻rF0X202+ 5V3102控制要求:利用8031定时器与中断功能控制一个“航标灯”,黑夜时发光二极管按指定频率闪烁(如:亮2S ,灭2S ,循环);白天时发光二极管不亮。

《单片机实训项目》课件

《单片机实训项目》课件

总结与反思
项目总结
总结了各个项目的实现过程、遇到的问题及解决方法,以及项目所涉及的知识点和技能 。
个人反思
分享了参与单片机实训项目的体会和收获,反思了自己在项目中的表现和不足之处,为 今后的学习和实践提供了借鉴和改进方向。
05 单片机实训项目经验总结
遇到的问题和解决方法
问题1
程序调试困难
解决方法
系统测试
对整个单片机系统进行测试,包括功能测试、性 能测试和稳定性测试等,确保系统满足项目要求 。
04 单片机实训项目成果展示
成果介绍
单片机控制LED闪

该项目实现了通过单片机控制 LED灯的闪烁,展示了单片机的 输入输出功能和控制能力。
温度监测系统
利用单片机实现对环境温度的实 时监测,并通过LCD显示屏显示 温度值,具有温度报警功能。
编程、测试与调试等。
收获2:提高解决问题能力
在遇到问题时,学会了独立思考和团 队协作,提高了解决问题的能力。
收获3:增强实践能力
通过实际操作,增强了动手能力和实 践经验,对理论知识有了更深入的理 解。
对未来学习的建议
在此添加您的文本17字
建议1:加强基础知识学习
在此添加您的文本16字
建议在学习单片机之前,先掌握数字电路、微机原理等基 础知识,为单片机学习打下基础。
程序架构设计
根据项目需求,设计程序架构,包括主程序、中断服 务程序、函数库等。
代码编写与调试
按照程序架构,编写程序代码,并通过调试确保程序 逻辑正确。
调试与测试
1 2 3
仿真器与调试工具选择
根据单片机型号,选择合适的仿真器和调试工具 ,如JTAG仿真器、串口调试工具等。

[单片机实训] 项目1:熟悉单片机的开发环境与烧录软件

[单片机实训] 项目1:熟悉单片机的开发环境与烧录软件

项目1:熟悉单片机的开发环境与烧录软件(1)桌面新建一个空文件夹,例如名称为“2003”,如下图所示:(2)鼠标左键双击下图图标,打开软件:(3)如果打开软件后出现如下图对话框,点击“X”将其关闭,如下图所示:(4)然后新建一个工程,鼠标左击菜单栏上的“Project”,如下图所示:(5)接着鼠标左击“New uVision Project”,如下图所示:(6)出现如下图所示对话框,必须注意的是一定要选择你一开始新建文件夹的位置:(7)输入你想创建的文件名,这里我输入“First_project”,然后鼠标左击“确定”:(8)选择MCU—— 第1步:在“Search”框输入本次实训课所用的单片机“AT89C52”;第2步:鼠标左击选择具体的单片机“AT89C52”,查看描述信息;第3步:鼠标左击“OK”。

(没有STC的选项可以选择相应兼容的产品)(9)出现下列对话框后,直接忽略,鼠标左击“否”:(10)新建一个文本文档,鼠标左击下图所示快捷图标:(11)出现黄色圈内文本文档后,鼠标左击红色圈内“保存快捷图标”进行保存:(12)输入文件名,如“XXX.ASM”或者“XXX.C”(“.ASM”为汇编语言文件格式,“.C”为文件格式),这里我输入了“LED.ASM”采用汇编语言编程方式;最后鼠标左击“保存”:(13)接着鼠标左击“+”,如下图所示:(14)然后鼠标右击“Source Group 1”,如下图所示:(15)然后鼠标左击如下图所示红色圈内命令:(16)添加程序文件第1步:选择之前创建的程序文件(“XXX.ASM”或者“XXX.C”);第2步:鼠标左击“Add”;第3步:鼠标左击“Close”。

(17)查看“Source Group 1”里是否有添加的文件,有则添加成功,在右边即可编程。

(18)在程序编辑区,键入如下图的程序段。

(19)程序编写完成之后,首先点击下图1处的“”按钮,检查有无语法等错误。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

26.点阵式LED简单图形显示技术1.实验任务在8X8点阵式LED显示“★”、“●”和心形图,通过按键来选择要显示的图形。

2.电路原理图图4.26.13.硬件系统连线(1).把“单片机系统”区域中的P1端口用8芯排芯连接到“点阵模块”区域中的“DR1-DR8”端口上;(2).把“单片机系统”区域中的P3端口用8芯排芯连接到“点阵模块”区域中的“DC1-DC8”端口上;(3).把“单片机系统”区域中的P2.0/A8端子用导线连接到“独立式键盘”区域中的SP1端子上;4.程序设计内容(1).“★”在8X8LED点阵上显示图如下图所示12H,14H,3CH,48H,3CH,14H,12H,00H(2).“●”在8X8LED点阵上显示图如下图所示00H,00H,38H,44H,44H,44H,38H,00H(3).心形图在8X8LED点阵上显示图如下图所示30H,48H,44H,22H,44H,48H,30H,00H5.汇编源程序CNTA EQU 30HCOUNT EQU 31HORG 00HLJMP STARTORG 0BHLJMP T0XORG 30HSTART: MOV CNTA,#00HMOV COUNT,#00HMOV TMOD,#01HMOV TH0,#(65536-4000) / 256 MOV TL0,#(65536-4000) MOD 256 SETB TR0SETB ET0SETB EAWT: JB P2.0,WTMOV R6,#5MOV R7,#248D1: DJNZ R7,$DJNZ R6,D1JB P2.0,WTINC COUNTMOV A,COUNTCJNE A,#03H,NEXTMOV COUNT,#00HNEXT: JNB P2.0,$SJMP WTT0X: NOPMOV TH0,#(65536-4000) / 256 MOV TL0,#(65536-4000) MOD 256 MOV DPTR,#TABMOV A,CNTAMOVC A,@A+DPTRMOV P3,AMOV DPTR,#GRAPHMOV A,COUNTMOV B,#8MUL ABADD A,CNTAMOVC A,@A+DPTRMOV P1,AINC CNTAMOV A,CNTACJNE A,#8,NEXMOV CNTA,#00HNEX: RETITAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH GRAPH: DB 12H,14H,3CH,48H,3CH,14H,12H,00HDB 00H,00H,38H,44H,44H,44H,38H,00HDB 30H,48H,44H,22H,44H,48H,30H,00HEND6.C语言源程序#include <AT89X52.H>unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char codegraph[3][8]={{0x12,0x14,0x3c,0x48,0x3c,0x14,0x12,0x00},{0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00},{0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00}};unsigned char count;unsigned char cnta;void main(void){unsigned char i,j;TMOD=0x01;TH0=(65536-4000)/256;TL0=(65536-4000)%256;TR0=1;ET0=1;EA=1;while(1){if(P2_0 0){for(i=5;i>0;i--)for(j=248;j>0;j--);if(P2_0 0){count++;if(count 3){count=0;}while(P2_0 0);}}}}void t0(void) interrupt 1 using 0{TH0=(65536-4000)/256;TL0=(65536-4000)%256;P3=tab[cnta];P1=graph[count][cnta];cnta++;if(cnta 8){cnta=0;}}27.ADC0809A/D转换器基本应用技术1.基本知识ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

(1).ADC0809的内部逻辑结构由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D 转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

(2).引脚结构IN0-IN7:8条模拟量输入通道ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。

当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。

A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择表如下表所示。

C B A 选择的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN31 0 0 IN41 0 1 IN51 1 0 IN61 1 1 IN7数字量输出及控制线:11条ST为转换启动信号。

当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。

EOC为转换结束信号。

当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。

OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。

OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。

D7-D0为数字量输出线。

CLK为时钟输入信号线。

因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。

2.ADC0809应用说明(1).ADC0809内部带有输出锁存器,可以与A T89S51单片机直接相连。

(2).初始化时,使ST和OE信号全为低电平。

(3).送要转换的哪一通道的地址到A,B,C端口上。

(4).在ST端给出一个至少有100ns宽的正脉冲信号。

(5).是否转换完毕,我们根据EOC信号来判断。

(6).当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。

3.实验任务如下图所示,从ADC0809的通道IN3输入0-5V之间的模拟量,通过ADC0809 转换成数字量在数码管上以十进制形成显示出来。

ADC0809的VREF接+5V电压。

4.电路原理图图1.27.15.系统板上硬件连线(1).把“单片机系统板”区域中的P1端口的P1.0-P1.7用8芯排线连接到“动态数码显示”区域中的A B C D E F G H端口上,作为数码管的笔段驱动。

(2).把“单片机系统板”区域中的P2端口的P2.0-P2.7用8芯排线连接到“动态数码显示”区域中的S1 S2 S3 S4 S5 S6 S7 S8端口上,作为数码管的位段选择。

(3).把“单片机系统板”区域中的P0端口的P0.0-P0.7用8芯排线连接到“模数转换模块”区域中的D0D1D2D3D4D5D6D7端口上,A/D转换完毕的数据输入到单片机的P0端口(4).把“模数转换模块”区域中的VREF端子用导线连接到“电源模块”区域中的VCC端子上;(5).把“模数转换模块”区域中的A2A1A0端子用导线连接到“单片机系统”区域中的P3.4 P3.5 P3.6端子上;(6).把“模数转换模块”区域中的ST端子用导线连接到“单片机系统”区域中的P3.0端子上;(7).把“模数转换模块”区域中的OE端子用导线连接到“单片机系统”区域中的P3.1端子上;(8).把“模数转换模块”区域中的EOC端子用导线连接到“单片机系统”区域中的P3.2端子上;(9).把“模数转换模块”区域中的CLK端子用导线连接到“分频模块”区域中的/4 端子上;(10).把“分频模块”区域中的CK IN端子用导线连接到“单片机系统”区域中的ALE 端子上;(11).把“模数转换模块”区域中的IN3端子用导线连接到“三路可调压模块”区域中的VR1 端子上;6.程序设计内容(1).进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。

(2).进行A/D转换之前,要启动转换的方法:ABC=110选择第三通道ST=0,ST=1,ST=0产生启动转换的正脉冲信号7.汇编源程序CH EQU 30HDPCNT EQU 31HDPBUF EQU 33HGDATA EQU 32HST BIT P3.0OE BIT P3.1EOC BIT P3.2ORG 00HLJMP STARTORG 0BHLJMP T0XORG 30HSTART: MOV CH,#0BCHMOV DPCNT,#00HMOV R1,#DPCNTMOV R7,#5MOV A,#10MOV R0,#DPBUFLOP: MOV @R0,AINC R0DJNZ R7,LOPMOV @R0,#00HINC R0MOV @R0,#00HINC R0MOV @R0,#00HMOV TMOD,#01HMOV TH0,#(65536-4000)/256 MOV TL0,#(65536-4000) MOD 256 SETB TR0SETB ET0SETB EAWT: CLR STSETB STCLR STWAIT: JNB EOC,W AITSETB OEMOV GDATA,P0CLR OEMOV A,GDATAMOV B,#100DIV ABMOV 33H,AMOV A,BMOV B,#10DIV ABMOV 34H,AMOV 35H,BSJMP WTT0X: NOPMOV TH0,#(65536-4000)/256 MOV TL0,#(65536-4000) MOD 256 MOV DPTR,#DPCDMOV A,DPCNTADD A,#DPBUFMOV R0,AMOV A,@R0MOVC A,@A+DPTRMOV P1,AMOV DPTR,#DPBTMOV A,DPCNTMOVC A,@A+DPTRMOV P2,AINC DPCNTMOV A,DPCNTCJNE A,#8,NEXTMOV DPCNT,#00HNEXT: RETIDPCD: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH,00HDPBT: DB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FHEND8.C语言源程序#include <AT89X52.H>unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00};unsigned char dispbuf[8]={10,10,10,10,10,0,0,0}; unsigned char dispcount;sbit ST=P3^0;sbit OE=P3^1;sbit EOC=P3^2;unsigned char channel=0xbc;//IN3unsigned char getdata;void main(void){TMOD=0x01;TH0=(65536-4000)/256;TL0=(65536-4000)%256;TR0=1;ET0=1;EA=1;P3=channel;while(1){ST=0;ST=1;ST=0;while(EOC 0);OE=1;getdata=P0;OE=0;dispbuf[2]=getdata/100;getdata=getdata%10;dispbuf[1]=getdata/10;dispbuf[0]=getdata%10;}}void t0(void) interrupt 1 using 0{TH0=(65536-4000)/256;TL0=(65536-4000)%256;P1=dispcode[dispbuf[dispcount]]; P2=dispbitcode[dispcount]; dispcount++;if(dispcount 8){dispcount=0;}}。

相关文档
最新文档