有没有大神能帮我写个单片机io口扩展扩展程序,随便写

还没有帐号? 赶紧
用户版块帖子
跪求大神帮忙编写一51单片机的小程序。
UID:1437856
在线时间1084小时
M币2425专家1
此帖悬赏结束最佳答案:200&M币,最佳答案获得者:elecfun
前几天参加了一个焊接比赛,谁知道焊接完以后要求写程序。我参加的是焊接比赛啊,我不会写程序啊。自己看来几本书,但是还是不会,眼看晚上12点就要交了,只好求助各位大神帮忙了。原理图如图所示想要实现按下p2.3的微动开始显示 p2.2 结束 p2.1 暂停 p2.0 重新显示数码管显示内容为 “Love CDUT ”如果可以的话,加上一点注释,不胜感激!
UID:38583
在线时间991小时
M币164专家12
最佳答案奖励:+200&M币
之前重装了系统,刚专门装了Proteus和Keil写了个,仿真可以用,不知道是不是你要的效果。有问题的话提出来再帮你改。
注: 00:22:38重新编辑,1、50行添加注释。2、删除原82行无用变量state。3、更新111行的错误,逻辑与为“||”//For http://bbs.mydigit.cn/read.php?tid=1908778//想要实现按下p2.3的微动开始显示 p2.2 结束 p2.1 暂停 p2.0 重新显示//数码管显示内容为 “Love CDUT ”//elecfun @
00:22:07#include &AT89x51.h&#define PORT_KEY&&&&&&&&P2&&&&&&//按键端口#define KEY_START&&&&&& 0x08&&&&//开始显示#define KEY_STOP&&&&&&&&0x04&&&&//结束#define KEY_PAUSE&&&&&& 0x02&&&&//暂停#define KEY_RESET&&&&&& 0x01&&&&//重新显示#define KEY_MASK&&&&&&&&(KEY_START | KEY_STOP | KEY_PAUSE | KEY_RESET)//共阳显示数组unsigned char code SEG[]={&&&&0xC0, /*0*/&&&&0xF9, /*1*/&&&&0xA4, /*2*/&&&&0xB0, /*3*/&&&&0x99, /*4*/&&&&0x92, /*5*/&&&&0x82, /*6*/&&&&0xF8, /*7*/&&&&0x80, /*8*/&&&&0x90, /*9*/&&&&0x88, /*A 10*/&&&&0x83, /*b 11*/&&&&0xC6, /*C 12*/&&&&0xA1, /*d 13*/&&&&0x86, /*E 14*/&&&&0x8E, /*F 15*/&&&&0xC7, /*L 16*/&&&&0xC0, /*O 17*/&&&&0xCE, /*T 18*/&&&&0xC1, /*U 19*/&&&&0xE3, /*v 20*/&&&&0xFF, /*&&21*/};//字符串数组,21表示空格,不需要可删除//&&&&&&&&&&&&&&&&&&&&&&&&L&&o&&v&&e&&&& C&&D&&U&&T&&&& 1 9 5 6&&&&2 0 1 6unsigned char code Str[]={16,17,20,14,21,12,13,19,18,21,1,9,5,6,21,2,0,1,6,21,21};//全局状态枚举enum STATE{&&&&STOP = 0,&&&&PAUSE,&&&&START,}gS //状态机,指示当前状态//用于按键检测全局变量unsigned char KeyOne=0,KeyAll=0;//短延时void Delay(unsigned int t){&&&&unsigned int a,b;&&&&for (a=0; a&t; a++)&&&&{&&&&&&&&for (b=0; b&123; b++)&&&&&&&&{&&&&&&&&&&&&;&&&&&&&&}&&&&}}/* 读取按键值 */void GetKey(void){&&&&unsigned char ReadD&&&&PORT_KEY |= KEY_MASK;&&&&&&&&&& //如果按键无上拉电阻,则读按键前必须先写1&&&&ReadData = PORT_KEY ^ 0xFF;&&&& //读数据&&&&ReadData &= KEY_MASK;&&&&&&&&&& //保留有效位&&&&KeyOne = ReadData & (ReadData ^ KeyAll);&&&&KeyAll = ReadD}void main(void){&&&&unsigned char&&&&&&&&&&&&&&&&//当前显示的字符指针&&&&unsigned int&&&&&&&&&&&& //字符流动速度控制&&&&&&&&gState = STOP;&&&&&&&&&&&&&&&&&&//默认为停止状态&&&&p = 0;&&&&&&&&&&&&&&&&&&&&&&&&&&//默认显示第一个字符&&&&while(1)&&&&{&&&&&&&&GetKey();&&&&&&&&&&&&&&&&&& //读取按键状态,非阻塞模式&&&&&&&&if (KeyOne & KEY_START)&&&& //开始按键&&&&&&&&{&&&&&&&&&&&&gState = START;&&&&&&&& //更新当前状态为开始状态&&&&&&&&}&&&&&&&&if (KeyOne & KEY_STOP)&&&&&&//停止按键&&&&&&&&{&&&&&&&&&&&&gState = STOP;&&&&&&&&&&//更新当前状态为停止状态&&&&&&&&&&&&p = 0;&&&&&&&&&&&&&&&&&&//字符指针复位&&&&&&&&&&&&count = 0;&&&&&&&&&&&&&&//流速计数清零&&&&&&&&}&&&&&&&&if (KeyOne & KEY_PAUSE)&&&& //暂停按键&&&&&&&&{&&&&&&&&&&&&if (gState == START)&&&&//如果当前是开始状态,则更改为暂停状态&&&&&&&&&&&&{&&&&&&&&&&&&&&&&gState = PAUSE;&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&}&&&&&&&&if (KeyOne & KEY_RESET)&&&& //重新显示按键&&&&&&&&{&&&&&&&&&&&&if ( (gState == START) || (gState == PAUSE)) //开始或停止状态下才可以重新显示&&&&&&&&&&&&{&&&&&&&&&&&&&&&&gState = START;&&&& //更新当前状态为开始状态&&&&&&&&&&&&&&&&p = 0;&&&&&&&&&&&&&&//字符指针复位&&&&&&&&&&&&&&&&count = 0;&&&&&&&&&&//流速计数清零&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&&&&&&&&&switch (gState)&&&&&&&&&&&& //状态机,根据当前不同状态进行不同的处理&&&&&&&&{&&&&&&&&case STOP:&&&&&&&&&&&&&&&&&&//停止状态&&&&&&&&&&&&P0 = SEG[21];&&&&&&&&&& //显示空白&&&&&&&&&&&&break;&&&&&&&&case PAUSE:&&&&&&&&&&&&&&&& //暂停状态&&&&&&&&&&&&P0 = SEG[Str[p]];&&&&&& //一直显示当前的字符&&&&&&&&&&&&break;&&&&&&&&case START:&&&&&&&&&&&&&&&& //开始状态&&&&&&&&&&&&if (++count & 100)&&&&&&//字符流速控制,更改数字大小可控制字符流动速度&&&&&&&&&&&&{&&&&&&&&&&&&&&&&count = 0;&&&&&&&&&&//计满后清零以便重新计数&&&&&&&&&&&&&&&&if (++p &= sizeof(Str)) //指向字符串数组中的下一个字符,到头重新开始&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&p = 0;&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&&&&&P0 = SEG[Str[p]];&&&&&& //显示当前当前指针指向的字符&&&&&&&&&&&&break;&&&&&&&&}&&&&&&&&&&&&&&&&Delay(10);&&&&&&&&&&&&&&&&&&//短延时调整时序,可防止按键误检测,count过大&&&&}} [ 此帖被elecfun在 00:24重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
UID:1229025
在线时间809小时
M币107专家5
热心助人奖励:+1&M币
数码管那么多吗?
UID:1575778
在线时间50小时
M币1021专家-1
热心助人奖励:+1&M币
哪估计不行,你在执行显示函数的时候,是不能扫描按键的,也就不可能实现你说的暂停或者其他,除非你接中断引脚。
UID:1575778
在线时间50小时
M币1021专家-1
回 wu 的帖子
热心助人奖励:+1&M币
:大写吧 o可以和d一样 v就写成 f b d显示 T就写成7就可以了 是那么个意思就好。谢谢啦! ( 21:22) 额。。。我还在写论文,明天早上赶着交。我尽力而为,要是哪位大神有空先帮他写下。我只能说尽量不敢保证。
UID:38583
在线时间991小时
M币164专家12
热心助人奖励:+1&M币
百度盘下载
UID:1437856
在线时间1084小时
M币2425专家1
占楼 字数补丁原理图
本文内容包含图片或附件,获取更多资讯,请
后查看;或者
成为会员获得更多权限
UID:1437856
在线时间1084小时
M币2425专家1
回 xxdz12345 的帖子
:数码管那么多吗?&( 19:55)&只有一个数码管 一个一个字符的循环显示
UID:1437856
在线时间1084小时
M币2425专家1
回 256 的帖子
:哪估计不行,你在执行显示函数的时候,是不能扫描按键的,也就不可能实现你说的暂停或者其他,除非你接中断引脚。&( 20:42)&那就按p2.3 开始 其他没功能,这样呢?
UID:1575778
在线时间50小时
M币1021专家-1
回 wu 的帖子
:那就按p2.3 开始 其他没功能,这样呢? ( 20:48) 还有就是你这字母要大写还是、大写的话,O跟D,U跟V要怎么处理?
访问内容超出本站范围,不能确定是否安全
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
您目前还是游客,请
&回复后跳转到最后一页
Code by , Time now is:06-21 17:26, Total 0.287420(s) query 14,
Gzip enabled&后使用快捷导航没有帐号?
请完成以下验证码
查看: 1213|回复: 5
基于单片机的云台控制系统,求大神帮帮忙!!
在线时间4 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
画好了电路图,但自己不会编写程序,有大概的思路。求大神指导!!!!!!
在线时间979 小时
芯币2726枚
E金币128枚
TA的帖子TA的资源
一粒金砂(高级), 积分 340, 距离下一级还需 160 积分
一粒金砂(高级), 积分 340, 距离下一级还需 160 积分
啥单片机& &上原理图撒
我从不担心我努力了不优秀,只担心优秀的人都比我更努力。如果你无法忍受孤独,就不要追逐梦想。每一个优秀的人,都有一段沉默的时光。在那一段时光,你付出了很多努力,忍受孤独和寂寞,不抱怨不诉苦,最后渡过了这
在线时间4 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
本帖最后由 syw1990 于
09:36 编辑
在线时间4 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
本帖最后由 syw1990 于
08:44 编辑
这是仿真图
在线时间4 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
啥单片机& &上原理图撒
(144.74 KB, 下载次数: 2)
08:43 上传
在线时间4 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
求哪位大神,给编一下程序。。
EEWORLD 官方微信
Powered by鏈夋病鏈夌墿鐢电殑澶х?鐜╁崟鐗囨満鐨

我要回帖

更多关于 单片机存储器的扩展 的文章

 

随机推荐