




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用独立按键实现对LED进行控制,每当按下一次键时, LED显示方式变化左移一次,用以显示按键控制的结果。#include #include unsigned char count;void delay10ms(void)unsigned char i,j;for(i=250;i0;i-)for(j=248;j0;j-);void main(void) count=0xfe; while(1) if(P0_3=0) delay10ms(); if(P0_3=0) P1=count; count=_crol_(count,1); while(P0_3=0); 2、汇编语言程序ORG 00h mov a,#0fehREL: JB P0.3,REL ;判断SP1是否按下 LCALL DELAY ;若按下,则延时10ms左右 JB P0.3,REL ;再判断SP1是否真得按下 mov p1,a rl a JNB P0.3,$ ;等待SP1释放SJMP rel ;继续对K1按键扫描DELAY: MOV R6,#20 ;延时10ms子程序L1: MOV R7,#248 DJNZ R7,$ DJNZ R6,L1 RET END利用独立按键实现对数码管的控制,每当按下一次键时, 数码管显示按键次数0-9。、C语言程序:#include unsigned char count;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void delay10ms(void)unsigned char i,j;for(i=250;i0;i-)for(j=248;j0;j-);void main(void)while(1) if(P0_3=0) delay10ms(); if(P0_3=0) count+; if(count=10) count=0; P1=tablecount; while(P0_3=0); 2、汇编程序ORG 00hSTART: MOV R1,#00H ;初始化R1为0, REL: JB P0.3,REL ;判断SP1是否按下 LCALL DELAY ;若按下,则延时10ms左右 JB P0.3,REL ;再判断SP1是否真得按下 MOV A,R1 MOV DPTR,#TABLE MOVC A,A+DPTR MOV P1,A INC R1JNB P0.3,$ ;等待SP1释放CJNE R1,#10,RELSJMP START ;继续对K1按键扫描DELAY: MOV R6,#20 ;延时10ms子程序L1: MOV R7,#248 DJNZ R7,$ DJNZ R6,L1 RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH END本任务目标是用矩阵键盘控制数码管显示。 1602液晶显示C语言程序#include #define uchar unsigned char#define uint unsigned int sbit lcden=P22;sbit lcdrs=P20;sbit lcdrw=P21;uchar num;uchar code table=I LIKE MCU!;uchar code table1=;void delay(uint z) uint x,y; for (x=z;x0;x-) for(y=110;y0;y-); void write_com(uchar com) lcdrs=0; P1=com;delay(5);lcden=1;delay(5);lcden=0; void init() lcden=0; write_com(0x38); write_com(0x0c); write_com(0x0f); write_com(0x06); write_com(0x01); write_com(0x80); void write_data(uchar date) lcdrs=1; P1=date; delay(5); lcden=1; delay(5); lcden=0; void main() lcdrw=0; init (); for(num=0;num11;num+) write_data (tablenum); write_com(0x80+0x40);for(num=0;num15;num+) write_data (table1num); delay(20);while(1);如何用1602显示日期和时间C语言程序:#include /51头文件#define uchar unsigned char#define uint unsigned int /变量宏定义uchar count,s1num,shi2=0,fen2=0,shi3=10,fen3=10;/全局变量uchar shi,fen,miao,shi1,fen1,led_1,led_2;/时间变量sbit rs = P20;/数据,命令选择端(H/L) sbit rw = P21;/读,写选择端(H/L)sbit e = P22;/使能信号 /*uchar code table=2010-10-28 DATE;uchar code table1=00:00:00 TIME;/数据字符表void delay(uint z)/延时 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-) ; void write_com(uchar com)/写液晶指令 rs=0; e=0; P1=com; delay(5); e=1; delay(5); e=0; void write_date(uchar date)/送液晶数据 rs=1; e=0; P1=date; delay(5); e=1; delay(5); e=0; void init() /初始化液晶设定定时器初值 uchar num; rs=0; rw=0; e=0;/锁存关闭 write_com(0x38); delay(5); write_com(0x0c); delay(5); write_com(0x06); delay(5); write_com(0x01); write_com(0x80);/第一行开始写 for(num=0;num15;num+) write_date(tablenum); delay(20); write_com(0x80+0x40);/第二行前一部分,也就是时间开始写 for(num=0;num13;num+) write_date(table1num); delay(20); TMOD=0x01;/定时器0的方式1 TH0=(65536-50000)/256;/求模 TL0=(65536-50000)%256;/取余 EA=1;/开总中断 ET0=1;/开定时器中断 TR0=1;/启动定时器 void write_sfm(uchar add, uchar date)/地址数据变量 uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); void main()/主函数 init(); while(1); void timer0() interrupt 1 /定时器0中断服程序 TH0=(65536-50000)/256;/求模 TL0=(65536-50000)%256;/求佘 count+;/变量 if(count=20)/此处为时间基准调节,20为走一秒 count=0; miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+; if(shi=24) shi=0; write_sfm(0,shi);/时针位置 write_sfm(3,fen);/分针位置 write_sfm(6,miao);/秒针位置 12864液晶显示 用中文12864显示“重庆文理学院”C语言程序:#include#define uint unsigned int#define uchar unsigned charuchar i,j, num=0;sbit lcdrs = P2 0 ; /代码/数据,低为代码,高为数据sbit lcden = P2 2 ; /使能信号sbit lcdrw = P2 1 ; sbit FSB=P2 3 ;uchar code hanz=重庆文理学院;void delay(uint z) /延时函数 uint x,y; for(x=z;x0;x-) for(y=100;y0;y-); void write_com(uchar com)/写指令函数 delay(10); lcdrs=0; P1=com; delay(10); lcden=1; delay(10); lcden=0; void write_data(uchar date)/写数据函数 delay(10); lcdrs=1; P1=date; delay(10); lcden=1; delay(10); lcden=0;void init()/初始化函数 write_com(0x38); write_com(0x08); write_com(0x06); write_com(0x0f);void main()FSB=1;lcdrw=0; init(); write_com(0x80);/第一行第一例开始显示汉字 for(i=0;i6;i+)/写入6个汉字 for(j=0;j2;j+)/一个汉字要进行2次写数据的操作,要写字符的话就只需要一次写数据的操作 write_data(hanznum); num+; while(1);要实现09的显示C语言程序:#include #define uchar unsigned charsbit a=P05;sbit b=P06;sbit c=P07;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char dispcount;void delay02s(void) unsigned char i,j,k;for(i=10;i0;i-)for(j=200;j0;j-)for(k=248;k0;k-);void main(void) while(1) for(dispcount=0;dispcount10;dispcount+) a=0; b=0; c=0; P1=tabledispcount; delay02s(); 汇编语言程序:org 00haa:mov r0,#00hmov dptr,#tabclr p0.5clr p0.6clr p0.7sd:mov a,r0movc a,a+dptrlcall delaymov p1,ainc r0cjne r0,#10,sdsjmp aadelay:mov r6,#5SS:MOV R7, #200LOOP:MOV R5, #249DJNZ R5, $DJNZ R7,LOOPDJNZ R6,SSrettab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh end编程实现数码管的0-7数字显示。C语言程序:#include #define uchar unsigned charsbit a=P05;sbit b=P06;sbit c=P07;unsigned char code tabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char code tablewe=0x1f,0x3f,0x5f,0x7f,0x9f,0xbf,0xdf,0xff;unsigned char dispcount;void delay02s(void) unsigned char i,j,k;for(i=10;i0;i-)for(j=200;j0;j-)for(k=248;k0;k-);void main(void) while(1) for(dispcount=0;dispcount8;dispcount+) P0=tablewedispcount; P1=tabledudispcount; delay02s(); 汇编语言:org 00haa:mov r0,#00hsd:mov dptr,#tab2mov a,r0movc a,a+dptrmov p0,amov a,r0mov dptr,#tab1movc a,a+dptrmov p1,alcall delayinc r0cjne r0,#8,sdsjmp aadelay:mov r6,#5SS:MOV R7,#200LOOP:MOV R5,#249DJNZ R5, $DJNZ R7,LOOPDJNZ R6,SSrettab1:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07htab2:db 1fh,3fh,5fh,7fh,9fh,0bfh,0dfh,0ffhend本任务是实现0999的加1S计数显示。#include #define uchar unsigned charsbit a=P05;sbit b=P06;sbit c=P07;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char dispcount,bai,shi,ge;unsigned int temp,aa;void display();void delay02s(void) unsigned char i,j,k;for(i=1;i0;i-)for(j=100;j0;j-)for(k=200;k0;k-);void delay05s(void) unsigned char s,m,t; for(s=2;s0;s-) for(m=200;m0;m-) for(t=250;t0;t-) ; void main(void) temp=0; while(1) delay05s(); delay05s(); temp+; display(); void display() if(temp=999) temp=0; bai=temp/100; shi=temp%100/10; ge=temp%10; a=0; b=1; c=0; P1=tablebai; delay02s(); a=1; b=0; c=0; P1=tableshi; delay02s(); a=0; b=0; c=0; P1=tablege; delay02s(); C语言程序(中断)#include #define uchar unsigned charsbit a=P05;sbit b=P06;sbit c=P07;unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char dispcount,bai,shi,ge;unsigned int temp,aa;void init();void delay02s(void) unsigned char i,j,k;for(i=10;i0;i-)for(j=20;j0;j-)for(k=24;k0;k-);void main(void) void init(); temp=0; while(1) aa+; if(aa=20) aa=0; temp+; if(temp=999) temp=0; bai=temp/100; shi=temp%100/10; ge=temp%10; a=0; b=1; c=0; P1=tablebai; delay02s(); a=1; b=0; c=0; P1=tableshi; delay02s(); a=0; b=0; c=0; P1=tablege; delay02s(); void init() TMOD=0X01; TH0=65536-50000/256; TL0=65536-50000%256; EA=1; ET0=1; TR0=1; void timer0() interrupt 1 TH0=65536-50000/256; TL0=65536-50000%256;1Hz的闪烁程序设计C语言程序:#include sbit light=P10;void delay05s(void) unsigned char i,j,k; for(i=5;i0;i-) for(j=200;j0;j-) for(k=250;k0;k-) ; void main(void) while(1) light=0; delay05s(); light=1; delay05s(); 汇编语言程序:org 00hLS:setb p1.0Lcall delayclr P1.0Lcall delaysjmp lSdelay:mov R6,#5SS:MOV R7, #200loop:mov R1,#245SD:DJNZ R1, SDDJNZ R7,loopDJNZ R6,SSretend跑马灯C语言程序:#include reg51.h#include intrins.hvoid delay05s(void) unsigned char i,j,k; for(i=5;i0;i-) for(j=200;j0;j-) for(k=250;k0;k-) ; void main() unsigned char OutData=0xfe;for(;)P1=OutData;OutData=_crol_(OutData,1); /循环左移delay05s(); 汇编语言ORG 00HSTART: MOV A,#0FEHLOOP: MOV P1,A LCALL DELAY RL A SJMP loopdelay:mov R6,#5SS:MOV R7, #200lp:mov R1,#245SD:DJNZ R1, SDDJNZ R7,lpDJNZ R6,SSRETEND8个LED指示灯从左到右,从右到左依次循环点亮。1、#include reg51.h#include intrins.h#define uchar unsigned char#define uint unsigned intuchar j,k;void mDelay(unsigned int Delay) unsigned int i;for(;Delay0;Delay-) for(i=0;i124;i+);void main() unsigned char OutData=0xfe; while(1) for(j=0;j7;j+)P1=OutData; OutData=_crol_(OutData,1); /循环左移 mDelay(1000); /*延时1000 毫秒*/ for(k=0;k0;Delay-) for(i=0;i0;l-) P1=OutData; mDelay(1000); P1=0xff; mDelay(1000); void main() OutData=0xfe; while(1) for(j=0;j7;j+) OutData=_crol_(OutData,1); FLASH(); for(k=0;k7;k+) OutData=_cror_(OutData,1); FLASH(); 0999显示#include #define uchar unsigned charsbit a=P05;sbit b=P06;sbit c=P07;unsigned char codetable=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char dispcount,bai,shi,ge;unsigned int temp,aa=1;void init();void delay02s(void) unsigned char i,j,k;for(i=5;i0;i-)for(j=20;j0;j-)for(k=24;k0;k-);void main() init(); temp=0; while(1) aa+; if(aa=20) aa=0; temp+; if(temp=999) temp=0; bai=temp/100; shi=temp%100/10; ge=temp%10; a=0; b=1; c=0; P1=tablebai; delay02s(); a=1; b=0; c=0; P1=tableshi; delay02s(); a=0; b=0; c=0; P1=tablege; delay02s(); void init() TMOD=0X01; TH0=65536-50000/256; TL0=65536-50000%256; EA=1; ET0=1; TR0=1; void timer0() interrupt 1 TH0=65536-50000/256; TL0=65536-50000%256;数字钟sbit key2=P02;sbit key1=P01;sbit key0=P00;uchar code tab1=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7d,0x07,0x7f,0x6f,0x00,0x40,0x80;uchar code tab2=0x1f,0x3f,0x5f,0x7f,0x9f,0xbf,0xdf,0xff;uchar sec, min, hour, count; void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void init() TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; count+; if(count=20) count=0;sec+; if(sec=60) sec=0;min+; if(min=60) min=0;hour+; if(hour=24) hour=0; void display() uchar s ; for(s=0;s=10;s+) P1=tab1hour/10; P0=tab27; delay(2); P1=tab1hour%10; P0=tab26; delay(2); P1=tab111; P0=tab25; delay(2); P1=tab1min/10; P0=tab24; delay(2); P1=tab1min%10; P0=tab23; delay(2); P1=tab111; P0=tab22; delay(2); P1=tab1sec/10; P0=tab21; delay(2); P1=tab1sec%10; P0=tab20; delay(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时封路协议书10篇
- 2025年智能垃圾桶的垃圾分类系统
- 2025年智能交通系统的信号优化
- 2025年海洋能发电在海岛绿色能源转型中的应用报告
- 2025年合肥市第八人民医院招聘14人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025辽宁沈阳水务集团有限公司“智汇水务”招聘模拟试卷完整答案详解
- 2025贵州安顺市推进东西部协作工作领导小组办公室招聘合同制人员1人考前自测高频考点模拟试题及答案详解(历年真题)
- 2025南平市延平区人民检察院驾驶员招聘模拟试卷及完整答案详解
- 2025黑龙江双鸭山市饶河县招募就业见习单位及招聘见习人员668人模拟试卷完整参考答案详解
- 2025广东依顿电子科技股份有限公司招聘HRBP岗考前自测高频考点模拟试题及答案详解(必刷)
- 2025年下半年拜城县招聘警务辅助人员(260人)考试模拟试题及答案解析
- 2025年杭州上城区总工会公开招聘工会社会工作者9人笔试参考题库附答案解析
- 百师联盟2026届高三上学期9月调研考试数学试卷(含答案)
- 2025年互联网+特殊教育行业研究报告及未来发展趋势预测
- 医院信息安全保密培训课件
- 物流紧急事件应急预案方案
- 幼儿创意玉米课件
- 2025年智能焊接机器人产业发展蓝皮书-GGII高工咨询
- 冷却塔填料更换施工方案
- ESG专题研究报告
- 【初中历史】商鞅变法优秀课件31-川教版
评论
0/150
提交评论