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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机程序案例全部调试通过部分附仿真图 1.docx

1、单片机程序案例全部调试通过部分附仿真图 1这是大三上学期学单片机做的所有实验题,是全部编程试验箱通过的。总结下,记得条条大道通罗马,不要拘泥于一种方式,仅供参考呀实验一 单片机实验设备的使用及简单程序的运行、调试一、实验目的通过一简单的实验掌握:1. 掌握PL2303驱动的安装,掌握Keil3开发环境的安装、设置和基本使用;2. 掌握项目、文件的建立方法、程序的下载以及寄存器、存储器内容的查看方法;3. 掌握程序的执行及断点设置方法。二、实验设备单片机实验箱一台;PC机一台;USB下载线一根。三、实验内容通过了解P1口的开关控制电路和P0的LED电路,编写基本输入输出实验程序。实验内容为设置P

2、1为输入口,P0口为输出口,将P1口的开关状态发送到P0口,让灯亮灭,将P1的电平状态通过P0口的LED的亮灭表示出来。四、实验步骤读懂电路原理图如图1-1和图1-2所示:,插上USB连接线,将电源选择拨码开关拨至“USB供电”,将示例程序进行编译、装载、下载,下载时将拨码开关S44拨至“开”状态,拨动拨码开关S31S38的开关状态,观察实验现象,实验电路原理图图1-1 LED接口电路图1-2 拨码开关电路图五、示例程序程序清单如下:#include void main(void) / 程序主函数 while(1) / 循环用于实时扫描IO状态 P0=P1; / 将P1口的数据发送给P0口 六

3、、实验注意事项1.在输入程序时,其中的字母、符号均须在英文方式下进行。2.特殊功能寄存器中的字母必须要大写,如若将示例程序中的P0写成p0,程序将提示出错。实验二 流水灯实验一、实验目的1、掌握单片机实验箱的使用方法与程序调试技巧;2、学会使用51系列单片机I/O的基本输入输出功能。二、实验设备单片机实验箱一台;PC机一台;USB下载线一根。三、实验内容设定P1口为8位输入口,P0口为8位输出口,实验电路原理图参考实验一。在8个输入开关(S31S38)中,本实验只要求用两个两关为:S31和S32,当S31为高电平时,P0口所接的发光二极管(D19D26)以一定的速度自左至右循环点亮8次,当S3

4、1为低电平时,发光二极管仅D19点亮;当S32为高电平时,P0口所接的发光二极管(D19D26)以一定的速度自右至左循环点亮8次,当S32为低电平时,发光二极管仅D19点亮。请编写程序并完成调试。四、实验步骤1自行编写程序,将实验箱电源开关拨至USB供电,并将拨码开关总开关S44拨至“开”状态。2下载程序并运行程序,改变开关状态,观察发光二极管显示结果。五、思考题1拨动8个输入开关(S31S38),把8位数据送到P1口,CPU从P1口读入8个开关(S31S38)的状态数据,任意使用其中的两个开关控制P0口发光二极管(D19D26)自左至右、自右至左、自中间至两边、自两边至中间不断循环点亮。请编

5、写程序并调试。28个拨码开关(S31S38)实现对P0口发光二极管的亮度控制。依次拨上开关S31、S32S38,发光二极管由暗变亮;依次拨下开关S38、S37S31,发光二极管由亮变暗。分析:本题存在一定的矛盾与歧义,首先是“一定的速度自左至右循环点亮8次”,8次是一个灯亮算一次还是led灯走一个流程算一次?再者,当两个灯都为高电平时,一个自右向左一个自左向右具有不可协调性。为了方便实验展示,我们设置了两个标志位flag1和flag2。是移位寄存器,其中包含_crol_,_cror_,_irol_,irol_等移位函数,_crol_指char型数左移(left),以此类推。实验程序代码: #i

6、nclude #include #define uchar unsigned char #define d1 255 sbit S31=P10; sbit S32=P11; sbit D19=P00; void delay(uchar d) uchar b; while(-d) for(b=255;b0;b-) _nop_(); void main() uchar sel,i,k1=1,k2=1; while(1) if(S31=0) D19=0; if(S32=1& k1) sel=0xfe; for(i=0;i8;i+) P0=sel; delay(d1); sel=_crol_(sel,

7、1); k1=0; k2=1; if(S32=0) D19=0; if(S31=1& k2) sel=0xfe; for(i=0;i8;i+) P0=sel; delay(d1); sel=_cror_(sel,1); k2=0; k1=0; 本实验也可不使用移位寄存器,改用数组char code table=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f用for循环,把值依次;赋值给P0口,进行流水灯显示。思考题1代码: #include #include #define uchar unsigned char #define d1 255 /宏定义 void

8、 delay(uchar d) uchar b; while(-d) for(b=255;b0;b-) _nop_(); /空操作 void main() uchar temp,sel; while(1) temp=p1&0xff; /检测按键 switch(temp) case 0xff: /左移 sel=0xfe; for(i=0;i8;i+) P0=sel; delay(d1); sel=_crol_(sel,1); break; case 0xfe: /右移 sel=0xfe; for(i=0;i8;i+) P0=sel; delay(d1); sel=_cror_(sel,1); b

9、reak; case 0xfd: /两边向中间 P0=0x7e; delay(d1); P0=0xbd; delay(d1); P0=0xdb; delay(d1); P0=0xe7; delay(d1); break; case 0xfb: /中间向两边 P0=0xe7; delay(d1); P0=0xdb; delay(d1); P0=0xbd; delay(d1); P0=0x7e; delay(d1); break; default: break; 实验三 报警产生器 一、实验目的1、掌握单片机实验箱的使用方法与程序调试技巧;2、学会使用51系列单片机I/O的基本输入输出功能及相应的

10、驱动模块的设计。二、实验设备单片机实验箱一台;PC机一台;USB下载线一根。三、实验内容用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,由开关K1控制输出与否,当开关合上响报警信号,当开关断开报警信号停止,请按流程图编出程序,流程图中的开关K1为实验一原理图中的S38。开关K1按下即S38为高电平,开关K1未按下即S38为低电平。图3-1所示为蜂鸣器驱动电路,图3-2所示为程序流程图。图3-1 蜂鸣器接口电路图3-2 程序流程图四、实验步骤1. 信号产生的方法:500Hz信号周期为2ms,信号电平为每1ms

11、变反1次;1KHz的信号周期为1ms,信号电平每500us变反1次。2. 编写程序,将实验箱电源开关拨至USB供电,并将拨码开关总开关S44拨至“关”状态。3. 下载程序并运行程序,将蜂鸣器开关S1打开,控制蜂鸣器发声。五、思考题1简述你在本次实验中遇到过哪些问题?这些问题是怎样解决的?有何收获和体会?2. 本实验的硬件通过编程可以演奏出悦耳的乐曲、可以实现报警声、门铃声音。现要求单片机产生“嘀、嘀、”报警声从P1.0端口输出,产生频率为1KHz。当1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去时,就形成所需的报警声了。请有兴趣的同学编程调试。程序代码:

12、#include #include #define uint unsigned int sbit S38=P17; sbit BUZZ=P10; void delay() uchar b; for(b=63;b0;b-) /调用一次约为500us _nop_(); void main() while(1) uint FLAG=1,i; while(S38=1) /按键按下 if(FLAG) for(i=0;i200;i+) /500hz BUZZ=BUZZ; delay(); delay(); FLAG=FLAG; else for(i=0;i200;i+) /1000hz BUZZ=BUZZ

13、; delay(); FLAG=FLAG; 思考题2代码: #include #include #define uchar unsigned char sbit S38=P17; sbit BUZZ=P10; void delay() uchar b; for(b=63;b0;b-) _nop_(); void main() while(1) uchar i; while(S38=1) for(i=0;i0;i-) /延时0.2s delay(); 实验四 外部中断实验 一、实验目的1、学习外部中断技术的基本使用方法2、中断处理的编程方法。二、实验设备单片机实验箱一台;PC机一台;USB下载线

14、一根。三、实验内容单片机外部中断0(P3.2)已与独立式键盘中S27连接,外部中断1(P3.3)已与S28连接,要求在无外部中断时最右一位发光二极管(D26)点亮。请编程实现:当S27按下,外部中断0请求中断,控制发光二极管左移;当S28按下,外部中断1请求中断,控制发光二极管闪烁。(要求外部中断1优先级高于外部中断0)。单片机与发光二极管的连续见实验一原理图,独立式键盘原理图如图4-1所示。4-1 独立式键盘原理图四、思考题151单片机的中断系统由哪几个特殊功能寄存器组成? 2中断函数与函数调用有何不同? 3MCS-51单片机若要把外部中断源扩充为6个,另采用哪些方法?如何确定其优先级? 程

15、序代码: #include#includesbit D26=P07;void delay() int a,b; for(a=120;a0;a-) for(b=110;b0;b-); void main() IT0=0; IT1=0; EX0=1; EX1=1; EA=1; PX0=0; PX1=1; while(1) D26=0; void int1(void) interrupt 2 using 1 P0=0x00; delay(); P0=0xff; delay();void int0(void) interrupt 0 using 0 int sel,i; sel=0xfe; for(i

16、=0;i8;i+) P0=sel; delay(); sel=_crol_(sel,1); 仿真图:实验五 数码管实验 一、实验目的1、学习并掌握74HC573锁存器的使用方法;2、学会使用8段共阴极数码管的动态显示方法。二、实验设备单片机实验箱一台;PC机一台;USB下载线一根。三、实验内容通过编程,实现8段数码管的动态扫描显示,要求8个数码管从左到右分别显示“1”、“2”、“3”、“4”、“A”、“b”、“C”、“d”。数码管接口电路如图5-1所示:图5-1 数码管接口电路原理图四、思考题1何谓数码管的动态显示,其原理是什么?2简述锁存器的工作原理,在本实验中具有什么作用?程序代码:#in

17、cludesbit wela=P37;sbit dula=P36;char code t8=0x06,0x5b,0x4f,0x66,0x77,0x7c,0x39,0x5e;char code t18=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;void delayms(char xms) char a,b; for(a=xms;a0;a-) for(b=125;b0;b-);void main() char i; while(1) for(i=0;i8;i+) dula=1; wela=0; P0=ti; dula=0; wela=1; P0=t1i; de

18、layms(10); P0=0XFF; 仿真图:实验六 定时器/计数器实验(一) 一、实验目的掌握单片机定时器和定时中断的编程方法。二、实验设备单片机实验箱一台;PC机一台;USB下载线一根。三、实验内容编写实验程序,实现59秒倒计时功能,初始状态数码管最后两位显示数字“59”,要求定时器0每10ms产生一次中断,在定时中断服务程序里进行计数,计数满一秒,数码管显示相应减1,倒计时结束时,数码管显示“00”,并以周期1秒进行闪烁,单片机与数码管接口电路原理图见实验五中图5-1所示。四、思考题1画出主程序和定时中断流程图;2实验中有何故障、问题出现,是否得到解决?如何解决的?程序代码:#incl

19、udesbit wela=P37;sbit dula=P36;char code table10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;char numd=59,num;void delayms(char xms) char a,b; for(a=xms;a0;a-) for(b=125;b0;b-);void display() char shi,ge; shi=numd/10; ge=numd%10; dula=1; wela=0; P0=tableshi; dula=0; wela=1; P0=0xfe; delayms(10

20、); P0=0XFF; dula=1; wela=0; P0=tablege; dula=0; wela=1; P0=0xfd; delayms(10); P0=0XFF;void main() char flag=1; TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; while(1) if(num=100) num=0; if(numd) numd-; else if(flag) flag=0; else flag=1; if(flag) display(); void timer0()

21、 interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; num+;本实验巧用标志位,老师都夸我逻辑好仿真图:实验七 定时器/计数器实验(二) 一、实验目的1、掌握单片机定时器/计数器的工作方式和编程原理;2、掌握外部脉冲计数方法。二、实验设备及器材单片机实验箱一台;PC机一台;USB下载线一根。三、实验内容单片机的定时器/计数器就是一个16位二进制加法计数器,当选择计数模式时,计数脉冲来自于外部引脚P3.4(T0),P3.5(T1),因此,只需要初始化时将计数寄存器清零,启动计数器,然后读取计数寄存器的数值即可知外部脉冲个数。编写程

22、序实现对T0引脚输入的外部脉冲进行计数,并在数码管上显示计数结果。外部脉冲由独立按键S29产生,要求S29每按一次,产生一个脉冲,数码管显示的数字加1。画出程序流程图,编写程序,并下载调试。独立式按键原理图见实验四中图4-1所示,单片机与数码管接口电路原理图见实验五中图5-1所示。四、思考题1、按键的抖动对本实验有何影响?如何消除?2、请设计程序,实现每当外部脉冲计数达到5个时,数码管显示的数字加1。程序代码:#includesbit t0=P34;sbit wela=P37;sbit dula=P36;char code table10=0x3f,0x06,0x5b,0x4f,0x66,0x

23、6d,0x7d,0x07,0x7f,0x6f;char code t5=0xef,0xf7,0xfb,0xfd,0xfe;char numd;void delayms(char xms) char a,b; for(a=xms;a0;a-) for(b=125;b0;b-);void display() char num4,i; num0=numd%10; num1=numd%100/10; num2=numd%1000/100; num3=numd/1000%10; num4=numd/10000; for(i=0;i5;i+) wela=0; dula=1; P0=tablenumi; w

24、ela=1; dula=0; P0=ti; delayms(10); P0=0xff; void main() TMOD=0X05; TL0=0; TH0=0; TR0=1; ET0=1; EA=1; while(1) numd=TL0; display(); 思考题2部分,只要在主函数while(1)循环中,把numd=TL0;改为numd=TL0/5;即可。本实验计数的上限是65535,到达65535次自动归0。仿真图:本题的抖动问题,是用硬件消除的,在软件部分不显示。之前不知道可以不去抖动,软件试了很多次都不成功。老师后来说软件是没法弄的,总觉得是可以的,你可以试试。实验八 串口通信实验

25、 一、实验目的1、掌握串行口的工作方式及其设置;2、掌握串行口工作方式1的应用;3、掌握串行口的波特率设置。二、实验设备及器材单片机实验箱一台;PC机一台;USB下载线一根。三、实验内容自行编制程:要求利用PL2303实现51单片机串口通信,51单片机发送数据,利用串口调试助手接收并查看数据,串口通信原理图如图7-1所示,PL2003实现串口转USB原理图如图7-2所示。(1)51单片机发送十六进制“5A”到PC机;(2)51单片机发送字符串“0123456789”到PC机。图7-1 单片机与PC机串行通信原理图图7-2 串口转USB原理图四、思考题1.串行通信中波特率是如何进行设置的?2.串行通信4种方式有何区别?3.设计程序实现PC机发送数据,51单片机接收数据,并将接收的数发送至P0口。实验1程序代码:#includevoid main() char message=0x5a; TMOD=0X20; TH1=0XFD; TL1=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1) SBUF=message; while(!TI); TI=0; 实验2程序代码:#includevoid main() char message=0123456789,i; TMOD=0X20; T

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

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