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
-
Search栏中输入 AT89C51
-
选择AT89C51 点击 OK 后面弹出的窗口都点 是
2.1.4 新建main.c文件
- File —> New…
- 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文件路径
- 双击AT89C51芯片
- 选择 hex 文件路径
// HEX 文件在object目录下
- 最后点击确定