资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
中小学单片机仿真实验室中小学单片机仿真实验室配套使用说明1.使用软件本程序使用BASIC语言编写,采用单片机开发软件BASCOM-AVR开发,PROTEUS ISIS软件制作仿真电路图,能够运行于PROTEUS ISIS软件仿真平台上。在我们的学习过程中,我们将用到2个软件:BASCOM-AVR与PROTEUS ISIS。下面让我们来认识一下这两个软件。1. 1 BASCOM-AVRBASCOMAVR是MCS公司开发的以BASIC高级程序设计语言为平台的AVR单片机开发软件,它为我们学习、使用AVR单片机提供了简洁方便、功能强大的手段。该软件具有可视化图形界面,是与VB/QB高度兼容的结构化BASIC语言,简要清晰,易于初学者理解、掌握。除了有专门为AVR单片机串行和并行接口、外围器件开发的语句,另外还扩充了许多通用的单片机外部设备的专用语句(键盘、LCD显示器),使我们调用各种硬件资源更加得心应手。程序经过编译之后,进入软件仿真窗口作仿真运行,可以非常清楚地观察程序运行反应,从实物图形化的硬件仿真平台上,可以直观地进行实验操作,使我们学习和开发单片机更加容易、方便,更有乐趣,许多设计在电脑仿真中就可得知结果。程序编译产生的hex文件,可以使用廉价的ISP下载电缆烧录到AVR单片机的FLASH程序存储器。BASIC语言有许多优点:1.接近人类语言习惯,易学好用;2.语句功能强,通用性好,易于移植;3.程序的可读性和可维护性好。BASCOM-AVR提供了丰富的数据类型,大量面向通用I/O和专用外设的操作语句,结构化、模块化的程序设计语句,为了增强单片机系统的实时性,还支持硬件中断服务以及汇编语言混合编程。BASCOM-AVR具有程序设计简单易学、用简单的语句可实现较复杂的功能等特点。其开发平台使用简洁方便,并具有实物图形化的仿真平台,可以直观地仿真出程序的运行结果, 是AVR单片机初学者快速入门的最佳工具。1.2 PROTEUS ISISProteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真,分析各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真,数字电路仿真,单片机及其外围电路组成的系统的仿真,RS232动态仿真,I2C调试器,SPI调试器,键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器,逻辑分析仪,信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列,8051系列,AVR系列,PIC12系列,PIC16系列,PIC18系列,Z80系列,HC11系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速,单步,设置断点等调试功能,同时可以观察各个变量,寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。2. 程序介绍在程序包中,命名为“程序”,后缀名为.bas的是程序代码,可用BASCOM-AVR打开。程序代码在经过软件仿真后将会生成包括后缀名为.HEX的多个文件。名为“仿真电路图”,后缀名为.dsn的是PROTEUS ISIS中的仿真文件,可用PROTEUS打开,并点击界面下方的按钮开始实物仿真。下面是主程序的流程图:第 1 页 共 7 页开 始设置与初始化键盘输入选择执行程序输入1?程序1:欢迎程序输入2?程序2:广告灯NoYes输入6?程序6:简易游戏机NoNo结束键盘检测中断服务子程序是否退出?Yes继续执行程序No开始执行程序后,LCD显示器上将会显示“Input Sub Number”。可通过在键盘上输入程序号进入对应程序。1号:欢迎程序2号:广告灯3号:计时器4号:音乐播放机5号:简易时钟6号:简易游戏机在图形编辑区的右下角,喇叭旁边有一个单独的按键,此为暂停按钮。当程序运行,需要退出时,按下这个按钮,显示器上会显示“Quit? y:1 n:0”。用键盘选择,输入“0”则继续运行当前程序,输入“1”将返回选择子程序步骤。下面将介绍学习程序内含有的6个小程序。2.1 欢迎程序原理:利用BASCOM-AVR 的专用语句、特殊点阵设计工具,在LCD 液晶显示器上显示字符和特殊字符,并通过不断刷新内容来实现动画效果。目的:在LCD显示器上显示欢迎动画。程序:Sub P1:Deflcdchar 1 , 238 , 255 , 252 , 248 , 252 , 255 , 238 , 224Deflcdchar 2 , 238 , 255 , 255 , 255 , 255 , 255 , 238 , 224ClsDoHomeLcd Welcome!Waitms 100HomeLcd Chr(1)HomeLcd Chr(2)HomeWaitms 40Lcd ; Chr(1)HomeWaitms 40Lcd ; Chr(2)HomeWaitms 40Lcd ; Chr(1)HomeWaitms 40Lcd ; Chr(2)HomeWaitms 40Lcd ; Chr(1)HomeWaitms 40Lcd ; Chr(2)HomeWaitms 40Lcd ; Chr(1)HomeWaitms 40Lcd ; Chr(2)HomeWaitms 40Lcd ; Chr(1);HomeWaitms 40Lcd ; Chr(2);HomeWaitms 40Lcd ; Chr(1);HomeWaitms 40Lcd ; Chr(2);HomeWaitms 40Lcd ; Chr(1);HomeWaitms 40Lcd ; Chr(2);HomeWaitms 40Lcd Waitms 100LoopEnd Sub 2.2 广告灯原理:ATmega16有Porta、Portb、Portc、Portd四个口共32根引脚,每个引脚都可以单独定义为输入或输入使用。本程序将利用AVR 的I/O 口控制LED 发光二极管,当AVR的I/O 口输出为低电平“0”时,点亮LED;发光二极管输出为高电平“1”时,LED发光二极管熄灭。目的:运行程序,LCD显示器显示“Input Light No.”,使用键盘输入广告灯样式号开始运行广告灯。(程序共附有4种广告灯样式)程序:Sub P2:Local A As Byte , B As Byte , Ln As Byte local命令表示定义的是局部变量;定义全局变量应用dim命令Config Portc = OutputLight1:ClsLcd Input Light No.Light2: Ln = Getkbd() If Ln 4 Or Ln = 0 Then Goto Light2 Locate 1 , 16 Lcd Ln Locate 2 , 1 Lcd Press 0 to Stop Select Case Ln Case 1 A = &HFE Case 2 A = &H01 Case 3 A = &HAA Case 4 A = &HF0 End SelectDo Portc = A Rotate A , Right , 1 Waitms 100 Ln = Getkbd() If Ln = 0 Then Goto Light1LoopEnd Sub2.3 计时器原理:当计时启动时开始计时,每过1秒,秒钟变量加1,满60秒则清零进位。目的:当按下“1”键时开始计时,按下“2”键时停止计时。程序:Sub P3:Local H As Byte , M As Byte , S As Byte , I As ByteH = 0 : M = 0 : S = 0Cursor Off NoblinkClsLcd Press 1 to StartJishi: I = Getkbd() If I 1 Then Goto Jishi Cls Lcd Press 2 to Stop Locate 2 , 1 Lcd 00:00:00 Do S1: S = S + 1 Waitms 10 Locate 2 , 0 If S = 60 Then S = 0 : M = M + 1 Else S = S : M = M End If If M = 60 Then M = 0 : H = H + 1 Else M = M : H = H End If If S 9 Then Locate 2 , 7 : Lcd S Else Locate 2 , 7 : Lcd 0 ; S End If If M 9 Then Locate 2 , 4 : Lcd M Else Locate 2 , 4 : Lcd 0 ; M End If If H 9 Then Locate 2 , 1 : Lcd H Else Locate 2 , 1 : Lcd 0 ; H End If I = Getkbd() If I = 2 Then Exit Do LoopEnd Sub2.4 音乐播放机原理:利用BASCOM-AVR 的SOUND 语句可以很方便的产生一定长度和频率的脉冲信号,经I/O 口输出一定长度和频率的脉冲信号,再经过信号放大,由喇叭放出乐曲声。目的:从喇叭放出事先编辑好的乐曲声(由频率不同的蜂鸣声组成)。程序:Sub P4:Local S As Integer , F As IntegerLocal A As ByteClsLcd Input:music1/2:Music:A = Getkbd()If A 2 Then Goto MusicPrint ALcd ADoSelect Case ACase 1:Locate 2 , 4Lcd music 1While A = 1Restore Music_1DoRead S : Read FIf S = 0 And F = 0 Then Exit DoSound Portd.7 , S , FWaitms 50LoopWendWaitms 500Case 2:Locate 2 , 4Lcd music 2While A = 2
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号