6个单片机实验设计报告

合集下载

单片机实验报告

单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。

2 熟悉循环结构程序的编写。

3 熟悉编程环境和程序的调试。

二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。

例如将4000H开始的10个字节内容清零或全部赋值为33H。

注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。

2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。

5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。

三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。

(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。

3、运行和调试过程。

外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。

同时,学习掌握汇编程序的编写和调试过程。

实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。

2 熟悉循环结构程序的编写,进一步熟悉指令系统。

3 熟悉编程环境和程序的调试。

二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。

单片机实训报告

单片机实训报告

单片机实训报告一、实训目的本次单片机实训的目的在于通过实际操作和项目实践,深入理解单片机的工作原理和应用开发,提高自身的硬件设计能力、软件编程能力以及解决实际问题的能力。

同时,培养团队合作精神和创新思维,为今后从事相关领域的工作打下坚实的基础。

二、实训设备在本次实训中,我们使用了以下主要设备:1、单片机开发板:用于实验和项目的开发与调试。

2、计算机:安装相关的编程软件和开发工具。

3、示波器:用于观察电路中的信号波形。

4、万用表:用于测量电路中的电压、电流等参数。

三、实训内容1、单片机基础知识学习首先,我们对单片机的基本结构、工作原理、指令系统等进行了系统的学习。

了解了单片机的内部组成,包括中央处理器(CPU)、存储器、输入输出端口等。

通过学习指令系统,掌握了如何使用汇编语言或 C 语言对单片机进行编程控制。

2、硬件电路设计在硬件电路设计方面,我们学习了如何根据实际需求设计单片机的最小系统,包括电源电路、时钟电路、复位电路等。

同时,还掌握了如何扩展外部存储器、输入输出设备等。

通过实际绘制电路图和制作电路板,提高了我们的硬件设计能力和动手实践能力。

3、软件编程在软件编程方面,我们使用了汇编语言和 C 语言两种编程方式。

通过编写简单的程序,如点亮 LED 灯、控制数码管显示、实现按键输入等,逐渐熟悉了单片机的编程方法和技巧。

同时,还学习了如何使用中断、定时器、串口通信等功能,提高了程序的复杂程度和实用性。

4、项目实践在项目实践环节,我们分组完成了一个基于单片机的温度控制系统的设计与实现。

该系统通过温度传感器采集环境温度,经过单片机处理后,控制风扇的转速和加热装置的工作状态,从而实现对环境温度的自动控制。

在项目实践过程中,我们充分运用了所学的知识和技能,从系统方案设计、硬件电路搭建、软件编程调试到系统测试优化,每个环节都进行了精心的设计和认真的实施。

四、实训过程在实训开始阶段,我们首先进行了单片机基础知识的学习和实验。

单片机实验报告

单片机实验报告

单⽚机实验报告单⽚机实验报告姓名学号时间地点实验题⽬软件开发环境和简单程序设计⼀、实验⽬的1. 学习I/O⼝的使⽤⽅法。

2. 学习延时⼦程序、查表程序的编写和使⽤。

⼆、实验主要仪器及环境PC机、W A VE软件、仿真器+仿真头、实验板、电源等。

三、实验内容1、P0⼝做输出⼝,接⼋只LED,编写程序,使LED循环点亮,间隔0.5秒。

2、P1.0--P1.7作输⼊⼝接拨动开关S0--S7;P0.0--P0.7作输出⼝,接发光⼆极管L1—L8,编写程序读取开关状态,将此状态在对应的发光⼆极管上显⽰出来,同时将开关编号(0—7)显⽰在LED数码管上四、实验步骤1、先编写好程序并通过伟福仿真软件调试。

2、将编好的程序通过仿真器掻到实验板上进⾏相应的实验。

五、实验程序流程框图、实验程序1. ORG 0000HAJMP MAINMAIN: MOV A,#01H;置初值LOOP: MOV P0,A ;数据输出RL A ;左移⼀位ACALL DELAYSJMP LOOPDELAY:MOV R0,#10 ;延时0.5sK1:MOV R1,#125K2:MOV R2,#200K3:DJNZ R2,K3DJNZ R1,K2DJNZ R0,K1RETP0⼝循环点灯框图AJMP STARTORG 0030HSTART: MOV DPTR,#TABLESETB P1MOV P2,#00HMAIN: MOV A,P1 ;读P1⼝值CJNE A,#0FFH,LOOP;判断是否有输⼊SJMP MAINLOOP: MOV P0,AMOV R0,#00HLOOP1:RRC AJNC LOOP2INC R0 ;计数AJMP LOOP1LOOP2:MOV A,R0MOVC A,@A+DPTR ;查表MOV P2,A ;P2⼝输出AJMP MAINTABLE:DB 03FH 06H 5BH 4FH 66H 6DH 7DH 07HP1⼝输⼊/输出框图六、实验程序分析、讨论及测试1、实验1欲改变LED循环的⽅向程序应如何修改?循环的时间间隔由什么决定?写出间隔时间为1秒的延时程序并说明计算⽅法。

单片机原理及应用实验报告

单片机原理及应用实验报告

《单片机原理及应用》实验报告姓名:学号:班级:应用物理指导教师:日期:实验1 计数显示器一、实验目的熟悉51单片机的基本输入输出应用,掌握Proteus模块的原理图绘图方法及单片机系统仿真运行方法二、实验原理由共阴极数码管LED1和LED2、P0口、P2口,上拉电阻RP1及Vcc组成的输出电路;由按钮开关BUT、P3.7和接地点组成的输入电路,该电路在编程软件的配合下,可实现计数显示功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。

三、实验内容(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能(2)学会选择元件、画导线、修改属性等基本操作(3)学会可执行文件加载及程序仿真运行方法(4)验证计数显示器的功能四、实验要求提交实验报告并包括如下内容:电路原理图、电路原理分析、仿真运行截图及实验小结1.实验原理图2.仿真运行截图3.实验小结通过这次实验让我认识了kell和proteus软件的基本功能,学会了用kell编写程序用proteus仿真运行。

在这次实验中同时也遇到了很多问题。

比如因为第一次使用这两个软件对界面还不太熟悉,浪费了很多的时间也产生了很多错误,但之后与同学们的交流过程中,慢慢的对这两个软件有了更深入的了解,在后期仿真的时候才能得心应手的处理问题。

这个计数显示器的实验让我进一步了解了单片机与数码管的魅力,看到了电子元件的神奇之处,只要按动按键就能让数码管的数字逐次加一,这大大激发了我的学习单片机兴趣,这次实验也会成为我以后学习单片机的奠基石,因为它打开了我认识单片机的大门,让我认识到了单片机的魅力,并让我沉浸其中。

实验2 指示灯开关控制器一、实验目的学习51单片机I/O口基本输入输出功能,掌握汇编语言的编程与调试方法。

二、实验原理输入电路由外接在P1口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告实验名称:频率计 指导教师:徐建军 学生信息:鄢立夏(电气 0903,09271061) 闫琛 (电气 0904,09271121)一、 实验题目 6 位数码管显示频率,测量频率的范围为 50HZ—50KHZ 用外 部中断或计数器,可使用 555 波形发生器。

二、 实验电路频率测量电路鄢立本电路图根据实验板的绘制。

三、 实验原理 本实验中采用了测频的方法,使用了 T0、T1 定时计数器,其中 通过控制 T1 作为定时器设定 1S 延时,T1 作为计数器接受脉冲输入。

1S 延时到,关闭 T0、T1 读取 TH0、TL0 并将此两个 8 位数据转化为 6 位十进制数存储进 30H-35H 的位寻址空间内, 然后调用数码管显示函 数,显示 30H-35H 中的数值。

然后对 T0、T1 做下一次计数的初始化 设置,并清零 TH0、TL0。

再进入下一次测频阶段,如此循环,即可夏实现动态测量输入信号的频率并在数码管上进行显示。

四、 程序控制流程图START 关闭T0、T1 停止计数单片机读取 TH0、TL0T0->十六位计数器 初始化 T1->十六位20ms定 时初始化初始化数据存储空 间初始化数据处理 函数开启T0、T1, 开始计数 数据处理完毕并送至 30H~35H?N YP3.4管脚脉冲NT1,50次中断, 定时1秒到?数码管显示 30H~35H内容N显示完 毕?频 率 计 控 制 流 程 图Y设计:鄢立夏、闫琛五、 实测代码 由于我们采用了自己焊接的 51 单片机最小系统为新片烧写程序,然后将新 片安放至实验板上进行调试的,编写软件为 Keil,所以一下包括注释等某些格式 可能和伟福软件有些不同。

望谅解。

Org 0000H Sjmp Main; Org 000BH; Sjmp Timer0_Serv; 判断 100Khz 时溢出时使用 Org 001BH Sjmp Timer1_Serv; Main: Lcall Sys_Init; LCALL Start; Sys_Loop: Ajmp Sys_Loop; while(1);//开始函数 Start: Setb TR0; Setb TR1; Setb ET1; Setb ET0 Setb EA; Ret; //系统初始化函数 Sys_Init: Lcall Timer_Init; //设置定时时间 50*20ms=1s MOV 20H,#50; //保存 T0 的计数值 Mov 21H,#0; Mov 22h,#0; Mov 23H,#0;//100Khz 位 //设置六位数据存储空间; MOV 31H,#0; MOV 32H,#0; MOV 33H,#0; MOV 34H,#0; MOV 35H,#0; MOV 36H,#0; Ret; //定时器/计数器 0、1 初始化函数,T0 作为计数器,T1 作为定时器 Timer_Init: Mov TMOD,#15H; Mov TH0,#00H; Mov TL0,#00H; Mov TH1,#0ECH;定时 10ms Mov TL1,#078H; Ret; //T0 中断服务函数 Timer0_Serv: INC 23H; 十万位处理; Reti; //T1 中断服务函数 Timer1_Serv: MOV R1,#31H;数据起始位 MOV R2,#6; MOV R4,#0FEH; Single_Spark:;单个数码管亮,循环起来MOV A,R4; MOV P0,A; RL A; MOV R4,A; MOV A,@R1; MOV DPTR,#Led_Data; MOVC A,@A+DPTR; MOV P2,A; INC R1; LCALL Delay; DJNZ R2,Single_Spark; //判断 1S 定时是否已到 Djnz 20H,Timer_Go_On; Clr TR0; Clr TR1; Mov 21H,TL0; Mov 22H,TH0; Mov 20H,#100; LCALL Frequence_Show; Mov TH0,#00H; Mov TL0,#00H; Timer_Go_On: Mov TH1,#0B1H;定时 10ms Mov TL1,#0DFH; SETB TR0; SETB TR1; EXIT: Reti; Frequence_Show: MOV R0,#31H MOV R1,#06H ;对上次的内容清零 Clear_Data: MOV @R0,#0 INC R0 DJNZ R1,Clear_Data; //计数器处理函数,封装. Data_Handle: MOV A,23H; MOV B,#0AH; DIV AB; MOV 24H,A ;存储第一位商 MOV A,B;MOV 30H,22H; ANL 30H,#0F0H; ADD A,30H; SWAP A; MOV B,#0AH; DIV AB; MOV 25H,A MOV A,B; SWAP A; ANL 22H,#0FH; ADD A,22H; MOV B,#0AH; DIV AB; MOV 26H,A MOV A,B; MOV 30H,21H; ANL 30H,#0F0H; ADD A,30H; SWAP A; MOV B,#0AH; DIV AB; MOV 27H,A; MOV A,B; SWAP A; ANL 21H,#0FH; ADD A,21H; MOV B,#0AH; DIV AB; MOV 28H,A; MOV 31H,B MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB; MOV 24H,A MOV A,B; SWAP A; ADD A,26H;;存储第二位商;存储第三位商;存储第四位商;存储第五位商 ;存储十进制数个位;存储第一位商MOV B,#0AH; DIV AB; MOV 25H,A; MOV A,B; SWAP A; ADD A,27H; MOV B,#0AH ; DIV AB ; MOV 26H,A; MOV A,B; SWAP A; ADD A,28H; MOV B,#0AH; DIV AB; MOV 27H,A; MOV 32H,B; MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB ; MOV 24H,A ; MOV A,B ; SWAP A; ADD A,26H; MOV B,#0AH; DIV AB ; MOV 25H,A; MOV A,B; SWAP A ; ADD A,27H; MOV B,#0AH; DIV AB; MOV 26H,A; MOV 33H,B; MOV A,24H; SWAP A; ADD A,25H;;存储第二位商;存储第三位商;存储第四位商 ;存储十进制数十位;存储第一位商;存储第二位商;存储第三位商 ;存储十进制数百位MOV B,#0AH; DIV AB; MOV 24H,A ; MOV A,B; SWAP A; ADD A,26H; MOV B,#0AH; DIV AB; MOV 25H,A MOV 34H,B MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB; MOV 35H,B; MOV 36H,A;;存储第一位商;存储第二位商 ;存储十进制数千位;存储十进制数万位 ;存储十进制数十万位MOV R0,#6; MOV R1,#31H; MOV R2,#0EFH MOV DPTR,#Led_Data;RET; Delay: MOV 40H,#0F0H; Delay_Loop: NOP; DJNZ 40H,Delay_Loop; RET; Led_Data: DB 3FH,06H,5BH,4FH,66H,6DH,0FDH,07H,0FFH,0EFH; END六、 实验问题总结及解决方法 1、 在调试数码管显示子程序时,数码管显示太暗。

单片机实验报告范文

单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。

二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。

2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。

通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。

三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)编写程序,点亮LED灯。

2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)将按键和LED灯与单片机相连。

(3)编写程序,实现按下按键控制LED灯亮灭。

3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)将数码管与单片机相连。

(3)编写程序,将数字输出到数码管上显示。

4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)编写程序,实现定时器功能。

四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。

2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。

按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。

3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。

通过程序设计,可以实现数码管显示不同的数字。

4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。

通过调节定时器的参数,可以实现不同的定时功能。

五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。

通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。

这些技能对于日常生活和工程设计都具有很大的实用性。

在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。

单片机实习报告六篇

单片机实习报告六篇

单片机实习报告六篇单片机实习报告篇1一实习目的1. 通过对单片机小系统的设计、焊接、装配,掌握电路原理图及电子线路的基本焊接装配工艺、规范及注意事项;2. 通过对系统板的测试,了解系统板的工作原理及性能,掌握元器件及系统故障的排除方法;3. 掌握程序编制及调试方法,完成系统初始化、存储器操作、端口操作、键盘显示等程序的编制及调试(汇编语言、C语言均可);4. 通过单片机系统的组装,调试以及程序编制、调试及运行,与理论及实验的有机结合和指导教师的补充介绍,使学生掌握控制系统的工作原理、开发方法和操作方法。

5. 培养学生解决实际问题的能力,提高对理论知识的感性认识。

二实习意义通过本实习不但可以掌握单片机软、硬件的综合调试方法,而且可以熟练掌握电路原理图,激发对单片机智能性的探索精神,提高学生的综合素质,培养学生应用单片机实现对工业控制系统的设计、开发与调试的能力。

在制作学习过程中,不但可以掌握软、硬件的综合调试方法,而且可以使学生对单片机智能性产生强烈的欲望。

达到最大限度地掌握微机应用技术,软件及接口设计和数据采集与处理的技能,培养电综合实践素质的目的。

三系统基本组成及工作原理1 系统基本组成系统以单片机STC89C52作为控制核心,各部分基本组成框图如图1所示。

流水灯部分由单片机、键盘模块等组成;四位数码显示,编程实现30秒倒计时部分由单片机、键盘模块、液晶显示模块等组成;按键功能部分通过按键控制流水灯部分、四位数码显示部分;电子钟部分由单片机、键盘模块、液晶显示模块等组成;使用功能键实现相应的功能组合部分通过流水灯部分、30秒倒计时部分实现;模数转换部分由单片机、ADC0809转换模块、键盘模块、液晶显示模块等组成。

2 系统工作原理本设计采用STC89C52RC单片机作为本系统的控制模块。

单片机可把由ADC0809及单片机中的数据利用软件来进行处理,从而把数据传输到显示模块,实现阻值大小的显示。

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告单片机课程设计实验报告引言单片机是嵌入式系统中常见的一种计算机芯片,具有体积小、功耗低、成本低等优势。

本次实验旨在通过单片机的应用设计,加深对单片机原理和应用的理解,并提升解决问题的能力。

实验目的本次实验的目的是设计一个简单的温度监测系统,通过单片机采集温度传感器的数据,并将数据显示在液晶显示屏上。

通过这个实验,我们可以掌握单片机的基本编程和电路连接方法,同时加深对温度传感器的原理和应用的理解。

实验原理1. 单片机基本原理单片机是一种集成电路,内部包含了CPU、内存、输入输出端口等功能模块。

通过编程,可以控制这些功能模块的工作,实现各种应用。

2. 温度传感器原理温度传感器是一种能够感知环境温度变化的器件,常见的有热敏电阻、热电偶等。

本次实验使用的是热敏电阻,其电阻值随温度的变化而变化。

实验材料1. 单片机开发板2. 温度传感器3. 液晶显示屏4. 连接线等实验步骤1. 连接电路将单片机开发板与温度传感器、液晶显示屏连接起来,确保电路连接正确无误。

2. 编写程序使用C语言编写单片机的程序,实现温度传感器数据的采集和液晶显示屏的显示。

程序的基本思路是通过单片机的模拟输入端口读取温度传感器的电阻值,然后将电阻值转换为温度值,并将温度值显示在液晶显示屏上。

3. 烧录程序将编写好的程序烧录到单片机开发板上,确保程序能够正常运行。

4. 实验测试将温度传感器放置在不同的环境中,观察液晶显示屏上的温度数值是否能够准确显示,并记录实验结果。

实验结果与分析经过实验测试,我们发现温度传感器能够准确地采集环境温度,并将温度数值显示在液晶显示屏上。

通过对比实际温度和显示温度的差异,我们可以评估温度传感器的准确性和精度。

实验总结通过本次实验,我们深入了解了单片机的基本原理和应用,掌握了单片机的编程方法和电路连接方法。

同时,我们也加深了对温度传感器的原理和应用的理解。

这些知识和技能对于今后的学习和工作都具有重要意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一:流水灯
程序:
#include<reg52.h>
sbit d0=P0^0;
sbit d1=P0^1;
sbit d2=P0^2;
sbit d3=P0^3;
sbit d4=P0^4;
sbit d5=P0^5;
sbit d6=P0^6;
sbit d7=P0^7;
void delay(unsigned int x);
{
unsigned int qwe;
for(qwe=t;qwe>0;qwe--);
}
实验五:定时器中断
利用定时器0工作方式1,实现发光管以1s亮灭闪烁
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led1=P1^0;
for(;z>0;z--)
for(y=1000;y>0;y--);
}
实验三:外部中断,数字循环终止,led闪烁报警持续20秒
#include<reg52.h>
unsigned int dulatable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码表
void delay(unsigned int t);//延时函数
double convert(unsigned char sixteen);
unsigned char dushu(void);//从AD读数
void show(double qqq);//数码管显示
void main()
{
unsigned char output;//从AD读出的8位2二进制
void main()
{
while(1)
{
d0=1;
delay(250);
d0=0;
d1=1;
delay(250);
d1=0;
d2=1;
delay(250);
d2=0;
d3=0;
delay(250);
d3=1;
d4=0;
delay(250);
d4=1;
d5=0;
delay(250);
d5=1;
d6=0;
delay(250);
d6=1;
d7=0;
delay(250);
d7=1;
}
}
void delay(unsigned int x)
{
unsigned int y;
for(;x>0;x--)
for(y=500;y>0;y--);
}
实验二:单个数码管显示0~9循环
#include<reg52.h>
unsigned int dulatable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
return(q);
}
double convert(unsigned char sixteen)
{
unsigned int a;
double qq;
a=(unsigned int)sixteen;//强制装换char为unsigned int
qq=(double)a;
qq=qq/256*5;
return(qq);
}
void show(double qqq)
{
unsigned int p,a,b,c,t,d,i,*k[]={&d,&c,&b,&a};
p=(unsigned int)(qqq*1000);
a=p/1000;
p=p%1000;
b=p/100;
p=p%100;
c=p/10;
p=p%10;
d=p;
for(t=1000;t>0;t--)//数码管动态扫描
TR0=1;//启动定时器0
while(1)//程序等待中断发生
}
void T0_time()interrupt 1
{
TH0=(65536-45872)/256;//重装初值
TL0=(65536-45872)%256;
num++;
if(num==20)
{
num=90;
led1=~led1;//发光管状态取反
double dianya;
while(1)
{
output=dushu();
dianya=convert(output);
show(dianya);
}
}
unsigned char dushu( void )
{
unsigned char q,i;
rd=1;
wr=1;
int1=1;//读ADC0804前准备
#include<reg52.h>
sbit int1=P3^3;//定义管脚功能
sbit cs=P3^2;//使能端
sbit wr=P3^6;//写端口
sbit rd=P3^7;//读端口
unsigned int s[]={0x10,0x20,0x40,0x80};//位码表
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码表
{
for(i=0;i<4;i++)
{
P2=s[i];//利用P2.4~P2.7端口作为位选动态扫描
if(i==3)P0=table[*k[i]]&0x7f;//通过&运算点亮第一个数码管小数点
else P0=table[*k[i]];
delay(200);
}
}
}
void delay(unsigned int t)
}
}
实验六:点阵扫描1~3
#include<reg52.h>
unsigned int welatable[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned int dulatable[][8]={0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
void delay(unsigned int z);
void main()
{
unsigned int x;
while(1)
{
for(x=0;x<10;x++)
{
P1=dulatable[x];
delay(250);
}
}
}
void delay(unsigned int z)
{
unsigned int y;
P1=0xff;//P1全部置一准备
cs=0;
wr=0;
wr=1;//启动ADC0804开始测电压
while(int1==1);//等待A/D转换完毕产生INT1(低电平有效)信号
rd=0;//开始读转换后数据
i=i; i=i;
q=P1;//读出的数据赋与output
rd=1;
cs=1;//读数完毕
{
for(t=0;t<120;t++)
{
for(b=0;b<8;b++)
{
P1=dulatable[a][b];
P0=welatable[b];
delay(200);
}
}
}
}
}
void delay(unsigned int x)
{
unsigned int y;
for(y=x;y>0;y--);
}Hale Waihona Puke 0xc3,0xfb,0xfb,0xc3,0xdf,0xdf,0xc3,0xff,
0xc3,0xfb,0xfb,0xc3,0xfb,0xfb,0xc3,0xff,};
void delay(unsigned int x);
void main()
{
unsigned int a,b,t;
while(1)
{
for(a=0;a<3;a++)
{
unsigned int p;
for(p=20;p>=0;p--)
{
d=1;
delay(150);
d=0;
delay(150);
}
}
void delay(unsigned int z)
{
unsigned int y;
for(;z>0;z--)
for(y=1000;y>0;y--);
}
实验四:ADC0804测电压并用四连体共阳数码管显示
sbit d=P0^0;
void delay(unsigned int z);
void main()
{
unsigned int x;
EA=1;
EX0=1;
d=0;
while(1)
{
for(x=0;x<10;x++)
{
P1=dulatable[x];
delay(250);
}
}
}
void exter0() interrupt 0
uchar num;
void main()
{
TOMD=0X01;//设置定时器0工作方式为1(M1M0为01)
TH0=(65536-45872)/256;//装初值11.0952M晶振定时50ms数为45872
相关文档
最新文档