版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南京晓庄学院电子工程学院实验报告课程名称:单片机系统设计与应用姓 名: 森专 业:电子信息科学与技术年级:14级学号:052016年 12月1 日实验项目列表厅P实验项目名称成绩指导教师1单片机仿真软件的使用2单片机I/O接口应用实验 流水灯3外部中断实验一一工业顺序控制模拟4定时/计数器实验一一矩形波5定时/计数器实验一一计数器6综合实验789101、实验箱端口为 com6。2、芯片选择切换到 513、停止运行使用实验箱上的复位按钮实验室号: 实验时间: 成绩: 实验一仿真软件的使用1实验目的和要求1)熟悉 Keil C51 软件界面,以及编辑、编译、运行程序的步骤;2)掌握单片机仿真软件使
2、用和调试的方法。2实验原理Keil C51 软件使用在 Keil C51 集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51 集成开发环境下各种菜单、命令的使用。3主要仪器设备(实验用的软硬件环境)安装有 Keil C51 软件的 PC 机 1 台4操作方法与实验步骤Keil C51 软件使用( 1 )建立用户文件夹( 2)建立工程( 3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中( 4)把文件加入工程中( 5)编译工程。编译时观察在界面下方的“Build ”页中的到编译错误信息和使用的系统资源情况等。( 6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过
3、、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。( 7)目标代码文件的生成。运行生成相应的.HEX 文件。5实验内容及程序1) 从 DATA 区地址起始地址为40H 的连续10 个内存单元的内容传送到XDATA 区起始地址为 2000H 的 10 个内存单元中。注意: DATA 区地址起始地址为40H 的连续10 个内存单元必须先赋初值。P83-5 源程序#include #define uchar unsigned charxdata unsigned cha
4、r buffer110_at_ 0x2000;验讨论及分析如果将 P1 口高 4 位定义为输入,低 4 位定义为输出,将高 4 位输入的值在低4 位显示出来,请写出对应程序。实验室号:实验时间: 成绩: 实验三 外部中断实验一一工业顺序控制模拟1 .实验目的和要求1)掌握单片机系统中断原理和使用方法。2)掌握中断处理程序的编写方法2 .电路原理图(附proteus电路原理图)3 .主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件与Proteus仿真软件PC机1台 单片机试验箱一套4 .实验说明及实验步骤在工业控制中,象冲压、注塑、轻纺、制瓶等生产过程,都是一些继续生产过程,按某
5、种顺序有规律的完成预定的动作,对这类继续生产过程的控制称顺序控制,象注塑机工艺过程大致按“合模注射 延时 开模 产伸产退”顺序动作,用单片机最易实现。1)源程序设计分析设计要求,根据任务要求,绘制源程序流程图,然后使用Keil C进行源程序文件的设计与调试,观察并分析程序调试结果。2)硬件运行加载目标代码至单片机中,运行,观察运行结果5 .实验内容及实验程序P1 口控制注塑机的八道工序,现模拟控制八只发光二极管的点亮, 即正常情况下P1 口走亮 流水(低电平点亮LED)。为开工启动开关,高电平启动。未启动及开关停止时LED全灭。INTO为外部故障1输入模拟开关,产生故障1使口接的LED闪烁8次
6、;INT1为外部故障2输入模拟开关,产生故障2使口接的LED闪烁8次;接线:P10-P17接D0-D7 INT0接KK1-(单次脉冲);INT1接KK2-(单次脉冲) 附程序(程序中请对应写出关键注释语句) #include#define uchar unsigned char 验内容及实验程序1)将定时器0设置为方式1 ,编写程序在上产生周期为1s的方波信号,可通过 LED或示波器观察的输出。*如果产生占空比为4: 1的方波,程序应该如何修改。(假设周期不变)接线:P10接D0,或接示波器 附程序(程序中请对应写出关键注释语句) #includesbit P1_0=P2A4;/定义特殊功能寄
7、存器 P1的为变量P2_4unsigned int counter=1000;/ 定义循环次数 void main() TMOD=0x01;/定时器T0 为方式 1EA=1;/开总中断ET0=1;/开定时器TO 中断TH0=(65536-500)/256;/ 置 T0 高 8 位初值TL0=(65536-500)%256;/ 置 T0 低 8 位初值TR0=1;/启动定时器T0while(1)/循环等待;void TIM0(void) interrupt 1 using 0/T0 中断函数TH0=(65536-500)/256;/ 重新赋值TL0=(65536-500)%256;counter
8、-;/循环次数减一if(counter=0)P1_0=P1_0;/P1 口按位取反counter=1000;/重置循环次数 运行效果图 #include#define uchar unsigned char /定义无符号字符变量 uchar time;/定义timeuchar counter=100;/定义周期uchar high=80;/定义高电平时长sbit p1_0=P2A4;定义特殊功能寄存器P1的为变量P2_4void main( )TMOD=0x01;/定时器T0 为方式 1TH0=(65536-5000)/256;/ 置 T0 高 8位初值TL0=(65536-5000)%256
9、;/ 置 T0 低 8 位初值EA=1;/开总中断ET0=1;/开定时器T0 中断TR0=1;/启动定时器T0time=0;while(1) ;void timer0() interrupt 1/T0 中断程序TH0=(65536-5000)/256;/重新赋值TL0=(65536-5000)%256;time+; if(time=high) p1_0=0; if(time=counter) time=0;p1_0=1; 运行效果图2)将定时器/计数器1设定为计数方式,方式 2,计数器初值设为 0xff ,每计数一次溢出产 生一次中断。P1 口连接发光二极管,执行程序,利用按钮产生单脉冲信号,
10、观察 LED上计数脉冲个数。例如:00000001 为 1, 00000010 为 2, 00000011 为 3,依次显示。(亮为1)接线:T1接单脉冲脉冲信号 KK1- , P10-P17接D0-D7#includesbit P1_0=P2A4;定义特殊功能寄存器P1的为变量 P2_4unsigned char counter=100;/ 定义循环次数 int f;void main() TMOD=0x51;TL0=(65536-5000)%256;/ 置 T0 低 8 位初值TH0=(65536-5000)/256; / 置 T0 高 8 位初值EA=1;/ 开总中断ET0=1;/ET1
11、=1;TH1=0xff;TL1=0xff;f=0;TR1=1;while(f=0);TR0=1;while(1) ;void timer0( ) interrupt 1 using 0/外部中断1 的服务函数TL0=(65536-5000)%256;/ 重新赋值TH0=(65536-5000)/256;counter-;/ 循环次数减一if(counter=0) P1_0=P1_0;/P1 口按位取反counter=100;/重新定义循环次数/外部中断2 的服务函数void timer1( ) interrupt 3 using 0TH1=0xff; / 重新赋值TL1=0xff;TR1=0;
12、f=1;运行效果图#include#include#define uchar unsigned char#define uint unsigned int#defineC8255_AXBYTE0x7f00 / A#defineC8255_BXBYTE0x7f01 / B#defineC8255_CXBYTE0x7f02 / C#defineC8255_CON XBYTE0x7f03 / Control段选uchar code tube = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /uchar code chos = 0xfe,0xf
13、d,0xfb,0xf7,0xef,0xdf; / 位选uchar counter = 0;void init_8255(); / 初始化 8255void init_timer1(); / 初始化计数器1void display(uchar i); / 显示函数void delay(uint z); / 延时函数void main()init_8255();init_timer1();while(1)display(counter);P1 = counter;void display(uchar counter)uchar i,j;uchar ge,shi,bai;bai = counter
14、/ 100;shi = counter / 10 %10;ge = counter % 10;for(i=0;i255)counter = 0; counter+;void delay(uint z)uint x,y;for(x=z; x0; x-);for(y=114; y0; y-);运行效果图6实验讨论及分析实验室号:实验时间: 成绩: 实验六综合实验1 .实验目的和要求利用用8255实现I/O 口扩展,实验键盘检测及数码管显示。2 .电路原理图(附proteus电路原理图)3 .主要仪器设备(实验用的软硬件环境)安装有Keil C51软件与Proteus仿真软件PC机1台单片机试验箱一
15、套4 .实验说明与实验步骤8255端口地址定义XBYTE0x7F00XBYTE0x7F01XBYTE0x7F02XBYTE0x7F03#define C8255_A#define C8255_B#define C8255_C#define C8255 CON共阴极七段码:0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39,0x5e, 0x79, 0x711)源程序设计分析设计要求,根据任务要求,绘制源程序流程图,然后使用Keil C进行源程序文件的设计与调试,观察并分析程序调试结果。2)硬件运行
16、加载目标代码至单片机中,运行,观察运行结果5 .实验内容及程序控制8255完成键盘扫描及数码显示键盘采用4X4键盘,每个数码管显示值可为0F16个数。键盘编号为 0F,当按下其中一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近6次按下的按键编号。程序中请对应写出关键注释语句#include#define uint unsigned int#define uchar unsigned charucharcodetube=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f
17、,0x6f,0x77,0x7c,0x39,0x5e, 0x79,0x71; / 0 to F,段码uchar code chos=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; 位码uchar cord_l,cord_h;void delay(uint z);/ 中明延时函数void keyPro();/中明按键扫描函数uchar keyScan();/中明开关检测函数void main(void) P0=0;P1=0;while(1)keyPro();uchar keyScan()/ 开关检测函数P3=0xf0;if(P3!=0xf0)delay(5);if(P3!=0xf0)
18、cord_l=P3;P3=cord_l|0x0f;cord_h=P3&0x0f;return(cord_l+cord_h);void keyPro()/ 按键扫描函数switch(keyScan()/Line 1case 0xee:P0=tube0;break;case 0xde:P0=tube1;break;case 0xbe:P0=tube2;break;case 0x7e:P0=tube3;break;/Line 2case 0xed:P0=tube4;break;case 0xdd:P0=tube5;break;case 0xbd:P0=tube6;break;case 0x7d:P0
19、=tube7;break;/Line 3case 0xeb:P0=tube8;break;case 0xdb:P0=tube9;break;case 0xbb:P0=tube10;break;case 0x7b:P0=tube11;break;/Line 4case 0xe7:P0=tube12;break;case 0xd7:P0=tube13;break;case 0xb7:P0=tube14;break;case 0x77:P0=tube15;break;void delay(uint z)/ 延时函数uint x,y;for(x=z;x0;x-)for(y=114;y0;y-);6实验
20、现象运行效果图#include #define C8255_A#define C8255_B#define C8255_C#define C8255_CON/共阴极七段码XBYTE0x7F00 /8255 端口地址定义XBYTE0x7F01XBYTE0x7F02XBYTE0x7F03unsigned char a = 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;unsigned char b = 0x00, 0x00, 0x00, 0x00;unsig
21、ned char key_down;unsigned char key_value;unsigned char key_count;void delay(unsigned int time)unsigned int i;for(i=0; itime; i+);void keyscan()unsigned char cc;C8255_A = 0x00;cc = C8255_C;key_down = (cc) & 0x0f;void display()unsigned char i, j = 0xF7;for(i=0; i= 1;void clear()C8255_B = 0x00;void writebuffer()/显示函数/查表输出显示/按键扫
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年低压电工操作证理论考试练习题及答案
- 服装加工厂裁剪设备安全防护方案
- 梅尼埃病限盐饮水量化管理共识
- 2026学年广东省河源市五年级语文期末深度自测快速提分题(详细参考解析)详细答案和解析
- 2026年畜牧兽医考试题库及答案
- OC岗位综合考核试题及详细答案
- 2027届江苏省句容市数学八上期末联考模拟试题含解析
- 职业健康促进企业创建实施方案
- 儿童共同性斜视随访观察指南(2026版)
- 液压管路预制酸洗操作工规程
- 2026年注册安全工程师建筑实务真题及答案解析
- 2026年计算机二级考试试卷(含答案)专项训练
- 宁波象山县2026年社区专职工作者招聘考试试卷-含答案解析
- 2026年滨州市辅警协警笔试试题(附答案)
- 2026-2026学年人教版小学一年级数学上册全册教案
- 玻璃钢防腐施工方案
- 朔州市社会福利院落地式脚手架专项施工方案
- 2026年中石油招聘考试真题及完整答案解析
- 2026-2030环保行业市场发展分析及发展前景与投资机会研究报告
- 智能制造概论教案
- 三力测试题库及答案2026
评论
0/150
提交评论