程序Word下载.docx
- 文档编号:19733154
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:46
- 大小:24.97KB
程序Word下载.docx
《程序Word下载.docx》由会员分享,可在线阅读,更多相关《程序Word下载.docx(46页珍藏版)》请在冰豆网上搜索。
voiddelay(uintz)
uinti,j;
for(i=0;
z;
for(j=0;
j<
110;
j++);
/*0-7动态显示*/
i++)//循环
//P0位选赋初值
temp=_cror_(temp,1);
//位选右移
//段选显示数字
//延时
共阴:
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
共阳:
ucharcodetable[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
uchartemp;
P0=0xff;
//初始化P0口
P2=0xff;
//初始化P2口
while
(1)
P0=0x7f;
15;
for(j=0;
50;
j++)
P0=0x7f;
P2=table[i];
//第一个数码管滚动
delay(5);
P0=0xbf;
P2=table[i+1];
//第二个数码管滚动
P0=0xdf;
P2=table[i+2];
//第三个数码管滚动
P0=0xef;
P2=table[i+3];
}
100;
#defineuintunsignedint//宏定义
sbitclk=P1^0;
sfr16DPTR=0x82;
bitstatus_F=1;
uintaa,temp,qian,bai,shi,ge,bb,wan,shiwan;
voidinit();
voiddisplay(uintshiwan,uintwan,uintqian,uintbai,uintshi,uintge);
voidxtimer0();
voidxint0();
voidclok();
P0=0XFF;
init();
//定时器初始化
//clok();
if(aa==20)//定时20*50MS=1S
aa=0;
//定时完成一次后清0
status_F=1;
TR0=0;
TR1=0;
//关闭T0,T1
DPL=TL1;
//计数量的低8位
DPH=TH1;
//计数量的高8位
temp=DPTR;
//计数值放入变量SHU
if(temp==65535)
{
display(1,1,1,0,0,0);
}
shiwan=temp%1000000/100000;
wan=temp%100000/10000;
qian=temp%10000/1000;
//显示千位
bai=temp%1000/100;
//显示百位
shi=temp%100/10;
//显示十位
ge=temp%10;
//显示个位
display(shiwan,wan,qian,bai,shi,ge);
/*定时器0初始化*/
voidinit()
temp=0;
//变量赋初值
aa=0;
IE=0X8A;
TMOD=0x51;
//T0为定时器工作于方式1,T1为计数器工作于方式1
TH0=0x4c;
//定时器赋高8初值,11.0952M晶振
TL0=0x00;
//定时器赋低8初值,11.0952M晶振
TR0=1;
//开定时器0
TH1=0;
TL1=0;
TR1=1;
/*显示子函数*/
voiddisplay(uintshiwan,uintwan,uintqian,uintbai,uintshi,uintge)
P0=0xfe;
P2=table[shiwan];
//显示shiwan位
delay(5);
P0=0xfd;
P2=table[wan];
//显示wan位
P0=0xfb;
P2=table[qian];
P0=0xf7;
P2=table[bai];
P0=0xef;
P2=table[shi];
P2=table[ge];
/*定时中断子函数*/
voidxtimer0()interrupt1
//定时器赋高8初值
//定时器赋低8初值
aa++;
/*延时子函数*/
voidclok()
clk=0;
delay(10);
clk=1;
uchartt,num;
//子函数声明
voidexter0();
tt=0;
//赋初值
num=0;
TMOD=0x01;
//定时器0为工作方式1
TH0=0x3c;
//低8位赋初值,定时50MS
TL0=0x06;
//高8位赋初值,定时50MS
EA=1;
//开启总中断
ET0=1;
//开启定时器0中断模式
//启动定时器0
P0=0x0f;
//位选
P2=0x3f;
if(tt==20)//满20次计数一次,20*50MS=1S
tt=0;
//如满20次清0重新计数
num++;
//num累加,
if(num==9)num=0;
//计数次数.
P2=table[num];
//显示
/*中断子函数*/
voidexter0()interrupt1
tt++;
//累加
150;
51独立按键
sbitK1=P3^2;
sbitK2=P3^3;
sbitK3=P3^4;
sbitK4=P3^5;
sbitK5=P3^6;
sbitK6=P3^7;
voiddelayms(ucharms);
ucharscan_key();
voidproc_key(ucharkey_v);
/*********************************************************
延时子程序
*********************************************************/
voiddelayms(unsignedcharms)
{
unsignedchari;
while(ms--)
for(i=0;
i<
120;
i++);
/********************************************************
扫描健盘函数
********************************************************/
ucharscan_key()
ucharkey_s;
key_s=0x00;
key_s|=K6;
key_s<
<
=1;
key_s|=K5;
key_s|=K4;
key_s|=K3;
key_s|=K2;
key_s|=K1;
returnkey_s;
健功能函数
voidproc_key(ucharkey_s)
if((key_s&
0x01)==0)
P0=0X00;
P2=0X06;
elseif((key_s&
0x02)==0)
P2=0X5B;
0x04)==0)
P2=0X4F;
0x08)==0)
P2=0X66;
0x10)==0)
P2=0X6d;
0x20)==0)
P2=0X7D;
主函数
main()
ucharkey_s,key_v;
key_v=0x0f;
P0=0xfe;
P2=0xfe;
key_s=scan_key();
if(key_s!
=key_v)
delayms(10);
//延时去抖动
key_s=scan_key();
//再次判健是否按下
if(key_s!
{
key_v=key_s;
proc_key(key_s);
}
/*
*******************************************************/
51独立按键显示0-9
/*按键显示累加*/
/*数码管显示0-f*/
sbitkey1=P3^4;
//初始化按键
ucharnum;
//P0口赋初值
P3=0xff;
//P3口赋初值
if(key1==0)//判断按键是否被按下
delay(5);
//消抖
if(key1==0)//再次判断按键是否被按下
while(!
key1);
//判断按键是否被按下
delay(10);
num++;
//按下一次加1
if(num==16)//判断是否按满10
{
num=0;
//如按满10,清0
}
P2=table[num];
//显示数字
/*延时子函数延时1MS*/
120;
1602液晶显示
#defineucharunsignedchar
#defineuintunsignedint
sbitlcden=P1^2;
//使能端E为P1^2口
sbitlcdrw=P1^1;
//读/写选择端RW为P1^1口
sbitlcdrs=P1^0;
//数据/指令选择端RS为P1^0口
ucharconsttable[]="
Ilikedanpianji"
;
ucharconsttable1[]="
"
//延时子函数声明
voidwrite_com(ucharcom);
//写指令子函数声明
voidwrite_date(uchardate);
//写数据子函数声明
//LCD初始化子函数声明
write_com(0x80+0x10);
delay(3);
16;
write_date(table[i]);
delay(3);
write_com(0x80+0x51);
14;
write_date(table1[i]);
24;
write_com(0x1c);
delay(300);
delay(3000);
write_com(0x01);
write_com(0x18);
/*初始化子程序*/
write_com(0X38);
//显示光标//
write_com(0X01);
//清屏//
write_com(0X0c);
//显示光标闪动
write_com(0X06);
//显示字符加1
/*写指令*/
voidwrite_com(ucharcom)
lcdrs=0;
//RS为0时进行指令模块
lcdrw=0;
//RW为0时进行写操作
P0=com;
//输入指令
lcden=1;
//E为使能端
lcden=0;
/*写数据*/
voidwrite_date(uchardate)
lcdrs=1;
//RS为0时进行数据模块
P0=date;
//输入数据
1602显示光标
init();
//LCD初始化
write_date('
1'
);
//显示1
2'
//显示2
while
(1);
write_com(0X0f);
write_com(0X80);
//显示字符的位置
//RW为0时进行写操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)