Keil uversion5 + Proteus 8.9联合仿真 Keil基本使用教程

发布于:2023-10-25 ⋅ 阅读:(106) ⋅ 点赞:(0)

Keil 使用Keil uversion5 + Proteus 8.9联合仿真

(以AT89C51为例)

Step 1 Proteus电路仿真

1.1 选择元件

元件清单:
7SEG-COM-ANODE  		// 共阳极数码管
AT89C51 				// C51芯片
BUTTON					// 按键
CAP						// 无极性电容
CAP-ELEC				// 极性电容
RES						// 电阻
CRYSTAL					// 晶振

在这里插入图片描述

1.2按照图示画出电路图

在这里插入图片描述

Step2 Keil uversion5 代码

2.1 创建新工程

2.1.1 Project —> New uversion project…

在这里插入图片描述

2.1.2 选择project存放的路径 与 project 命名

在这里插入图片描述

2.1.3 选择芯片 AT89C51
  1. Search栏中输入 AT89C51

  2. 选择AT89C51 点击 OK 后面弹出的窗口都点

在这里插入图片描述

2.1.4 新建main.c文件
  1. File —> New…
  2. Ctrl + S 保存 名称为 main.c

在这里插入图片描述
在这里插入图片描述

2.1.5 把main.c 添加到target1下的Source Group1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 书写C语言代码

表2-2 LED数码管的段码
显示字符 共阴极段码 共阳极段码
0 3FH C0H
1 06H F9H
2 5BH A4H
3 4FH B0H
4 66H 99H
5 6DH 92H
6 7DH 82H
7 07H F8H
8 7FH 80H
9 6FH 90H
A 77H 88H
b 7CH 83H
C 39H C6H
d 5EH A1H
E 79H 86H
F 71H 8EH
P 73H 8CH
U 3EH C1H
T 31H CEH
y 6EH 91H
H 76H 89H
L 38H C7H
“灭” 00H FFH
用单片机控制LED数码管显示学号
代码示例:
#include "AT89X51.H"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define out P0

// 共阴极段码表数字 02468 13579
//uchar code seg[] = {0xc0, 0xa4, 0x99, 0x82, 0x80, 
//					  0xf9, 0xb0, 0x92, 0xf8, 0x90, 0x01};
					  
//学号:0023
uchar code seg[] = {0xc0, 0xc0, 0xa4, 0xb0, 0x01};

//延时函数
void delayms(uint j);

//主函数
void main(void){
	uchar i;
	while(1){
		out = seg[i];
		delayms(500);
		i++;
        
		//如果段码为0x01,则表明一个循环的显示已结束
		if(seg[i] == 0x01) 
			i = 0;
	}	
}

//延时函数
void delayms(uint j){
	uchar i;
	for(;j > 0; j--){
		i = 250;
		while(--i);
		i = 249;
		while(--i);
	}
}

2.3 C语言代码编译

1. 设置编译后生成 HEX 文件

在这里插入图片描述

2. 点击Build在这里插入图片描述

编译结果为 0 Error(s), 0 Warring(s)

在这里插入图片描述

Step3 将代码导入到Proteus单片机中

3.1选择hex文件路径

  1. 双击AT89C51芯片

在这里插入图片描述

  1. 选择 hex 文件路径

// HEX 文件在object目录下
在这里插入图片描述

  1. 最后点击确定
    在这里插入图片描述

3.2 效果展示

在这里插入图片描述

THE END

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到