完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
以1602为显示模块做的抢答器,在开发板上调试出来了,但是在proteus上仿真不了,不懂是什么原因。
程序如下: #include #define uchar unsigned char #define unit unsigned int ***it rs = P2^4; //定义端口 ***it rw = P2^5; ***it en = P2^6; uchar num; //定义中断变量,num计满20表示1秒时间到 uchar num1=10; //十秒倒计时显示初始值 uchar flag1,flag2; //清零键及开始键按下标志位 uchar flag3,flag4; //定义键盘按下标志位 ***it clear=P1^0; //定义清零键 ***it start=P1^1; //开始键 ***it key1=P1^2; ***it key2=P1^3; ***it key3=P1^4; ***it key4=P1^5; uchar code table[]="Serial Number:"; uchar code table1[]="Surplus time:"; void delay(unit z) { unit x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } bit LCD_Check_Busy()//判忙程序 { P0=0xFF; rs=0; rw=1; en=0; en=1; return (bit)(P0& 0x80);//数据指针初始化 } void write_com(uchar com) { while(LCD_Check_Busy()); rs=0; rw=0; en=1; P0=com; en=0; } void write_date(uchar date) { rs=1; en=0; P0=date; delay(5); en=1; delay(5); en=0; } void init() { uchar num; //fen=59; //miao=53; //shi=23; en=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<14;num++) { write_date(table[num]); delay(5); } write_com(0x80+0x40); for(num=0;num<13;num++) { write_date(table1[num]); delay(5); } } void write_shige(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 clr() //清零函数(主持人按下清零键后数码管显示0) { write_com(0x80 + 14); write_date('0'); write_com(0x80 +0x40+13); write_date('1'); write_com(0x80 +0x40+14); write_date('0'); write_com(0x80 +0x40+15); write_date('s'); } void player() //选手按键检测函数 { if(key1==0&&flag4==0) { delay(10); if(key1==0&&flag4==0) { write_com(0x80 + 14); write_date('1'); flag4=1; TR0=0; while(!key1); } } if(key2==0&&flag4==0) { delay(10); if(key2==0&&flag4==0) { write_com(0x80 + 14); write_date('2'); flag4=1; TR0=0; while(!key1); } } if(key3==0&&flag4==0) { delay(10); if(key3==0&&flag4==0) { write_com(0x80 + 14); write_date('3'); flag4=1; TR0=0; while(!key1); } } if(key4==0&&flag4==0) { delay(10); if(key4==0&&flag4==0) { write_com(0x80 + 14); write_date('4'); flag4=1; TR0=0; while(!key1); } } } void keyscan() { if(clear==0) { delay(10); if(clear==0) { while(!clear); flag1=0; flag2=0; flag3=0; flag4=0; num=0; num1=10; clr(); flag1=1; } } if(flag1==1) { if(start==0&&flag3==0) { delay(10); if(start==0) { while(!start); { flag2=1; flag3=1; } } } if(flag2==1&&flag4==0) { TR0=1; player(); write_shige(13,num1); } } } void main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; init(); while(1) { keyscan(); } //while(1); } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; if(num==20) { num=0; num1--; if(num1==0) { TR0=0; flag1=0; flag2=0; num=0; num1=10; clr(); } } }
|
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2609 浏览 0 评论
5303 浏览 0 评论
PROTUES仿真no model specified for adc0809,谁有ADC0809的model?
17604 浏览 1 评论
单片机应用技术的ISIS professional电路设置仿真老是报错怎么办
17902 浏览 0 评论
21173 浏览 3 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:47 , Processed in 0.415272 second(s), Total 41, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3018