利用单片机是干嘛用的实现手指反应速度测试功能。要求:数码管显示反映时间,按

家电百科 产品:
> 利用AT89C51单片机设计简易电子钟(六位),通过8位LED数码管实现时间显示;系统可以通过三个按键实现时间
利用AT89C51单片机设计简易电子钟(六位),通过8位LED数码管实现时间显示;系统可以通过三个按键实现时间 常见问题
汇编可以么LED_1 EQU 30HLED_2 EQU 31HLED_3 EQU 32HLED_4 EQU 33HLED_5 EQU 34HLED_6 EQU 35HLED_7 EQU 36HLED_8 EQU 37HTIMER EQU 38HMODE EQU 39H ;模式判断FLASH EQU 40H ;闪烁判断 1亮 0不亮BUTTON1 EQU 41H ;按钮开关BUTTON2 EQU 42H ;按钮开关BUTTON3 EQU 43H ;按钮开关BUTTON4 EQU 44H ;按钮灵敏CS1 EQU P2.0CS2 EQU P2.1WR_ON EQU P2.2;-------------------------------; 按钮;-------------------------------IN_SET EQU P2.3IN_GAL EQU P2.4IN_SUB EQU P2.5;-------------------------------; 主程序;接口:D0-D7 接 P1.0-P1.7; CS1 P2.0 CS2 P2.1 WR P2.2;-------------------------------ORG 0000HJMP MAINORG 000BHJMP T0INTORG 0030HMAIN:CALL SYSINIT;-------------------------------START:JMP START;-------------------------------; 计时器子程序;-------------------------------T0INT:MOV TH0,#03CHMOV TL0,#0AFHCALL SHOWDJNZ BUTTON4,T0INT1MOV BUTTON4,#10CALL AJ1CALL AJ3CALL AJ5T0INT1:DJNZ TIMER,T0INTENDCALL MODE_PD1T0INTEND:RETI;-------------------------------; 模式判断;-------------------------------MODE_PD1:MOV A,MODECJNE A,#0,MODE_PD2MOV TIMER,#200CALL CADDJMP MODE_PDENDMODE_PD2:MOV A,MODECJNE A,#1,MODE_PD3MOV TIMER,#50CALL FLASH1JMP MODE_PDENDMODE_PD3:MOV A,MODECJNE A,#2,MODE_PD4MOV TIMER,#50CALL FLASH3JMP MODE_PDENDMODE_PD4:MOV A,MODECJNE A,#3,MODE_PDENDMOV TIMER,#50CALL FLASH5MODE_PDEND:RET;-------------------------------; 按钮;-------------------------------AJ1:MOV A,BUTTON1CJNE A,#1,AJ2JB IN_SET,AJENDMOV BUTTON1,#0CALL SAVE2MOV TIMER,#1INC MODEMOV A,MODECJNE A,#4,AJENDMOV MODE,#0MOV TIMER,#100JMP AJENDAJ2:MOV A,BUTTON1CJNE A,#0,AJ1JNB IN_SET,AJENDMOV BUTTON1,#1JMP AJENDAJ3:MOV A,BUTTON2CJNE A,#1,AJ4JB IN_GAL,AJENDMOV BUTTON2,#0CALL GAL1JMP AJENDAJ4:MOV A,BUTTON2CJNE A,#0,AJ3JNB IN_GAL,AJENDMOV BUTTON2,#1JMP AJENDAJ5:MOV A,BUTTON3CJNE A,#1,AJ6JB IN_SUB,AJENDMOV BUTTON3,#0CALL SUB1JMP AJENDAJ6:MOV A,BUTTON3CJNE A,#0,AJ5JNB IN_SUB,AJENDMOV BUTTON3,#1JMP AJENDAJEND:RET;-------------------------------; 加法;-------------------------------GAL1:MOV A,MODECJNE A,#3,GAL2INC 58HMOV A,58HCJNE A,#10,GALENDMOV 58H,#0INC 57HMOV A,57HCJNE A,#6,GALENDMOV 57H,#0GAL2:MOV A,MODECJNE A,#2,GAL3INC 55HMOV A,55HCJNE A,#10,GALENDMOV 55H,#0INC 54HMOV A,54HCJNE A,#6,GALENDMOV 54H,#0GAL3:MOV A,MODECJNE A,#1,GALENDINC 52HMOV A,52HCJNE A,#10,GAL32MOV 52H,#0INC 51HGAL32:CJNE A,#4,GALENDMOV A,51HCJNE A,#2,GALENDMOV 52H,#0MOV 51H,#0GALEND:CALL SAVE2RET;-------------------------------; 减法;-------------------------------SUB1:MOV A,MODECJNE A,#3,SUB2DEC 58HMOV A,58HCJNE A,#-1,SUBENDMOV 58H,#9DEC 57HMOV A,57HCJNE A,#-1,SUBENDMOV 57H,#5SUB2:MOV A,MODECJNE A,#2,SUB3DEC 55HMOV A,55HCJNE A,#-1,SUBENDMOV 55H,#9DEC 54HMOV A,54HCJNE A,#-1,SUBENDMOV 54H,#5SUB3:MOV A,MODECJNE A,#1,SUBENDDEC 52HMOV A,52HCJNE A,#-1,SUBENDMOV 52H,#9DEC 51HMOV A,51HCJNE A,#-1,GALENDMOV 52H,#3MOV 51H,#2SUBEND:CALL SAVE2RET;-------------------------------; 闪烁;-------------------------------FLASH1:MOV A,FLASHCJNE A,#0,FLASH2MOV 51H,LED_1MOV 52H,LED_2MOV LED_1,#11MOV LED_2,#11MOV FLASH,#1JMP FLASHENDFLASH2:MOV A,FLASHCJNE A,#1,FLASHENDMOV LED_1,51HMOV LED_2,52HMOV FLASH,#0JMP FLASHEND ;小时闪烁FLASH3:MOV A,FLASHCJNE A,#0,FLASH4MOV 54H,LED_4MOV 55H,LED_5MOV LED_4,#11MOV LED_5,#11MOV FLASH,#1JMP FLASHENDFLASH4:MOV A,FLASHCJNE A,#1,FLASHENDMOV LED_4,54HMOV LED_5,55HMOV FLASH,#0 JMP FLASHEND ;分钟闪烁FLASH5:MOV A,FLASHCJNE A,#0,FLASH6MOV 57H,LED_7MOV 58H,LED_8MOV LED_7,#11MOV LED_8,#11MOV FLASH,#1JMP FLASHENDFLASH6:MOV A,FLASHCJNE A,#1,FLASHENDMOV LED_7,57HMOV LED_8,58HMOV FLASH,#0 ;秒钟闪烁FLASHEND:RET;-------------------------------; 数据加减;-------------------------------CADD:INC LED_8MOV A,LED_8CJNE A,#10,CADDENDMOV LED_8,#0INC LED_7MOV A,LED_7CJNE A,#6,CADDENDMOV LED_7,#0INC LED_5MOV A,LED_5CJNE A,#10,CADDENDMOV LED_5,#0INC LED_4MOV A,LED_4CJNE A,#6,CADDENDMOV LED_4,#0INC LED_2MOV A,LED_2CJNE A,#10,CADD2MOV LED_2,#0INC LED_1CADD2:CJNE A,#4,CADDENDMOV A,LED_1CJNE A,#2,CADDENDCALL SYSINITCADDEND:CALL SAVE1RET;-------------------------------; 数据显示;-------------------------------SHOW:MOV R0,#30HMOV R1,#8MOV R2,#BSHOW1:MOV A,R2MOV P0,ACALL CS2_ONRR AMOV R2,AMOV A,@R0MOVC A,@A+DPTRMOV P0,ACALL CS1_ONCALL DELAYMOV P0,#0FFHCALL CS1_ONCALL CS2_ONINC R0DJNZ R1,SHOW1RETCS1_ON:CLR WR_ONCLR CS1SETB WR_ONSETB CS1RETCS2_ON:CLR WR_ONCLR CS2SETB WR_ONSETB CS2RET;-------------------------------; 数据储存;-------------------------------SAVE1:MOV 51H,LED_1MOV 52H,LED_2MOV 54H,LED_4MOV 55H,LED_5MOV 57H,LED_7MOV 58H,LED_8RETSAVE2:MOV LED_1,51HMOV LED_2,52HMOV LED_4,54HMOV LED_5,55HMOV LED_7,57HMOV LED_8,58HRET;-------------------------------; 数据初始化;-------------------------------SYSINIT:MOV LED_1,#0MOV LED_2,#0MOV LED_3,#10MOV LED_4,#0MOV LED_5,#0MOV LED_6,#10MOV LED_7,#0MOV LED_8,#0CALL SAVE1MOV TIMER,#200MOV MODE,#0MOV FLASH,#0MOV BUTTON1,#1MOV BUTTON2,#1MOV BUTTON3,#1MOV BUTTON4,#3MOV TH0,#03CHMOV TL0,#0AFHSETB TR0SETB ET0SETB EAMOV DPTR,#TABRET;-------------------------------; 延迟;-------------------------------DELAY:MOV R6,#255DJNZ R6,$RET;-------------------------------; 段码;-------------------------------TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,0FFH;0- &0&;1- &1&;2- &2&;...;9- &9&;10-&-&;11-& &END
标签:&&&&&&&&&&&&&&&
" tab="tab_0" >常见问题热点事件家电人物家电名词
热门新品1 123 4 5 6 7 8 9 10用C语言编写程序使89C52单片机实现数字时钟功能,显示时分秒的数码管,p1~p7接a~实验中6位数码管,分别为小时的十位,个位.分钟的十位,个位.秒的十位,个位.6个键盘分别对时秒分进行加一或减一. P1口控制数码管的 A B C D E F G DP.P3--P3.5分别为数码管123456的驱动脚. 我的@.qq.com
当一盘好人,给个例程,自己研究吧&&#includechar code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //0-9数码管,共阴char code wema[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7}; //片选,1-8个数码管char h_num,m_num,s_ //分别定义小时、分钟、秒char h_shi,h_ge,m_shi,m_ge,s_shi,s_sbit fm=P3^4;void delay(char x){char a,b;for(a=x;a>0;a--)for(b=100;b>0;b--);}void inter_init(){EA=1; //开总中断ET0=1; //本例中使用的是定时器T0,如果用T1.则为ET1=0,TMOD=0x10.TMOD=0x01; //定时器工作方式1TH0=()/256; //因为晶振用的是11.0592MHZ.在取初值时,大概定义为一个中断为50MSTL0=()%256;TR0=1;}void display(char h_shi,h_ge,m_shi,m_ge,s_shi,s_ge){ P2=duma[h_shi];P1=wema[0]; delay(8);P2=duma[h_ge];P1=wema[1]; delay(8);P2=duma[10];P1=wema[2]; delay(8);P2=duma[m_shi];P1=wema[3]; delay(8);P2=duma[m_ge];P1=wema[4]; delay(8);P2=duma[10];P1=wema[5]; delay(8);P2=duma[s_shi];P1=wema[6]; delay(8);P2=duma[s_ge];P1=wema[7]; delay(8); }void main(){inter_init();s_num=55; //初始时间设置.分别是秒,分,小时m_num=59;h_num=10;while(1){if(j==20){j=0;if(s_num==59){s_num=-1;if(m_num==59){ m_num=-1;if(h_num==24)h_num=-1; h_num++;fm=0; //到整点后蜂鸣器会响一下delay(50);fm=1;}m_num++; }s_num++; }h_shi=h_num/10; h_ge =h_num%10; m_shi=m_num/10; m_ge =m_num%10; s_shi=s_num/10; s_ge =s_num%10; display(h_shi,h_ge,m_shi,m_ge,s_shi,s_ge); }}void time()interrupt 1 using 1 //如果用T1的话,应为interrupt 3{TH0=()/256; //因为晶振用的是11.0592MHZ.在取初值时,大概定义为一个中断为50MSTL0=()%256;j++; }
为您推荐:
扫描下载二维码君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
本科毕业论文-基于AT89S52单片机人体反应速度测试仪设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 单片机是干嘛用的 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信