系列单片机的增强型-AT89C51系列单片机电子设计实验报告.docx

上传人:wux****ua 文档编号:8896998 上传时间:2020-04-01 格式:DOCX 页数:42 大小:407.53KB
返回 下载 相关 举报
系列单片机的增强型-AT89C51系列单片机电子设计实验报告.docx_第1页
第1页 / 共42页
系列单片机的增强型-AT89C51系列单片机电子设计实验报告.docx_第2页
第2页 / 共42页
系列单片机的增强型-AT89C51系列单片机电子设计实验报告.docx_第3页
第3页 / 共42页
点击查看更多>>
资源描述
实验报告姓名:宋大威 电气1302班学号20134223067 简介本次项目是以51系列单片机的增强型AT89C51系列单片机,设计与制作单片机系统,按需求设计硬件原理图,编写、调试软件程序 (Keil uVision4) ,硬件电路和软件程序结合,进行硬件调试仿真,烧写调试后的最终程序,系统上电运行。主要包括流水灯、数码管、矩阵键盘、蜂鸣器、数字时钟、液晶 LCD1602、片外RAM 扩展、A/D转换和D/A转换。所用芯片为AT89C51,CY62256,ADC0809,DAC0832锁存器74LS373。目录第一章 流水灯 1.1 实验目的1 1.2电路图1 1.3电路原理2 1.4程序设计思路2 1.5实验心得及反思3第二章 数码管 2.1实验目的4 2,2电路图4 2.3电路原理5 2.4程序设计思路5 2.5实验心得及反思5第三章 矩阵键盘及蜂鸣器 3.1实验目的6 3.2电路图6 3.3电路原理7 3.4程序设计思路7 3.5实验心得及反思7第四章 液晶显示器LCD1602 4.1实验目的8 4.2电路图8 4.3电路原理9 4.4程序设计思路9 4.5实验心得及反思10第五章 片外RAM扩展 5.1实验目的11 5.2电路图12 5.3电路原理12 5.4程序设计思路13 5.5实验心得及反思14第六章A/D转换 6.1实验目的14 6.2电路图15 6.3电路原理16 6.4程序设计思路16 6.5实验心得及反思17第六章D/A转换 7.1实验目的17 7.2电路图18 7.3电路原理19 7.4程序设计思路19 7.5实验心得及反思19第八章 附录程序 8.1流水灯20 8.2数码管21 8.3矩阵键盘22 8.4时钟23 8.5液晶LCD160224 8.6片外RAM25 8.7A/D转换26 8.8D/A转换27第九章 参考文献第一章 流水灯1实验目的u 了解单片机的系统设计方法u 掌握Keil uVision4软件的使用方法u 掌握焊接技术u 在开发板上实现八个发光LED被点亮2电路原理 3 实验原理发光LED灯需要正向电压才能导通,单片机给一个低电平后,所以连接的LED负极,就会导通发亮,点亮8个发光二级管时,先点亮一个,延时,再点亮下一个,再延时,循环往复,形成流水灯。不同规格、不同颜色的LED参数是不一样的。一般普通发光二极管,以红色为例:LED工作电压:1.8V2.4VLED工作电流:2mA20mA一般取电压典型值:U=2VR2 5V -2V/0.02A5V-2V/0.02A =150,1.5K4程序设计思路点亮第三盏灯,并且延时点亮第二盏灯,并且延时点亮第四盏灯,并且延时点亮第一盏灯,并且延时点亮第八盏灯,并且延时点亮第六盏灯,并且延时点亮第五盏灯,并且延时点亮第七盏灯,并且延时开始5实验心得及反思心得;这是我做的第一个实验但是我觉得称呼他为我的作品,从开始时的不知如何下手到后面驾轻就熟,收获巨大,做完本次实验,让我们对单片机有了新的认识,也更加的体会到了将理论与实际结合的重要性。理论联系实际,才能更好的掌握知识运用知识。反思;在焊接电路板之前,我们要先理解本次实验的原理以及电路图的设计和布局,然后再开始焊接编程,在做完整个试验后,才明白需要在做实验之前要有一个大局观。这样才能用最少的空间做出最多的东西。也能节省材料,出现问题时,也有便于我们检查错误。第二章 数码管 1. 实验目的u 了解供阳极数码管的使用方法u 掌握数码管动态显示电路的连接方法u 练习动态显示程序的结构及调试方2. 电路原理图3. 实验原理单片机通过驱动电路给数码管中相应各段的发光二极管加正向电压,该段发光二极管就会被点亮。不同段的发光二极管加正向电压则亮,不加正向电压则灭,这样就可以通过各段的亮灭组合,来显示不同的数字和字符了。本次使用采用P1口为段选,P0.70.2分别对应第一个数码管至第六个数码管。采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出,另一接口完成各数码管的轮流点亮(数位选择)。4. 程序框图给P0口0的段选,选通第一个数码管(P0.7),延时,关闭第一个数码管开始给P0口1的段选,选通第二个数码管(P0.6),延时,关闭第二个数码管给P0口2的段选,选通第三个数码管(P0.5),延时,关闭第三个数码管给P0口3的段选,选通第四个数码管(P0.4),延时,关闭第四个数码管给P0口4的段选,选通第五个数码管(P0.3),延时,关闭第五个数码管给P0口5的段选,选通第六个数码管(P0.2),延时,关闭第六个数码管5. 实验心得本次实验的电路连接有点麻烦,在焊接过程中一分心就容易犯错,所以在做实验中我们必须要注意力高度集中,要不然我们就会得不偿失了。另外,在调试程序时,我们的数码管的显示不很稳定,当时我们没太在意。当老师检验时提出了这一问题,我们后来明白了,在实验中出现任何一丁点异常都要引起注意,把问题解决,这样我们做出的产品才会更有质量保证。第二章 矩阵键盘、时钟与蜂鸣器1. 实验目的l 掌握4*4矩阵式键盘按键地设计方法l 掌握4*4矩阵键盘程序的识别原理l 掌握蜂鸣器的使用方法l 了解定时器的工作原理l 明白用键盘怎样去调试时间并在数码管上显示2. 电路图3. 实验原理i. 矩阵键盘与蜂鸣器为了减少键盘与单片机接口所占用的I/O口的数目,所以将键盘排列成行列矩阵形式,程序先判断有无键按下,当有键按下后,判断哪一个按键被按下,采用逐行扫描查询法。向行线输出全扫描字00H,把全部行线置为地电平,然后将列线的电平状态读入累加器A中,如果有一根列线电平被拉至低电平,从而使列输入不全为1。数码显示第二章已讲,这里不再累述。给P0.0一个信号0,使蜂鸣器导通发声。ii. 时钟使用6位数码管,数码管分别显示时、分、秒,用键盘进行时间的调整。选用定时器T0的第一模式工作 。先赋定时器的计数初值,赋给TL0, B0H,赋给TH0, 3CH,每次的定时时间为50微妙。开放中断,启动定时器。中断二十次即可得到一秒的时间。每秒的延时达到,秒计数加一。当秒计数器计数满60,分计数加一,秒计时清零。当秒计数器计数满60,时计数加一,分计时清零。当时计数器计满24,全部清零。4. 程序框图i. 矩阵键盘与蜂鸣器程序框图开始判断是否有键按下给A以00H,进行行扫描,确定按键行号,保存行首键号然后扫描列,并将对应的列序号保存键号(值)=行首键号+列号延时去抖后再判断按键状态,确定有键按下输出显示,蜂鸣器发声ii. 时钟程序框图开始初始化并设定中断允许进入中断调时调用键盘程序调用时间程序,计时键扫描,确定键值输入键值,进行调时显示时间否是5. 实验心得做完之前的两个实验,我们的信心也加强了,因为我们在学习的过程有了小小的收获。可这次实验却让我们小小的郁闷了,感觉原理不是特别好懂,特别是时钟的程序,因为对单片机的内部工作原理算是懵懂,不过后来,我们还是通过查找资料,慢慢的完成了实验,可以说过程是艰难的,但是我们没有放弃,也许毅力的练成就是从一次一次坎坷中积聚的吧。第三章 液晶显示器(LCD1602)1. 实验目的l 了解LCD液晶显示器的工作原理l 掌握LCD液晶显示器的编程控制方法2. 电路图3. 实验原理1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。4. 程序框图是是否否开始是否忙调LCD显示功能,清屏是否忙送显示调整对比度返回5. 实验心得这次实验主要是让我们了解LCD,知道它作为外设怎么使用就行。虽然用处我们大家都知道,但是不能因为简单我们就不去认真学,毕竟学习是个积累的过程。第四章 片外RAM扩展1. 实验目的l 掌握扩展片RAM的电路和程序设计方法l 理解扩展片RAM时读写和ALE等控制线的作用l 了解片外RAM情况下的单片机指令MOVX的执行进程l 学习心得2. 电路图3. 实验原理由于89C51单片机片内RAM仅有128字节,当系统需要较大容量RAM时,就需要片外扩展数据存储器RAM,最大可扩展64KB。扩展数据存储器空间地址,有P2口提供高8位地址,P0口分时提供8位地址和用作8位双向数据总线,由地址锁存器74H373控制。4. 程序框图由74LS373传送到62256由62256传送回单片机中数码管上面显示数据结束数据传输到62256中开始5. 实验心得这次实验主要是电路的连接,理解时序与有关芯片的原理之后,就相对来说比较简单了。所以在以后的实验中我们既要认真地对待硬件,又要深刻地理解有关软件,这样才能真正地做到灵活运用知识去解决其他问题。第五章 AD转换1. 实验目的l 1、了解AD转换器的工作原理l 2、掌握AD转换与单片机的接口方法l 3、通过实验了解单片机如何进行数据采集2. 电路图3. 实验原理从滑动变阻器上得到模拟电压,将模拟电压信号输入ADC0809芯片,ADC0809将模拟量转化为数字量输入AT89C51,AT89C51将输入的数字量处理,再送到数码管显示。4. 程序框图定义引脚以及显示缓冲区单元清零缓冲区,给DPTR查表表头,ABC已经接地(选择通道0)启动AD转换,待转换结束则输出,缓存结果并关闭输出将AD转换的结果(二进制)转换为BCD码将结果送至显示缓冲区(从低位到高位,并且最高位点亮小数点)分别显示开始5. 实验心得这个实验是持续时间最长的,就因为那一句话使整个实验延长了俩个多月,使我明白了做实验要了解你所用的器件的所有的功能才能使你掌控大局观,实验如此,生活亦是如此,要知己知彼才能百战不殆。第六章 DA转换1. 实验目的l 了解DA转换的基本原理l 了解运算放大器的工作原理l 了解DA转换芯片的性能及编程方法l 掌握如何采集产生波形的样点2. 电路图3. 实验原理使用D/A转换实现数字信号转换为模拟信号。用运算放大器UA741实现电压的放大。通过程序控制产生矩形波,三角波,正弦波。4. 实验心得由于这次实验是需要把数字信号转换为模拟信号,而模拟信号的产生就需要学会如何采集生成波形的样点,初次接触这方面的知识,在理解上与解决问题上给我们带来了困扰,好在有学长的帮助以及我们的坚持,才做出了实验效果。通过这次实验,我们感触很大,因为学长在传递知识时很无私也很友好,也因为我们的毅力让我们选择了接着奋斗。我们相信,以后我们再遇到困难时,继续走下去的决心会加强,我们也会很乐意与人分享我们的知识的。第七章 附录附录一 流水灯程序ORG 0000HAJMP MAINORG 0070HMAIN:MOVP1,#0FEHLCALLAXHMOVP1,#0FDHLCALLAXHMOVP1,#0FBHLCALLAXHMOVP1,#0F7HLCALLAXHMOVP1,#0EFHLCALLAXHMOVP1,#0DFHLCALLAXHMOVP1,#0BFHLCALLAXHMOVP1,#07FHLCALLAXHAJMP MAINAXH:MOV R7,#250 D1:MOV R6,#250 D2:DJNZ R6,D2 DJNZ R7,D1 RETEND附录二 数码管程序ORG 0000HAJMP MAINORG 0030HMAIN:MOVP1,#0C0HCLRP0.7LCALLAXHSETBP0.7MOVP1,#0F9HCLRP0.6LCALLAXHSETBP0.6MOVP1,#0A4HCLRP0.5LCALLAXHSETBP0.5MOVP1,#0B0HCLRP0.4LCALLAXHSETBP0.4MOVP1,#99HCLRP0.3LCALLAXHSETBP0.3MOVP1,#92HCLRP0.2LCALLAXHSETBP0.2AJMP MAINAXH:MOVR7,#2D1:MOVR6,#30D2:DJNZR6,D2DJNZR7,D1END附录三 矩阵键盘程序ORG0000HAJMPKEYORG0030HKEY:MOVP2,#00HMOVA,P2ANLA,#0FHORLA,#0F0HCPLAJZKEYLCALLDEL10msMOVP2,#0FHMOVA,P2ANLA,#0FHORLA,#0F0HCPLAJZKEYSKEY:MOVA,#00MOVR0,A /行值MOVR1,A /列值MOVR3,#7FH/暂存行SKEY2:MOVA,R3 /SKEY2判断行数MOVP2,ANOPNOPNOPMOVA,P2MOVR1,AANLA,#0FHORLA,#0F0HCPLAS123:JNZSKEY3INCR0SETBCMOVA,R3RRCAMOVR3,AMOVA,R0CJNEA,#04H,SKEY2EKEY:RETSKEY3:MOVA,R1 /SKEY3判断列值JNBACC.3,SKEY5JNBACC.2,SKEY6JNBACC.1,SKEY7JNBACC.0,SKEY8AJMPEKEYSKEY5:MOVA,#00HMOVR2,AAJMPDKEYSKEY6:MOVA,#01HMOVR2,AAJMPDKEYSKEY7:MOVA,#02HMOVR2,AAJMPDKEYSKEY8:MOVA,#03HMOVR2,AAJMPDKEYDKEY:MOVA,R0ACALLDECODEAJMPMAIN0DECODE:MOVA,R0MOVB,#04HMULABADDA,R2RETMAIN0:CLRP0.2CJNEA,#00H,MAIN1CLRP0.0MOVP1,#0C0HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIN1:CJNEA,#01H,MAIN2CLRP0.0MOVP1,#0F9HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIN2:CJNEA,#02H,MAIN3CLRP0.0MOVP1,#0A4HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHJMPKEYMAIN3:CJNEA,#03H,MAIN4CLRP0.0MOVP1,#0B0HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIN4:CJNEA,#04H,MAIN5CLRP0.0MOVP1,#99HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIN5:CJNEA,#05H,MAIN6CLRP0.0MOVP1,#92HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIN6:CJNEA,#06H,MAIN7CLRP0.0MOVP1,#82HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIN7:CJNEA,#07H,MAIN8CLRP0.0MOVP1,#0F8HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIN8:CJNEA,#08H,MAIN9CLRP0.0MOVP1,#80HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIN9:CJNEA,#09H,MAINACLRP0.0MOVP1,#90HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAINA:CJNEA,#0AH,MAINBCLRP0.0MOVP1,#88HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAINB:CJNEA,#0BH,MAINCCLRP0.0MOVP1,#83HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAINC:CJNEA,#0CH,MAINDCLRP0.0MOVP1,#0C6HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAIND:CJNEA,#0DH,MAINECLRP0.0MOVP1,#0A1HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAINE:CJNEA,#0EH,MAINFCLRP0.0MOVP1,#86HLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYMAINF:CJNEA,#0FH,CXFCLRP0.0MOVP1,#8EHLCALLDEL50msSETBP0.0SETBP0.2MOVP1,#0FFHAJMPKEYCXF:LJMPKEYDEL10ms:MOVR7,#10HTS1:MOVR6,#0FFHTS2:DJNZR6,TS2DJNZR7,TS1RETDEL50ms:MOVR7,#200TS3:MOVR6,#125TS4:DJNZR6,TS4DJNZR7,TS3RETEND附录四 时钟程序H_BIT EQU 20HM_BIT EQU 21HS_BIT EQU 22HHH EQU 23HMM EQU 24HSS EQU 25HHH_BIT EQU 26HMM_BIT EQU 27HSS_BIT EQU 28HORG 00HAJMP MAINORG 0BHAJMP TIME0ORG 30HMAIN: MOV SP,#60H MOV P2,#0FH MOV R5,#00H MOV H_BIT,#00H MOV M_BIT,#00H MOV S_BIT,#00H MOV HH_BIT,#00H MOV MM_BIT,#00H MOV SS_BIT,#00H MOV HH,#00H MOV MM,#00H MOV SS,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB EA SETB ET0 SETB TR0LOOP: LCALL EY LCALL KEY LJMP LOOPEY: LCALL LOOP1 MOV DPTR,#TAB MOV A,H_BIT MOVC A,A+DPTR MOV P1,A CLR P0.7 LCALL DIS1 SETB P0.7 MOV A,HH_BIT MOVC A,A+DPTR MOV P1,A CLR P0.6 LCALL DIS1 SETB P0.6 MOV A,M_BIT MOVC A,A+DPTR MOV P1,A CLR P0.5 LCALL DIS1 SETB P0.5 MOV A,MM_BIT MOVC A,A+DPTR MOV P1,A CLR P0.4 LCALL DIS1 SETB P0.4 MOV A,S_BIT MOVC A,A+DPTR MOV P1,A CLR P0.3 LCALL DIS1 SETB P0.3 MOV A,SS_BIT MOVC A,A+DPTR MOV P1,A CLR P0.2 LCALL DIS1 SETB P0.2 RETLOOP1: MOV A,SS MOV B,#10 DIV AB MOV S_BIT,A MOV SS_BIT,B MOV A,MM MOV B,#10 DIV AB MOV M_BIT,A MOV MM_BIT,B MOV A,HH MOV B,#10 DIV AB MOV H_BIT,A MOV HH_BIT,B RETTIME0: PUSH ACC PUSH PSW MOV TH0,#3CH MOV TL0,#0B0H INC R5 CJNE R5,#20,LOOP2 MOV R5,#00H INC SS MOV A,SS CJNE A,#60,LOOP2 MOV SS,#00H INC MM MOV A,MM CJNE A,#60,LOOP2 MOV MM,#00H INC HH MOV A,HH CJNE A,#24,LOOP2 MOV HH,#00HLOOP2: POP PSW POP ACC RETIKEY: CLREA LCALLEY JNB P2.3,SS_KEYKEY1: SETBEA RETSS_KEY: LCALL EY1 LCALL DIS1 JNB P2.3,SS_KEYSSA: LCALL EY1 LCALL S_KEY JNB P2.0,KEY3 LJMP SSAKEY3: LJMP KEY1S_KEY: JNB P2.2,S_ADDKEY JNB P2.1,S_DECKEY LCALL DIS1 JNB P2.3,MM_KEY RETS_ADDKEY: LCALLEY1 LCALL DIS1 JNB P2.2,S_ADDKEY INC SS MOV A,SS CJNE A,#60,SS_KEY1 MOV SS,#00HSS_KEY1: LJMP SSAS_DECKEY: LCALLEY1 LCALL DIS1 JNB P2.1,S_DECKEY MOV A,SS CJNE A,#00,SS_KEY2 MOV SS,#60SS_KEY2: DEC SS LJMP SS_KEY1 MM_KEY: LCALL EY2 LCALL DIS1 JNB P2.3,MM_KEYMMA: LCALL EY2 LCALL M_KEY JNB P2.0,KEY4 LJMP MMAKEY4: LJMP KEY1M_KEY: JNB P2.2,M_ADDKEY JNB P2.1,M_DECKEY LCALL DIS1 JNB P2.3,HH_KEY RETM_ADDKEY: LCALLEY2 LCALL DIS1 JNB P2.2,M_ADDKEY INC MM MOV A,MM CJNE A,#60,MM_KEY1 MOV MM,#00HMM_KEY1: LJMP MMAM_DECKEY: LCALLEY2 LCALL DIS1 JNB P2.1,M_DECKEY MOV A,MM CJNE A,#00,MM_KEY2 MOV MM,#60MM_KEY2: DEC MM LJMP MM_KEY1HH_KEY: LCALL EY3 LCALL DIS1 JNB P2.3,HH_KEYHHA: LCALL EY3 LCALL H_KEY JNB P2.0,KEY5 LJMP HHAKEY5: LJMP KEY1H_KEY: JNB P2.2,H_ADDKEY JNB P2.1,H_DECKEY LCALL DIS1 JNB P2.1,SSB RETH_ADDKEY: LCALLEY3 LCALL DIS1 JNB P2.2,H_ADDKEY INC HH MOV A,HH CJNE A,#24,HH_KEY1 MOV HH,#00HHH_KEY1: LJMP HHAH_DECKEY: LCALL EY3 LCALL DIS1 JNB P2.1,H_DECKEY MOV A,HH CJNE A,#00,HH_KEY2 MOV HH,#24HH_KEY2: DEC HH LJMP HH_KEY1SSB: LJMP SS_KEYEY1: LCALL LOOP1 MOV DPTR,#TAB MOV A,S_BIT MOVC A,A+DPTR MOV P1,A CLR P0.3 LCALL DIS1 SETB P0.3 MOV A,SS_BIT MOVC A,A+DPTR MOV P1,A CLR P0.2 LCALL DIS1 SETB P0.2 RETEY2: LCALL LOOP1 MOV DPTR,#TAB MOV A,M_BIT MOVC A,A+DPTR MOV P1,A CLR P0.5 LCALL DIS1 SETB P0.5 MOV A,MM_BIT MOVC A,A+DPTR MOV P1,A CLR P0.4 LCALL DIS1 SETB P0.4 RETEY3: LCALL LOOP1 MOV DPTR,#TAB MOV A,H_BIT MOVC A,A+DPTR MOV P1,A CLR P0.7 LCALL DIS1 SETB P0.7 MOV A,HH_BIT MOVC A,A+DPTR MOV P1,A CLR P0.6 LCALL DIS1 SETB P0.6 RETDIS1: MOV R6,#20 DJNZ R6,$ RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND附录五 液晶LCD1602程序ORG0000HAJMPMAINORG000BHAJMPTIMEORG0100H MAIN:MOVTMOD,#00H MOVTL0,#00H MOVTH0,#00H SETBEA SETBET0 SETBTR0 MOV50H,#32H MOVSP,#60H ACALLMOSHISHEZHI ACALLLCDQP MOVA,#80H ACALLLCDXZL MOVDPTR,#TAB1 ACALLLOOP4 MOVA,#0C0H ACALLLCDXZL MOVDPTR,#TAB2 ACALLLOOP4 LOOP:AJMPLOOP TIME:MOVTL0,#00H MOVTH0,#00H DJNZ50H,TIME0 MOV50H,#32H TIME0:RETI MOSHISHEZHI:MOVA,#38HLCALLLCDXZL MOVA,#0EH LCALLLCDXZL MOVA,#06H LCALLLCDXZL RET LOOP2:PUSHAcc LOOP3:CLRP2.6 SETBP2.7 CLRP2.5 SETBP2.5 MOVA,P1 CLRP2.5 JBAcc.7,LOOP3 POPAcc ACALLDELAY RET LCDXZL:ACALLLOOP2 CLRP2.5 CLRP2.6 CLRP2.7 SETBP2.5 MOVP1,A CLRP2.5 RET LCDDXX:ACALLLOOP2 CLRP2.5 SETBP2.6 CLRP2.7 SETBP2.5 MOVP1,A CLRP2.5 RET DELAY:MOV52H,#05H DELAY1:MOV51H,#0F8HDJNZ51H,$ DJNZ52H,DELAY1 RET LCDQP:MOVA,#01H ACALLLCDXZL RET LOOP4:PUSHAcc LOOP5:CLRA MOVCA,A+DPTR JZLOOP6 ACALLLCDDXX INCDPTR AJMPLOOP5 LOOP6:POPAcc RETTAB1:DB Gue xue ling,00HTAB2:DB Zhong qiang,00HEND附录六 片外RAM程序WR1BITP3.6RD1BITP3.7ORG0000HAJMPMAINORG0030HMAIN:LCALLWRITELCALLREADLCALLSYWRITE:SETBWR1MOVA,#0F8HMOVXR1,ACLRWR1SETBWR1RETREAD:SETBRD1MOVXA,R1CLRRD1SETBRD1RETSY:MOVP1,ACLRP0.2RETEND附录七 AD转换程序#include sbit ALE= P36;sbit ST= P06;sbit OE= P07;sbit EOC= P37;sbit MM1= P05;sbit MM2= P04;sbit MM3= P03;sbit MM4= P02;#define SEGOFF0xFFvoid delay(int z);void main()unsigned int dat= 0;unsigned inttemp= 0;unsigned inttemp1= 0;unsigned char smg0= 0;unsigned char smg1= 0;unsigned char smg2= 0;unsigned char smg3= 0;unsigned int i= 0; bitflag= 0;unsigned char dig10 = 0xC0 ,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; unsigned char dig110 = 0x40 ,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; while(1)/ 数码管0 显示dig0P1= SEGOFF;MM1= 0;P1= dig1smg0;delay(3);MM1= 1;/ 数码管1 显示dig1 P1= SEGOFF;MM2= 0;P1= digsmg1;delay(2);MM2= 1;/ 数码管2 显示dig2P1= SEGOFF; MM3= 0;P1= digsmg2;delay(1);MM3= 1;/ 数码管3 显示dig3P1= SEGOFF; MM4= 0;P1= digsmg3;delay(0);MM4= 1;i = i + 1;/ 从AD0809中读取采集得到的数据if(i10)ST= 0;ALE= 0;OE= 0;/ 设置ALEALE= 1;delay(2);ALE= 0;/ 开始ST= 1;delay(2);ST= 0;/ 保证数据转换成功(ADC)while(!flag)flag= EOC;/ 打开输出允许OE= 1;/ 读出数据dat= P2;OE= 0;temp1= dat*100/256;temp= temp1*40; smg0= temp/1000;smg1= temp%1000/100;smg2= temp%100/10;smg3= temp%10; i= 0;void delay(int z)int x,y;for(x=60;x0;x-)for(y=z;y0;y-);附录八 DA转换程序A. 方波ORG0000HAJMPMAINORG0030HMAIN:SETBP3.4SETBP3.5MOVP1,#0FFHCLRP3.4CLRP3.5LCALLDELAYSETBP3.4SETBP3.5MOVP1,#00HCLRP3.4CLRP3.5LCALLDELAYSETBP3.4SETBP3.5AJMPMAINDELAY:MOVR7,#200DEL1:MOVR6,#125 DEL2:DJNZR6,DEL2 DJNZR7,DEL1 RET ENDB. 三角波ORG0000HAJMPMAINORG0030HMAIN:MOVA,#0FFHMAIN1:SETBP3.4SETBP3.5MOVP1,ACLRP3.4CLRP3.5DECACJNEA,#0H,MAIN1MAIN2:INCASETBP3.4SETBP3.5MOVP1,ACLRP3.4CLRP3.5CJNEA,#0FFH,MAIN2
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!