Proteus软件的单片机仿真(ATM)

Proteus软件的单片机仿真(ATM)
Proteus软件的单片机仿真(ATM)

摘要

基于Proteus软件的单片机自动取款机(ATM)仿真系统设计,硬件电路需要单片机开发板和12864液晶显示器,能够实现自动取款的全部功能。通过在在计算机上用C语言编程来将生成文件下载到单片机控制其它外围器件工作。但是在EDA新技术的引入使得系统的开发成本降低而且灵活性增强,在Proteus软件中都可以找到上述硬件元件,通过电路图连接完全可以实现仿真功能。在Keil软件环境下通过C语言编程,编译调试后生成单片机下载的HEX(十六进制)文件,硬件电路图是在Proteus 软件中进行建模。通过Proteus和Keil结合建立的虚拟系统实现联合仿真,单片机实时控制12864LCD实现汉字的显示,扫描键盘从而达到用户与ATM的信息交换,使得ATM系统设计变为现实。

ATM系统,是一个有数据库组成的应用系统。用户的初始信息通过E2PROM存放,这样免去了掉电丢失数据的弊端。系统功能有用户在ATM上提取现金、查询账户余额、修改密码、账户冻结、密码保护、自动存款及转账功能。可以仿真实现最基本的银行服务。

关键词:ATM;51单片机;Proteus;Keil;12864LCD;E2PROM;虚拟仿真

Abstract

Automatic Teller Machine system is based on Proteus 51-microcontroller.Hardware circuit includes microcontroller developer board and 12864LCD display. All features of ATM can be well worked on it. Programming on PC then download created file to 51-microcontroller to control outer circuit. However, with the introduction of EDA, new technology, which lower the cost of system exploration and enhance flexibility. Programing with C language, compiling and debugging under the environment of Keil software,creating a HEX file which will be downloaded by microcontroller later. Hardware schematic diagrams are established with Proteus software. According to the combination of Proteus and Keil , making a virtual system , successfully achieve united simulation. Microcontroller controls 12864LCD to display Chinese words, scans keyboard to exchange information between customer and ATM, which makes virtual ATM system becoming reality.

ATM system includes databases, which are used for the storage of customers’ initial information, leading to emerge from the disadvantage of data lost when power cuts. The functions of ATM are as follows: withdraw cash, search client and remaining modify password, client freezed, password protection, automatic deposit and transfer client. This system simulates to realize the bank’s fundamental services.

Keywords:ATM;51microcontroller;Proteus;Keil;12864LCD;E2PROM;virtual simulation

目录

引言 (1)

第一章 Proteus软件的单片机ATM系统 (3)

1.1 Proteus软件的ATM概述 (3)

1.2 Proteus软件的ATM安全性分析 (3)

1.3 Proteus软件的ATM稳定性分析 (3)

1.4 Proteus软件的ATM主要功能分析 (3)

第二章 Proteus软件仿真的硬件系统设计 (5)

2.1 MCS-51系列单片机 (5)

2.1.1 AT89C51单片机 (5)

2.1.2 单片机应用系统硬件设计 (5)

2.2 串行传输 (5)

2.3 I2C串行总线 (6)

2.4 E2PROM (8)

2.5 12864液晶显示模块 (10)

2.5.1引脚功能 (10)

2.5.2 12864DDRAM存储器 (10)

2.5.3 显示控制控制方法 (11)

2.6 蜂鸣器 (12)

2.7 键盘 (12)

2.7.1 键的识别 (12)

2.7.2 键盘扫描流程图 (13)

2.8 ATM硬件原理图 (13)

第三章 Proteus单片机仿真软件系统设计 (15)

3.1 C-51简介 (15)

3.1.1 C-51具有特点 (15)

3.1.2 C-51具有优点 (15)

3.1.3 C-51独特地方 (15)

3.2 ATM自动取款机系统流程 (16)

3.3 程序介绍 (16)

3.4 PCtoLCD2002扫描软件 (17)

3.5 Proteus软件 (19)

3.5.1 Proteus概述 (19)

3.5.2 Proteus具有特点 (19)

3.5.3虚拟工具箱 (20)

3.6 Keil软件 (21)

3.6.1概述 (21)

3.6.2创建工程 (22)

第四章 Proteus软件仿真结果 (23)

第五章结论 (25)

参考文献 (26)

附录 (27)

谢辞 (34)

引言

随着大规模集成电路的发展,组成微型计算机的各个功能部件:中央处理器、RAM、ROM、EPROM、并行串行输入输出I/O接口电路、定时器/计数器集、中断控制等部件成到一块半导体芯片上,构成一个完整的微型计算机[8]。由于它具有功能强、体积小、功耗低、价格便宜、工作可靠、使用方便灵活等特点,因此特别适合工业控制或控制类有关的数据处理系统,愈来愈广泛的应用到自动控制、智能化仪表以及家用电器等各个领域。由于其结构及应用特点,不同于通用的微型计算机,它的执行命令时间是可以计算出时间。

目前生产单片机的厂商很多Intel、Motorola、Philips等公司,产品达上百种,虽然其名称各异但原理大同小异。单片机在智能仪表方面的应用有,利用单片机改造原有的测量控制仪表,促进仪表像数字化、智能化方向发展。A/D转换器的集成,通过单片机软件的编写程序来控制温度、压力、流量、浓度等的测量显示。而且还具有复杂运算、误差修正、线性化、零点漂移处理、数字滤波等功能。其实具有很强的灵活性和实践性。

Proteus就是一款很好的单片机仿真软件,通过学习这款软件不仅能够掌握一些硬件电路还能更深刻的理解单片机,从而达到理论与实践相结合。增强感性认识,在仿真的同时培养动手能力,创新能力和综合知识运用。而且仿真技术的发展带来很大的经济效益。例如在航空工业方面,采用仿真技术使大型客机的设计和研制周期缩短20%。现代仿真技术应用于各个工程领域,对于社会经济等系统,很难在真实的系统上进行实验。因此,利用仿真技术来研究这些系统就具有更为重要的意义。

而51单片机又是最基础的所以要扎实掌握原理,加上EDA软件的鼎力相助,使得学习单片机变得更有意思。Keil软件可以实现汇编和C语言的编程,刚学单片机学的是汇编语言,感受是命令比较多而且很接近硬件,可移植性差。单片机C语言相比汇编语言是高级语言,很大提高编程速度而且对硬件了解不是很高。编程环境接近Visual C++ 6.0,不同就是需要建立工程然后添加C文件,可以进行软件仿真,断点设置,全速运行,单步运行,程序中的延时函数是通过软件仿真调试成功。

仿真ATM自动取款机,要实现的功能是就像银行那里的功能,基本功能有存款,修改密码,查询余额,转帐和自动存款。程序思想就是源于校园的自动取款机的流程而设计。插卡后输入密码然后进行一系列业务处理最后退卡完成交易。硬件电路设计有12864LCD对汉字进行显示,并且掌握了汉字编码原理,用软件生成见后边软件介

绍。IIC总线对E2PROM的数据,指令的写入和读出程序编写。键盘扫描程序用的是C语言实现的。总之都是利用C语言进行控制,程序设计比较大时流程图的作用就显得十分重要,将每个函数写成块这样就可以轻松调用不至于乱,例如显示子函数,键盘扫描子函数等。

51单片机掌握好有助于以后的PIC,DSP,ARM,FPGA,CPLD和嵌入式系统的学习,目前来看单片机在自动控制领域应用是非常广泛的,单片机的前景是十分光明。

第一章Proteus软件的单片机ATM系统

1.1 Proteus软件的ATM概述

Proteus软件仿真ATM系统,ATM是由CPU控制的持卡人自我服务型的金融专用设备。该系统是一个较典型的银行存取款模拟系统,并采用软件仿真其效果,使用者被假定为银行信用卡用户,系统应该具有安全、稳定、功能齐全的特点。满足银行自动取款机一般功能和服务。ATM自动取款机系统,是一个有终端机,ATM系统,数据库组成的应用系统。系统功能有用户在ATM上提取现金、查询账户余额、修改密码及转账功能。

ATM自动取款机系统向用户提供一个方便、简单、及时、随时随地可以随心所欲存取款的互联的现代计算机化的网络系统。可以大大减少工作人员,节约人力资源的开销,同时由于手续程序减少也可以减轻业务员的工作负担,有效地提高了整体的工作效率和精确度。减少了用户办理业务的等待时间,用户可以随时随地可以随心所欲存取款,并且操作简单易懂。当今信息时代,时间就是金钱,提高了用户的办理效率。

1.2 Proteus软件的ATM安全性分析

银行存取款机的数据涉及到取款机内储存的三名用户,数据量较大且对保密性的需求很高,所以要通过设置密码等手段确保数据在用户未用正确密码登录时不能被随意的删减和修改。并用单片机定时器设置用户交易是的时间,如果超过50s则自动退到输入密码页面。

1.3 Proteus软件的ATM稳定性分析

系统用单片机实现对键盘、LCD、E2PROM、蜂鸣器实时控制,功能比较健全,硬件系统的单片机采用12MHZ晶振,LCD刷新频率也很高。软件系统虽然庞大但经过严格的分块编写并长时间调试程序,当然少不了老师的指导,完全符合设计思想。只要是用户的合理操作软件系统,系统都应给出合理正确的回应,并满足用户的愿望,而不是出现令用户感到意外的系统错误或系统崩溃。

1.4 Proteus软件的ATM主要功能分析

开机时显示“中国农业银行请输入插入磁卡”,当用户将磁卡插入时(低电平有效)屏幕显示“请输入密码”。卡一密码为“123456”;卡二密码为“654321”,卡三

密码为“111111”全部初始化到外部存储器中。初始密码当然可以在程序中由串行数据来修改。用户密码存放到E2PROM中,仿真开始后用户可以自己随便设置六位数字号码,但是只要Proteus软件仿真结束后,密码又变为初始化时的密码。输入密码通过和读取E2PROM中密码对比一致时才能登录成功。允许用户选择业务、修改密码,查询,对用户由于疏忽录入的非法数据,能够及时提示并更正,倘若密码错误次数大于三次则该用户将被冻结。

登陆成功界面以后共有四个个选项,查询、改密、取款、取款分别对应P12、P10、P13、P11按键。分别按下相应的按键则选择相应的功能或者进入该键下的子菜单。每一屏都有退出按键可以返回到上一层目录中。

查询子菜单中有如下功能键,余额查询,转账,和自动存款,选定P12后,进入查询界面,用户输入查询条件,系统规则地在界面显示查询结果,且显示的数据尽量全面。如果使用自动存款,可以选择的金额与取款额度一样为100¥,200¥,300¥。使用转账业务是需用先选择要转入的用户,不可给自己转帐,然后选择金额。

取款时选定P10键后,进入取款界面,用户可以取面值100¥,200¥,300¥,若取款金额大于存款金额则会提示“余额不足”,若小于则会在原余额上扣除取款金额。本次给三个用户分别存入1000¥,2000¥,3000¥。

退出时选定P11后,进入退出界面,系统会延迟5毫秒重新跳回登陆界面,供其他用户使用。

第二章Proteus软件仿真的硬件系统设计

2.1 MCS-51系列单片机

2.1.1 AT89C51单片机

AT89C51单片机[16],集成8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。

最小系统能够运行起来必须包括电源、晶振、复位电路。输出时一般用低电平这是因为防止噪声干扰,因为噪声一般都为高电平。

单片机对外设备控制或对单片机控制其实就是通过对I/O口的控制。51系列单片机共有4个I/O口P0、P1、P2、P3 四个8位双向输入输出端口,每个端口都有锁存器、输出驱动器和输入缓冲器。其中P0口为准双向I/O口,其它三个为双向I/O口。P0中每一位为OD门输出,所以不能用作高电平驱动外围电路,所以用P0驱动电路时必须加上拉电阻这样才能输出高电平;如果作为输入,必须先向相应的锁存器写“1”,才不会影响输入电平。P3口还具有第二功能特点。

2.1.2 单片机应用系统硬件设计

若单片机无片内程序存储器或存储容量不够时需要外部扩展程序存储器。数据存储器利用RAM构成,存储容量满足的情况下尽可能减少芯片的扩展。I/O接口是最复杂的部分,因为单片机与外围电路接口各不相同。译码电路使用时要尽可能简单除了可利用常规的门电路、译码器实现外还可以利用只读存储器与可编程门阵列来实现。如果单片机外部扩展的器件较多负载太大,总线驱动是必须考虑的。

2.2 串行传输

图2-1 串行传输

随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈

显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,其特点为传输线少,且可以利用电话网等现成设备,相比并行传输要复杂一些。

2.3 I2C串行总线

I2C串行总线是由Philips公司推出的一种串行总线,具有多主机系统所需的包括总线裁决和高低速同步的高性能串行总线。I2C总线有俩根双向信号线,即SCL和SDA,分别为串行时钟信号和串行数据输入\输出。和电路连接时要通过上拉电阻接高电平,串行总线空闲时都是高电平,各器件的SCL、SDA都接成线与的关系,既有一根线为低电平则整条线被拉为低电平。

每个器件接到I2C总线上都有唯一的地址,就像这次我做的课题80C51单片机为发送装置,FM24C02为接收装置。进行数据传输时,时钟信号为高电平期间数据信号线必须保持稳定,当时钟信号变为低电平时,数据信号才可以变化。一次完整的传输要有起始信号和终止信号,都是由单片机发出的。SCL线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起始信号产生后总线处于被占用状态,终止信号产生时总线处于闲置状态。数据传输时是一个字节,一个字节传输,每一字节8位最高位到最低位传送,最后还需带一个应答位,所以一共9位为一帧。应答信号为低电平代表从机应答,否则为“非应答”。从机不应答时则主机需向从机发送终止信号,结束数据传送。当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后从机释放SDA线,以允许主机产生终止信号。

总线上的信号既包括地址信号又包括数据信号,产生起始信号后需要发送一个地址信号,与从机地址进行匹配。地址信号为8位最后一位代表传输方向,“0”表示主机发送数据,“1”表示主机接收数据。

I2C总线寻址采用7位的寻址字节,即起始信号后的第一个字节。D7~D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机输出数据,为“1”时表示主机由从机读数据。主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器。从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数

目。比方说一个从机的7位地址有4位是固定位,那么3位是可编程位,由排列组合可知,这时仅能寻址8个同样的器件。典型程序如下:

起始信号终止信号

void I2CStart(void) void I2CStop(void)

{ sda = 1; { sda = 0;

delay(5); delay(5);

scl= 1; scl = 1;

delay(5); delay(5);

sda = 0; sda = 1;

delay(5); delay(5);

} }

I2C应答信号

void respons()

{ uchar i;

scl=1;

delay_2();

while((sda==1)&&(i<250))i++;

scl=0;

delay_2();} I2C初始化

void ic_init() { scl=1;

delay_2();

sda=1;

delay_2(); }

向I2C写单个数据

void write_byte(uchar date) { uchar i,temp;

temp=date;

for(i=0;i<8;i++)

{ temp=temp<<1;

scl=0;

delay_2();

sda=CY;

delay_2();

scl=1;

delay_2(); }

scl=0; delay_2(); sda=1; delay_2(); }

I2C读单个数据uchar read_byte() { uchar i,k;

scl=0;

delay_2();

sda=1;

delay_2(); for(i=0;i<8;i++) { scl=1;

delay_2();

k=(k<<1)|sda;

scl=0;

delay_2();

} return k; }

向I2C固定地址写数据

void write_add(uchar address,uchar date) { start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

write_byte(date);

respons();

stop();

} I2C固定地址读数据uchar read_add(uchar addr) { uchar date;

start();

write_byte(0xa0);

respons();

write_byte(addr);

respons();

start();

write_byte(0xa1);

respons();

date=read_byte();

stop();

return date;

}

2.4 E2PROM

表2-1 FM24C02引脚定义

FM24C02是2048位的串行电可擦除ROM,内部组织为256个字节,每个字节8位,该芯片被广泛应用于低电压及低功耗的工商业领域。产品特点,工作电压:2.2V~5.5V ,内部结构: 256×8 (2K) ,有二线串行接口,输入引脚经施密特触发器滤波抑制噪声满足双向数据传输协议,并且兼容100KHz(2.2V)和400KHz(5V)操作支持硬件写保护。支持8字节(02),16字节(04、08、06) 页写模式,支持部分页写,写周期内部定时(小于5 ms)。高可靠性,可以写次数为1000000 次,数据保存为100 年,封装为DIP8封装。

FM24C02总线时序图:

图2-2 FM24C02总线时序图

数据传送格式,字节传送与应答,每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

读写周期时序:

图2-3FM24C02写周期时序

FM24C02为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中,当要与哪个芯片通信时传送相应的地址即可与该芯片建立连接,Proteus仿真图中三根地址线都为0。最后一位R/W为告诉从机下一字节数据是要读还是写,0为写入,1为读出。然后,再发一个字节的要读出器件的存储区的首地址,收到应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。

2.5 12864液晶显示模块

2.5.1引脚功能

表2-2 12864液晶引脚介绍

2.5.2 12864DDRAM存储器

本次选用的AMPIRE12864液晶为不带字库[12],因此所有汉字都需要编码。12864液晶屏横向有128个点,纵向64个点,由两个64×64半屏组成。DDRAM与各个点一一对应,采用自动扫描将输入的内容显示到屏幕上。CS1=1时控制左半屏,CS2=1时控制右半屏。

显示每一个汉字需要12864LCD中的16×16个点阵,显示时首先输入汉字的上半部分16个数据,再输入汉字的下半部分16个数据。例如“中”字,前两行数据代码代表“中”字的上半部分,后两行数据代码代表“中”字的下半部分。

DB 0x00,0xF8,0x08,0x08,0x08,0x08,0xFF,0x08,

DB 0x08,0x08,0x08,0xFC,0x08,0x00,0x00,0x00,

DB 0x00,0x01,0x01,0x01,0x01,0x01,0x3F,0x01,

DB 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,

2.5.3 显示控制控制方法

表2-3 读状态表

如果BUSY=1则表示系统忙不能操作读,只有在BUSY=0才允许操作读。

表2-4 写指令表

表2-5 写数据表

表2-6 显示开关表

当D=1时,开显示,其控制字为0X3F,那么关显示的控制字为0X3E。

表2-7 起始行表

表2-8 页起始表

页面地址是DDRAM的行地址。8行为一页,所以共8页。

表2-9 列起始表

列地址计数器在每一次读写数据后将自动加1,在每次操作后明确起始列的地址。

根据上述LCD设置可以编写左边的写指令程序和左边的写数据程序,右边写指令和写数据与此类似。E在一个高脉冲下进行写指令和数据。CS1,CS2来选通左右两屏。

void write_lcom(uchar date) {

E=1;

RW=1;

RS=0;

RW=0;

CS2=1;

CS1=0;

P0=date;

E=0;

} void write_ldate(uchar date) { E=1;

RW=1;

RS=0;

RW=0;

RS=1;

CS2=1;

CS1=0;

P0=date;

E=0;

}

2.6 蜂鸣器

PNP三极管主要是做驱动用的,因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,如果单片机I/O 口输出低电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,如果输出高电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音。

程序控制时将,与单片机相连的PNP基极定义为beep,要让单片机发出声音,先将beep置为‘0’,延时100毫秒后将beep置为‘1’,实现蜂鸣器的驱动程序。

2.7 键盘

键盘实际是由排列成矩阵形式的开关组成,它是单片机系统中最最常用的人机联系的一种设备。用户通过键盘可以向单片机CPU输入数据、地址、指令。键盘按其结构型式可分为编码式键盘和非编码式键盘。本次使用的是非编码键盘。它由产生被按键的编码,结构简单,但使用起来不如编码式键盘方便。

2.7.1 键的识别

本次使用的是程序扫描法来识别按键,采用行扫描方法。即通过行线发出低电平信号,如果该行所连接的按键没有按下的话,则列线所连接的输出端口得到的全是高电平信号;如果有按键按下的话,则得到的是非全高电平信号。找到闭合按键后,通过所对应的行值和列值来确定该键的特征值。

2.7.2 键盘扫描流程图

图2-4键盘扫描流程

2.8 ATM硬件原理图

控制部件是单片机的神经中枢,它以主振频率为基准发出CPU的时序,用来协调单片机内部各功能部件之间的数据传输,数据运算等操作。

单片机的定时控制功能采用内部时钟方式,有12MHz晶振和电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。

复位电路采用上电复位。EA引脚接高电平单片机访问片内程序存储器8KB,构成单片机最小系统。

P0口为准双向口所以需要加上拉电阻,为了方便应用1KΩ排阻然后再接电源。FM24C02为E2ROM,用于存储初始化信息。键盘为4×3键盘,12864LCD,蜂鸣器,构成整个系统。

图3-6 ATM系统原理图

第三章Proteus单片机仿真软件系统设计

3.1C-51简介

C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进扩充和移植。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言[1]。

3.1.1 C-51具有特点

C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如各种单片机、DSP、ARM等。

C语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。

C提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。

3.1.2 C-51具有优点

对单片机的指令系统不要求了解,仅要求对8051 的存贮器结构有初步了解。寄存器分配,不同存贮器的寻址及数据类型等细节可由编译器管理。程序有规范的结构,可分成不同的函数,这种方式可使程序结构化。提供的库包含许多标准子程序,具有较强的数据处理能力。由于具有方便的模块化编程技术,使已编好程序可容易地移植。

3.1.3 C-51独特地方

sfr:特殊功能寄存器声明;sfr16:sfr的16位数据声明;sbit:特殊功能位声明;bit:位变量声明;C-51[2]常用的头文件有reg51.h、reg52.h、math.h、ctype.h、stdio.h、stdlib.h、absacc.h;

中断服务程序写法:

函数名()interrupt n

{函数内部实现}

n代表0、1、2、3、4即外部中断1、定时/计数器1、外部中断2、定时/计数器2、串口。函数写在主函数后边不需要声明。本次使用定时器1的方式1每次定时为50ms,

Proteus仿真单片机实例

引言 单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个仿真系统。 2.Proteus介绍 Proteus是英国Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES(Adv-Ancd Routing And Editing Software)也就是PCB. 2.1 Proteus VSM的仿真 Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 Proteus可提供30多种元件库,超过8000种模拟、数字元器件。可以按照设计的要求选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。 除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。支持图形化的分析功能等。 Proteus特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,A VR,ARM等多种系列的处理器。Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY,Keil、MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。 2.2 Proteus PCB Proteus 的PCB设计除了有自动布线仿真功能外,还集成了PCB设计,支持多达16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行PCB设计。 3. 基于Protesus的简单数据采集系统。 3.1 软件的编写 本例题采用可调电阻调节电压值作为模拟信号的输入量,通过A/D转换芯片AD0808把模拟信号转换为数字量传送到单片机的P1口,并在P0口把转换的结果显示出来。 软件的编写可以在Keil C51 环境下进行,芯片的型号选择AT89C51,编写data.c文件,利用Keil C51进行编译,编译成功后生成data.hex文件。 3.2 绘制电路图 运行Proteus的ISIS,进入仿真软件的主界面,如图1所示。主界面分为菜单栏,工具栏,模型显示窗口,模型选择区,元件列表区等。

基于51单片机的乒乓游戏机设计附Proteus仿真_毕业设计

基于51单片机的乒乓游戏机设计附Proteus仿真 基于51单片机的乒乓游戏机设计附Proteus仿真 目录 1 绪论 (1) 1.1 本设计的研究背景和研究目的 (1) 1.2 国内外研究现状 (1) 1.3 本设计的任务和设计方法 (2) 1.3.1 设计任务 (2) 1.3.2 设计方法 (2) 2 乒乓游戏机设计方案 (3) 2.1 基于单片机的乒乓游戏机设计 (3) 2.1.1 硬件设计 (3) 2.1.2 软件设计 (4) 2.2 基于FPGA的乒乓游戏机设计 (4) 2.3 方案比较与选择 (5) 3硬件电路的设计 (6) 3.1 硬件核心电路选择 (6) 3.1.1 单片机STC89C51简介 (6) 3.1.2 单片机端口分配 (7) 3.2 电源电路的设计 (8) 3.3 时钟电路的设计 (9) 3.4 复位电路的设计 (10) 3.5 按键电路的设计 (10) 3.6 模拟球台电路的设计 (12) 3.6.1 译码器简介 (12) 3.6.2发光二极管简介 (14) 3.6.3 模拟球拍电路的设计 (15) 3.7 显示电路的设计 (15) 3.7.1 LCD1602简介 (15) 3.7.2 显示电路的设计 (16)

3.8 乒乓游戏机总电路的设计 (17) 4 乒乓游戏机的软件设计及编程 (18) 4.1 主程序的设计及功能实现 (19) 4.2 按键组的设计及功能实现 (20) 4.2.1 球拍模拟子程序 (20) 4.2.2 暂停/开始子程序 (20) 4.3 发球程序的设计及功能实现 (21) 4.4 线路程序的设计及功能实现 (21) 4.4.1 线路选择子程序 (21) 4.4.2 LED点阵子程序 (22) 4.5 回球程序的设计及功能实现 (22) 4.6 LCD显示程序设计及功能实现 (23) 4.7 设计源程序 (24) 5 系统调试及分析 (24) 5.1 仿真调试及分析 (24) 5.1.1 Proteus软件简介 (24) 5.1.2 Keil uVision4软件简介 (25) 5.1.3 仿真调试 (25) 5.1.4 仿真调试的结果分析 (28) 5.2 实物调试及分析 (28) 5.2.1 制作实物的过程 (28) 5.2.2 进行实物调试 (28) 5.2.3 实物调试的结果分析 (31) 6 结论与展望 (32) 谢辞(Acknowledge) (33) 参考文献 (34) 附录1:程序 (36) 附录2:元件清单 (51)

(整理)较为全面的基于PROTEUS仿真51单片机动态数码管课程设计(WORD版)

单片机课程设计 题目动态数码管显示 学院机电工程学院 专业班级电子信息工程12-1班 姓名 组员 指导教师张、王老师 2015 年 5 月30 日

课程设计量化评分标准

目录 一、概述 (1) 1. 单片机简介 (1) 2. Proteus简介 (2) 3. 设计任务与要求 (3) 二、硬件设计 (3) 1. 单片机最小系统设计 (1) 2. 数码管显示部分 (4) 3. 数码管驱动部分 (5) 三、软件设计 (6) 1. 仿真原理图 (6) 2. 仿真参数设置 (6) 3. 仿真结果 (7) 4. 程序流程图 (8) 5. 程序代码.................................................... .9 四、心得体会............................................... (11) 五、参考文献 (12)

精品文档 一、概述 1. 单片机简介 如图1.1和图1.2分别为PDI P封装的AT89C52引脚图和实物图 图1.1 引脚图图1.2 实物图 AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。本课程设计中使用的是PDIP封装的AT89C52单片机。 2.Proteus简介 如图1.3为Proteus7.0的工作界面图

51单片机+proteus仿真PWM

#include unsigned char flag; unsigned int x; unsigned int y; #define time 800 void main() { EA=1; //开总中断 ET0=1; //定时器T0中断允许 TMOD=0x02; //使用定时器T0的模式2 TH0=0; //定时器T0的高8位赋初值 TL0=0; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 x=time; y=0; while(1)//无限循环等待中断 ; } /************************************************************** 函数功能:定时器T0的中断服务程序 **************************************************************/ void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数 //其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器{ if(flag==0) { TH0=256-y; //定时器T0的高8位重新赋初值 TL0=256-y; //定时器T0的高8位重新赋初

P1=1; if((--x)==0) { flag=1; x=time; if((--y)==0) { y=100; } } } if(flag==1) { TH0=y; //定时器T0的高8位重新赋初值 TL0=y; //定时器T0的高8位重新赋初 P1=0; if((--x)==0) { flag=0; x=time; if((--y)==0) { y=100; } } } }

单片机温度传感器proteus仿真

仿真程序仿真: LED_0 EQU 30H LED_1 EQU 31H LED_2 EQU 32H ADC EQU 35H TCNTA EQU 36H TCNTB EQU 37H H_TEMP EQU 38H L_TEMP EQU 39H FLAG BIT 00H H_ALM BIT P3.0 L_ALM BIT P3.1 SOUND BIT P3.7 CLOCK BIT P2.4 ST BIT P2.5 EOC BIT P2.6 OE BIT P2.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG 1BH LJMP INT_T1 START:MOV LED_0,#00H

MOV LED_1,#00H MOV LED_2,#00H MOV DPTR,#TABLE MOV H_TEMP,#153 MOV L_TEMP,#77 MOV TMOD,#12H MOV TH0,#245 MOV TL0,#0 MOV TH1,#(65536-1000)/256 MOV TL1,#(65536-1000)/256 MOV IE,#8AH CLR C SETB TR0 WAIT:SETB H_ALM SETB L_ALM CLR ST SETB ST CLR ST JNB EOC,$ SETB OE MOV ADC,P1 CLR OE MOV A,ADC SUBB A,L_TEMP JC LALM MOV A,H_TEMP MOV R0,ADC SUBB A,R0 JC HALM CLR TR1 LJMP PROC1 LALM:CLR L_ALM SETB TR1 CLR FLAG LJMP PROC1 HALM:CLR H_ALM SETB TR1 SETB FLAG LJMP PROC1 PROC1:MOV A,ADC MOV B,#100 DIV AB MOV LED_2,A MOV A,B

Proteus软件的单片机仿真(ATM)

摘要 基于Proteus软件的单片机自动取款机(ATM)仿真系统设计,硬件电路需要单片机开发板和12864液晶显示器,能够实现自动取款的全部功能。通过在在计算机上用C语言编程来将生成文件下载到单片机控制其它外围器件工作。但是在EDA新技术的引入使得系统的开发成本降低而且灵活性增强,在Proteus软件中都可以找到上述硬件元件,通过电路图连接完全可以实现仿真功能。在Keil软件环境下通过C语言编程,编译调试后生成单片机下载的HEX(十六进制)文件,硬件电路图是在Proteus 软件中进行建模。通过Proteus和Keil结合建立的虚拟系统实现联合仿真,单片机实时控制12864LCD实现汉字的显示,扫描键盘从而达到用户与ATM的信息交换,使得ATM系统设计变为现实。 ATM系统,是一个有数据库组成的应用系统。用户的初始信息通过E2PROM存放,这样免去了掉电丢失数据的弊端。系统功能有用户在ATM上提取现金、查询账户余额、修改密码、账户冻结、密码保护、自动存款及转账功能。可以仿真实现最基本的银行服务。 关键词:ATM;51单片机;Proteus;Keil;12864LCD;E2PROM;虚拟仿真

Abstract Automatic Teller Machine system is based on Proteus 51-microcontroller.Hardware circuit includes microcontroller developer board and 12864LCD display. All features of ATM can be well worked on it. Programming on PC then download created file to 51-microcontroller to control outer circuit. However, with the introduction of EDA, new technology, which lower the cost of system exploration and enhance flexibility. Programing with C language, compiling and debugging under the environment of Keil software,creating a HEX file which will be downloaded by microcontroller later. Hardware schematic diagrams are established with Proteus software. According to the combination of Proteus and Keil , making a virtual system , successfully achieve united simulation. Microcontroller controls 12864LCD to display Chinese words, scans keyboard to exchange information between customer and ATM, which makes virtual ATM system becoming reality. ATM system includes databases, which are used for the storage of customers’ initial information, leading to emerge from the disadvantage of data lost when power cuts. The functions of ATM are as follows: withdraw cash, search client and remaining modify password, client freezed, password protection, automatic deposit and transfer client. This system simulates to realize the bank’s fundamental services. Keywords:ATM;51microcontroller;Proteus;Keil;12864LCD;E2PROM;virtual simulation

单片机PROTEUS仿真100实例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 第01 篇基础程序设计 01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } } 02 从左到右的流水灯 /* 名称:从左到右的流水灯 说明:接在P0口的8个LED 从左到右循环依次点亮,产生走 马灯效果 */ #include #include #define uchar unsigned char #define uint unsigned int

//延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {

51单片机行列式键盘的应用proteus仿真+源程序

51单片机行列式键盘的应用proteus仿真本人喜好单片机设计,精通单片机编程和硬件电路设计,在空余之际编一些小程序与大家分享,有哪位路过,请多多指教,希望大家在一起能互相学习,互相进步。这里的程序已经测试通过。发表出来,一来可以帮助同样爱好单片机的朋友们,二来,希望能结交一些同道中人,共同学习。 源程序: #include #include void delayms(unsigned char ms); unsigned char data dis_digit; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0xff}; unsigned char data dis_index; void main() { P2=0xff; P1=0x00; dis_index=0; dis_digit=0x01; while(1) { P2=dis_code[dis_index]; P1=dis_digit; delayms(1); P1=0x00; dis_digit=_crol_(dis_digit,1); dis_index++; dis_index &=0x07; } } void delayms(unsigned char ms) { unsigned char i; while (ms--) {

for(i=0;i<120;i++); } } 仿真图:

如果您想做项目开发,或者是做课题,或者您只是有一个想法,亲联系我们,我们会尽最大努力帮您完成,您的需要就是我们奋斗的方向! 本人有给学生做课程设计的经验,欢迎亲们来本店咨询哦 淘宝店铺地址:https://www.360docs.net/doc/1a7352483.html, ; https://www.360docs.net/doc/1a7352483.html, QQ:1203026348;496617571 邮箱:1203026348@https://www.360docs.net/doc/1a7352483.html, ;496617571@https://www.360docs.net/doc/1a7352483.html, 电话:小陈:152******** 小张:158******** 阿里旺旺:tb3569_1968 ;zwjyln 我们拥有40G!!超大容量!!!是单片机入门者的首选经典资料!!! 您在单片机方面有任何问题,请及时和我们联系,我们会竭诚为您服务!! 承接单片机项目开发,同时包括软件开发和硬件开发。我们是一组拥有扎实的单片机基础知识的大学生,我们可以给您提供从项目开始到项目的完成整个过程的技术支持,其中包括原理图的设计、电路图的proteus软件仿真、程序的编写以及相关软件的使用等

基于51单片机的计算器(附Proteus仿真图且程序有详细注释)

#include #define uint unsigned int #define uchar unsigned char #define lint unsigned long int uchar SMG[10]={0x3f,0x06,0x5b,0x4f, //数码管取模 0x66,0x6d,0x7d,0x07, 0x7f,0x6f }; uchar DA TA1[8]={0,0,0,0,0,0,0,0}; //第一个数 uchar DA TA2[8]={0,0,0,0,0,0,0,0}; //第二个数 uchar RESUIT[8]={0,0,0,0,0,0,0,0}; //结果 uchar px1=0,px2=0,px3=0,flag=0,flag1=0,flag2=0,flag3=0,f1=0,f2=0,f3=0,f4=0; //各全局变量uchar temp,key; lint x1=0,x2=0,y=0; //输入的数及其结果 void Init(); //系统初始化 void keyscan(); //键盘检测 void delay(uint); //延时 void DataOper(); //数据运算 void DataHandle(); //数据接收 void DisplayHandle(); //显示处理 void display(uchar,uchar); //数码管显示函数 void main() { P2=0x00; while(1) { keyscan(); DataHandle(); DisplayHandle(); } } void Init() //初始化,所有数据归零 { uchar i; px1=0;px2=0;px3=0; flag=0;flag1=0;flag2=0;flag3=0; f1=0;f2=0;f3=0;f4=0; x1=0;x2=0;y=0; for(i=0;i<8;i++) {DA TA1[i]=0;DATA2[i]=0;RESUIT[i]=0;} } void delay(msx) //msx为延时毫秒数 { uint i,j;

基于Proteus和Keil的单片机课程设计

第5期(总第70期) 2008年10月济南职业学院学报 Journal of Jinan Vocational College Oct .2008 No .5(Serial No .70) ·· 112单片机应用技术是电类专业的一门重要课程,也是理论和实践结合性很强的一门课程,所以课程设计环节尤为重要。课程设计环节的任务和目的是让每个学生亲自参与到其中的设计细节,提高单片机开发的能力。考虑到目前实验器材少,设计过程中容易造成器件和仪器仪表的损坏,以及离开实验室学生得不到充分的锻炼,从而借助于Proteus和Keil进行课程设计。实践证明,这样可以很好地解决上述问题,节省设计成本,提高设计速度。 1 Proteus和Keil简介1.1 Proteus简介 Proteus是一个完整的嵌入式系统软、硬件设计仿真平台,它包括原理图输入系统ISIS、带扩展的Prospice混合模型仿真器、动态器件库、高级图形分析模块和处理器虚拟系统仿真模型VSM。ISIS是Proteus系统的中心,具有超强的控制原理图设计环境。Proteus VSM最重要的特点是,它能把微处理器软件作用在处理器上,并和该处理器的任何模拟和数字器件协同仿真。仿真执行目标码就像在真正的单片机系统上运行,VSM CPU 模型能完整仿真I/O口、中断、定时器、通用外设口和其他与CPU有关的外设,甚至能仿 真多个处理器。 1.2 Keil简介 Keil是一个功能强大的开发平台,它包括项目管理器、CX51编译器、AX51宏汇编器、BL51/Lx51连接定位器、RTX51实时操作系统、Simulator软件模拟器以及Monitor51硬件目标调试器。它是一种集成化的文件管理编译环境,主要的功能特点为:编译C源程序、汇编源程序或混合语言源程序,链接和定位目标文件和库,创建HEX文件、调试目标程序等,是目前最好的51单片机开发工具之一。Keil支持软件模拟仿真(Simulator )和用户目标板调试(Monitor51)两种工作模式,前者不需要任何单片机硬件即可完成用户程序仿真调试,后者利用硬件目标板中的监控程序可以直接调试目标硬件系统。 2 应用举例 下面结合课程设计中四项八拍步进电机正反转电路的单片机实现,具体说明如何基于Proteus和Keil进行单片机仿真。电路的功能是,通过点击正反转按钮,让步进电机自如进行正反转的切换。 2.1 硬件的实现 打开Proteus ISIS编辑环境,通过对象选择按 基于Proteus和Keil的单片机课程设计 宫亚梅 (常州信息职业技术学院 机电工程系,江苏 常州 213164) 摘 要:本文介绍了Proteus和Keil的功能特点,结合步进电机正反转实例,详细给出了两种软件在单片机课 程设计中的具体应用。 关键词:Proteus;Keil;单片机;设计 中图分类号:TP391 文献标识码:A 文章编号:1673-4270(2008)05-0112-02 收稿日期:2008-09-08 作者简介:宫亚梅(1979—),女,江苏姜堰人,常州信息职业技术学院机电工程系助教。

用PROTEUS对单片机进行仿真的方法与实例

用PROTEUS对单片机进行仿真的方法与实例 Proteus软件是英国Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计;ISIS模块用来完成电路原理图的布图和仿真。它可以进行模拟电路仿真、数字电路仿真,也可以进行单片机及其外围电路组成的系统的仿真;软件提供了各种虚拟仪器,如示波器、逻辑分析仪、信号发生器、电压表、电流表等。和其它仿真软件相比,Proteus ISIS最大特色是对单片机系统的仿真,目前支持的单片机类型有:68000系列、8051系列、ARM系列、AVR系列、PIC系列、Z80系列、HC11系列等。本文主要介绍Proteus 软件在单片机方面的仿真功能,即ISIS模块的用法。 在单片机学习开发的过程中,程序的调试是一个很重要的环节,要安装电路进行实验,而且电路在调试过程中往往要进行调整和改变,这不紧增加了费用和难度,而且也影响了学习和开发的进度,这也成了一些初学者学习的障碍。如果使用Proteus 软件就可以大大节省时间和开发费用,可以在软件仿真通过后再制作印刷电路板进行电路实验。 一、Proteus ISIS软件的工作环境和一些基本使用方法 下面通过一个流水灯的实例来说明Proteus的基本使用方法,使用的软件版本是Proteus.Professional 7.1 SP2。

流水灯使用AT89C51单片机,用P2口作输出口。先在Keil uVision编译器中输入下列程序: #include <reg51.h> void Delay1ms(unsigned int count)//延时子程序 { unsigned int i,j; for(i=0;i<count;i++) for(j=0;j<120;j++); } main() //主程序 { unsigned char LEDIndex = 0; bit LEDDirection = 1; while(1) { if(LEDDirection) P2 = ~(0x01<<LEDIndex); else P2 = ~(0x80>>LEDIndex); if(LEDIndex==7) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8;

基于Proteus的单片机串口通信仿真

— Proteus 班级:电信13-2 姓名:段学亮 邓成智 崔俊杰 邓石磊 陈亮 高金玉 成绩: 电子与信息工程学院 信息与通信工程系

1.设计要求 1.1甲单片机向乙单片机机发送控制命令字符,甲单片机同时接收乙单片机机发送的数字,并显示在数码管上。 1.2乙机程序接收甲机发送字符并完成相应动作乙机接收到甲机发送的信号后,根据相应信号控制LED完成不同闪烁动作。 2. 仿真电路图 串口通信仿真电路图如图一 图1:串口通信仿真电路图 3.串口通信C51程序 /* 名称:甲机串口程序 说明:甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上。 */

#include #define uchar unsigned char #define uint unsigned int sbit LED1=P1^0; sbit LED2=P1^3; sbit K1=P1^7; uchar Operation_No=0; //操作代码 //数码管代码 uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //延时 void DelayMS(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); } //向串口发送字符 void Putc_to_SerialPort(uchar c) { SBUF=c; while(TI==0); TI=0; } //主程序 void main() { LED1=LED2=1; P0=0x00; SCON=0x50; //串口模式1,允许接收 TMOD=0x20; //T1工作模式2 PCON=0x00; //波特率不倍增 TH1=0xfd; TL1=0xfd; TI=RI=0; TR1=1; IE=0x90; //允许串口中断 while(1) { DelayMS(100); if(K1==0) //按下K1时选择操作代码0,1,2,3 { while(K1==0); Operation_No=(Operation_No+1)%4; switch(Operation_No) //根据操作代码发送A/B/C或停止发送

基于proteus的51单片机仿真

基于proteus的51单片机仿真实例七十八、使用BCD译码器实现8位数码管显示应用实例 标签: proteus译码器单片机BCD数码管2010-02-24 16:57 1、在此前有关数码管显示的例子中,单片机必须要发送段码才能够让数码管显示正确的数字。 本例使用7段数码管显示译码器4511,单片机可以直接输出BCD码,4511能够自动将BCD 码转换为数码管的段码。 2、在keil c51中新建工程ex66,编写如下程序代码,编译并生成ex66.hex文件 //使用BCD码译码器控制数码管显示 #include //位码表 unsigned char code bit_buff[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //需要显示的数字 unsigned char code bcd_buff[] = {2,0,1,0,10,2,10,9}; //延时函数 void delayms(unsigned int x) { unsigned char i; while(x--) { for(i = 0;i < 120;i++); } } void main(void) { unsigned char i; while(1) { for(i = 0;i < 8;i++) //显示8位 { P2 = bit_buff[i]; // 位码 P1 = bcd_buff[i]; //需要显示的数字,这里的数字不再是段码,而是BCD码 3、在proteus中新建仿真文件ex66.dsn,电路原理图如下所示

4、将ex66.hex文件载入at89c51中,启动仿真,按动拨码开关,观察运行结果。下图是某一时刻程序运行结果

PROTEUS单片机仿真软件介绍

Proteus--软件介绍 Proteus是由Labcenter Electronics开发的功能强大的单片机仿真软件,现在最新版本6.9 SP5,其演示版本可在其官方网站https://www.360docs.net/doc/1a7352483.html,下载。 Proteus与其他的仿真软件相比较,在下面的优点: 1.能仿真模拟电路、数字电路、数模混合电路; 2.能绘制原理图、PCB图; 3.几乎包括实际中所有使用的仪器 4.其最大的亮点在于能够对单片机进行实物级的仿真。从程序的编写,编译到调试,目标版的仿真一应俱全。支持汇编语言和C语言的编程。还可配合Keil C实现程序的联合调试,将Proteus中绘制的原理图作为实际中的目标板,而用Keil C集成环境实现对目标板的控制,与实际中通过硬件仿真器对目标板的调试几乎完全相同,并且支持多显示器的调试,即Proteus运行在一台计算机上,而Keil C运行在另一台计算机上,通过网络连接实现远程的调试。 Proteus原理图元器件库详细说明 当你在用Proteus的时候,你是否真的清楚它们的元件库呢?如果你不清楚的话,也许这个对你有点用!!PROTEUS原理图元器件库详细说明 Device.lib 包括电阻、电容、二极管、三极管和PCB的连接器符号 ACTIVE.LIB 包括虚拟仪器和有源器件 DIODE.LIB 包括二极管和整流桥 DISPLAY.LIB 包括LCD、LED BIPOLAR.LIB 包括三极管 FET.LIB 包括场效应管 ASIMMDLS.LIB 包括模拟元器件 VALVES .LIB 包括电子管 ANALOG.LIB 包括电源调节器、运放和数据采样IC CAPACITORS.LIB 包括电容 COMS.LIB 包括4000系列 ECL.LIB 包括ECL10000系列 MICRO.LIB 包括通用微处理器 OPAMP.LIB 包括运算放大器 RESISTORS.LIB 包括电阻 FAIRCHLD .LIB 包括FAIRCHLD 半导体公司的分立器件 LINTEC.LIB 包括LINTEC公司的运算放大器 NATDAC.LIB 包括国家半导体公司的数字采样器件 NATOA.LIB 包括国家半导体公司的运算放大器 TECOOR.LIB 包括TECOOR公司的SCR 和TRIAC TEXOAC.LIB 包括德州仪器公司的运算放大器和比较器 ZETEX .LIB 包括ZETEX 公司的分立器件 也许部分因版本回有所不同,这是PROTEUS 6.7的版本。 如何删除左边元件列表中的元件 点edit 中的Tidy可以删去所有你没用到的零件,但如果想只删其中指定的零件,似乎Proteus没有这个功能。

Proteus与单片机实时动态仿真

0.引言 Proteus 是由英国Labcenter electronics 公司开发的EDA 工具软件。它从1989 年出现到现在已经有十多年的历史,在全球广泛使用。Proteus 安装以后,主要由两个程序组成:Ares和Isis。前者主要用于PCB 自动或人工布线及其电路仿真,后者主要采用原理布图的方法绘制电路并进行相应的仿真。除了上述基本应用之外,Proteus 革命性的功能在于它的电路仿真是互动的,针对微处理器的应用,可以直接在基于原理图的虚拟原型上编程,并实现软件代码级的调试,还可以直接实时动态地模拟按钮、键盘的输入,LED、液晶显示的输出,同时配合虚拟工具如示波器、逻辑分析仪等进行相应的测量和观测。 Proteus 软件的应用范围十分广泛,涉及PCB 制版、spice 电路仿真、单片机仿真,在最新的6.9 版本中又加入了对ARM7/LPC2000 的仿真。本文主要以单片机的仿真为例,使大家初步了解该软件的强大功能及其在工程实践和实验教学中的重要作用。 1.Proteus 仿真功能简介 作为一款EDA 仿真软件,Proteus 与同类软件有着很多的相似之处。相比之下,其主要的特点有两个:一是对动态元件的实时仿真,它对“人机对话”的模拟增强了系统的真实性;二是虚拟工具箱的功能,它能与仿真同时进行,测量方便而准确。下面着重介绍一下该软件的这两个突出特点。 1.1.实时动态仿真 与多数仿真软件相似,Proteus 有着数量庞大的元件库。Labcenter 公司与相关的第三方软件阵容共同开发了6000 多个模拟和数字电路中常用的spice 模型以及各种动态元件,基本元件如电阻、电容、各种二极管、三极管、MOS 管、555 定时器等;74 系列TTL 元件和4000 系列CMOS 元件;存储芯片包括各种常用的ROM, RAM,EEPROM, 还有常见I2C 器件等。在丰富的库元件的支持下,原理布图时只要进行相应的调用和连线,通过对每个元件的属性设置完成绘图,然后即可进行仿真和虚拟测量。关于原理图的具体绘制方法不是本文讨论的重点,请参考软件提供的帮助教程。 与Multisim 等仿真软件的一大不同,在于Proteus 支持微处理器的仿真。这些仿真的实现是基于Labcenter 公司提出的VSM 的概念。 VSM,Virtual System Modelling,直接译作“虚拟系统模型”,官方的定义是:将spice电路模型、动态外设以及微处理器的仿真结合起来,在物理原型调试之前用于仿真整个单片机系统的一种设计方法[1]。对动态外设的支持是Proteus在区别于其他等仿真软件最直接的地方。VSM为用户提供了一个实时交互的环境,在仿真的过程中,你可以用鼠标去点击开关和按钮,微处理器根据输入的信号做出相应的中断响应,同时输出运算的结果到显示终端。整个过程与真实的硬件调是极其相似的,在动态外设支持下的实时输入和输出为实验者呈现了一个最接近现实的调试环境。官方资料显示,一个300 MHz Pentium II CPU可以以12MHz的时钟频率仿真一个基本的8051 系统。

基于proteus的51单片机仿真实例六十

基于proteus的51单片机仿真实例五十九、1位数码管显示实例 1、数码管实际上是由7个发光二极管组成一个8字形,另外一个发光二极管做成圆点型,这样就构成了一个数码管。所有的8个二级管的正极或者负极都连到一个公共端点上,对于公共端连在正极的数码管,称为共阳极数码管,反之称为共阴极数码管。 根据数码管的内部结构原理,可以很清楚的知道数码管显示数字的原理。 2、由于单片机的IO口的驱动能力有限,而数码管点亮时需要较大的电流,所以在用单片机构成数码管显示系统时,需要增加驱动电路,最简单的驱动电路就是利用三极管的电流放大能力来输出较大的电流, 3、让数码管显示数字的步骤为: 1)使数码管的公共端连到电源(共阳极)或者地(共阴极)上。 2)向数码管的各个段输出不同的电平。 本例使用单个数码管循环显示0-9这10个数字。 4、在keil c51中新建工程ex47,编写如下程序代码,编译并生成ex47.hex文件 #include //包含头文件 //延时函数,延时约200ms void delay(void) { unsigned char i,j; for(i = 0; i < 255;i++) { for(j = 0;j < 255;j++); } } //主函数 void main(void) {

unsigned char i; unsigned char code Tab[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90}; //定义数字0-9的段码表 P2 = 0xfe; //P2.0输出低电平,数码管电源导通 while(1) { for(i = 0;i < 10;i++) //循环10次。数码管循环显示数字0-9 { P0 = Tab[i]; //P0口输出数字0-9对应的段码 delay(); //延时 } } } 5、在proteus中新建仿真文件ex47.dsn,电路原理图如下所示: 需要说明的是在proteus中,查找排阻(不带公共端)和数码管的方法。 查询数码管元件时,输入关键字“7seg-com..”后,就可以看到各种数码管的电路符号。根据需要选择相应数码管即可。排阻的查找方法:查找带公共端的排阻时,输入关键字“respack”即可。 不带公共端的排阻,输入关键字“RX8”即可

Proteus仿真单片机实验

目录 引言 (2) 实验1 PROTUES环境及LED闪烁综合实验 (7) 实验2 多路开关状态指示 (10) 实验3 报警产生器 (13) 实验4 I/O并行口直接驱动LED显示 (16) 实验5 按键识别方法之一 (19) 实验6 一键多功能按键识别技术 (22) 实验7 定时计数器T0作定时应用技术 (25) 实验8定时计数器T0作定时应用技术 (28) 实验9 “嘀、嘀、......”报警声 (32) 实验10 8X8 LED点阵显示技术 (36) 实验11电子琴 (40)

引言 单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个单片机仿真系统。 1. Proteus介绍 Proteus是英国Labcenter Electronics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES (Advanced Routing and Editing Software)也就是PCB。 1.1 Proteus VSM的仿真 Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 Proteus可提供30多种元件库,超过8000种模拟、数字元器件。可以按照设计的要求选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。 除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。支持图形化的分析功能等。 Proteus特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,A VR,ARM等多种系列的处理器。Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY, Keil, MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。 1.2 Proteus PCB Proteus 的PCB设计除了有自动布线仿真功能外,还集成了PCB设计,支持多达16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行PCB设计。 2. 一个基于Protesus的单片机实例 2.1 软件的编写 本例题采用8个LED,编写程序使之闪烁起来。

相关文档
最新文档