程序.docx
《程序.docx》由会员分享,可在线阅读,更多相关《程序.docx(46页珍藏版)》请在冰豆网上搜索。
程序
*0-7动态显示*/
#include//头文件
#include//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
uintaa,temp,bai,shi,ge,bb;//定义变量
/*数码管显示0-9*/
uintcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*子函数声明*/
voiddelay(uintz);
/*主函数*/
voidmain()
{
uinti;//定义变量
while
(1)//进入死循环
{
temp=0x7f;//定义初值
for(i=0;i<4;i++)
{
P0=temp;
temp=(temp>>1)|0x80;
P2=table[i+1];
delay(6);
}
}
}
/*延时子函数延时1us*/
voiddelay(uintz)
{
uinti,j;
for(i=0;ifor(j=0;j<110;j++);
}
/*0-7动态显示*/
#include//头文件
#include//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
uintaa,temp,bai,shi,ge,bb;//定义变量
/*数码管显示0-9*/
uintcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*子函数声明*/
voiddelay(uintz);
/*主函数*/
voidmain()
{
uinti;//定义变量
while
(1)//进入死循环
{
temp=0x7f;//定义初值
for(i=0;i<4;i++)//循环
{
P0=temp;//P0位选赋初值
temp=_cror_(temp,1);//位选右移
P2=table[i+1];//段选显示数字
delay(6);//延时
}
}
}
/*延时子函数延时1us*/
voiddelay(uintz)
{
uinti,j;
for(i=0;ifor(j=0;j<110;j++);
}
共阴:
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};
#include//头文件
#include//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
uchartemp;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
voiddelay(uintz);
voidmain()
{
uinti,j;
P0=0xff;//初始化P0口
P2=0xff;//初始化P2口
while
(1)
{
P0=0x7f;
for(i=0;i<15;i++)
{
for(j=0;j<50;j++)
{
P0=0x7f;
P2=table[i];//第一个数码管滚动
delay(5);
P0=0xbf;
P2=table[i+1];//第二个数码管滚动
delay(5);
P0=0xdf;
P2=table[i+2];//第三个数码管滚动
delay(5);
P0=0xef;
P2=table[i+3];//第三个数码管滚动
delay(5);
}
}
}
}
voiddelay(uintz)
{
uinti,j;
for(i=0;ifor(j=0;j<100;j++);
}
#include//头文件
#include//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
sbitclk=P1^0;
sfr16DPTR=0x82;
bitstatus_F=1;
uintaa,temp,qian,bai,shi,ge,bb,wan,shiwan;//定义变量
/*数码管显示0-9*/
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/*子函数声明*/
voiddelay(uintz);
voidinit();
voiddisplay(uintshiwan,uintwan,uintqian,uintbai,uintshi,uintge);
voidxtimer0();
voidxint0();
voidclok();
/*主函数*/
voidmain()
{
P0=0XFF;
init();//定时器初始化
while
(1)
{
//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位
delay(5);
P0=0xfb;
P2=table[qian];//显示千位
delay(5);
P0=0xf7;
P2=table[bai];//显示百位
delay(5);
P0=0xef;
P2=table[shi];//显示十位
delay(5);
P0=0xdf;
P2=table[ge];//显示个位
delay(5);
}
/*定时中断子函数*/
voidxtimer0()interrupt1
{
TH0=0x4c;//定时器赋高8初值
TL0=0x00;//定时器赋低8初值
aa++;
}
/*延时子函数*/
voiddelay(uintz)
{
uinti,j;
for(i=0;ifor(j=0;j<110;j++);
}
voidclok()
{
clk=0;
delay(10);
clk=1;
delay(10);
}
#include//头文件
#include//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
uchartt,num;//定义变量
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
voiddelay(uintz);//子函数声明
voidexter0();//子函数声明
voidmain()
{
tt=0;//赋初值
num=0;//赋初值
TMOD=0x01;//定时器0为工作方式1
TH0=0x3c;//低8位赋初值,定时50MS
TL0=0x06;//高8位赋初值,定时50MS
EA=1;//开启总中断
ET0=1;//开启定时器0中断模式
TR0=1;//启动定时器0
P0=0x0f;//位选
P2=0x3f;//位选
while
(1)
{
if(tt==20)//满20次计数一次,20*50MS=1S
{
tt=0;//如满20次清0重新计数
num++;//num累加,
if(num==9)num=0;//计数次数.
P2=table[num];//显示
}
}
}
/*中断子函数*/
voidexter0()interrupt1
{
TH0=0x3c;//低8位赋初值,定时50MS
TL0=0x06;//高8位赋初值,定时50MS
tt++;//累加
}
/*延时子函数*/
voiddelay(uintz)
{
uinti,j;
for(i=0;ifor(j=0;j<150;j++);
51独立按键
#include//头文件
#include//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
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<<=1;
key_s|=K4;
key_s<<=1;
key_s|=K3;
key_s<<=1;
key_s|=K2;
key_s<<=1;
key_s|=K1;
returnkey_s;
}
/********************************************************
健功能函数
********************************************************/
voidproc_key(ucharkey_s)
{
if((key_s&0x01)==0)
{
P0=0X00;
P2=0X06;
}
elseif((key_s&0x02)==0)
{
P0=0X00;
P2=0X5B;
}
elseif((key_s&0x04)==0)
{
P0=0X00;
P2=0X4F;
}
elseif((key_s&0x08)==0)
{
P0=0X00;
P2=0X66;
}
elseif((key_s&0x10)==0)
{
P0=0X00;
P2=0X6d;
}
elseif((key_s&0x20)==0)
{
P0=0X00;
P2=0X7D;
}
}
/*********************************************************
主函数
*********************************************************/
main()
{
ucharkey_s,key_v;
key_v=0x0f;
P0=0xfe;
P2=0xfe;
while
(1)
{
key_s=scan_key();
if(key_s!
=key_v)
{
delayms(10);//延时去抖动
key_s=scan_key();//再次判健是否按下
if(key_s!
=key_v)
{
key_v=key_s;
proc_key(key_s);
}
}
}
}
/*
*******************************************************/
51独立按键显示0-9
/*按键显示累加*/
#include//头文件
#include//头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
/*数码管显示0-f*/
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbitkey1=P3^4;//初始化按键
ucharnum;//定义变量
voiddelay(uintz);
voidmain()
{
P0=0xfe;//P0口赋初值
P2=0x3f;
P3=0xff;//P3口赋初值
while
(1)
{
if(key1==0)//判断按键是否被按下
{
delay(5);//消抖
if(key1==0)//再次判断按键是否被按下
{
while(!
key1);//判断按键是否被按下
delay(10);//延时
while(!
key1);//判断按键是否被按下
num++;//按下一次加1
if(num==16)//判断是否按满10
{
num=0;//如按满10,清0
}
P2=table[num];//显示数字
}
}
}
}
/*延时子函数延时1MS*/
voiddelay(uintz)
{
uinti,j;
for(i=0;ifor(j=0;j<120;j++);
}
1602液晶显示
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitlcden=P1^2;//使能端E为P1^2口
sbitlcdrw=P1^1;//读/写选择端RW为P1^1口
sbitlcdrs=P1^0;//数据/指令选择端RS为P1^0口
ucharconsttable[]="Ilikedanpianji";
ucharconsttable1[]="";
voiddelay(uintz);//延时子函数声明
voidwrite_com(ucharcom);//写指令子函数声明
voidwrite_date(uchardate);//写数据子函数声明
voidinit();//LCD初始化子函数声明
voidmain()
{
uinti;
init();
write_com(0x80+0x10);
delay(3);
for(i=0;i<16;i++)
{
write_date(table[i]);
delay(3);
}
write_com(0x80+0x51);
delay(3);
for(i=0;i<14;i++)
{
write_date(table1[i]);
delay(3);
}
for(i=0;i<24;i++)
{
write_com(0x1c);
delay(300);
}
delay(3000);
write_com(0x01);
write_com(0x80+0x10);
delay(3);
for(i=0;i<16;i++)
{
write_date(table[i]);
delay(3);
}
write_com(0x80+0x51);
delay(3);
for(i=0;i<14;i++)
{
write_date(table1[i]);
delay(3);
}
for(i=0;i<16;i++)
{
write_com(0x18);
delay(300);
}
delay(3000);
}
/*初始化子程序*/
voidinit()
{
write_com(0X38);//显示光标//
delay(3);
write_com(0X01);//清屏//
delay(3);
write_com(0X0c);//显示光标闪动
delay(3);
write_com(0X06);//显示字符加1
delay(3);
}
/*写指令*/
voidwrite_com(ucharcom)
{
lcdrs=0;//RS为0时进行指令模块
lcdrw=0;//RW为0时进行写操作
P0=com;//输入指令
lcden=1;//E为使能端
delay(5);//延时
lcden=0;//E为使能端
}
/*写数据*/
voidwrite_date(uchardate)
{
lcdrs=1;//RS为0时进行数据模块
lcdrw=0;//RW为0时进行写操作
P0=date;//输入数据
lcden=1;//E为使能端
delay(5);//延时
lcden=0;//E为使能端
}
/*延时子函数*/
voiddelay(uintz)
{
uinti,j;
for(i=0;ifor(j=0;j<110;j++);
}
1602显示光标
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitlcden=P1^2;//使能端E为P1^2口
sbitlcdrw=P1^1;//读/写选择端RW为P1^1口
sbitlcdrs=P1^0;//数据/指令选择端RS为P1^0口
voiddelay(uintz);//延时子函数声明
voidwrite_com(ucharcom);//写指令子函数声明
voidwrite_date(uchardate);//写数据子函数声明
voidinit();//LCD初始化子函数声明
voidmain()
{
init();//LCD初始化
write_date('1');//显示1
delay(3);
write_date('2');//显示2
while
(1);
}
/*初始化子程序*/
voidinit()
{
write_com(0X38);//显示光标//
delay(3);
write_com(0X01);//清屏//
delay(3);
write_com(0X0f);//显示光标闪动
delay(3);
write_com(0X06);//显示字符加1
delay(3);
write_com(0X80);//显示字符的位置
delay(3);
}
/*写指令*/
voidwrite_com(ucharcom)
{
lcdrs=0;//RS为0时进行指令模块
lcdrw=0;//RW为0时进行写操