proteus+keil5仿真学习笔记(第三章 4位数码管计数器) 您所在的位置:网站首页 Proteus里的数码管 proteus+keil5仿真学习笔记(第三章 4位数码管计数器)

proteus+keil5仿真学习笔记(第三章 4位数码管计数器)

2024-05-24 04:59| 来源: 网络整理| 查看: 265

第三章 4位数码管计数器

前言

一、多位数码管显示程序

二、定时器原理

三、程序设计与仿真

proteus 电路

程序

总结

前言

4位数码管计数器与1位数码管计数器相比,增加了片选电路,以确定选择哪个数码管进行工作。单片机定时器的应用也与中断处理相似,需要设置一些规定的寄存器,以此来规定单片机的工作状态。

一、多位数码管显示程序

定义一个数组Dat[ ]={0,0,0,0}存放4位数,初值都为0。用变量S作为计数,tmp作为片选值。

数字分离:百位数分离用Dat[0] = S/100,例如S=235则S/100=2,Dat[]是整数,小数部分自动删除。十位数分离用Dat[1]=S%100/10公式解决,S%100取除100的余数,再把这个余数除10,就得到十位数了。例如,还是以上数字S=235,S%100/10=3。最后是个位数的分离,用Dat[2]=S%10,取S除以10的余数。

这里Dat[0]存放百位数,Dat[1]存放十位数,Dat[2]存放个位数。在输出时要按从高到低的顺序输出,不能搞错,否则数字就反了。在输出时,先选定片选值,即决定在哪个数码管输出,送到P2口,因为我们将片选线接在P2口。第1个片选值是1,根据数码管的标识在最左边位输出,然后通过P0口输出码段值,这时,就会在第1位显示数据了。接着,把片选值向左移动一位,为下一位输出做准备,停留片刻后进行下一位输出。这样,共循环3次,将3位数都输出显示在数码管上了。因为,我们的眼睛有视觉残留,所以感觉3位数字一起显示出来。但由于在输出完毕后还要停留较长时间才会进入下一个数的显示,输出会有闪烁的感觉。

#include //单片机头文件 unsigned char code Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳数码管码段表 unsigned char Dat[]={0,0,0,0};//存放4位数据数组 unsigned char tmp,i,j;//定义临时变量、循环变量 unsigned int S=0;//定义计数变量 void Delay(int n)//延时子程序 { int i; for(i=0;i500)//如果计数值大于500则清零 S=0; Dat[0]=S/100;//取计数值的百位数 Dat[1]=S%100/10;//取计数值的十位数 Dat[2]=S%10;//取计数值的个位数 tmp=0x01;//片选初值 for (i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有