单片机相关问题请教

[复制链接]
查看11 | 回复3 | 2011-9-12 07:47:14 | 显示全部楼层 |阅读模式
请单片机高手帮忙解决这几个问题,感激不尽!三、分析下图中各EPROM的地址空间(15%)四、分析如图所示键盘各键的键值(10%)五、设计一个8031应用系统,要求扩展8K程序存储器和8K数据存储器(20%)六、某系统LED显示器各引脚与系统数据总线对应关系如图所示,试确定0-F各字形的字形码。(20%)
回复

使用道具 举报

千问 | 2011-9-12 07:47:14 | 显示全部楼层
看我的空间单片机显示网站那里都有追问你空间怎么进去?请这位高手赐教,小弟感激不尽啊!
回复

使用道具 举报

千问 | 2011-9-12 07:47:14 | 显示全部楼层
首先建议楼主系统的学一下C语言和单片机。下面针对每个问题尽力回答一下:1、程序开头#includereg52.h,只在单片机的C语言中有用,PC机的C语言不需要。其含义是包含了51单片机单片机中的特殊功能寄存器的地址定义,换句话说比如单片机的累加器ACC,其实是助记符,程序中可以直接使用ACC这个助记符,在reg52.h文件中对这此字符做了定义,程序编译时看见ACC就会用其实际数据0xE0替换掉ACC。这种方式使得编程者不需要记忆实际数据,只记住助记符就可以了,一是方便而是不易出错。2、同理,一般还有诸如#includeSTDIO.h等。.H文件作用很多,上面就是一种,还有其它许多功能,包含了一些常用的函数,如求三角函数值sin(x)、比较两个字符串是否相同strcmp(s1,s2)等,这些都可能是经常用的,所以编译器将这些功能都预先做完,编程者将.H文件这样写在程序中就可以直接调用了,否则编程者需要自己编岂不麻烦。3.voidmain:是C语言程序的入口函数名,其中void属于函数返回值的数据类型(void本身是空数据类型,也就是没有返回值),main是C语言的保留字,代表整个程序入口,所有的C程序必须有且只有1个main函数。至于#defind,其含义就像1中所描述,可以将一些常量、表达式写成易于记忆的方式,便于后面程序的编写,比如圆周率,数据很长,程序中多次要用,可以这样定义:#definePAI3.141592654...,以后程序中要用时比如求周长L,半径为20,就可以这样写:L=2*20*PAI,可见这样又简单,又不易错。类似的还有诸如typedef、#ifdef等,还是等你学了C语言后再解释吧,否则说不清。4.大括号代表截止。至于前面的空格,仅仅是为了阅读的方便,就像写文章是每一段的开始都不会从该行头部开始,都会留2个汉字的空间。留几个空格就是为了看清程序的整体结构的层次,是编程者的良好习惯。至于用几个空格没关系。5.==/*等等这些符号什么意思:这些都是C语言中的运算符。C语言的运算符应该是比较多的,你还是看书比较全面。其中最基本的自然是、-、X、/、=、%等,特殊的比如i,代表i=i1,也就是将变量i的内容1后在送回给i变量;还有比如i=2,含义是将变量i的内容2后在送回给i变量;还有比如if(i==2),含义是判断i变量是否等于2,。。。。,还有很多,真的需要系统学习6.()这个小括号里面经常不写东西,它的作用是什么?不要他不行吗?这种情况一般出现在函数中,比如前面所说voidmain(),就是一例,两个小括号中没有内容代表此函数没有需要传递过来的其它参数。函数的作用主要是便于软件的模块话管理,比如一个简单的求两个数之和的函数可以这样写:intSum(inta,intb){returnab;}那么要求123+234结果并将结果放入变量C时就可以这样调用:c=Sum(123,234)()内包含的就叫参数,调用时将实际数据填入就行了。有些函数可能只是执行一个操作,不需要参数,那么此时()内就不需要写内容或写作(void),但必须有(),因为它表示这是一个函数。7、0xEF0xef:这代表两个常数,就像87,76等一样,这里采用大写、小写都行。0x整体表示此常数是16进制数,0xEF就是16进制数EF,也就是十进制的239。你可以使用Windows系统自带附件中的计算器软件体验一下数据类型关系。8、单片机程序下载是通过单片机的串口实现的,一般串口就需要三根线:发送线、接收线、地线(地线作为参考电平或说收发信号回路吧),在单片机中,收、发两根线是固定的,不能随便接,而且单片机的这两条线只实现了基本功能,要和电脑实际链接还需要将这两条线经232电平转换芯片才行,否则可能会损坏单片机系统。就好比手机充电是需要一个变压器得到充电电压,直接将220v接入手机是不行的。信号线的连接上:PC机的发送线接单片机系统的接收线,PC机的接收线接单片机系统的发送线。此处还需要一定基础,建议先买个开发板看看其电路连接再讨论。9、单片机引脚虽多(其实和ARM比起来少多了),40个管脚,其实就分几类1)电源和地(2根)2)晶振(2根)3)复位脚(1根)4)ALE(1根):用于访问外部数据存储器,开始可不关心,有一定基础后再深究5)PSEN(1根):用于访问外部程序存储器,同样有一定基础后再深究;6)EA(1根):程序存储器控制,记住一般接高电平,有一定基础后再深究;7)IO口(4组32根):包括P0、P1、P2、P3四组8位口,这是实际使用的线,比如可以用1根线接到发光二极管,然后通过控制该线的高低电平达到点亮,熄灭发光管的目的。其中P3口有双重功能,比如上一问中的串口就是使用了P3口中的两根线实现的。楼主提得问题确实太基础了,但并不奇怪,隔行如隔山嘛,真要了解确实需要从头学习C语言和单片机。写这么多,希望有所帮助。
回复

使用道具 举报

千问 | 2011-9-12 07:47:14 | 显示全部楼层
h
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行