2022年单片机C程序设计实验报告书.docx

上传人:C****o 文档编号:79922976 上传时间:2023-03-22 格式:DOCX 页数:35 大小:818.73KB
返回 下载 相关 举报
2022年单片机C程序设计实验报告书.docx_第1页
第1页 / 共35页
2022年单片机C程序设计实验报告书.docx_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《2022年单片机C程序设计实验报告书.docx》由会员分享,可在线阅读,更多相关《2022年单片机C程序设计实验报告书.docx(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选学习资料 - - - - - - - - - 试验一 并行输入输出口的使用一、试验目的: 学会设计 proteus 7仿真电路,学习P1口的使用方法和延时子程序的编写用 Keil uVision 3 编程实现发光二极管的流水点亮;二、试验原理: P1 口为 8 位准双向 I/O 口,它的每一位都可以分别定义为输入线或输 出线(作为输入时,口锁存器必需置 1);P1 口作为输出,接 8 个发光二极管 D1D8 经限流电阻分别接至 8 个引脚;本试验仿真电路图、流程图如下:D1 R139U1XTAL119470RLED-REDR2D2P0.0/AD038470R R3LED-REDP0.1/A

2、D13718P0.2/AD236P0.3/AD3XTAL2D335P0.4/AD434RST9470RLED-REDP0.5/AD533P0.6/AD632P0.7/AD7R4 470RD421P2.0/A822P2.1/A9PSEN29R5LED-RED23P2.2/A1024P2.3/A112530D5P2.4/A12ALE2631P2.5/A13EA27P2.6/A14P1.01LED-RED28470RP2.7/A1510P3.0/RXDD6112R6P3.1/TXDP1.1123P3.2/INT0P1.2LED-RED134470RP3.3/INT1P1.3145P3.4/T0P1.

3、4156P3.5/T1P1.5R7D7167P3.6/WRP1.6178P3.7/RDP1.7LED-RED470RAT89C51R8D8470RLED-RED开头P1 口初始化点亮 D1 发光二极管延时发光二极管移到下一位循环1 名师归纳总结 - - - - - - -第 1 页,共 18 页精选学习资料 - - - - - - - - - 三、试验代码:#include #include /移位库函数包含于此头文件中 void delayunsigned int d /定义延时子函数 while-d0; void main unsigned char i,sel; while1 sel=0

4、xfe; fori=0;i=8;i+ P1=sel; delay50000; sel=_crol_sel,1; /显示变量赋给 P1 口 /延时/转变显示变量 四、试验结论: 用 while 语句实现发光二极管循环流水点亮,从上到下一次点亮;试验二 C51 分支程序设计一、试验目的: 学习多分支挑选结构和switch 语句,明白循环的嵌套;二、试验原理: do while 循环先执行后判定是否循环,switch 括号中的表达式的值与某 case 后的常量表达式的值相同时,就执行它后面的语句,遇到 break 语句就退出switch 语句;本试验仿真电路图、流程图如下:SW38U1P3.7/RD

5、17D4R4P1.7716P1.6P3.6/WR615P1.5P3.5/T1SW-SPST514P1.4P3.4/T0413P1.3P3.3/INT1SW2312P1.2P3.2/INT0211P1.1P3.1/TXD110SW-SPSTP1.0P3.0/RXDD3 LED-RED470R R328P2.7/A152731EAP2.6/A14D2 LED-RED470R R226P2.5/A133025ALEP2.4/A122924PSENP2.3/A11D1 LED-RED23470R R1P2.2/A1022P2.1/A9219RSTP2.0/A8LED-RED470R32P0.7/AD7

6、3318P0.6/AD634P0.5/AD5XTAL235P0.4/AD436P0.3/AD337P0.2/AD219XTAL138P0.1/AD139P0.0/AD0AT89C51(仿真电路图)2 名师归纳总结 - - - - - - -第 2 页,共 18 页精选学习资料 - - - - - - - - - 开头P1 口初始化将 P1 口赋给 a 并屏蔽高 6 位a+散转地址0 循环子句1 循环子句2 循环子句3 循环子句Y While 是否为真N 终止(流程图)三、试验代码:#include void main char a; do P1=0xff; a=P1; a=a&0x03; sw

7、itcha case 0:P2=0x0e;break; case 1:P2=0x0d;break; case 2:P2=0x0b;break; case 3:P2=0x07;break; while1; 四、试验结论: 多分支挑选的 switch/case语句,可直接处理并行多分支挑选问题,从 匹配表达式的括号开头执行,不再进行判定;3 名师归纳总结 - - - - - - -第 3 页,共 18 页精选学习资料 - - - - - - - - - 试验三 外部中断试验一、试验目的: 把握外部中断的原理以及中断处理程序的编写方法;二、试验原理: 外部中断 0 和外部中断 1 均为下降沿触发,当

8、外部中断 0 发生时, P0端口的电平反向,当外部中断1 发生时, P1 端口的电平反向, LED 状态取反,引脚P3.2、P3.3 是外部中断 INT0 和 INT1 的输入端,本试验仿真电路图、流程图如下:R017U1P1.78R1D1P3.7/RD167LED-REDP3.6/WRP1.6156P3.5/T1P1.5145P3.4/T0P1.4134P3.3/INT1P1.3123P3.2/INT0P1.2112P3.1/TXDP1.1101P3.0/RXDP1.0470R28P2.7/A15EA3127P2.6/A1426P2.5/A132530P2.4/A12ALE2429P2.3/

9、A11PSEN23P2.2/A1022P2.1/A921P2.0/A8470R32RST9P0.7/AD733D0P0.6/AD6XTAL21834P0.5/AD535P0.4/AD436P0.3/AD3LED-RED3719P0.2/AD238P0.1/AD139P0.0/AD0XTAL1AT89C51(仿真电路图)开头初始化 P0、P1 口设置外中断0、外中断 1外中断 0 发生或外中断1 发生为下降沿触发方式P0 口电平反向或 P1 口电平反向LED 熄灭LED 熄灭 等待中断(主程序)(中断服务程序)三、试验代码:4 名师归纳总结 - - - - - - -第 4 页,共 18 页精选

10、学习资料 - - - - - - - - - #include #include void ISOvoid interrupt 0 P0=P0; /P0 端口反向 void IS1void interrupt 2 P1=P1; /P1 端口反向 void main P0=0x00; P1=0xFF; SCON=0x50; TMOD=0x22; TH1=0xF3; TR1=1; IT0=1; IT1=1; /设置下降沿触发方式 EX0=1; EX1=1; EA=1; /中断答应 while1; 四、试验结论: 利用外中断程序可掌握 状态取反;试验四 定时/计数器试验LED 的亮灭, P0 口、P

11、1 口电平反向, LED一、试验目的: 学习定时计数器的使用和编写方法,进一步把握中断处理程序的方法 以及对示波器的明白;二、试验原理: 启动定时器 T1 延时 10ms,当定时时间到产生中断,执行中断程序,LED 熄灭,T1 再延时 10ms,点亮 LED,如此循环, 本试验仿真电路图、 流程图如下:17U1P1.78D0AR1P3.7/RD167P3.6/WRP1.6156P3.5/T1P1.5145P3.4/T0P1.4134P3.3/INT1P1.3123P3.2/INT0 P3.1/TXDP1.2 P1.1112101P3.0/RXDP1.028P2.7/A15EA31LED-RED

12、470R27P2.6/A1426P2.5/A132530P2.4/A12ALE2429P2.3/A11PSEN23P2.2/A1022P2.1/A921P2.0/A832P0.7/AD7 P0.6/AD6RST9B3334XTAL218CP0.5/AD535P0.4/AD436DP0.3/AD337P0.2/AD2XTAL11938P0.1/AD139P0.0/AD0AT89C51(仿真电路图)5 名师归纳总结 - - - - - - -第 5 页,共 18 页精选学习资料 - - - - - - - - - 开头设置 T1 为定时器模式T1 中断送定时初值 10ms 重LED 熄灭置点亮(熄

13、灭) LED 初开 T1 中断值中断返回启动 T1 计数等待中断(主程序)(中断服务程序)三、试验代码:#include sbit Wave=P10; /位定义 void T1ISRvoid interrupt 3 /定时器 T1 中断响应6 名师归纳总结 - - - - - - -第 6 页,共 18 页精选学习资料 - - - - - - - - - Wave=Wave; TL1=0x0F0; /反向 /重置计数初值TH1=0x0D8; void mainvoid Wave=0; /初始化 P1.0=0 TMOD=0x10; /设置定时器 T1 为模式 1 TL1=0x0F0; TH1=0

14、x0D8; TR1=1; /启动定时计数器 ET1=1; EA=1; /开中断 while1 四、试验结论: T1 工作于模式 1,定时器产生 10ms 的定时,定时中断产生,P1.0端 口的输出在示波器中显示, LED 闪耀;利用定时计数器可掌握 LED 的显示时间变化;试验五 外中断使用一、试验目的: 更娴熟的把握外部中断的原理与应用以及中断处理程序的编写方法;二、试验原理: 引脚 P3.2、P3.3分别是外部中断INT0 和外部中断 INT1 的输入端,均为低电平有效,下降沿触发;外中断0 发生, 8 只 LED 全部点亮,外中断1 发生, 8只 LED 闪耀,本试验仿真电路图、流程图如

15、下:17U1P1.78P3.7/RD167P3.6/WRP1.6156P3.5/T1P1.514 135 4P3.4/T0P1.4P3.3/INT1P1.3123P3.2/INT0P1.2112P3.1/TXD P3.0/RXDP1.1 P1.0101R1D128P2.7/A15EA3127 26P2.6/A14P2.5/A13470R R2D2 LED-RED2530P2.4/A12ALE2429P2.3/A11PSEN23P2.2/A10D3 LED-RED470R R322P2.1/A921P2.0/A8470R R4D4 LED-RED32P0.7/AD7RST933P0.6/AD63

16、4P0.5/AD5470R R5D5 LED-RED35XTAL218P0.4/AD436P0.3/AD337P0.2/AD2470R R6D6 LED-RED38XTAL119P0.1/AD1 P0.0/AD039470R R7D7 LED-REDAT89C51470R R8D8 LED-RED470RLED-RED(仿真电路图)7 名师归纳总结 - - - - - - -第 7 页,共 18 页精选学习资料 - - - - - - - - - 开头 中断入口初始化 P0 口中断 1 发生中断 0 发生设定外中断0,外中断 18 只 LED 闪耀8 只 LED 闪耀为下降沿触发方式中断 0

17、是否发生中断答应N Y 等待中断(主程序)(中断服务程序)三、试验代码:#include sbit P32=P32; void delayunsigned int d /定义延时子函数 while-d0; void main P0=0xFF; /熄灭 LED IT0=1; IT1=1; /外中断 0、1 脉冲触发方式 EA=1; EX0=1; EX1=1; /开中断 for; /延时等待中断发生 ; void INT0_ISR interrupt 0 P0=0x00; void INT1_ISR interrupt 2 /外中断 0 中断服务函数 /外中断 1 中断服务函数 whileP32.

18、=0 /假如有外中断 0,退出 delay5000; P0=0x00; delay5000; P0=0xFF; 四、试验结论: 当外中断 0 发生,即按下了 So 按钮, 8 只 LED 点亮;当外中断 1 发生,即按下了 S1 按钮, 8 只 LED 闪耀,遇到外中断 持点亮状态;8 0 发生, 8 只 LED 停止闪耀并保名师归纳总结 - - - - - - -第 8 页,共 18 页精选学习资料 - - - - - - - - - 试验六 串行口双机通信试验一、试验目的: 懂得串行通信的基本概念和 口的 4 种工作方式、通信连线和应用编程;C51 单片机的串行通信接口结构, 熟识串二、试

19、验原理: 单片机 1 将 P1 口拨动开关数据装入 SBUF,经由 TXD 将数据发送给单片机 2,单片机 2 将接收数据存入 SBUF,再由 SBUF 装入累加器,并输出至 P1,点亮相应端口的 LED,本试验仿真电路图、流程图如下:R19DSW188U1P3.7/RD17P1.710OFFON7716P1.6P3.6/WR116615P1.5P3.5/T1125514P1.4P3.4/T0134413P1.3P3.3/INT1143312P1.2P3.2/INT0152211P1.1P3.1/TXD161110P1.0P3.0/RXDDIPSW_831EAP2.7/A152827P2.6/

20、A1426P2.5/A133025ALEP2.4/A122924PSENP2.3/A1123D19RSTP2.2/A1022P2.1/A921P2.0/A832P0.7/AD733470RD2 LED-RED18P0.6/AD634P0.5/AD5XTAL235P0.4/AD4R236P0.3/AD337470RD3 LED-RED19P0.2/AD238XTAL1P0.1/AD139P0.0/AD0R3U2 AT89C51470RLED-RED D48P1.7P3.7/RD17716R4P1.6P3.6/WR615P1.5P3.5/T1514470RLED-RED D5P1.4P3.4/T0

21、413P1.3P3.3/INT1312R5P1.2P3.2/INT0211P1.1P3.1/TXD110P1.0P3.0/RXD470RLED-RED D63128P2.7/A15R6EA27P2.6/A1426P2.5/A13470RLED-RED D73025ALEP2.4/A122924R7PSENP2.3/A1123P2.2/A1022470RLED-RED D89RSTP2.1/A921P2.0/A832R8P0.7/AD733470RLED-RED18XTAL2P0.6/AD634P0.5/AD535P0.4/AD436P0.3/AD337P0.2/AD23819XTAL1P0.1

22、/AD139P0.0/AD0AT89C51(仿真电路图)9 名师归纳总结 - - - - - - -第 9 页,共 18 页精选学习资料 - - - - - - - - - 单片机 1 开头 单片机 2 开头设置波特率 设置波特率串口寄存器设置 串口寄存器设置启动定时器 启动定时器读拨入键值 是否接收数据载入 SBUF 发送 清除 R1 是否发送完 数据暂存清晰 T1 数据输出到 P1 (程序流程图)三、试验代码:单片机 1 的代码:#include #define uint unsigned int #define uchar unsigned char void main uchar i;

23、 TMOD=0x20; TH1=TL1=0xff; SCON=0x50; PCON=0x80; TR1=1; P1=0xff; while1 P1=0xff; i=P1; SBUF=i; whileTI=0; TI=0; 10 名师归纳总结 - - - - - - -第 10 页,共 18 页精选学习资料 - - - - - - - - - 单片机 2 的代码:#include #define uint unsigned int #define uchar unsigned char void main uchar i=0; TMOD=0x20; TH1=TL1=0xff; SCON=0x50

24、; PCON=0x80; TR1=1; while1 whileRI=0 ; RI=0; i=SBUF; P1=i; 四、试验结论: 当开关拨动到左边就对应的LED 点亮,反之 LED 熄灭;将双片单片机串行通信,结果存入 SBUF 并输出至 P1 使相应的 LED 点亮;11 名师归纳总结 - - - - - - -第 11 页,共 18 页精选学习资料 - - - - - - - - - 试验七 单片机串口通信(二)一、试验目的:加深对串行通信的基本概念和C51 单片机的串行通信接口结构的明白,以及串口的工作方式、通信连线和应用编程;二、试验原理: 甲、乙两机以方式1 进行串行通信,甲机第

25、一发送信号AA ,乙机接收到后应答 BB,甲收到 BB 后发送数据,数据发送完毕立刻发送校验和;乙机收齐 一个数据块后,再接收甲发来的校验和,并将其与乙求得的校验和比较,如相等,说明接收正确,乙回答00H,如不等,说明接收不正确,乙回答0FFH,恳求重新发送;开头串口初始化乙 接甲发送信号AA 乙机应答否收不 发送命令帧正确甲运算发送校验和乙机应答否乙运算校验和校验和相等否乙接收正确(程序流程图)三、试验代码:#include #define uchar unsigned char #define TR 1 /TR=1,发送 uchar idata buf10; uchar pf; 12 名师

26、归纳总结 - - - - - - -第 12 页,共 18 页精选学习资料 - - - - - - - - - /* 串行口初始化子函数 */ void initvoid TMOD=0x20; /T1 工作于方式 2 TH0=0xE8; TL0=0xE8; TR1=1; SCON=0X50; /串行口工作于方式1,REN=1 /* 发送子函数 */ void senduchar idata*d uchar i; do SBUF=0xAA; /发送联络信号0 whileTI=0 /等待一帧发送完毕TI=0; /发送完毕,标志位清whileRI=0 /等待乙机应答信号RI=0; while SBU

27、F0xBB.=0; do /乙机未预备好,连续联络 pf=0; /校验和变量清 0 fori=0;i10;i+ SBUF=di; /发送一个数据 pf+=di; /运算校验和 whileTI=0 TI=0; SBUF=pf; whileTI=0 TI=0; whileRI=0 RI=0; /发送校验和 /等待乙机应答 whileSBUF.=0; /回答出错,就重新发送/* 接收函数 */ void receiveuchar idata*d uchar i; do whileRI=0 RI=0; whileSBUF0xAA.=0; /判定甲机是否恳求 SBUF=0xBB; /发应答信号 whil

28、eTI=0 TI=0; while1 pf=0; /清校验和 fori=0;i10;i+ di=SBUF; /接收数据 pf+=di; 13 名师归纳总结 - - - - - - -第 13 页,共 18 页精选学习资料 - - - - - - - - - /运算校验和 whileRI=0 RI=0; / 接收甲校验和ifSBUFpf=0 /比较校验和0x00 SBUF=0x00;break; /校验和相等,发else SBUF=0xFF; /校验和不相等,发 0xFF whileTI=0 TI=0; void main init; /串行口初始化子函数ifTR=0 sendbuf; /发送

29、else receivebuf; /接收P3 口连接,设置寄存器SBUF,串口工作于方 四、试验结论: 甲、乙两单片机通过式 1.依据 TR 的设置,利用发送函数和接收函数分别实现发送和接收功能;试验八 多位七段数码动态显示一、试验目的: 把握数码管动态显示数字的原理和连接方式,学习端口输入输出的应 用,以及 74LS245 驱动 LED 显示的电路设计;二、试验原理: 轮番选中各位 LED 数码管,同时给 P0 口送不同的码字,并做肯定的 视觉残留,数码管就会同时显现不同的数字;本试验仿真电路图、流程图如下:(仿真电路图)14 名师归纳总结 - - - - - - -第 14 页,共 18

30、页精选学习资料 - - - - - - - - - 开头位码赋初值点亮循环 延时 1ms 次数 加关闭显示1 调整位码到下循环次数是否小于 0 否终止(流程图)三、试验代码:#include #define uchar unsigned char uchar data dis_buf6; /显示缓冲区table uchar code 18=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00; void d1_ms /代码表 /延时 1 ms 函数 unsigned i

31、nt j; forj=0;j200;j+ ; void displayvoid /显示函数 uchar segcode,bitcode,i; bitcode=0xfe; /位码赋初值 fori=0;i6;i+ segcode=dis_bufi; /显示缓冲器内容查表 P0=tablesegcode; P3=bitcode; d1_ms; P3=0xff; /关闭显示 bitcode=bitcode1; /调整位码 bitcode=bitcode|0x01; 15 名师归纳总结 - - - - - - -第 15 页,共 18 页精选学习资料 - - - - - - - - - void mai

32、nvoid dis_buf0=1; dis_buf1=2; /显示缓冲区赋初值dis_buf2=3; dis_buf3=4; dis_buf4=5; dis_buf5=6; while1 display; 四、试验结论: 七段数码管动态显示是一位一位轮番点亮各位数码管,每隔一段时间显示,设置点亮延时时间短,循环扫描点亮,使人眼辨论不出,看到各位数码管同时发光;试验九 数/模转换试验一、试验目的: 学习把握 D/A 转换基本原理,把握D/A 转换程序设计方法;二、试验原理: D/A 转换器的功能主要是将输入的数字量信号转换成模拟量,检测按键执行相应的 D/A 转换,显示结果;本试验仿真电路图、流

33、程图如下:39U1XTAL1191U2VCC20U3-2.49P0.0/AD038CSP0.1/AD137XTAL218219P0.2/AD2WR1ILEBY1/BY236318P0.3/AD3GNDWR235417P0.4/AD4RST9DI3XFER34516P0.5/AD5DI2DI433615P0.6/AD6DI1DI532714P0.7/AD7DI0DI681321P2.0/A8PSEN29VREFDI7912RFBIOUT2221011P2.1/A9GNDIOUT123P2.2/A10DAC083224VoltsP2.3/A112530OPAMPP2.4/A12ALE2631P2.

34、5/A13EA27P2.6/A1428P2.7/A1510P3.0/RXDP1.01112P3.1/TXDP1.1123P3.2/INT0P1.2134P3.3/INT1P1.3145P3.4/T0P1.4156P3.5/T1P1.5167P3.6/WRP1.6178P3.7/RDP1.7AT89C51开头DCA0832 初始化检测按键D/A 转换显示(流程图)16 名师归纳总结 - - - - - - -第 16 页,共 18 页精选学习资料 - - - - - - - - - 三、试验代码:#include #include #define uchar unsigned char #def

35、ine DAC0832 XBYTE0x7fff sbit P10=P10; sbit P12=P12; void main DAC0832=0x80; while1 P1=0xff; ifP10=0 DAC0832=0xff; ifP12=0 DAC0832=0x00; 四、试验结论: 通过手动按键将数字量试验十 模/数转换试验DAC0832 转换输出模拟电压信号;一、试验目的: 学习把握 A/D 转换基本原理,把握用无条件方式、查询方式、中断方 式完成模 /数转换程序的编写方法;二、试验原理: A/D 转换是将模拟量转换为肯定码制的数字量;调剂滑动变阻器将模拟量转换成数字量通过P1 口输出显

36、示;本试验仿真电路图、流程图如下:CK LO 3C UD119U1P0.0/AD039 38U2:A 74LS0210U3IN026RV1+2.502CLOCK31627 28STARTIN17EOCIN21 2IN321 20IN4XTAL1OUT13 4IN5P0.1/AD1 P0.2/AD2OUT2 OUT3IN6 IN71837 3619 185XTAL21kP0.3/AD3 P0.4/AD4OUT4 OUT525 24Volts35 348 15ADD ALED-RED D29P0.5/AD5 P0.6/AD6OUT6 OUT7ADD B ADD CRST331423321722P0.7/AD7OUT8ALED3 LED-RED29PSENP2.0/A8 P2.1/A92159OEVREF+ VREF-1222416

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁