//数码管显示
//★★★★★★★★★数码管显示★★★★★★★★★★★\\
//单征机型号:pic16f877a
//功能描述:采用动态扫描方式,初始时显示123,当按下rb0时,数值加一,当按下rb1时,数值减一
//端口定义:ra0,ra1,ra2数码管位控制脚,rd口数码管段控制口,rb0加一按键,rb1减一按键。
#include
__config(0xf73a); //芯片配置字节
const unsigned char disp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9译码
char ba,sh,ge,keyb0,keyb1;
void dir();
void key();
//========================================================================
//功能描述:延时子程序
//函数名称:delay);
void delay()
{
int i;
for(i=200;i》0;i--);
}
//========================================================================
//功能描述:主程序
//函数名称:void main()
void main()
{
keyb0=0;
ba=1;
sh=2;
ge=3;
trisa=0x00;
trisd=0x00;
porta=0xff;
while(1)
{
key();
dir();
}
}
//========================================================================
//功能描述:判断按键程序
//函数名称:void key()
void key()
{
//------------------------------------------------------------------------
//判断rb0键是否作用,进行加一操作
if(rb0==0)
{
delay();
if(rb0==0)
{
if(keyb0==0)
{
keyb0=1;
ge++;
if(ge==10)
{
ge=0;
sh++;
if(sh==10)
{
sh=0;
ba++;
if(ba==10)
{ba=0;}
}
}
}
}
}
else keyb0=0;
//------------------------------------------------------------------------
//判断rb1键是否作用,进行减一操作
if(rb1==0)
{
delay();
if(rb1==0)
{
if(keyb1==0)
{
keyb1=1;
ge--;
if(ge==255)
{
ge=9;
sh--;
if(sh==255)
{
sh=9;
ba--;
if(ba==255)
ba=9;
}
}
}
}
}
else keyb1=0;
}
//========================================================================
//功能描述:显示程序
//函数名称:void dir()
void dir()
{
porta=0xfb; //选中个位数码管
portd=disp[ge]; //往个位数码管送数
delay(); //延时一段时间,保证亮度
porta=0xfd;
portd=disp[sh];
delay();
porta=0xfe;
portd=disp[ba];
delay();
}
安科瑞配电列头柜产品在XXX数据中心案例分享
AD9230在中频数字接收机中的应用
未来食品应该是什么样子?这11项创新技术告诉你
工信部将从四方面加强网络安全管理促进移动转售企业高质量发展
在语音芯片行业中,常用的压缩技术主要分为这几类
PIC16F877A单片机数码管数值循环显示设计
比特币存不存在内部价值
你需要详细了解Linux 创建文件系统及挂载文件系统的问题!
什么是自举电路?自举电路的特点
电路板中电压不稳的因素
土壤墒情监测站的应用可为灌溉提供科学的数据支撑
三星新推全球最小Flash LED:FC1313
虹科智能互联:您的智能通讯解决方案合作伙伴
UPS的工作原理 为什么不能在UPS输入端安装漏电保护器?
继电器几个典型常用的接线图
电动拉力试验机,试样断裂怎么办?
兰德报告:切实规范执法部门使用面部识别技术
盛群新推出智慧卡读卡机微控制器
为全系车配全自动驾驶!特斯拉如何领先传统车厂两三年?
物联网供应商应该怎样进行安全的测试