平台中进行。
(1)带公共端的排阻(RESPACK-8)如图5-18所示,在本电路中作为P0的 上拉电阻,在如图5-19所示Component Value一栏中可更改阻值,例如本例中将阻值更改为200欧姆。
图5-18排阻 图5-19排阻属性框
至此,我们便完成了整个电路图的绘制。 3.4.2 步骤二:源程序设计与目标代码文件生成 (1)程序流程图
开始 依此给数码管送\ 延时1毫秒 声明变量, 数码管编码数组 声明子程序 数码管显示子程序 主程序
数码管显示子程序
图5-20 数码管动态扫描的流程图
(2)源程序设计
#include
uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //共阴极数码管编码
void display(uchar,uchar,uchar,uchar); //声明子函数 void delay(int); //声明子函数 void main() {
while(1)
{ } }
void display(uchar a,uchar b,uchar c,uchar d) {
P2=0xef;
P0=table[a]; //给第一个数码管送\
delay(1); //延时1ms
P2=0xdf;
P0=table[b]; //给第二个数码管送\ delay(1); //延时1ms
P2=0xbf;
P0=table[c]; //给第三个数码管送\ delay(1); //延时1ms
P2=0x7f;
P0=table[d]; //给第三个数码管送\ delay(1); //延时1ms }
void delay(uint z) //延时子函数 {
uint x,y; for(x=z;x>0;x--)
}
display(1,2,3,4); //主程序始终调用数码管显示子程序
for(y=110;y>0;y--);
(2)生成目标代码文件
在KEIL软件中,编译C语言源程序,生成目标代码文件,本例中为dongtai.hex。
3.4.3 步骤三:PROTEUS仿真
加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program File一栏中单击打开按钮
,出现文件浏览对话框,找到dongtai.hex
,启动仿真,仿真运
文件,单击“打开”按钮,完成添加文件。单击按钮
行片段如图5-21所示。通过AT89C52单片机控制四位数码管,实现让四位数码管稳定的显示“1234”的效果。
图5-21数码管动态扫描显示“1234”
3.5 扩展练习
本子情境中单片机趋动的是共阴极的数码管,请使用四位共阳极的数码管重新设计和仿真。
子情境四:定时/计数器的使用——方波发生器
4.1子情境内容:用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现周期为2s的方波,并能在虚拟示波器上直观地显示波形。
4.2 子情境目标: (1)通过用AT89C52单片机定时/计数器0的定时功能构成一简单的方波发生器,掌握定时器的基本用法。
(2)用PROTEUS进行电路设计和实时仿真 (3)学会使用虚拟示波器观察波形 4.3 知识点链接 虚拟示波器的基本操作: 单击工具栏中的按钮
(虚拟仪器),在对象选择器列表中选择
OSCILLOSCOPE(示波器),在ISIS编辑窗口中合适位置单击就可以将示波器放置好了。最后将单片机的P1.0口与示波器的A通道相连,如图5-22所示。
4.4 任务步骤
4.4.1 步骤一:PROTEUS电路设计,实现周期为2s的方波的原理图如图5-22所示。
图5-22 方波发生器原理图
1、选取元器件