一.安装并熟悉Proteus 电路仿真软件,完成一个C51程序设计和仿真。
创建一个仿真
编写代码并带入hex文件
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit diy=P2^0;
sbit die=P2^1;
u8 dat=0,shu=0;
bit biao=1;
u8 code weil[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
u8 a=30,b=30,c=5,d=5;
void delay(u16 i){ u16 j,l;
for(j=0;j<i;j++){
for(l=0;l<120;l++);
}
}
void smg(u8 dat){ u8 a,b; //数码管显示函数
a=dat%100/10; //将dat数据拆分为个位,十位
b=dat%100%10/1;
diy=0; //diy 第一位数码管为0 为亮
die=1; //die 第二位数码管为1 不亮
P1=~weil[a]; //两位数码管经过很快速度的切换显示,形成计时
delay(10);
diy=1;
die=0;
P1=~weil[b];
delay(10); //消影,消除数码管残影
P1=0x00;
}
void init(){ //定时器
TMOD&=0X0F;
TMOD|=0X01; //使用定时器T0的模式1
TH0 = 0x0DC;
TL0 = 0x00; //设置定时时间10毫秒
TR0=1; //启动定时器T0
ET0=1; //定时器中断允许
EA=1; //总中断
SCON=0X50; //对串口控制寄存器进行赋值
}
void shi(){ u8 j,l; //00011110 北绿 11101111北黄
//11110011 东绿 11111101东黄
if(dat<30){