程序.docx
- 文档编号:6716158
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:46
- 大小:24.97KB
程序.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;i for(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;i for(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;i for(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;i for(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;i for(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;i for(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;i for(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时进行写操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序