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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

高校内部C语言单片机实验讲义Word文档格式.docx

1、完成上面步骤后,我们就可以进行程序的编写了。(3)首先我们要在项目中创建新的程序文件或加入旧程序文件。如果你没有现成的程序,那么就要新建一个程序文件。在KEIL中有一些程序的Demo,在这里我们还是以一个C程序为例介绍如何新建一个C程序和如何加到您的第一个项目中吧。点击图15中1的新建文件的快捷按钮,在2中出现一个新的文字编辑窗口,这个操作也可以通过菜单FileNew或快捷键Ctrl+N来实现。好了,现在可以编写程序了,光标已出现在文本编辑窗口中,等待我们的输入了。第一程序嘛,写个简单明了的吧。下面是经典的一段程序:i nclude stdio.hvoid main(void)SCON = 0

2、x50; /串口方式1,允许接收TMOD = 0x20; /定时器1定时方式2TCON = 0x40; /设定时器1开始计数TH1 = 0xE8; /11.0592MHz 1200波特率TL1 = 0xE8;TI = 1;TR1 = 1; /启动定时器while(1)printf (Hello World!n); /显示Hello World图14选取芯片图15新建程序文件 这段程序的功能是不断从串口输出字符,我们先不管程序的语法和意思吧,先看看如何把它加入到项目中和如何编译试运行。(4)点击图15中的3保存新建的程序,也可以用菜单FileSave或快捷键Ctrl+S进行保存。因是新文件所以保

3、存时会弹出类似图13的文件操作窗口,我们把第一个程序命名为test1.c,保存在项目所在的目录中,这时你会发现程序单词有了不同的颜色,说明KEIL的C语法检查生效了。如图16鼠标在屏幕左边的Source Group1文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。我们?quot;Add File to Group Source Group 1弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了。这时在Source Group1文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。图16把文件加入到项目文件组中 (5)C程序文件

4、已被我们加到了项目中了,下面就剩下编译运行了。这个项目我们只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的HEX文件,如何设置生成HEX文件就请看下面的第三课。我们先来看图17吧,图中1、2、3都是编译按钮,不同是1是用于编译单个文件。2是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的。3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。在4中可以看到编译的错误信息和使用的系统资源情况等,以后我们要查错就靠它了。6

5、是有一个小放大镜的按钮,这就是开启关闭调试模式的按钮,它也存在于菜单DebugStartStop Debug Session,快捷键为Ctrl+F5。图17编译程序(6)进入调试模式,软件窗口样式大致如图18所示。图中1为运行,当程序处于停止状态时才有效,2为停止,程序处于运行状态时才有效。3是复位,模拟芯片的复位,程序回到最开头处执行。按4我们可以打开5中的串行调试窗口,这个窗口我们可以看到从51芯片的串行口输入输出的字符,这里的第一个项目也正是在这里看运行结果。这些在菜单中也有,这里不再一一介绍大家不妨找找看,其它的功能也会在后面的课程中慢慢介绍。首先按4打开串行调试窗口,再按运行键,这时

6、就可以看到串行调试窗口中不断的打?Hello World!。这样就完成了您的第一个C项目。最后我们要停止程序运行回到文件编辑模式中,就要先按停止按钮再按开启关闭调试模式按钮。然后我们就可以进行关闭KEIL等相关操作了。到此为止,初步学习了一些KEIL uVision2的项目文件创建、编译、运行和软件仿真的基本操作方法。其中一直有提到一些功能的快捷键的使用,的确在实际的开发应用中快捷键的运用可以大大提高工作的效率,建议大家多多使用,还有就是对这里所讲的操作方法举一反三用于类似的操作中。 图18调试运行程序 实验2:清零、拆字、拼字程序及数据区传送子程序掌握汇编语言设计和调试方法,熟悉键盘操作。二

7、、实验内容(1)把2000H-20FFH的内容清零。(2)把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。(3)把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成个字节。(4)把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。三、程序框图(1)清零程序框图(2)拆字程序框图(3)拼字程序框图(4)数据区传送程序框图(1)用连续或单步方式运行程序,检查2000-20FF中执行程序前后的内容变化。(2)用连续或单步方式运行程序,检查2

8、0002002H中内容变化情况。(3)单步或用断点方式运行程序,检查2002H内容变化情况。(4)在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如2000H), R6、R7中输入字节数(例如1FFFH),运行程序,检查0000-1FFFH中内容是否和2000-3FFFH中内容完全致。实验3:P1口亮灯实验、P1口转弯灯实验(1)学习P1口的使用方法;(2)学习延时子程序的编写。三、实验内容(1)P1口亮灯实验:P1作为输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。P1口对准双向口,每一位都可独立地定义为输出线或输入线。本实验中延时子程序采用指令循环来实现,

9、机器周期(12/6MHz)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。(2)P1口转弯灯实验:P1.0开关接5V时,右转弯灯闪亮,P1.1开关接5V时左转弯灯闪亮, P1.O、P1.1开关同时接5V或接地时,转弯灯均不闪亮。四、程序框图图2-1 p1口亮灯实验程序框图五、实验电路图2-3 P1口亮灯实验电路图图2-4 P1口转弯灯实验电路图六、实验步骤P1.O-P1.7用插针连至L1-L8,运行程序后,观察发光二极管闪亮移位情况。P1.0接K1 P1.1接K2 P1.4-P1.7接L1 L5 L9 L13连续运行本程序,应看到转弯灯正确闪亮,在用单步方式调试本程序时需

10、修改延时子程序,(例可把延时程序第一个字节改成返回指令22H),以便观察。七、思考改变延时常数,使发光二极管闪亮时间改变。修改程序,使发光二极管闪亮移位方向改变。实验4:单片机定时器实验熟悉51定时/计数功能,掌握初始化编程方法。计算机、实验箱或自制实验板把定时器0外部输入的脉冲进行计数,并送显示器显示。五、实验步骤P3.4依次接T0-T7或单步脉冲输出孔,执行程序,观察数码管上计数脉冲的速度及个数。实验5:单片机计数器实验学习51单片机内部定时计数器使用方法。51单片机内部定时计数器T0,按计数器模式工作于方式1,对P34(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来

11、。四、实验电路连线P10 - LED0 P11 - LED1 P12 - LED2 P13 - LED3 P14 - LED4 P15 - LED5 P16 - LED6P17 - LED7 - T0(P34)五、实验说明本实验中内部计数器起计数器的作用。外部事件计数脉冲由T0(P34)脚引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。开始设置T0工作方式(方式1、计数模式)开始计数计数,输出计数值六、参考程序框图

12、实验6:单片机串行口实验1.掌握8051串行口方式0工作方式及编程方法。2.掌握利用串行口扩展I/O通道的方法。启东单片机综合实验箱,导线,数码管,74ls164等。利用8051串行口和串行输入并行输出移位寄存器74LS164,扩展一个8位输出通道,用于驱动一个数码显示器,在数码显示器上循环显示8031串行口输出的09这10个数字。串行口工作在方式0时,可通过外接移位存储器实现串并行转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端总是输出移位同步时钟信号,其波特 率固定为晶振频率1/12。由软件置位串行控制寄存器(SCON)的REN后才能启动串行接收,在CPU将数据写入SBUF

13、寄存器后,立即启动发送。待8位数据输完后,硬件将SCON寄存器的TI位置1,TI必须由软件清零。四、实验线路五、 参考程序清单#include #define LEDLen 6unsigned char volatile OUTBIT; / 位控制口unsigned char volatile OUTSEG; / 段控制口unsigned char volatile IN ; / 键盘读入口#pragma locate(OUTBIT = 0x8002) / 定义各端口的地址#pragma locate(OUTSEG = 0x8004)#pragma locate(IN = 0x8001)#pr

14、agma interrupt(Sio_int=0x200c)/ 定义串口中断向量unsigned char LEDBufLEDLen; / 显示缓冲unsigned char RCVBUF,HasRcv;unsigned char const LEDMAP = / 八段管显示码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;void Delay(unsigned char CNT) unsigned char i; while (CNT- !=0) f

15、or (i=100; i !=0; i-);void DisplayLED() unsigned char i, j, k; unsigned char Pos; unsigned char LED; Pos = 0x20; / 从左边开始显示 for (i = 0; i = 1; / 显示下一位 unsigned char const KeyTable = / 键码定义 0x16, 0x15, 0x14, 0xff, 0x13, 0x12, 0x11, 0x10, 0x0d, 0x0c, 0x0b, 0x0a, 0x0e, 0x03, 0x06, 0x09, 0x0f, 0x02, 0x05

16、, 0x08, 0x00, 0x01, 0x04, 0x07unsigned char TestKey() / 输出线置为0 return (IN & 0x0f); / 读入键状态 (高四位不用)unsigned char GetKey() unsigned char j; unsigned char k; i = 6; / 找出键所在列 do OUTBIT = Pos; k = IN & 0x0f; while (-i != 0) & (k = 0); / 键值 = 列 X 4 + 行 if (k != 0) i *= 4; if (k & 2) i += 1; else if (k & 4

17、) i += 2; 8) i += 3; do Delay(10); while (TestKey(); / 等键释放 return(KeyTablei); / 取出键码 else return(0xff);void Sio_int() if(sp_stat & 0x40) / RI位是否为1? RCVBUF = sbuf_rx; HasRcv = 1;void main() ioc1 = 0x20; / P2.0设为TXD功能 sp_con = 0x09; / 串口模式1,允许接收 baud_rate = 0x9b; / 波特率 2400BPS 6MHz baud_rate = 0x80;

18、int_mask1 = 0x00; / 禁止RI和TI中断 int_mask = 0x40; / 允许串口中断(0x200C) HasRcv = 0; LEDBuf0 = 0xff; LEDBuf1 = 0xff; LEDBuf2 = 0xff; LEDBuf3 = 0xff; LEDBuf4 = 0x00; LEDBuf5 = 0x00; enable() ; / 允许中断 while (1) if(!HasRcv) DisplayLED(); / 显示 if (TestKey() / 如果有键按下 sbuf_tx = GetKey(); / 则用串口输出 else / 已收到数据 LEDB

19、uf5 = LEDMAPRCVBUF & 0x0f; / 显示低4位 LEDBuf4 = LEDMAPRCVBUF / 0x10; / 显示高4位实验7:工业顺序控制实验掌握工业顺序控制程序的简单编程,中断的使用。二、实验预备知识 在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某种顺序有规律地完成预定的动作,对这类继续生产过程的控制称顺序控制,倒注塑机工艺过程大致按“合模注射延时开模产伸产退”顺序动作,用单片机最易实现。 8032P1.0-P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,低电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,高

20、电平启动。P3.3为外部故 障输入模拟开关,低电平报警,P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。按实验电路图接好连线。执行程序,把K1接到电平,观察发光二极管点亮情况,确定工序执行是否正常,然后把K2置为低电平,看是否有声音报警,恢复中断1,报警停,又从刚才报警时一道程序执行下去。可用单步、单步跟踪,非全速断点、全速断点、连续执行功能调试软件,直到符合自己程序设计要求为止。实验8:8255PA口控制PB口、8255控制交通灯掌握单片机系统中扩展外围芯片的方法,了解8255芯片的结构及编程方法。用8255PA口作开关量输入口,PB口作输出口。(2)8255控制交通

21、灯(1) 8255Pa口控制PB口四、实验电路(1)8255Pa口控制PB口(2) 8255控制交通灯(1)8255Pa口控制PB口:8255PA口接K1-K8,PB口接L1-L8运行程序,按Kl-K8,观察L1-L8发光二极管是否对应点亮。8255PA0-PA7 PB0-PB3接发光二极管L15-L13、L11-L9、L7-L5、L3-L1。 执行程序,初始状态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯

22、熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。实验9:单片机键盘输入、数码管显示实验掌握51系统中键盘和显示器的接口方法。掌握中断的使用方法。了解c51的编辑,编译方法。(1)用AT89S51的并行口P1接44矩阵键盘,以P1.0P1.3作输入线,以P1.4P1.7作输出线;在数码管上显示每个按键的“0F”序号。(2)44矩阵键盘识别处理:每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现

23、的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。三、程序清单unsigned char code table=0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;unsigned char temp;unsigned char key;unsigned char i,j;void main(void) while(1) P3=0xff; P3_4=0; temp=P3; temp=temp & if (temp!=0x0f) for(i=50;i0;i-) for(j=200;jj-); switch(temp) case 0x0e: key=7; break; case 0x0d: key=8; case 0x0b: key=9; case 0x07: key=10; P1_0=P1_0; P0=tablekey; 0

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

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