• proteus设计电路图 > 2009年全国技工教育和职业培训
  • 2009年全国技工教育和职业培训

    免费下载 下载该文档 文档格式:DOC   更新时间:2009-11-05   下载次数:0   点击次数:3
    文档基本属性
    文档语言:Simplified Chinese
    文档格式:doc
    文档作者:创编
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    2009年全国技工教育和职业培训
    优秀教研成果评选活动参评论文
    PROTEUS仿真教学
    -数字电路篇
    -51单片机篇

    引言:技工学校的电子类专业教学,重在操作,重在实践.但在教学过程中必须以理论作为指导.但单纯的一本教案,一支笔的模式进行理论或技能教学,往往在学生中达不到应有的效果,随着科技的发展,这种模式显然不能适应现代教学的要求.因此应用多媒体进行电子专业教学,激发学生的视觉感官,把不可视的电子运动转为实际效果,即节省操作过程中的电子制作时间,也可快速掌握并消除理论中的晦涩点与重点,激发学生的学习热情与兴趣.
    PROTEUS仿真教学(上)
    -数字电路篇
    常州市电子技工学校(213014) 何海滨 0519-88980011
    Proteus软件是英国Labcenter electronics公司的EDA工具软件.功能强化.Proteus软件除了具有原理布图,PCB制板及电路仿真的功能外,其革命性的功能是:针对微处理器的应用,直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器,Proteus为您建立了完备的电子设计开发环境!
    应用Proteus软件进行数字电路的仿真教学,用生动形象的仿真效果来理解数字电路中的数字集成电路功能,时序电路,数字单元电路功能等,可以达到事半功倍的效果.
    PROTEUS仿真集成电路功能教学
    数字电路中,数字集成电路教学是重点之一.如何认识数字电路集成块功能成了学生学习当中的难点.对于这方面的教学,教材讲得很抽象,学生很不易学会,常规教学借助于数字实验箱来学习集成电路功能.但采用Proteus软件仿真集成电路的功能,更易理清集成电路的真值表功能.
    CD4511是输出高电平有效的CMOS七段显示译码器.其输入是8421BCD码,输出驱动7段共阴数码管.其真值表如图一:
    要想理解上图的真值表含义,光用列表方式讲解学生不易接受,但用仿真形式来说明,却是非常容易理解.在PROTEUS软件中绘图如下图二:U1(CD4511)周围用高低电位设置其工作环境:LT(3),BI(4)接高电位1,LE/STB(5)接低电平0,BCD码从脚6217输入,对应DCBA,图中电位分别是:0011,也就是十进制的3,运行以后,在输出端数码管显示3.从图中还可以从CD4511引脚上的方点颜色看出高低电位,其中红为高,蓝为低.同理拔动W1可以验证真值表中其它项.图三显示9.根据图二,三电路仿真CD4511的功能,完全可以让学生寓学于仿真中.
    2,PROTEUS仿真时序教学
    触发器,移位寄存器,振荡器等电路均是有关时序的电路.时序电路基本上是由集成电路完成.在这介绍移位寄存器的仿真.74HC595是美国国家半导体公司生产的串进串,并出通用移位寄存器芯片.并行输出端具有输出锁存功能.主要引脚功能为:DS:串入数据输入端;SH_CP:移位脉冲输入端; ST_CP:锁存脉冲输入端;/MR:移位寄存器清零端;/OE:输出允许端(低电平有效).Q0Q7:并出端子;Q7'串出端子.其真值表如下图四:
    按照真值表,设计一电路图按照74HC595引脚要求进行仿真设置.电路图如下图五:点击运行后,按住图中按钮S1适当时间后松开,就可在U3条状灯中产生移动亮灭的移位效果.同时也可打开图六中数字示波器,观察SH_CP,ST_CP引脚上升沿脉冲波形.
    3,PROTEUS仿真秒脉冲发生器电路功能.如下图七,可以产生1Hz的矩形脉冲波.点击运行按钮后,示波器A踪可以显示电路形成的1Hz波形,B踪显示标准1Hz波形,如果形成的波形与1Hz有误差,可以调节RV1校准.
    使用PROTEUS对数字电路进行仿真,还有很多内容可以学习,在这抛砖引玉,希望大家从学习PROTEUS软件中可以更多感受它的优点.
    篇后感言:PROTEUS的最大优势在于能仿真多种单片机功能,下一篇习作《PROTEUS仿真(下)-51单片面篇》
    PROTEUS仿真教学(下)
    -51单片机篇
    常州市电子技工学校(213014) 何海滨 0519-88980011
    PROTEUS软件是电子EDA软件,与其它相关软件相比,其优势在于能仿真实际电路运行状态,从而解决了很多实际中可能遇到的错误点,缩短电路开发的周期与成本.同类软件还有Multisim,但PROTEUS软件的创新点在于能针对大部分单片机进行仿真.
    在单片机的教学过程中,绝大多数师生均认为:教者难,学者更难.如何解决这一困境 应用PROTEUS仿真单片机进行教学,让学生更易理解单片机指令,编程的思路以及调试的方法.因为通过仿真可以把抽象的程序变成实际的运行效果,直接让学生收获成功的快乐,更加激发学生的学习热情.绝大多数学校单片机教学主要以51系列单片机为主,因此在这主要以51单片为范例进行仿真.
    流水灯程序主要让学生能理解单片机的口线操作,常作为教学中单片机入门编程之一.使用PROTEUS,可以清楚的演示流水效果.准备工作如下:①,在WAVE环境下编程2051.asm,并编译成2051.HEX;②,在PROTEUS环境下绘制如下电路图一;③然后在PROTEUS环境下打开U1属性图二,修改Program File,把2051.HEX文件加入到U1中.点击运行后,就会出现程序所要求的流水灯效果.WAVE中修改程序段可以得到不同的流水效果.
    数字钟程序主要是让学生了解51单片机中的硬件资源:中断,定时器等.同时也综合学习动态扫描显示,键盘处理等知识点,应用PROREUS仿真,可以让学生分模块,分程序段进行调试仿真,收到的效果可以说事半功倍,值得同行借鉴与学习.首先确定硬件电路如图三.
    根据硬件软件编写与调试初步可以分如下几步完成:一,完成上电显示00∶00功能,完整程序为89C51Display.C,编译后形成89C51Display.HEX文件.二,修改上电显示12∶00,并且自动计数运行.完整程序为89C51Add.C,编译后形成89C51Add.HEX文件.三,加入键盘程序,可以调节时钟.完整程序为89C51Clock.C,编译后形成89C51Clock.HEX文件.上述三步形成的运行效果图如下:
    液晶驱动在单片机教学中也是不好理解的内容之一,然而有了PROTEUS仿真,困难也就迎刃而解了.在PROTEUS环境下绘制如下图四电路图:
    按照液晶模块的技术资料,编程形成文件1602.C,编译后形成1602.HEX,导入到89C51当中,点击运行,就可得到如下运行效果:
    运用PROTEUS软件进行单片机仿真教学,可以化难为简,化抽象为生动,为单片机的多媒体教学提供了平台,值得推荐与学习.
    注:本文所用程序请查看附件.
    附件:包含:2051.asm ,89C51CLOCK.C ,1602.C
    2051.asm
    ORG 0000H
    LJMP 0030H
    ORG 0003H
    RETI
    ORG 0030H
    MAIN:MOV P1,#0FEH
    LCALL DELAY
    MOV P1,#0FDH
    LCALL DELAY
    MOV P1,#0FBH
    LCALL DELAY
    MOV P1,#0F7H
    LCALL DELAY
    MOV P1,#0EFH
    LCALL DELAY
    MOV P1,#0DFH
    LCALL DELAY
    MOV P1,#0BFH
    LCALL DELAY
    MOV P1,#7FH
    LCALL DELAY
    JMP MAIN
    DELAY: MOV R3,#04H
    DELAY1:MOV R4,#0FFH
    DELAY2:MOV R5,#0FFH
    DELAY3:DJNZ R5,DELAY3
    DJNZ R4,DELAY2
    DJNZ R3,DELAY1
    RET
    END
    89C51CLOCK.C
    #include //定义51头文件//
    #define uchar unsigned char
    #define uint unsigned int
    uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    uchar code disp[]={0xfe,0xfd,0xfb,0xf7}; //定义数码管显示段码数组以及位数组.//
    uchar time,segbit,second,minter,hour;
    uint time1;
    sbit P1_0=P1^0;
    sbit S1=P1^1;
    sbit S2=P1^2; //定义8位,16位变量以及位变量//
    void reset(void)
    {TMOD=0x02;
    TH0=0x06;
    TL0=0x06;
    EA=1;
    time=0;
    time1=0;
    P1=0xff;
    segbit=0;
    hour=12;
    minter=0;
    second=0;
    ET0=1;
    TR0=1;} //初始化定时器0模式2,自动重装载.初始化变量及开定时器中断//

    void delay(uint count)
    {uchar i;
    while(--count != 0)
    {
    for(i = 0; i < 125; i++); // ";" 表示空语句,CPU空转.
    } // i 从0加到125,在12M晶体下CPU大概耗时1毫秒
    }
    void keyboard(void)
    {if(!S1)
    {delay(200);
    hour++;
    if(hour==24)hour=0;
    }
    if(!S2)
    {delay(200);
    second=0;
    minter++;
    if(minter==60)minter=0;
    }
    }
    void main(void)
    {reset();
    while(1)
    {keyboard();
    }
    } //主程序进行初始化工作后,查询键盘,并处理,本程序未进行任何处理.//
    void intt0(void) interrupt 1 using 1
    {++time;
    if(time==4) //1MS到否 //
    {time=0;
    P2=disp[segbit]; //P2送位选号:a若为0则选中时十位;为1选中时个位;为2选中分十位;为3选中分个位.//
    switch(segbit)
    {case 0:P0=dispcode[hour/10];break;
    case 1:P0=dispcode[hour%10];break;
    case 2:P0=dispcode[minter/10];break;
    case 3:P0=dispcode[minter%10];break;
    default:break;
    } //P0送相应位对应数据.//
    ++segbit;
    if(segbit==4) segbit=0; //更改位选,显示能从时十位(0)到分个位(3)循环.//
    ++time1;
    }
    if(time1==1000) //1S到否 //
    {time1=0;
    ++second;
    P1_0=~P1_0; //秒指示//
    if(second==60) //60秒到否 //
    {second=0;
    ++minter;
    if(minter==60) //60分到否 //
    {minter=0;
    ++hour;
    if(hour==24) hour=0; //24小时到时,归0.//
    }
    }
    1602.C
    #include
    #define LCM1602_DB0_DB7 P0 // 定义LCM1602的数据总线
    sbit LCM1602_RS=P2^0; // 定义LCM1602的RS控制线
    sbit LCM1602_RW=P2^1; // 定义LCM1602的RW控制线
    sbit LCM1602_E=P2^2; // 定义LCM1602的E控制线
    sbit LCM1602_Busy=P0^7; // 定义LCM1602的测忙线
    unsigned char code Disign[] = {"Disign by:czhhb"};
    void I2C_Delay(unsigned char count)
    {
    while(count!=0) count--;
    }
    void LCM1602_Delay(unsigned char count){
    unsigned char i;
    while(--count != 0)
    {
    for(i = 0; i < 125; i++);
    }
    }
    void LCM1602_TestBusy(void){
    do{
    LCM1602_DB0_DB7 = 0xff;
    LCM1602_RS = 0;
    LCM1602_RW = 1;
    LCM1602_E = 0;
    LCM1602_Delay(2);
    LCM1602_E = 1; }
    while(LCM1602_Busy);
    }
    void LCM1602_WriteCMD(unsigned char LCM1602_command) {
    LCM1602_TestBusy();
    LCM1602_DB0_DB7 = LCM1602_command;
    LCM1602_RS = 0;
    LCM1602_RW = 0;
    LCM1602_E = 0;
    LCM1602_E = 1;
    }
    void LCM1602_WriteData(unsigned char LCM1602_data){
    LCM1602_TestBusy();
    LCM1602_DB0_DB7 = LCM1602_data;
    LCM1602_RS = 1;
    LCM1602_RW = 0;
    LCM1602_E = 0;
    LCM1602_E = 1;
    }
    void LCM1602_Init(void){
    LCM1602_WriteCMD(0x01);// 显示清屏
    LCM1602_WriteCMD(0x38);// 显示模式设置:显示2行,每个字符为5*7个像素
    LCM1602_WriteCMD(0x06);// 显示光标移动设置:文字不动,光标右移
    LCM1602_WriteCMD(0x0c); // 显示开及光标设置:显示开,光标关,闪烁关
    }
    void print(unsigned char a,unsigned char *str){
    LCM1602_WriteCMD(a);
    while(*str != '\0'){
    LCM1602_WriteData(*str++);
    }
    *str = 0;
    }
    void print1(unsigned char a,unsigned char t){
    LCM1602_WriteCMD(a);
    LCM1602_WriteData(t);
    }
    void main(void)
    {LCM1602_Init();
    print(0x84,"LCD TEST");
    print(0xc0,Disign);
    while(1){;}
    }
    }
    }
  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 DOC格式下载
  • 您可能感兴趣的
  • 电路图弄到proteus里  proteus  proteus视频教程  proteus7.8破解版下载  proteus下载  proteus7.8  proteus仿真论坛  proteusisis免费下载  proteus仿真软件下载