PIC单片机显示程序分享

#include//
#include//
#include//
#defineucharunsignedchar//
#defineuintunsignedint//
//---------------------------------------
#definebias0x50//1/2偏压,4背极
#definerc2560x30//系统时钟选择为片内rc振荡器
#definewdtdis10x0a//禁止wdt溢出标志输出
#definetimerdis0x08//时基输出禁能
#definesysen0x02//打开系统时钟
#definelcdon0x06//打开偏压发生器
#definesysdis0x00//关闭系统时钟和偏压发生器
#definekey_uprb7//
#definekey_downrb6//
#definekey_setrb5//
//--------------------------------------
//staticunsignedcharkeyv,tempkeyv;//键值
unsignedcharbuf0,buf1,buf2,buf3,buff;//
unsignedcharbuf[4];//
unsignedchark,data,sreg,disppoint;//
unsignedinti;//
consttable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90};//
//*********************************
/*延时函数*/
//*********************************
voiddelay_10ms()//
{uintj;//
for(j=0;j《1000;j++)//
{;}//
}//
//*********************************
voiddelay_1ms()//
{uintj;//
for(j=0;j《100;j++)//
{;}//
}//
//**********************************
voiddelay1s()//延时1s
{
uchari;//
uintj;//
for(i=0;i《10;i++)//
for(j=0;j《1300;j++);//
}//
//**********************************
//按键等待程序
//**********************************
voidkeywait()//
{
while((portb&0xf0)!=0xf0)//
{;}//
}//
//********************************
//********************************
voidbuf_initial()//
{
buf0=0x00;//
buf[0]=buf0;//
buf1=0x00;//
buf[1]=buf1;//
buf2=0x00;//
buf[2]=buf2;//
buf3=0x00;//
buf[3]=buf3;//
sreg=0x00;//
}//
//**********************************
voidput_num(charc)
{
portc=table[c&0x0f];//
}
//**********************************
voiddisplay()//
{
disppoint=0;//
put_num(buf[disppoint]);//
rc0=0;//
delay_1ms();//
rc0=1;//
disppoint++;//
put_num(buf[disppoint]);//
rc1=0;//
delay_1ms();//
rc1=1;//
disppoint++;//
put_num(buf[disppoint]);//
rc2=0;//
delay_1ms();//
rc2=1;//
disppoint++;//
put_num(buf[disppoint]);//
rc3=0;//
delay_1ms();//
rc3=1;//
}
//**********************************
//ad转换初始化子程序//
//*********************************
voidad_initial()//
{
adcon0=0b01001001;//fosc/8ra1/an1adon=1
adcon1=0b00000010;//an0-an4=avref=vdd
adie=1;//
peie=1;//
}
//**********************************
//按键处理子程序//
//**********************************
voidkeywork()//
{
if((portb&0xff)!=0xff)//如果p1.2--p1.4不为全1,可能有键按下
{
delay_10ms();//延时去抖动
if((portb&0xff)!=0xff)//重读p1.2-p1.4位,若还是不全为1,定有键按下
{
if((portb&0xf0)!=0xf0)//重读p1.2-p1.4位,若还是不全为1,定有键按下
{
//-------------------------------------------
if(key_set==0)//按下set键,如在set状态就退出,否则进入
{
rc4=!rc4;
keywait();
return;
}
elseif(key_down==0)//按下down键
{
rc3=!rc3;
keywait();
return;
}
elseif(key_up==0)//按下up键
{
rc2=!rc2;
keywait();
return;
}
}
}
}
}
//--------------------------------------
//--------------------------------------
//tmr0中断程序
voidinterruptclkint(void)
{
tmr0=0x13;//
t0if=0;//
clrwdt();//
sreg=sreg+1;//
if(sreg==40)//
{//
sreg=0;//
buf[3]++;
if(buf[3]》9)
{buf[3]=0;
buf[2]++;
if(buf[2]》9)
{buf[2]=0;
buf[1]++;
if(buf[1]》9)
{buf[1]=0;
buf[0]++;
if(buf[0]》9)buf[0]=0;
}
}
}
}
}
/*******************************主函数******************************/
main()//主函数
{
option=0b00000000;//
status=0x00;//
adcon1=0b00000000;//
intcon=0x00;//
pie1=0b00000000;//
pir1=0x00;//
t1con=0b00000000;//
t0cs=0;//
psa=1;//
t0if=0;//
t0ie=1;//
trisb=0xff;//
trisc=0x00;//
portb=0xff;//
portc=0x00;//
buf_initial();//
while(1)//
{
keywork();//
}
}

TDK小型低输出无线供电系统的特点
通用型高压带关断功能的单通道运算放大器——AXOP36061S
单片机I/O的常用驱动和隔离电路的设计方法
实用|室外光缆怎么接详细步骤来啦
嵌入式C语言的指针、函数概念、结构体递归三大挑战
PIC单片机显示程序分享
防水插头连接器使用需要事项
PCB布线技巧去耦电容的摆放
海信与亚马逊达成合作 首次在4K智能电视上搭载Alexa
OpenHarmony HDF传感器模型框架介绍与传感器驱动开发指导
华为携手合伙伙伴共同推进数据中心行业走向绿色低碳
一周芯闻:全球首条全自动化天车系统先进封装线在华天科技投运
小蚁4K+运动相机评测 小身材大味道
NBIOT的省电技术和工作状态
一组动图展示,现在的机器人到底多牛逼了?害怕未来机器人统治地球吗?
鑫谷GP700P白金版600W电源拆解 做工如何
ZigBee组网技术在电力SCADA中有怎样的应用
可用于10W以内的离线式开关电源芯片CY3783A
科技巨头和互联网大厂的监管大幕缓缓落下
京东服务接口的高可用设计方案分享