




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1 软件介绍11.1 protues软件介绍11.2 Keil软件32.设计原理或方法32.1 主要元器件介绍32.2 设计方案介绍83.程序框图84 硬件连线图及仿真结果104.1 硬件连线图104.2 仿真结果图115 源程序126资源分配197性能分析198总结和心得209参考文献211 软件介绍1.1 protues软件介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿
2、真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。(3) 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。
3、(4) 具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS软件的工作环境和一些基本操作。特点:支持ARM7,PIC ,AVR,HC11以及8051系列的微处理器CPU模型,更多模型正在开发中: 交互外设模型有LCD显示、RS232终端、通用键盘、开关、按钮、LED等;强大的调试功能,如访问寄存器与内存,设置断点和单步运行模式;支持如IAR、Keil和Hitech等开发工具的源码C和汇编的调试;一键“make”特性:一个键完成编译与仿真操作;内置超过6000标准SPICE模型,完全兼容制造商提供的SPICE模型;D
4、LL界面为应用提供特定的模式;基于工业标准的SPICE3F5混合模型电路仿真器。14种虚拟仪器:示波器、逻辑分析仪、信号发生器、规程分析仪等;高级仿真包含强大的基于图形的分析功能:模拟、数字和混合瞬时图形;频率;转换;噪声;失真;付立叶;交流、直流和音频曲线;模拟信号发生器包括直流、正旋、脉冲、分段线性、音频、指数、单频FM;数字信号发生器包括尖脉冲、脉冲、时钟和码流;1.2Keil软件Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇
5、编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51开发系统基本知识Keil C51开发系统基本知识(1)系统概述Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成
6、的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 (2)Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51
7、使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。2.设计原理或方法2.1 主要元器件介绍1. MCS-51单片机的结构及编程方法MCS-51单片机的组成: CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线 和中断系统等。组成框图如下: 8051单片机的组成框图(1)cpu中央处理器 由运算器和控制器组成,是8位的cpu,具有布尔运算和8位寻址功能。运算器完成算术运算
8、和逻辑运算。CPU根据PC中的地址将欲执行指令的指令码从存储器中取出,存放在IR中,ID对IR中的指令码进行译码,定时控制逻辑在OSC配合下对ID译码后的信号进行分时,以产生执行本条指令所需的全部信号。(2) 存储器MCS-51单片机按程序存储器可分为内部无ROM型(如8031)和内部有ROM型(如8051)两种,连接时 引脚有区别。程序存储器结构如右图所示:程序存储器 :一般将只读存储器(ROM)用做程序存储器。可寻址空间为64KB,用于存放用户程序、数据和表格等信息。数据存储器:一般将随机存储器(RAM)用做数据存储器。可寻址空间为64KB。MCS-51数据存储器可分为片内和片外两部分。(
9、3) 特殊功能寄存器(SFR) MCS-51有21个特殊功能寄存器(也称为专用寄存器),包括算术运算寄存器、指针寄存器、I/O口锁存器、定时器/计数器、串行口、中断、状态、控制寄存器等,它们被离散地分布在内部RAM的80HFFH地址单元中(不包括PC) ,共占据了128个存储单元,构成了SFR存储块。其字节地址可被8整除的SFR可位寻址。SFR反映了MCS-51单片机的运行状态。80C51内部结构(4) I/O接口I/O接口是MCS-51单片机对外部实现控制和信息交换的必经之路,用于信息传送过程中的速度匹配和增加它的负载能力。8051内部有4个8位并行接口P0, P1, P2, P3,有1个全
10、双工的可编程串行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点阵LED 下图为8×8点阵LED外观及引脚图,其等效电路如下图所示,只要其对应的X、Y轴顺向偏压,即可使
11、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个汉字,控制项目:循环显示
13、的速度可调,循环显示进入方向(从左至右、从右至左、从上到下、从下往上)。由于要用16*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上显示一个汉字并延
15、时后,可以通过增加所取表的地址(加2);这样下一次LED上显示的字就移动了一个点阵,可以通过适当的设计来控制汉字移动循环的的次数。汉字的左右上下移动:可以通过建立不同的表,来实现汉字的各种移动,或者改变查表的方式来实现。3.程序框图开始移动系统初始化选点阵行号并增一 上移动左移动 下移动右移动等待遥控信号出现按1?按2?按3?按4?按5?按6?加速减速送新行数据切换显示数据是 否送新行号,打开显示 是 否退出移动是 否显示驱动程序流程图是否是否是否否是否系统主程序流程图4 硬件连线图及仿真结果4.1 硬件连线图4.2 仿真结果图5 源程序#include <reg51.h>#def
16、ine 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,0x00,0x00,0x00,/"武", 0x20,0x40,0x
17、20,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,0x02,0x0C,0x02,0x13,0xE2,0x20, 0x1E,0x40,
18、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,0x20, 0x04,0x20,0x04,0x20,0x04,0x20,0xFC
19、,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,0x00,0x00,/"学", 0x40,0x04,0x30,0x
20、04,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,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,
21、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,z2=0,z3=1,z4=1; if(k3=0) delay(3);z
22、1=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<的值可以调整移动速度for(i=0;i<16;
23、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*2+1+b*2;delay(3);P0=0xff;
24、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+)P0=0xff;P2=0xff;for(n=
25、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; else t1=hz2*i+1+zishu*32;t2=hz2*i+zishu*32+32;t3=hz2*i+1+zishu*32+32;P1=liei; P0=(t1>>y)|(t2<&
26、lt;(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!=0)bre
27、ak; if(n=0)t1=hz2*i+zishu*32; t2=hz2*i+1+zishu*32; t3=hz2*i+1+zishu*32+32; else t1=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;speed=
28、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;else speed=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*16点阵上部提供数
29、据,点亮相应的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软件的原理原理图中能够进行仿真,可以用开关控制汉字的移动速度和系统是否开始显示。系统开始显示后,汉字先左移,下移动,右移动,上移动。汉字显示很清晰明亮,效果很不错。由于PROTUES没有红外模块的仿真,所以用开关代替了红外,实现了相同的功能。用开关控制汉字的移动速度也比较明显。8总结和心得大三下学期了,马上就要进入大四,此次课设也是大学仅剩的几个课设之一了,我想通过自己的努力,好好做一下,好好锻炼自己的专业能力。作为一名电信专业的大三学生,我觉得这个单片机是十分有意义的,而且是十分必要的。在已度过的大学时间里,我们
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年小学教导处春季师生互动计划
- 医院消防培训演练课件
- 2025年度幼儿园健康饮食推广计划
- 小学2025-2025学年第一学期科技节活动计划
- 抗肿瘤药物毒性研究与应用
- 幼儿园教师职业道德与法律培训计划
- 犬猫常见传染病防控要点
- 小学体育课程实践计划
- 学校春节假期安全措施及活动安排
- 科技研发项目时间管理及应对措施
- 山推SD16结构原理课件
- 病假医疗期申请单(新修订)
- 钻孔桩钻孔记录表(旋挖钻)
- 660MW机组金属监督项目
- JBK-698CX淬火机数控系统
- ZJUTTOP100理工类学术期刊目录(2018年版)
- 心理学在船舶安全管理中的应用
- JJF(鄂) 90-2021 电子辊道秤校准规范(高清版)
- 超星尔雅学习通《今天的日本》章节测试含答案
- 餐饮量化分级
- 三一重工SCC2000履带吊履带式起重机技术参数
评论
0/150
提交评论