《单片机Proteus仿真C51参考程序实验》
实验3 C51程序设计与Proteus应用

6、程序的编译和链接
依次点击屏幕上方左下角的编译和建造目标图标 对文件进行编译和链接,观察左下角的调试 程序信息显示,如有错可根据该栏提示的信息进行修 改,修改后要重新保存和编译,直到无错误提示。
7、点击调试图标 ,进入程序调试画面,此时 黄箭头所指是将要执行的指令。
(1)调试界面分为4部分:
proteus中常用元器件和仿真仪表中英文对照表
7407 驱动门 、1N914 二极管 、74Ls00 与非门
74LS04 非门、74LS08 与门
74LS390 TTL 双十进制计数器 7SEG 4针BCD-LED 输出从0-9 对应于4根线的BCD码
7SEG 3-8译码器电路BCD-7SEG转换电路
Optoelectronics 各种发光器件 发光二极管,LED, 液晶等等;Resistors 各种电阻 ;Simulator Primitives 常用的器件 ;Speakers & Sounders 扬 声器 Switches & Relays 开关,继电器,键盘 Transistors 晶体管(三极管,场效应管) TTL 74 series 、TTL 74ALS series 、TTL 74AS series 、TTL 74F series 、TTL 74HC series TTL 74HCT series 、TTL 74LS series 、TTL 74S series
器件:单片机:AT89C51 1片,电容: CAP/ 33PF 2片,晶振: CRYSTAL/ 12MHZ 1个,按钮 Button, 电阻: RES/10K 1个、 100Ω 1个、300Ω1个,电解电容:CAP-ELEC 1片 22μF,LED灯 1个。 例如:输入RES,点Resistors,挑选适合的电阻,将元件放 置到原理图编辑窗口的合适位置。
51单片机C语言实例(350例)Proteus仿真和代码都有

51单片机C语言实例(350例)Proteus仿真和代码都有51单片机C语言实例(400例)所有实例程序均经测试过,适合新手学习。
1-IO输出-点亮1个LED灯方法1 10-LED循环左移100-24c02记忆开机次数101-24c02存储上次使用中状态102-DS1302 时钟原理103-DS1302可调时钟104-DS1302时钟串口自动更新时间105-1602液晶显示DS1302时钟106-字库ST7920 12864液晶基础显示107-按键 12864显示108-PCF8591 1路AD数码管显示109-PCF8591 4路AD数码管显示11-LED循环右移110-PCF8591 DA输出模拟111-PCF8591 输出锯齿波112-PCF8591 1602液晶显示113-串口通讯114-串口通讯中断应用115-RS485基本通讯原理116-红外接收原理117-红外解码数码管显示118-红外解码1602液晶显示119-红外发射原理12-查表显示LED灯120-红外收发测试121-双红外发射避障原理测试122-1个18B20 温度传感器数码管显示123-1个18b20温度传感器1602液晶显示124-多个18b20温度传感器1602液晶显示125-超温报警测试126-温度可调上下限1602126-温度可调上下限1602显示127-PS2键盘输入1602液晶显示128-双色点阵1种颜色显示测试129-双色点阵2种颜色显示测试13-双灯左移右移闪烁130-双色点阵显示特定图形131-双色点阵交替图形显示132-双色点阵双色交替动态显示133-热敏电阻测试数码管显示134-光敏电阻测试数码管显示135-自动调光测试136-串转并数字芯片测试137-非门数字芯片测试138-电子琴139-实用99分钟倒计时器14-花样灯140-外部频率测试141-定时做普通时钟可调142-1602液晶显示的密码锁143-实用密码锁144-1602液晶显示的计算器145-秒表146-串口测温电脑显示147-交通灯测试148-点阵模拟电梯上行下行149-点阵流动广告模拟15-PWM调光150-综合测试程序151-12位AD_DS1621与12864液晶152-闪烁灯一153-闪烁灯二154-流水灯A155-51单片机12864大液晶屏proteus仿真156-流水灯B157-数码管显示158-12864LCD显示计算器键盘按键实验159-数码管显示(锁存器)16-共阳数码管静态显示160-数码管动态显示161-数码管滚动显示162-数码管字符显示163-独立按键164-矩阵键盘165-矩阵键盘(LCD)166-用DS1302与12864LCD设计的可调式中文电子日历167-定时器的使用(方式1)168-12864LCD图形滚动演示169-用PG12864LCD设计的指针式电子钟17-1个共阳数码管显示变化数字170-定时器的使用(方式2)171-外部中断的使用172-定时器和外部中断173-开关控制12864LCD串行模式显示174-点阵显示175-液晶1602显示176-12864带字库测试程序177-串行12864显示178-遥控键值解码-12864LCD显示179-液晶12864并行18-单个数码管模拟水流180-液晶12864并行2181-串口发送试验182-串口接收试验183-串口接收(1602)184-蜂鸣器发声185-直流电机调速186-蜂鸣器间断发声187-lcd-12864应用188-继电器控制189-直流电机调速19-按键控制单个数码管显示190-步进电机191-存储AT24C02192-PCF8591T AD实验193-PCF8591T芯片DA实验194-温度采集DS18B20195-EEPROM_24C02196-12864LCD显示24C08保存的开机画面197-红外解码198-12864LCD显示EPROM2764保存的开机画面199-时钟DS1302(LCD)2-IO输出-点亮1个LED灯方法220-单个数码管指示逻辑电平200-宏晶看门狗201-SD卡202-秒表203-普通定时器时钟204-彩屏控制205-彩屏图片显示206-12864+DS1302时钟+18B20温度计207-12864测试程序208-12864串行驱动演示209-12864生产厂程序21-8位数码管显示其中之一210-12864中文显示测试211-LCD12864212-12864M液晶显示(有字库)程序(汇编)213-超声波测距LCD12864显示214-红外遥控键值解码12864液晶显示(汇编语言)215-用DS1302与12864LCD设计的可调式中文电子日历216-中文12864217-中文12864LCD显示红外遥控解码实验218-IO端口输出219-IO端口输入22-8位数码管静态显示其中之二220-流水灯221-数码管显示223-独立按键224-独立按键去抖动225-定时器0226-定时器1227-定时器2228-外部中断0电平触发229-外部中断0边沿触发23-8位数码管动态扫描显示230-外部中断1231-矩阵键盘232-液晶LCM1602233-LCD1602动态显示234-EEPROM24c02235-开机次数记忆236-红外解码LCD1602液晶显示237-红外解码数码管显示238-喇叭239-液晶背光控制24-8位数码管动态扫描原理演示240-与电脑串口通信241-步进电机242-字库LCD12864液晶测试243-液晶数码综合显示244-99秒计时245-99倒计时246-抢答器247-PWM调光248-LED点阵249-直流电机调速250-按键计数器251-秒表252-数码管移动253-花样灯254-红绿灯255-音乐播放256-红外收发演示257-普通定时器时钟258-继电器控制259-ps2键盘LCD1602液晶显示26-9累加260-RTC实时时钟DS1302液晶显示261-单线温度传感器18b20262-串口测温263-带停机步进电机正反转264-步进电机正反转265-AD_DA_PCF8591266-液晶AD_DA_PCF8591267-秒手动记数268-功能感受269-流水登27-99累加270-点亮一个二极管271-用单片机控制一个灯闪烁272-将P1口状态送入P0、P2、P3273-P3口流水灯274-通过对P3口地址的操作流水点亮8位LED 275-用不同数据类型控制灯闪烁时间276-用P0口、P1 口分别显示加法和减法运算结果277-用P0、P1口显示乘法运算结果278-用P1、P0口显示除法运算结果279-用自增运算控制P0口8位LED流水花样28-999累加280-用P0口显示逻辑与运算结果281-用P0口显示条件运算结果282-用P0口显示按位异或运算结果283-用P0显示左移运算结果284-万能逻辑电路实验285-用右移运算流水点亮P1口8位LED286-用if语句控制P0口8位LED的流水方向287-用swtich语句的控制P0口8位LED的点亮状态288-用for语句控制蜂鸣器鸣笛次数289-包含单片机寄存器的头文件29-9999累加290-用do-while语句控制P0口8位LED流水点亮291-用字符型数组控制P0口8位LED流水点亮292-用P0口显示字符串常量293-用P0 口显示指针运算结果294-用指针数组控制P0口8位LED流水点亮295-用数组的指针控制P0 口8 位LED流水点亮296-用P0 、P1口显示整型函数返回值297-用有参函数控制P0口8位LED流水速度298-用数组作函数参数控制流水花样299-用数组作函数参数控制流水花样3-IO输出-点亮多个LED灯方法130-9累减300-用函数型指针控制P1口灯花样301-用指针数组作为函数的参数显示多个字符串302-字符函数ctype.h应用举例303-内部函数intrins.h应用举例304-标准函数stdlib.h应用举例305-字符串函数string.h应用举例306-宏定义应用举例307-文件包应用举例308-条件编译应用举例309-用定时器T0查询方式P2口8位控制LED闪烁31-99累减310-用定时器T1查询方式控制单片机发出1KHz音频311-将计数器T0计数的结果送P1口8位LED显示311-用定时器T0的中断控制1位LED闪烁312-用定时器T0的中断实现长时间定时313-用定时器T1中断控制两个LED以不同周期闪烁314-用计数器T1的中断控制蜂鸣器发出1KHz音频315-用定时器T0的中断实现渴望主题曲的播放316-输出50个矩形脉冲317-输出正脉宽为250微秒的方波318-用定时器T0控制输出高低宽度不同的矩形波319-用外中断0的中断方式进行数据采集32-999累减320-输出负脉宽为200微秒的方波321-方式0控制流水灯循环点亮322-数据发送程序323-数据接收程序324-单片机向PC发送数据325-单片机接收PC发出的数据326-用LED数码显示数字5327-用LED数码显示器循环显示数字0~9328-用数码管慢速动态扫描显示数字1234329-用LED数码显示器伪静态显示数字123433-9999累减330-用数码管显示动态检测结果331-数码秒表设计332-数码时钟设计333-用LED数码管显示计数器T0的计数值334-静态显示数字“59”335-无软件消抖的独立式键盘输入实验336-软件消抖的独立式键盘输入实验337-CPU控制的独立式键盘扫描实验338-定时器中断控制的独立式键盘扫描实验339-独立式键盘控制的4级变速流水灯34-显示小数点340-独立式键盘的按键功能扩展:以一当四341-独立式键盘调时的数码时钟实验342-独立式键盘控制步进电机实验343-矩阵式键盘按键值的数码管显示实验344-矩阵式键盘按键音345-简易电子琴346-矩阵式键盘实现的电子密码锁347-用LCD显示字符'A'348-用LCD循环右移显示Welcome to China 349-将数据0x0f写入AT24C02再读出送P1口显示35-数码管消隐350-液晶时钟设计36-数码管递加递减带消隐37-数码管左移38-数码管右移38-数码管右移139-数码管右移24-IO输出-点亮多个LED灯方法240-数码管循环左移41-数码管循环右移41-数码管循环右移142-数码管循环右移243-数码管闪烁44-数码管局部闪烁45-定时器046-定时器147-定时器248-产生1mS方波49-产生200mS方波5-闪烁1个LED50-产生多路不同频率方波51-1个独立按键控制LED52-1个独立按键控制LED状态转换53-2按键加减操作53-2按键加减操作数码管显示54-多位数按键加减(闪烁)54-多位数按键加减(闪烁)数码管显示55-多位数按键加减(不闪烁)55-多位数按键加减(不闪烁)数码管显示56-定时器扫描数码管(不闪烁)57-按键长按短按效果58-抢答器59-独立按键依次输入数据6-不同频率闪烁1个LED灯60-按键从右至左输入61-8位端口检测8独立按键62-矩阵键盘行列扫描63-矩阵键盘反转扫描64-矩阵键盘中断扫描65-矩阵键盘密码锁66-矩阵键盘简易计算器67-外部中断0电平触发68-外部中断1电平触发69-外部中断0下降沿触发7-不同频率闪烁多个LED灯70-外部中断1下降沿触发71-T0外部计数输入72-T1外部计数输入73-看门狗溢出测试74-按键喂狗75-喇叭发声原理76-警车声音77-救护车声音78-喇叭滴答声79-报警发声8-8位LED左移80-消防车警报81-音乐播放82-步进电机转动原理83-步进电机正反转84-步进电机按键控制85-步进电机转速数码管显示86-双步进电机综合控制86-步进电机调速原理87-双步进电机综合控制87-步进电机综合控制87-步进电机调速原理88-直流电机按键控制89-直流电机调速控制9-8位LED右移90-继电器控制原理91-双继电器模拟洗衣机电机控制92-1602液晶静态显示93-1602液晶动态显示94-1602液晶滚动显示95-1602液晶移动显示96-1602液晶按键输入显示97-2402存储1个数据98-24c02存储多个数据99-24c02存储花样流水灯。
51单片机数字时钟-proteus仿真原理图及keil C51编译的C51程序

51单片机数字时钟-proteus仿真原理图及keil C51编译的C51程序该实验采用proteus 7.4 sp3进行的仿真,仿真原理图如下图所示,该实验采用定时器0的工作方式1定时500ms,等待20次定时1s进行时钟计数。
通过定时器1的工作方式1定时500ms,用来调整数码管闪烁的时间。
K1是用来选中时分秒,按一下选中时,再按一下选中分,再按一下选中秒,再按一下退出选中状态。
K2按一下数加一,K3按一下数减一。
在调整时间时,时钟停走。
/******************************************************************* **** 程序名; 时钟实验* 功能: 数码管通过动态扫描显示时间,时间可设定,调整时间时时钟不走.* 编程者: ZPZ* 编程时间:2009/8/9******************************************************************** **/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit _led=P2^7;sbit key1=P2^0;sbit key2=P2^1;sbit key3=P2^2;uchar num=0,temp=0,count=0; uchar aa;uchar hour,min,sec;uchar codetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void delay(uint z);void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar aa);void read_key();void led();void time_change();/****************** 主函数 *******************/void main(){P2=0xff;hour=12;min=0;sec=0;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;aa=0xff;while(1){time_change();display(table[hour/10],table[hour%10],table[min/10], table[min%10],table[sec/10],table[sec%10],0xff);}}。
单片机原理及应用——C51编程+Proteus仿真(第3版)课件第3章 C51语言编程基础

与8051汇编语言相比, C51有如下优点。 (1)可读性好。C51语言程序比汇编语言程序的可读性好,编程效率 高,程序便于修改、维护以及升级。
5
(2)模块化开发与资源共享。用C51开发的程序模块可不经修改,直 接被其他工程所用,使得开发者能够很好地利用已有的大量标准C程序 资源与丰富的库函数,减少重复劳动,同时也有利于多个工程师进行协 同开发。
16
3.数据存储类型
在讨论C51数据类型时,须同时提及它的存储类型,以及它与8051单 片机存储器结构的关系,因为C51定义的任何数Байду номын сангаас类型必须以一定的方 式,定位在8051单片机的某一存储区中,否则没有任何实际意义。
8051有片内、片外数据存储区,还有程序存储区。
片内的数据存储区是可读写的,8051的衍生系列最多可有256字节的 内部数据存储区(例如AT89S52单片机),其中低128字节可直接寻址, 高128字节(80H~FFH)只能间接寻址,从地址20H开始的16字节可位寻 址。
9
(5)标准C语言没有处理单片机中断的定义,而C51语言中有专门的中 断函数。
(6)头文件不同。C51语言头文件必须把8051单片机内部的外设硬件资 源(如定时器、中断、I/O等)相应的特殊功能寄存器写入到头文件内,而 标准C不用。
(7)程序结构的差异。由于8051单片机的硬件资源有限,它的编译系 统不允许太多的程序嵌套。
2
3.3 C51语言的函数 3.3.1 函数的分类 3.3.2 中断服务函数 3.3.3 变量及存储方式 3.3.4 宏定义与文件包含 3.3.5 库函数
3
单片机应用系统日趋复杂,对程序的可读性、升级与维护以及模块化要 求越来越高,对软件编程要求也越来越高,要求编程人员在短时间内编写 出执行效率高、运行可靠的程序代码。同时,也要方便多个编程人员来进 行协同开发。
51单片机四路抢答器PROTEUS仿真报告(含C语言程序)

HEFEI UNIVERSITY四路抢答器仿真设计题目四路抢答器仿真设计班级自动化(1)班成员 YCT 11050310**PT 11050310**WW 11050310**时间 2014.5.19四路抢答器仿真设计目录一、前言 (1)二、方案设计 (1)三、理论分析 (2)四、电路设计 (2)1、晶体振荡器电路 (2)2、复位电路 (3)3、按键扫描部分 (3)4、显示部分 (4)五、软件模块 (6)六、系统组装调试 (8)七、总结 (8)参考文献 (9)附录 (10)四路抢答器仿真设计一、前言本设计要求能够在主持人按下开始键后,四个参赛者开始抢按自己的按键,谁的按键先按下,谁面前的灯就会亮并且有相应的提示,当参赛者耗时太多时又会有相应的提示。
根据设计的要求,本系统采用独立式按键,通过单片机不停的扫描按键来控制LED灯和蜂鸣器,并用定时器T0来定超时的时间,当超时的时候让蜂鸣器响。
二、方案设计(1)、总体设计方案一:采用可编程I/O口扩展芯片82558255作为单片机的扩展接口能实现很多功能,但是这个系统并不复杂,用8155会浪费很多的资源,而且8255要用P0和P2端口作为地址线对它进行读写,这样不仅浪费端口还使得编程变的复杂。
从节省资源和简化编程的角度考虑,放弃了此方案。
方案二:直接采用AT89C52单片机直接用单片机不仅编程被简化,还有效的利用了各个端口。
8051单片机的资源完全够这个系统的要求。
所以最终选择了此方案。
(2)、模块方案一:采用4*4矩阵键盘此种键盘是常用的按键扫描方法,但是本系统只需要六个按键,这样就会浪费十个,而且矩阵按键扫描要送数读数,对于编程很复杂,最终放弃了此方案。
方案二:采用独立式键盘本系统只要六个按键就可以,用独立式键盘不仅节省端口还使编程变得简单。
程序只要不停的读数检查就行。
所以,最终选择此方案。
2、系统总体设计方案与实现框图采用六个独立式的键盘作为按键输入,当在开始后有按键按下时,就会有对应于这个按键的灯亮并且蜂鸣器响一声,其它按键再按也无效。
单片机原理及应用——C51编程+Proteus仿真(第3版)课件第2章 硬件结构

图2-1 AT89S52单片机片内结构
6
片内各外围功能部件通过片内单一总线连接而成(见图2-1),基本结 构依旧是CPU 加上外围芯片的传统微机结构。
CPU对各种功能部件的控制是采用特殊功能寄存器(SFR,Special Function Register)的集中控制方式。
入引脚。
21
注意:AT89S51与AT89S52引脚的差别仅仅是在1脚(P1.0)与2脚( P1.1)上,AT89S52的1脚(P1.0)与2脚(P1.1)分别增加了定时器/计数 器T2的两个外部引脚T2和T2EX的复用功能。
当AT89S52单片机不使用片内的T2的两个引脚T2(P1.0)和T2EX( P1.1)的复用功能时,AT89S51以及各种8051兼容机与AT89S52的引脚功 能则完全相同,它们的外设硬件接口电路是完全相互通用的。
但是如果使用定时器T2的外部计数输入T2(P1.0)和“捕捉”输入 T2EX (P1.1)的功能时,则AT89S52的P1.0脚和P1.1脚就不能作为通用 I/O使用,这是AT89S52与AT89S51(或AT89C51)在外围接口电路设计上 的微小差别。
22
(3)P2口:P2.7~P2.0引脚 准双向I/O口,引脚内部接有上拉电阻,可驱动4个LS型TTL负载。 当AT89S52访问外部存储器及I/O口时,P2口作为高8位地址总线使用,
3
2.7 复位操作和复位电路 2.7.1 复位操作 2.7.2 复位电路设计
2.8 AT89S52单片机的最小应用系统
2.9 看门狗定时器(WDT)功能及应用
2.10 低功耗节电模式 2.10.1 空闲模式 2.10.2 掉电运行模式
《单片机原理与应用》KeilC51软件使用实验

《单片机原理与应用》KeilC51软件使用实验
一、实验目的和要求
熟悉51单片机的基本输入输出应用,掌握Proteus ISIS模块原理图绘图方法及单片机系统仿真运行方法。
二、实验内容和原理
(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能。
(2)学会选择元件、画导线、画总线、修改属性等操作。
(3)学会可执行文件加载及程序仿真运行。
(4)验证计数显示器的功能。
三、主要仪器设备
电脑、keil c51、Proteus
四、操作方法与实验步骤
(1)提前阅读与实验1相关的阅读材料;
(2)参考实验1电路原理图和元件清单,在ISIS中完成电路原理图的绘制;(3)加载可执行文件,观察仿真结果,检验电路图绘制的正确性。
五、实验数据记录和处理
代码:
电路图:
六、实验结果与分析运行结果:
实验分析:
由实验结果可知,这是通过开关控制计数器显示,按一次开关计数器计一次数,即加一。
七、讨论和心得
通过本次数码管进行51计数器显示实验,让我知道了对教材应该熟悉,因为教材是基础的,只有把基础的搞好了才能够进行其它层次的学习。
其次,此次实验我还懂得了有时候可以通过软件的仿真来验证书上的一些理论性的东西。
通过C语言的编程,对数码管及51的应用让我对单片机理解更加明了。
单片机KEIL51和proteus仿真软件的使用

实验:KEIL51和proteus仿真软件的使用一、实验目的1、掌握KEIL51软件的使用方法2、掌握proteus仿真软件的使用方法二、实验设备及软件1、单片机实验板2、PC机3、KEIL514、proteus三、实验任务KEILC和proteus仿真软件的使用方法四、实验步骤1、Proteus ISIS 设计单片机电路的基本步骤:(1) 新建设计文件夹或打开一个现有的设计文件。
(2) 选择元器件(通过关键字或分类检索)。
(3) 将元器件放入设计窗口。
(4) 添加其他模型(电源、地线、信号源等)和相关的虚拟仪器。
(5) 编辑和连接电路。
(6) 编写单片机所需的源程序。
(7) 加入源程序,并通过构造,得到仿真程序或目标程序。
(8) 根据需要,设置对象的属性,如将单片机的”Program File”属性设置为上述仿真调试程序或目标程序。
(9) 启动仿真功能,对电路进行仿真操作,验证其功能。
2、Keil 51基本步骤(1)单击Project菜单项,选择New Project项。
此时弹出Create New Project对话框,选择合适的路径口,在文件名一栏中填入新工程的名字。
单击保存。
(2)根据所用的器件,选择CPU的型号,单击确定。
(3)Keil51询问是否生成默认的配置文件,这个可选可不选。
单击NO,观察项目文件管理窗口的变化。
(4)在File菜单下单击New选项,新建文件。
此时在代码窗口出现一“Text1”空白文档。
(5)在“Text1”中编辑完代码后,单击File菜单中的保存项,弹出保存对话框。
注意在对文件命名时必须加扩展名.asm。
(6) 在项目导航栏中Source Group 上单击右键,选Add File to Group ‘Source Group 1’。
弹出Add File 对话框。
选中刚才保存的xxxx.asm.文件,单击Add,然后关闭对话框。
此时在项目文件管理窗口中就会出现刚才所添加的文件xxxt.asm。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级:
学号:
姓名
实验二 定时计数器中断实验
一、实验目的
利用单片机的定时计数器和外部中断,实现 LED 流水灯轮流发光,流水时间以定时器 的方式来控制,利用计数器进行计数改变流水灯的状态,输入外部脉冲产生外部中断改变流 水灯的状态。
二、实验原理
1.在 Proteus 环境下建立如下仿真原理图,并保存为文件;
uchar t;while(x--)for(t=0;t<120;t++); }
班级:
学号:
姓名
void main() {
uchar i,j=0x01; while(1) {
P2=j; j=_crol_(j,1); delay_ms(100); } } 将以上程序补充完整,流水时间间隔为 100ms。 3.将.HEX 文件导入仿真图,运行并观察结果;
R11uF
200
29
R2 30
1k 31
PSEN ALE EA
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
2.在 Keil 环境下建立源程序并保存为.C 文件,生成.HEX 文件;
参考程序如下:
#include<reg51.h>
班级:
学号:
姓名
#include<intrins.h> #define uchar unsigned char #define uint unsigned int void delay_ms(uint x) {
1.在 Proteus 环境下建立如下仿真原理图,并保存为文件;
C1
30pF
C2
30pF
X1
19
CRYSTAL
18
U1
XTAL1
XTAL2
C3
9 RST
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
39 38 37 36 35 34 33 32
三、主要实验设备
实验室电脑及配套软件。
四、实验内容
1.编写出对应的 C51 程序; 2.改变流水灯的时间间隔; 3.改变流水灯方向。
五、实验总结
进行软硬件仿真时,观察到 8 支 LED 发光二极管流水发光。
六、预习及思考
1.如何让改变流水方向? 2.若将 R3 至 R10 上拉电阻省略,8 支 LED 还能正常发光吗? 3.如果将 LED 接到 P0 口与接到 P2 口硬件设计时应注意什么问题?
班级:
学号:
姓名
} 将以上程序补充完整,流水时间间隔,闪烁时间间隔为 250ms。 3.将.HEX 文件导入仿真图,运行并观察结果;
39 38 37 36 35 34 33 32
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
21 22 23 24 25 26 27 28
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
2.在 Keil 环境下建立源程序并保存为.C 文件,生成.HEX 文件;
参考程序如下:
#include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int
void delay_ms(uint x) {
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
R11
1k
原理图中常用库元件的名称:
无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51
晶体振荡器:CRYSTAL电阻:RES
按键:BUTTON
发光二极管:红色 LED-RED 绿色 LED-GREEN 蓝色 LED-BLUE 黄色 LED-YELLOW
班级:
学号:
姓名
实验一 I/O口的实验
一、实验目的
1.掌握在Keil环境下建立项目、添加、保存源文件文件、编译源程序的方法; 2.掌握运行、步进、步越、运行到光标处等几种调试程序的方法; 3.掌握在Proteus环境下建立文件原理图的方法; 4.实现Proteus与Keil联调软件仿真。
二、实验原理
uchar t;while(x--)for(t=0;t<120;t++); } void main() {
uchar i,j=0x80; IT0=1; EX0=1; EA=1; while(1) {
P1=j; j=_cror_(j,1) delay_ms(250); } } void EX0_INT()interrupt 0 { uchar i; for(i=0;i<5;i++) { P1=0xff; delay_ms(250); P1=0x00; delay_ms(250); }
C1
30pF
C2 30pF C3 R1 1uF
200
U1 X1 19 XTAL1
18 XTAL2
9 RST
R2 29
1k 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
10 11 12 13 14 15 16 17
AT89C51 PROGRAM=..\KEIL\shiyan2.hex
原理图中常用库元件的名称:
R3 R4 R5 R6 R7 R8 R9 R10ຫໍສະໝຸດ 1k1k1k
1k
1k
1k
1k
1k
D1 D2 D3 D4 D5 D6 D7 D8
无极性电容:CAP 极性电容:CAP-ELEC 单片机:AT89C51
晶体振荡器:CRYSTAL 电阻:RES
按键:BUTTON
发光二极管:红色 LED-RED 绿色 LED-GREEN 蓝色 LED-BLUE 黄色 LED-YELLOW