




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 软件介绍 21.1 PROTUES软件介绍 21.2 KEIL 软件 22 . 设计原理或方法 32.1 主要元器件介绍 32.2 设计方案介绍 73 . 程序框图 84 硬件连线图及仿真结果 94.1 硬件连线图 94.2 仿真结果图 105 源程序 116 资源分配 187 性能分析 198 总结和心得 199 参考文献 201 软件介绍1.1 protues软件介绍Proteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行于 Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1) 1)实现了单片机仿真和
2、SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、 SPI 调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。( 2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000 系列、 8051系列、AVR系列、PIC12系列、 PIC16系列、 PIC18系列、 Z80系列、HC11系列以及各种外围芯片。(3) 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第
3、三方的软件编译和调试环境,如Keil C51 uVision2 等软件。(4) 具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS 软件的工作环境和一些基本操作。特点:支持ARM,7 PIC , AVR, HC11以及8051 系列的微处理器CPU模型,更多模型正在开发中:交互外设模型有LCD显示、RS232终端、通用键盘、开关、按钮、LED等;强大的调试功能,如访问寄存器与内存,设置断点和单步运行模式;支持如IAR、 Keil 和 Hitech 等开发工具的源码C和汇编的调试;一键“make”特性:一个键完成编
4、译与仿真操作;内置超过6000标准SPICE模型,完全兼容制造商提供的SPICE模型; DLL界面为应用提供特定的模式;基于工业标准的SPICE3F5混合模型电路仿真器。 14 种虚拟仪器:示波器、逻辑分析仪、信号发生器、规程分析仪等;高级仿真包含强大的基于图形的分析功能:模拟、数字和混合瞬时图形;频率;转换;噪声;失真;付立叶;交流、直流和音频曲线;模拟信号发生器包括直流、正旋、脉冲、分段线性、音频、指数、单频FM;数字信号发生器包括尖脉冲、脉冲、时钟和码流;1.2 Keil 软件Keil C51是美国Keil Software公司出品的51 系列兼容单片机C语言软件开发系统,与汇编相比,C
5、语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。 Keil 提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil 软件需要WIN98、 NT、 WIN2000、 WINXP等操作系统。如果你使用C语言编程,那么 Keil 几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51开发系统基本知识Keil C51开发系统基本知识( 1)系统概述Keil C51 软件提供丰富的库函数和功能强大
6、的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51 开发系统各部分功能和使用。2 2) Keil C51 单片机软件开发系统的整体结构C51工具包的整体结构,uVision 与 Ishell 分别是 C51 for Windows 和 for Dos的集成开发环境(IDE) ,可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。也可以与库文
7、件一起经L51连接定位生成绝对目标文件(.ABS) 。 ABS文件由OH51转换成标准的Hex文件,以供调试器 dScope51 或 tScope51 使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易2.设计原理或方法2.1主要元器件介绍1. MCS-51 单片机的结构及编程方法MCS-51 单片机的组成:I/O 口 ( 串口、并口)、内部总线PU(进行运算、控制 )、 RAM数据存储器() 、 ROM程序存储器) (、8051单片机的组成框图( 1) cpu 中
8、央处理器由运算器和控制器组成,是8 位的cpu,具有布尔运算和8位寻址功能。运算器完成算术运算和逻辑运算。CPU根据PC中的地址将欲执行指令的指令码从存储器中取出,存放在 IR 中, ID 对 IR 中的指令码进行译码,定时控制逻辑在OSC配合下对ID 译码后的信号进行分时,以产生执行本条指令所需的全部信号。2)存储器MCS-51单片机按程序存储器可分为内部无ROM型(如 8031)和内部有ROM型(如8051)两种,连接时 引脚有区别。程序存储器结构如右图所示:程序存储器ROM)用做程序存储器。可寻址空间为64KB,用于存放用户程序、数据和表格等信息。数据存储器:一般将随机存储器AM) 用做
9、数据存储器。可寻址空间为64KB。 MCS-51数据存储器可分为片内和片外两部分。3)特殊功能寄存器(SFR)MCS-51有 21 个特殊功能寄存器(也称为专用寄存器),包括算术运算寄存器、指针I/O 口锁存器、定时器/ 计数器、串行口、中断、状态、控制寄存器等,它们被离128 个存储单元,80H FFH地址单元中(不包括PC) ,共占据了构成了 S运行状态。8 整除的SFR可位寻址。SFR反映了MCS-51单片机的80C51内部结构( 4) I/O 接口I/O 接口是MCS-51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。8051 内部有 4 个
10、 8 位并行接口P0, P1, P2, P3 ,有 1个全双工的可编程串行I/O 接口。( 5)定时器/ 计数器8051 内部有两个16位可编程序的定时器/计数器, 均为二进制加1 计数器, 分别命名为 T0 和 T1。( 6)中断系统8051 可处理 5 个中断源(2 个外部, 3 个内部)发出的中断请求,并可对其进行优先权处理。外部中断的请求信号可以从P3.2, P3.3 引脚上输入,有电平或边沿两种触发方式;内部中断源有3 个, 2 个定时器 /计数器中断源和1 个串行口中断源。8051 的中断系统主要由中断允许控制器IE 和中断优先级控制器IP 等电路组成。2 . 16*16 点阵 L
11、ED下图为8× 8点阵LED外观及引脚图,其等效电路如下图所示,只要其对应的X、 Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1, X0=0即可。应用时限流电阻可以放在X轴或 Y轴。LED扫描法介绍:LED一般采用扫描式显示,实际运用分为三种方式:1)点扫描;( 2)行扫描;(3) 列扫描。若使用第一种方式,其扫描频率必须大于16× 64=1024Hz,周期小于1ms即可。若使用则频率必须大于16× 8=128Hz, 周期小于7.8ms即可符合视觉暂留要求。8颗 LED)时需外加驱动电路提高电流,否则LED亮度会不足。3 .红外控制相关介
12、绍红外遥控系统由发射和接收两大部份组成,应用编/解码专用集成电路芯片来进行控1 所示。发射部份包括键盘矩阵、编码调制、LED红外发送器;接收部份包HT6221 键码的形成:当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码0.565ms、间隔0.56ms、周期为1.125ms“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示“1 ”。2.2 设计方案介绍1.设计总体思路本次课程设计的要求是利用红外遥控器控制,在 16× 16 点阵的显示器件上循显示 “武”6 个汉字,控制项目:循环显示的速度可调,循环显示进入方向(从左至右、16
13、*16 点阵显示汉字, 而 80C51 的 I/O 接口8 位的, 我们可以用4个 8*8 点阵来组成。由于 80C51的 I/O 口不多 (只有 4组, 32个) ,I/O 口,我们用74HC154( 4线 -16 译码器)作为点阵的列驱动,P2口和P0口作16*16 的点阵汉字,我们需建一个表先将要显示的汉字的点阵码存起16*16 点阵汉字提取软件来获得我们所需要的汉字的点阵码),然后编写一个合适的查表程序就可以按给定要求显示汉字。至于改变汉字移动的速度,可以通过用按键改变汉字在LED上的显示时间来改变,通过改变的数值大小就可以改变汉字的移动速度。题目所要求的用红外控制我们可以先用开关模拟
14、达到要求,再将开关的功能用红外来实现,这样就可以基本上达到要求。通过红外接收器所解出来的码将其送到89C51的一个I/O 口以达到开关的效果。这样就可以基本达到要求了。2 . 与题目相关的具体设计汉字的显示:可以采用扫描的方式,先使一个I/O 口产生一个选行(列)信号(通过74HC154),先选中一行,对选中的行进行扫描,然后用另外2组 I/O 口输送数据,这样一个字的1/16 就送到LED点阵上了,接着选下一行,这样经过16 次就可以显示一个字了,再适当延时使显示的字清晰。汉字的移动:在LED上显示一个汉字并延时后,可以通过增加所取表的地址(加2);这样下一次LED上显示的字就移动了一个点阵
15、,可以通过适当的设计来控制汉字移动循环的的次数。汉字的左右上下移动:可以通过建立不同的表,来实现汉字的各种移动,或者改变查表的方式来实现。3 .程序框图退出移动系统主程序流程图显示驱动程序流程图4 硬件连线图及仿真结果4.1 硬件连线图是是是是否否否否C2-L- C1口卜CRYSTAL22pT uTEKlU1C3日IQu<TB-i2- _R11k的AMPOO/ADOPO .1 科口 1X| AL JPO 4;'AL>4MJ JoJADbnSTPO fJAD?r2.UM«5FZ.1raN"r2 2jA1U nn ojijh -4 dALEPi 4JA1 &
16、#163;EAP2.5/A13产zjtw禺qqFVl TJ urrl .Uf lx:r J.UJrOWi no w /rwrspi 11rl.工XJI KUPl _2P3.2Jr4T0HI .JPI 4HJ.JJSMI eP3 4JT0PI .5P1.6P3.5/TlrJ.wVMTPi /PJ.f JKU19IBI:U2n1_DID2:LJiUJ¥rENALL55a0JifVI力12W1D,:Q11J411SJl6Qn4DECODER 4 15=.TEXT>713736RP1RESPACK-62fi271011a2crIB Clh_2_17*.771一ZL»1-DHO
17、MS(N守5 源程序#include <reg51.h>#define uchar unsigned charsbit k1=P30;sbit k2=P31;sbit k3=P36;sbit k4=P37;uchar z1,z2,z3,z4,z,speed;uchar code hz=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x0
18、0,0x00,0x00,/"武 ",0x20,0x40,0x20,0xC0,0x24,0x7E,0x24,0x40, 0x24,0x40,0xA4,0x3F,0x24,0x22,0x24,0x22, 0x20,0x20,0xFF,0x03,0x20,0x0C,0x22,0x10, 0x2C,0x20,0x20,0x40,0x20,0xF8,0x00,0x00,/"汉 ",0x10,0x04,0x60,0x04,0x02,0x7C,0x0C,0x03, 0xC0,0x80,0x02,0x80,0x1E,0x40,0xE2,0x20, 0x02,0x13,0
19、x02,0x0C,0x02,0x13,0xE2,0x20, 0x1E,0x40,0x00,0x80,0x00,0x80,0x00,0x00,/"理 ",0x04,0x20,0x84,0x60,0x84,0x20,0xFC,0x1F, 0x84,0x10,0x84,0x10,0x00,0x40,0xFE,0x44, 0x92,0x44,0x92,0x44,0xFE,0x7F,0x92,0x44, 0x92,0x44,0xFE,0x44,0x00,0x40,0x00,0x00,/"工 ",0x00,0x20,0x04,0x20,0x04,0x20,0x04,
20、0x20, 0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x3F, 0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20, 0x04,0x20,0x04,0x20,0x00,0x20,0x00,0x00,/"大 ",0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20, 0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00, 0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20, 0x20,0x40,0x20,0x80,0x20,0x80,0x0
21、0,0x00,/"学 ",0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04, 0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E, 0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04, 0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x
22、00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;uchar code lie=0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff;void delay(uchar x) /延时函数uchar i,j;for(i=0;i<x;i+)for(j=0;j<100;j+); void scanf_dir() /判断按键if(k1=0)delay(3);z1=0,z2=1,z3=1,z4=1;if(k2=0)delay(3);z1=1
23、,z2=0,z3=1,z4=1;if(k3=0)delay(3);z1=1,z2=1,z3=0,z4=1;if(k4=0)delay(3);z1=1,z2=1,z3=1,z4=0;/显示汉字将编号为c 的汉字从第b 条开始显示n 条到屏幕的l 条开始void left()/左移动uchar i,zishu,x;P1=0x00;for(zishu=0;zishu<6;zishu+) /6 个字P0=0xff;P2=0xff;for(x=0;x<16;x+)/ 从左向右移动16次,(第一屏、第二屏。)if(z1!=0)break;for(z=0;z<speed;z+)/改变在z&
24、lt;的值可以调整移动速度for(i=0;i<16;i+)/16 列循环显示scanf_dir();if(z1!=0)break;P1=liei;P0=hz2*i+zishu*32+x*2;P2=hz2*i+zishu*32+x*2+1;/ 显示汉字delay(3);P0=0xff;P2=0xff; void showc(uchar c,uchar b,uchar n,uchar l) /右移动辅助函数 uchar i;for(i=0;i<n;i+)scanf_dir();if(z2!=0)break;P1=liei+l;P0=hzc*32+i*2+b*2;P2=hzc*32+i*
25、2+1+b*2;delay(3);P0=0xff;P2=0xff;void right()/右移动uchar i,zishu;P1=0x00;for(zishu=0;zishu<6;zishu+)for(i=0;i<16;i+)if(z2!=0)break;for(z=0;z<speed;z+)/这个可以调整移动速度showc(zishu,0,16-i,i);showc(zishu+1,15-i,i,0); void up()/上移动uchar i,zishu,y,n;uchar t1,t2,t3;P1=0x00;for(zishu=0;zishu<6;zishu+)
26、P0=0xff;P2=0xff;for(n=0;n<2;n+)for(y=0;y<8;y+)if(z3!=0)break;for(z=0;z<speed;z+)/可以调整移动速度 for(i=0;i<16;i+) scanf_dir();if(z3!=0)break;if(n=0)t1=hz2*i+zishu*32;t2=hz2*i+1+zishu*32;t3=hz2*i+zishu*32+32; elset1=hz2*i+1+zishu*32;t2=hz2*i+zishu*32+32;t3=hz2*i+1+zishu*32+32; P1=liei;P0=(t1>
27、>y)|(t2<<(7-y);P2=(t2>>y)|(t3<<(7-y);delay(1);P0=0xff;P2=0xff;void down() /下移动uchar i,zishu,y,n;uchar t1,t2,t3;P1=0x00;for(zishu=0;zishu<6;zishu+)P0=0xff;P2=0xff;for(n=0;n<2;n+)for(y=0;y<8;y+)if(z4!=0)break;for(z=0;z<speed;z+)/调整速度for(i=0;i<16;i+)scanf_dir();if(z4
28、!=0)break;if(n=0)t1=hz2*i+zishu*32;t2=hz2*i+1+zishu*32;t3=hz2*i+1+zishu*32+32;elset1=hz2*i+1+zishu*32+32;t2=hz2*i+zishu*32;t3=hz2*i+zishu*32+32;P1=liei;P0=(t1<<y)|(t3>>(7-y);P2=(t2<<y)|(t1>>(7-y);delay(1);P0=0xff;P2=0xff; void main() z1=0;EA=1; EX0=1; IT0=1; EX1=1; IT1=1; spe
29、ed=20;while(1)scanf_dir();if(z1=0)left();else if(z2=0) right();else if(z3=0)up();else if(z4=0) down();void exint() interrupt 0 /加速if(speed=5)speed=5;elsespeed=speed-5;void exint1() interrupt 2 /减速speed=speed+5;6 资源分配P1.0 到 P1.3 接 74HC154( 4-16 译码器)给16*16 点阵提供选行信号。P0.0 到 P0.7接 16*16 点阵的上半块作为数据线,给16*1
30、6 点阵上部提供数据,点亮相应的LED, P2.0到 P2.7 接 16*16 点阵的下半块作为数据线,给 16*16 点阵下部提供数据,点亮相应的LED。P1.0-P1.3 接译码器,P3.0、 P3.1 、 P3.6、 P3.7 接开关,分别用于控制汉字左右上下方向P3.2、 P3.3 接开关,分别用于控制循环显示的加速和减速。7 性能分析程序通过keil 软件编译生成.hex 文件加载到protues 软件的原理原理图中能够进行仿真,可以用开关控制汉字的移动速度和系统是否开始显示。系统开始显示后,汉字先左移,下移动,右移动,上移动。汉字显示很清晰明亮,效果很不错。由于PROTUE没有红S外模块的仿真,所以用开关代替了红外,实现了相同的功能。用开关控制汉字的移动速度也比较明显。8 总结和心得大三下学期了,马上就要进入大四,此次课设也是大学仅剩的几个课设之一了,我想通过自己的努力,好好做一下,好好锻炼自己的专业能力。作为一名电信专业的大三学生,我觉得这个单片机是十分有意义的,而且是十分必要的。在已度过的大学时间里, 我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 规培招录备考练习试题及答案
- 2025年全国中小学校青少年禁毒知识竞赛复习题库及答案(共450题)
- 管道运输安全风险评估技术
- 卖不出房 中介 合同范例
- 2025短期借款担保合同模板
- 农资代理加盟合同范例
- 加工对象组成合同标准文本
- 2025全面家居装修合同
- 医药买卖合同范例
- 机器学习在金融行业的应用
- 水厂用电安全知识讲座
- 四年级美术复习试题含答案
- 统编版六年级语文下册第四单元综合性学习奋斗的历程课件
- 多模态数据处理
- 拟投入本项目的主要施工设备表
- 电工技师模拟考试题(附答案)
- (完整版)工程项目管理习题及答案
- 二年级《劳动最光荣》课件
- 宠物医院输血协议书
- 回族做礼拜的念词集合6篇
- 2015年血透室护理人员分层培训计划及科室学习计划
评论
0/150
提交评论