ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:18.05KB ,
资源ID:20446731      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20446731.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机自检实验文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机自检实验文档格式.docx

1、 AJMP LP1 /没有溢出则继续查询LP2: INC R1 /1s计数值+1 CJNE R1, #20, LP1 /没有达到1s则继续等待 MOV R1,#0 /恢复初值 INC R0 /若已到达1s,则显示值+1 CJNE R0, #10, MAIN1 /是否已显示10次?走马灯自检 MOV P2,#0 /关闭数码管 SETB P2.4 /开LED显示 MOV R0,#0FEH /LED显示编码 MOV R1,#0 /走马灯循环计数初始化ZOUMA: MOV P0,R0 MOV A,R0 RL A MOV R0,A /走马灯右移 INC R1 MOV R4,#255 ACALL ADEL

2、AY /延时一段时间 CJNE R1,#8,ZOUMA串行口自检MAIN2: MOV TMOD,#20H /设置计时器T1工作方式2 MOV SCON,#50H /设置为串行端口方式1,允许接收 MOV TH1,#0E8H /计数重装值 MOV TL1,#0E8H /计数器初值 SETB TR1 /启动计时器T1LP3: MOV A,#55H /装入数据 MOV SBUF,A /发送数据 JNB TI,$ /等待发送成功 CLR TI /软件清0 MOV R4,#2 JNB RI,ERRL /接收超时,转入错误提示 CLR RI /软件清0 MOV A,SBUF /读数据 CJNE A,#55

3、H,ERRL/判断接收到的数据是否与发送的一致,不一致则跳转至错误提示 AJMP MAIN3 /若结果正确,则跳转至AD检测 ERRL: MOV DPTR,#ERR /LED显示表表头,以下用于显示错误信息 MOV P2,#0 MOV A,#0 MOVC A,A+DPTR MOV P0,A SETB P2.0 MOV R4,#5 CLR P2.0 MOV A,#1 SETB P2.1 CLR P2.1 MOV A,#2 MOVC A, A+DPTR SETB P2.2 CLR P2.2 MOV A,#3 SETB P2.3 CLR P2.3 AJMP LP3AD自检MAIN3: MOV TMO

4、D,#11H /设置定时器工作方式 MOV TCON,#05H /设置为边沿触发 MOV IE,#8DH /开启计时器1、外部中断0、外部中断1的中断 MOV P3,#0FH SETB RS0 USING 1 MOV R0,#0 USING 0 MOV R1,#0 /50Ms循环计数初始化,累积两次为100ms SETB TR0 /启动定时器0若没有到达100ms,则显示采样值。MAIN4: JBC TF0,ADCLED: CLR P2.3 /关闭第三个LED数码管端口 MOV A,R5 /读百位 SETB P2.1 /打开第一个LED数码管端口 ACALL DALAY /延时 CLR P2.

5、1 /关闭第一个LED数码管端口 MOV A,R6 /读十位 ACALL DALAY CLR P2.2 MOV A,R7 /读个位 ACALL DALAY AJMP MAIN4检测是否100ms到达,若是则调用AD采样,并转换为BCD码ADC: MOV TH0,#4CH /重新装人计数值 INC R1 /50ms循环计数+1 CJNE R1, #2, LED /50ms是否已经两次? MOV R1,#0 /以下用于BCD码转换 ACALL ADP MOV A,R2 MOV B,#100 DIV AB MOV R5,A MOV A,B MOV B,#10 MOV R6,A MOV R7,B AJ

6、MP LEDTLC549 AD转换子函数端口:P1.2:CLK P1.3:DATA OUT P1.4:CS ADP: CLR P1.4 /CS置低,启动数据传输 MOV R0, #00 /循环次数初始化 NOP /延时等待确认CS变化 NOP NXT: SETB P1.2 /置CLK高 MOV C, P1.3 /读取DATA OUT的一位数据 RLC A /装入A累加器暂存,并右移 CLR P1.2 /置CLK低 INC R0 /循环计数+1 CJNE R0, #8, NXT/一个字节的数据需要循环读取8次位数据 SETB P1.4 /CS置高,进行下一次采样 MOV R2, A /存储采样值

7、 RET延时10ms子函数DALAY: MOV R4,#20 /延时10msADELAY: MOV R3,#250 DJNZ R3,$ DJNZ R4,ADELAY 外部中断0OINT0: NOPOINT1: /ACALL DALAY /延时消抖 MOV A,P3 CJNE A, #0FH, LP4 AJMP LP5LP4: MOV TH1,#4CH /50ms定时的初值 MOV TL1,#00H SETB TR1 /启动定时器0 SETB P2.5 /发声LP5: RETI计时器1中断TINT1: INC R0 CJNE R0, #10, LP6 CLR TR1 CLR P2.5LP6: R

8、ETI 数码管显示表TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EHERR: DB 86H,0AFH,0AFH,0F9HEND#includeintrins.hsbit P33=P33;sbit P32=P32;sbit P20=P20;sbit P21=P21;sbit P22=P22;sbit P23=P23;sbit P25=P25;sbit CLK = P12;sbit D0 = P13;sbit CS= P14;char a,c,d,f;char g=20;int h=0;un

9、signed int b,e;unsigned char table=0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98,0x86,0xAF,0xAF,0xF9;/*子函数*/void delay(unsigned int time) unsigned int j=0; for(;time0;time-) for(j=0;j125;j+);void xianshi(x) P0=tablex/1000%10; P20=1; delay(3); P20=0; P0=tablex/100%10; P21=1; P21=0; P0=tablex/10%1

10、0; P22=1; P22=0; P0=tablex%10; P23=1; P23=0;char jianpan() P3=0x0F; if(P32=0|P33=0) delay(20); return 1; return 0;unsigned char tlc549( ) unsigned char y,i; D0=1; CS=1; CLK=1; CS=0; _nop_(); for(i=0;i8; i+) yi-); CS = 1; return y;void xianshiad(x) P0=tablex/100%10; P20=1; delay(5); P20=0; P0=tablex/

11、10%10; P21=1; P21=0; P0=tablex%10; P22=1; P22=0;/*主函数*/void main()/*流水灯*/ P2=0x10; P0=0xFE; for(a=8;aa-) delay(500); P0=_crol_(P0,1);/*数码管*/ b=0; c=1; d=0; P0=0x00; P2=0x00; TMOD=0x01; TH0=(55536/256); TL0=(55536%256); EA=1; ET0=1; TR0=1; while(c) xianshi(b);/*串口*/ f=1; TR0=0; TMOD=0x21; TH1=0xF3; T

12、L1=0xF3; TR1=1; SCON=0x50; PCON=0x00; SBUF=255; delay(1000); e=SBUF; if(e=255) TR0=1; while(f) xianshi(e); else P0=table10; P20=1; delay(3); P20=0; P0=table11; P21=1; P21=0; P0=table12; P22=1; P22=0; P0=table13; P23=1; P23=0;/*ad*/ EX0=1; EX1=1; ET0=0; /T0定时方式1 TL0=(55536%256); tlc549( ); delay(10); while(1) xianshiad(h);/*中断函数*/void time0() interrupt 1 if(c) d+; if(d=50) d=0; b=b+1111; if(b=11110) c=0; if(!c) if(d=100) f=0;f) g-; if(g=0) g=20; h=tlc549(); _nop_(); if(jianpan() if(jianpan() P25=1; delay(500); P25=0; void wai0() interrupt 0 if(jianpan()void wai1() interrupt 2

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1