单片机数码管仿真设计
单片机课程设计
1元器件介绍
1.1 AT89C51
AT89C51是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C51是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标
准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C51可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
兼容MCS51指令系统 ? 8k可反复擦写(>1000次)Flash ROM
? 32个双向I/O口 ? 256x8bit内部RAM
? 3个16位可编程定时/计数器中断 ? 时钟频率0-24MHz
? 2个串行中断 ? 可编程UART串行通道
? 2个外部中断源 ? 共6个中断源
? 2个读写中断口线 ? 3级加密位
? 低功耗空闲和掉电模式 ? 软件设置睡眠和唤醒功能
AT89C51P为40 脚双列直插封装的8 位通用微处理器,采用工业
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
1
单片机课程设计
1.2七段显示数码管
7段数码管又分共阴和共阳两种显示方式。如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg这7个发光二极管的负极
连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)~此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了~限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。发光二极管的工作电压一般
在1.8V--2.2V,为计算方便,通常选2V即可~发光二极管的工作电流选取在
10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏~
对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数~
图1.2-1七段数码管引脚图
数码管使用条件:
a、段及小数点上加限流电阻
b、使用电压:段:根据发光颜色决定; 小数点:根据发光颜色决定
c、使用电流:静态:总电流 80mA(每段 10mA);动态:平均电流
2
单片机课程设计
4-5mA 峰值电流 100mA
上面这个只是七段数码管引脚图,其中共阳极数码管引脚图和共阴极的是一样的,4位数码管引脚图请在本站搜索我也提供了数码管使用注意事项说明:
1、数码管
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
面不要用手触摸,不要用手去弄引角;
2、焊接温度:,,,度;焊接时间:,,
3、表面有保护膜的产品,可以在使用前撕下来。
2 KEIL C51软件简介
2.1 KEIL C51概述
KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者看很多教程都是一头雾水,本站特地制作了一个相对简单的教程。他能能嵌入汇编语言保留了汇编代码高效,快速的特点。KEIL C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品,其效率已经达到了相当搞的程度。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE可为它们提供单一而灵活的开发环境。
Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。
2.2 Keil C51软件的使用方法:
进入 Keil C51 后,屏幕如下图所示。几秒钟后出现编辑界
启动Keil C51时的屏幕
3
单片机课程设计
进入Keil C51后的编辑界面
简单程序的调试 学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习Keil C51软件的基本使用方法和基本的调试技巧。
1、建立一个新工程 单击Project菜单,在弹出的下拉菜单中选中New Project选项
2、然后选择你要保存的路径,输入工程文件的名字,比如保存到C51目录里,工程文件的名字为C51 如下图所示,然后点击保存.
3、这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil c51几乎支持所有的51核的单片机,我这里还是以大家用的比较多的Atmel 的89C51来说明,如下图所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定.
4、完成上一步骤后,屏幕如下图所示
到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个
4
单片机课程设计
程序。
5、在下图中,单击“File”菜单,再在下拉菜单中单击“New”选项
新建文件后屏幕如下图所示
此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但笔者建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用,语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”
按钮。
6、回到编辑界面后,单击“Target 1”前面的“,”号,然后在“Source Group 1”上单击右键,弹出如下菜单
然后单击“Add File to Group ‘Source Group 1’” 屏幕如下图所示
选中Test.c,然后单击“Add ”屏幕好下图所示
5
单片机课程设计
注意到“Source Group 1”文件夹中多了一个子项“Text1.c”了吗,子项的多少与所增加的源程序的多少相同
7)现在,请输入如下的C语言源程序:
#include
//包含文件
#include void main(void) //主函数 {
SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1; //此行及以上3行为PRINTF函数所必须
printf(“Hello I am KEIL. \n”); //打印程序执行的信息
printf(“I will be your friend.\n”);
while(1);
}
在输入上述程序时,读者已经看到了事先保存待编辑的文件的好处了吧,即Keil c51会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示
8、在上图中,单击“Project”菜单,再在下拉菜单中单击“Built Target”选项(或者使用快捷键F7),编译成功后,再单击“Project”菜单,在下拉菜单中单击“Start/Stop Debug Session”(或者使用快捷键Ctrl+F5),屏幕如下所示:
9、调试程序:在上图中,单击“Debug”菜单,在下拉菜单中单击
6
单片机课程设计
“Go”选项,(或者使用快捷键F5),然后再单击“Debug”菜单,在下拉菜单中单击“Stop Running”选项(或者使用快捷键Esc);再单击“View”菜单,再在下拉菜单中单击“Serial Windows #1”选项,就可以看到程序运行后的结果,其结果如下图所示
至此,我们在Keil C51上做了一个完整工程的全过程。但这只是纯软
件的开发过程,如何使用程序下载器看一看程序运行的结果呢,
10、单击“Project”菜单,再在下拉菜单中单击
“ ” 在下图中,单击“Output”中单击“Create HEX File” 选项,使程序编译后产生HEX代码,供下载器软件使用。把程序下载到AT89S51单片机中。
3 C语言编程
3.1 C语言简介
C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。
3.2特点
1( C是高级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而
7
单片机课程设计
这三者是计算机最基本的工作单元。
2(C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3(C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。
4( C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。
C语言对编写需要硬件进行操作的场合,明显优于其它高级语言,有一些大型应用软件也是用C语言编写的。
3.3仿真概述
Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:?实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。?支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。?提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。?具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本章介绍Proteus ISIS软件的工作环境和一些基本操作。 3.3.1 进入Proteus ISIS
双击桌面上的ISIS 6 Professional图标或者单击屏幕左下方的“开始”?“程序”?“Proteus 6 Professional” ?“ISIS 6 Professional”,出现如图1-1所示屏幕,表明进入Proteus ISIS集成环境。
8
单片机课程设计
图5.2-1 启动时的屏幕
3.3.2工作界面
Proteus ISIS的工作界面是一种标准的Windows界面,如图5.3-1所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图5.3-1 Proteus ISIS的工作界面
3.3.4四大功能模块
1.智能原理图设计(ISIS)
丰富的器件库:超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。
2.完善的电路仿真功能(Prospice)
ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件; 多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入; 丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等; 生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、
9
单片机课程设计
按钮)的使用可以使仿真更加直观、生动; 高级图形仿真功能(ASF):基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析。
3.独特的单片机协同仿真功能(VSM)
支持主流的CPU类型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU类型随着版本升级还在继续增加,如即将支持CORTEX、DSP处理器;支持通用外设模型:如字符LCD模块、图形LCD模块、LED点阵、LED七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信; 实时仿真:支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。 ※ 编译及调试:支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源码级仿真和调试。 4.实用的PCB设计平台
原理图到PCB的快速通道: 原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计; ※ 先进的自动布局/布线功能:支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理; 完整的PCB设计功能:最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D 可视化预览; ※ 多种输出格式的支持:可以输出多种格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和PCB板的设计和加工。 Protues提供了丰富的资源
(1)Protues可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
(2)Protues可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。 (3)除了现实存在的仪器外,Protues还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。
10
单片机课程设计
(4)Protues可提供的调试手段 Protues提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。 4 我的设计
我组的单片机设计题目是单片机驱动一个七段数码管循环显示0-9,使
用keil C51编程,protues仿真成功。
4.1 protues画出仿真图
打开protues软件画出仿真图 如图4.1-1
图4.1-1 protues仿真图
4.2 使用KEIL C51编程
打开keil C51软件,在其中编写P0口输出七段数码管显示0-9代码。
源程序如下:
#include // 第一行是一个"文件包含"处理。所谓"文件包含"是指一个文件将另外一个文件的内容全部包含进来
void delay(void) //延时1秒子程序
{
unsigned char i,j,k; //定义3个无符号字符型数据。
for(i=100;i>0;i--) //作循环延时
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
unsigned int a=0; //定义一个无符号整形a=0
unsigned char leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
11
单片机课程设计
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
0x00, //熄灭
};
main() //每一个C语言程序有且只有一个主函数
{
while(1) //循环条件永远为真,以下程序一直执行下去
{
P0=leddata[a]; // I/O口P0输出数码管代码,数码管被点亮
delay();// 延时
a++; //数组项加一
if(a>9) //显示到第9返回第0项
a=0;
}
}
4.3将程序植入仿真软件的单片机中 KEIL C51编写程序之后生成一个.HEX格式文件,将这个文件导入单片机中,就可以仿真了。
仿真结果如图4.3-1:
12
单片机课程设计
总 结
经过一周的紧张奋战,我的课程设计终于完成了。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。
脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练,是对我实际
能力的一次提升,也会对我未来的学习和工作有很大的帮助。
不管学会的还是学不会的的确觉得困难比较多,真是万事开头难,不知道如何入手。最后终于做完了有种如释重负的感觉。此外,还得出一个结论:知识必须通过应用才能实现其价值~有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。
13
单片机课程设计
致 谢
在本次的单片机课程设计过程中,老师严谨的治学态度、丰富渊博的知识、敏锐的学术思维、精益求精的工作态度以及诲人不倦的师者风范是我学习的楷模。尤其是老师的高深精湛的造诣与严谨求实的治学精神,将永远激励着我。在此,谨向课程设计指导老师致以衷心的感谢和最崇高的敬意~
感谢宋永超、朱媛琪、张春玲、邵明双、吕英同学的帮助,如果没有他们的帮助,我是不会在短短的一周时间内完成课程设计任务的,是我们大家一起努力,才成功的完成课程设计任务。同时还要感谢及时给予我们所需资料和提供参考意见的同学,没有他们的帮助,我们的设计任务不会按时保质的完成。
14
单片机课程设计
参考文献
[1] 张靖武,周灵彬.《单片机系统的PROTEUS设计与仿真》,电子工业出版社。 [2] 吴金戌,沈庆阳,郭庭吉.《8051单片机实践与应用》,清华大学出版社。 [3] 李群芳,肖看.《单片机原理接口及应用》,清华大学出版社。 [4] 张毅刚,彭喜元.《新编MCS-51单片机应用设计》,哈尔滨工业大学出版社。 [5] 吴金戌,沈庆阳,郭庭吉.《8051单片机实践与应用》,清华大学出版社。
15
单片机课程设计
16