导航:首页 > 操作系统 > 51单片机网

51单片机网

发布时间:2022-01-14 12:21:27

1. 想让51单片机实现上网,网络通讯,有需要哪些东西

上网?什么情况兄弟
你直接说你想达到什么目的
几乎不可能跟电脑那样上网。
通讯的话可以用手机通过蓝牙或者Wi-Fi控制单片机,或者无线电和红外线。

2. 关于51单片机

51单片机即是基础入门的一个单片机
还是应用最广泛的一种。

学单片机不从51学起就等于不会加减法直接学乘除法一样,即使费尽学会了乘除法基础也不牢。

如果什么都不会的话可以在网上搜索单片机的视频教程。下面是网址
http://www.gougou.com/search?search=%E5%8D%95%E7%89%87%E6%9C%BA%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B&restype=-1&sortby=6&suffix=&id=10000001&f=&ty=0&pattern=0

3. 51单片机

正好~西科大实验室认证后的答案:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint num,ge,shi,num1;
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void new();
void Delay(uint x);
void show();
void main()
{
TMOD = 0x10;
TH1 = (65536-45872)/256;
TL1 = (65536-45872)%256;
EA=1;
ET1=1;
TR1 = 1;
while(1)
{
new();
if(num1==100)
{
num1=0;
}
show();

}
}
void time() interrupt 3
{
TH1 = (65536-45872)/256;
TL1 = (65536-45872)%256;
num++;
}
void new()
{ uint a;
a=100*(shi+1);
if(num*50>=a)
{
num=0;
num1++;
}
} void Delay(uint x)
{
uint i,j;
for(i=0; i<x; i++)
for(j=0; j<110; j++)
;
}
void show()
{
ge=num1%10;
shi=num1/10;
Delay(5);
P0 = 0;
P2 = 0x02;
P0 = table[ge];
Delay(5);
P0 = 0;
P2 = 0x01;
P0 = table[shi];

}

4. STC89C51单片机可以联网吗

ENC89C51是什么鬼,网上怎么查不到呢?也是单片机吗,是NEC公司的?
51单片机要联网,是要联互联网吗?还是:只是STC89C51与ENC89C51这两个鬼联网?如果就是两个单片机,可以用串口通信的,不叫联网。
通常说的联网,是指上互联网。按理说,51单片机要配上网络芯片是可以上网的,但是,因为51单片机的速度太慢了,在软件上还要用操作系统来支持,这样,在51单片机上跑操作系统本就困难了,再上网就更加的难以实现了。那速度慢的难以相信。

5. 51单片机网站

这是我根据自己的单片机设计的程序。请根据自己的需要修改各个参数。
org 0000H
ajmp begin
org 000BH;时钟中断0入口
mov tl0,#00000B;每次中断设初值
mov th0,#110B
ajmp time0;转跳到定时器0子程序
org 0040H
begin:;初始化部分
;设置变量RAM位置
x equ 50H
y equ 51H
z equ 52H
times equ 53H;此变量是中断次数,只有中断250次,才能积累2M个机器周期,即1秒钟,
rtimes equ 54H
wtimes1 equ 55H
wtimes2 equ 56H
;设置字型码
mov 60H,#005H;0
mov 61H,#0DDH;1
mov 62H,#046H;2
mov 63H,#054H;3
mov 64H,#09CH;4
mov 65H,#034H;5
mov 66H,#024H;6
mov 67H,#05DH;7
mov 68H,#004H;8
mov 69H,#014H;9
mov 5FH,#0FEH;-
;设置各LED位数字的RAM单元
n8 equ 71H
n7 equ 72H
n6 equ 73H
n5 equ 74H
n4 equ 75H
n3 equ 76H
n2 equ 77H
n1 equ 78H
;设置数位选线的位置
l8 bit p3.0
l7 bit p3.6
l6 bit p3.5
l5 bit p3.7
l4 bit p3.1
l3 bit p3.2
l2 bit p3.3
l1 bit p3.4
;设置定时器
setb ea
setb et0
mov th0,#11111111B
mov tl0,#11111B
clr tr0
mov p3,#00H
start:;r2-小时/r3-分钟/r4-秒/r1是按键的值,无按键时为10H
mov r2,#00
mov r3,#00
mov r4,#00
;第3、6位显示横线“-”
mov n6,5FH
mov n3,5FH
main:;主程序
mov r1,#10H;r1赋10H,没按键
acall chcut;调用r2-r4值转换为字型码并存入n1-n8的子程序
acall show;扫描一遍LED
acall key;调用键盘扫描子程序(此程序在51dz提供的程序上略加修改,保留注释)
jb tr0,walkstop;若在走时,不允许调时,跳到walkstop
cjne r1,#4,s2;若r1不是4则跳到下一个计时部分s2(下同)
acall hinc;调用小时加1子程序
acall chcut
acall longdelay;调用长延时子程序
ajmp main;此次设置完成,跳到主程序
s2:
cjne r1,#5,s3
acall minc;调用分钟加1子程序
acall chcut
acall longdelay
ajmp main;此次设置完成,跳到主程序
s3:
cjne r1,#6,s4
acall sinc;调用秒加1子程序
acall chcut
acall longdelay
ajmp main;此次设置完成,跳到主程序
s4:
cjne r1,#7,s5
acall hdec;调用小时减1子程序
acall chcut
acall longdelay
ajmp main;此次设置完成,跳到主程序
s5:
cjne r1,#8,s6
acall mdec;调用分钟减1子程序
acall chcut
acall longdelay
ajmp main;此次设置完成,跳到主程序
s6:
cjne r1,#9,s7
acall sdec;调用秒减1子程序
acall chcut
acall longdelay
ajmp main;此次设置完成,跳到主程序
s7:
cjne r1,#0,walkstop
mov r2,#0;时分秒清0
mov r3,#0H
mov r4,#0H
acall chcut
acall longdelay
ajmp main;此次设置完成,跳到主程序
walkstop:
cjne r1,#11,s0
acall stop;调用停止走时子程序
ajmp main;此次设置完成,跳到主程序
s0:
cjne r1,#12,main
acall walk;调用开始走时子程序
ajmp main;此次设置完成,跳到主程序

;以下是子程序
show:;扫描子程序
mov p1,n8;将第8位数字型码送上P1(下同)
setb l8;使第8位LED亮
acall delay;调用扫描延时子程序
clr l8;使第8位LED灭
mov p1,n7
setb l7
acall delay
clr l7
mov p1,n6
setb l6
acall delay
clr l6
mov p1,n5
setb l5
acall delay
clr l5
mov p1,n4
setb l4
acall delay
clr l4
mov p1,n3
setb l3
acall delay
clr l3
mov p1,n2
setb l2
acall delay
clr l2
mov p1,n1
setb l1
acall delay
clr l1
ret

hdec:
cjne r2,#0,hdnext;如果小时不是0就到hdnext
jnb tr0,hskip;小时是0且tr0是0即不在计时,到hskip
acall warning;小时是0且tr0是1即在计时,就调用报警子程序
clr tr0;停止计时
ret;返回
hskip:mov r2,#100;小时是0又不在计时,就让r2赋100,到下一些条减1后就是59
hdnext:dec r2;如果小时不是0就到这里减1
ret

mdec:;分钟减1子程序
cjne r3,#00,mdnext;如果分钟不是0就到minext
mov r3,#60;如果分钟是0就到变为60,到下一些条减1后就是59
acall hdec;从小时退位
mdnext:dec r3;如果分钟不是0就到这里减1
ret

sdec:;秒减1子程序
cjne r4,#00,sdnext;如果秒不是0就到sdnext
mov r4,#60;如果秒是0就到变为60,到下一些条减1后就是59
acall mdec;从分钟退位
sdnext:dec r4;如果秒不是0就到这里减1
ret

hinc:;小时加1子程序
cjne r2,#99,hinext;如果小时不是99就到hinext
mov r2,#255;如果小时是23就到变为255,到下一些条加1后就是0
hinext:inc r2;如果小时不是99就到这里加1
ret

minc:
cjne r3,#59,minext;如果分钟不是23就到minext
mov r3,#255;如果分钟是59就到变为255,到下一些条加1后就是0
acall hinc;分钟满,向小时进位
minext:inc r3;如果分钟不是59就到这里加1
ret

sinc:
cjne r4,#59,sinext;如果秒不是23就到sinext
mov r4,#255;如果是秒是59就到变为255,到下一些条加1后就是0
acall minc;秒满,向分钟进位
sinext:inc r4;如果秒不是59就到这里加1
ret

chcut:;将r2-r4值转换为字型码并存入n1-n8的子程序
mov a,r2;小时值送Acc(下同)
mov b,#10;B赋10
div ab;AB相除,此时A是小时的十位,B是小时的个位
mov n7,b;小时的个位B送第七位数
mov n8,a;小时的十位A送第八位数
mov a,r3;分解分钟到第四、五位数
mov b,#10
div ab
mov n4,b
mov n5,a
mov a,r4;分解秒到第一、二位数
mov b,#10
div ab
mov n1,b
mov n2,a
;以下开始转换各数位的二进制数到字型码(第6、3位是横线,由定时器控制有无)
mov a,n8;第8位数送Acc(下同)
add a,#60H;Acc加60H,此时Acc中值所指的RAM地址中为第8位数的字型码
mov r0,a;Acc送r0
mov n8,@r0;r0间接地址送回n8
mov a,n7;转换第7位数
add a,#60H
mov r0,a
mov n7,@r0
mov a,n5;转换第5位数
add a,#60H
mov r0,a
mov n5,@r0
mov a,n4;转换第4位数
add a,#60H
mov r0,a
mov n4,@r0
mov a,n2;转换第2位数
add a,#60H
mov r0,a
mov n2,@r0
mov a,n1;转换第1位数
add a,#60H
mov r0,a
mov n1,@r0
ret

longdelay:;长延时子程序
mov r6,#0FFH
reshow1:acall show
djnz r6,reshow1
mov r6,#0FFH
reshow2:acall show
djnz r6,reshow2
ret

delay:;扫描延时子程序
mov r5,#40H
djnz r5,$
ret
ringdelay:mov r5,#0FFH
djnz r5,$
ret

time0:;定时器0子程序
push Acc;Acc压栈
mov a,times;已中断次数送Acc
inc a;次数加1
mov times,a;加1后送回次数变量
cjne a,#250,gotoend;如果Acc不是250说明不到1秒,跳过加秒操作
mov times,#0;是250说明到1秒了,次数变量清0
mov n6,#0FFH;第3、6位清除横线“-”
mov n3,#0FFH
acall sdec;调用秒减1子程序
ajmp next;退出
gotoend:cjne a,#125,next;若Acc不是125就退出
mov n6,5FH;若是125就给第3、6位显示5FH中的字型码横线“-”
mov n3,5FH
next:pop Acc;退出时,从栈中弹出Acc
reti;此程序中次数在0-124就不显示横线,在125-250就显示横线

walk:;开始走时子程序
setb tr0
ret
stop:;停止走时子程序
clr tr0
ret

warning:;报警子程序
;放入-FINISH-字型码
mov n8,#0FEH;-
mov n7,#02EH;F
mov n6,#0DDH;I
mov n5,#00DH;N
mov n4,#0DDH;I
mov n3,#034H;S
mov n2,#08CH;H
mov n1,#0FEH;-
mov wtimes1,#50;设置蜂鸣次数50次
res1:mov wtimes2,#08FH;一次蜂鸣开始
res2:clr p2.0;从此句开始蜂鸣器发声
mov p3,#0H;LED熄灭
mov r6,#5;扫描延时子程序延时太短,要重复5次
redelay:acall delay;此2句重复5次
djnz r6,redelay
setb p2.0
djnz wtimes2,res2;转到RES2让蜂鸣器发声,转wtimes2次,即8FH次
mov p3,#0H;从此句开始蜂鸣器不发声
mov r7,#08FH;LED扫描次数
reshow:acall show
djnz r7,reshow;LED扫描08FH次,即不发声延时
djnz wtimes1,res1;到RES1开始一次蜂鸣
finish:acall show;这两句使LED显示,并进入死循环
ajmp finish
key:mov p0,#00001111b;上四位和下四位分别为行和列,所以送出高低电压检查有没有按键按下
jmp k10;跳到K10处开始扫描,这里可以改成其它条件转移指令来决定本次扫描是否要继续,例如减1为0转移或者位为1或0才转移,这主要用来增加功能,确认上一按键功能是否完成?是否相当于经过了延时?是否要封锁键盘?
goend:jmp kend;如果上面判断本次不执行键盘扫描程序,则立即转到程序尾部,不要浪费CPU的时间
k10:jb p0.0,k20;扫描正式开始,先检查列1四个键是否有键按下,如果没有,则跳到K20检查列2
k11:mov p0,#11101111b;列1有键按下时,P0.0变低,到底是那一个键按下?现在分别输出各行低电平
jb p0.0,k12;该行的键不按下时,p0.0为高电平,跳到到K12,检查其它的行
mov r1,#13;如果正好是这行的键按下,将寄存器R0写下1,表示1号键按下了
k12:mov p0,#11011111b
jb p0.0,k13
mov r1,#15;如果正好是这行的键按下,将寄存器R0写下2,表示2号键按下了
k13:mov p0,#10111111b
jb p0.0,k14
mov r1,#0;如果正好是这行的键按下,将寄存器R0写下3,表示3号键按下了
k14:mov p0,#01111111b
jb p0.0,kend;如果现在四个键都没有按下,可能按键松开或干扰,退出扫描(以后相同)
mov r1,#14;如果正好是这行的键按下,将寄存器R0写下4,表示4号键按下了
jmp kend;已经找到按下的键,跳到结尾吧

k20:jb p0.1,k30;列2检查为高电平再检查列3、4
k21:mov p0,#11101111b;列2有健按下时,P0.0会变低,到底是那一行的键按下呢?分别输出行的低电平
jb p0.1,k22;该行的键不按下时p0.0为高电平,跳到到K22,检查另外三行
mov r1,#12;如果正好是这行的键按下,将寄存器R0写下5,表示5号键按下了(以后相同,不再重复了)
k22:mov p0,#11011111b
jb p0.1,k23
mov r1,#9
k23:mov p0,#10111111b
jb p0.1,k24
mov r1,#8
k24:mov p0,#01111111b
jb p0.1,kend
mov r1,#7
jmp kend;已经找到按下的键,跳到结尾吧(以后相同,不要重复了)

k30:jb p0.2,k40
k31:mov p0,#11101111b
jb p0.2,k32
mov r1,#11
k32:mov p0,#11011111b
jb p0.2,k33
mov r1,#6
k33:mov p0,#10111111b
jb p0.2,k34
mov r1,#5
k34:mov p0,#01111111b
jb p0.2,kend
mov r1,#4
jmp kend

k40:jb p0.3,kend
k41:mov p0,#11101111b
jb p0.3,k42
mov r1,#10
k42:mov p0,#11011111b
jb p0.3,k43
mov r1,#3
k43:mov p0,#10111111b
jb p0.3,k44
mov r1,#2
k44:mov p0,#01111111b
jb p0.3,kend
mov r1,#1
kend: ret
end

6. 有没有好的51单片机手机学习网站

OURDEV论坛,很好的地方,去逛逛,开源资料非常多,没有下载限制,非会员都能下载,不过相信你去了之后会注册的
http://www.ourdev.cn/bbs/bbs_list.jsp?bbs_id=1006
good luck!

7. 51单片机接入以太网的几种方案

1、MAC+PHY方案

所谓的TCP/IP协议栈是一系列网络协议的统称,不仅包括我们熟知的TCP协议和IP协议。

还有网络层的ICMP(Internet控制报文)协议、IGMP(Internet组管理)协议、ARP(地址解析)协议,传输层的UDP(用户数据包)协议,应用层的HTTP(超文本传输)协议、DNS(域名解析)协议、FTP(文件传送)协议、SMTP(简单邮件管理)协议等等。

传统的以太网接入方案由MCU+MAC+PHY再加入网络接口实现以太网的物理连接,通过在主控芯片中植入TCP/IP协议代码实现通信及上层应用。

应用这种软件TCP/IP协议栈方式实现的比较成熟方案有ENC28J60,CS8900A,DM9000,当然也有像STM32F107这类(内部自带MAC)+PHY等方案。

2、硬件协议栈芯片方案

由MCU+硬件协议栈芯片(内含MAC和PHY)直接加网络接口,便可方便的实现单片机联网,所有的处理TCP/IP协议的工作都是通过这位MCU的“小秘书”——硬件协议栈芯片来完成。

以太网芯片的内核由传输层的TCP、UDP、ICMP、IGMP等协议、网络层的IP、ARP、PPPoE等协议以及链路层的MAC构成,再加上物理层的PHY和外围的寄存器、内存、SPI接口组成了这一整套硬件化的以太网解决方案。

这套硬件TCP/IP协议栈代替了以往的MCU来处理这些中断请求,即MCU只需要处理面向用户的应用层数据即可,传输层、网络层、链路层及物理层全部由外围WIZnet的芯片完成。

这套方案从硬件开销和软件开发两个方面来简化前面所述的五层网络模型,简化产品开发方案。这样一来,工程师们就不必再面对繁琐的通信协议代码,只需要了解简单的寄存器功能以及Socket编程便能完成产品开发工作的的网络功能开发部分。

(7)51单片机网扩展阅读

以太网协议:

一个标准的以太网物理传输帧由七部分组成。

PR SD DA SA TYPE DATA FCS

同步位 分隔位 目的地址 源地址 类型字段 数据段 帧校验序列 7 1 6 6 2 46~1500 4

除了数据段的长度不定外,其他部分的长度固定不变。数据段为46~1500字节。以太网规定整个传输包的最大长度不能超过1514字节(14字节为DA、SA、TYPE),最小不能小于60字节。

除去DA、SA、TYPE14字节,还必须传输46字节的数据,当数据段的数据不足46字节时需填充,填充字符的个数不包括在长度字段里;超过1500字节时,需拆成多个帧传送。

事实上,发送数据时,PR、SD、FCS及填充字段这几个数据段由以太网控制器自动产生;而接收数据时,PR、SD被跳过,控制器一旦检测到有效的前序字段(即PR、SD),就认为接收数据开始。

8. 我想学习51单片机该去什么网站

学习单片机光看书是不行的,要与实物相结合,可以到淘宝上买一块开发版,也就几十到一百,配套的光盘里面都有视频讲解的。遇到不懂的问题可以在一些单片机Q群里面询问,也可以在论坛上查找问题。这类的论坛一抓一大把

9. 51单片机的官网是什么

虽然给不了你答案,还是要回答的。你所谓的51是哪个品牌的呢?如果省略的话应该指的是ATMEL,那么它的官网是http://www.atmel.com/。如果是其他的比如国产STC,你就网络一下品牌官网。

10. 如何学习51单片机上网技术

总体说来,TCPIP并不是一件十分神秘的事情,尤其是基于MCU的应用,不要求进行特别复杂的处理,很多情况下只需要实现最最基本的功能就行了。在实现MCU的TCPIP移植之前,必须对TCPIP有一定程度的了解,可以找一本合适的书籍来翻阅一下,《TCP/IP详解,卷1:协议》 http://www.laogu.com/display.aspx?did=510是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。 对于TCPIP在MCU上的应用并不要求对协议的所有部分都了解的那么清楚,重点需要了解TCPIP的各个层次的关系,链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在T C P / I P协议族中,网络层协议包括I P协议(网际协议),I C M P协议(I n t e r n e t互联网控制报文协议),以及I G M P协议(I n t e r n e t组管理协议)。 运输层主要为两台主机上的应用程序提供端到端的通信。在T C P / I P协议族中,有两个互不相同的传输协议: T C P(传输控制协议)和U D P(用户数据报协议)。T C P为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面, U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。这两种运输层协议分别在不同的应用程序中有不同的用途。应用层负责处理特定的应用程序细节。几乎各种不同的T C P / I P实现都会提供Telnet,FTP,SMTP 简单邮件传送协议,SNMP简单网络管理协议这些通用的应用程序。 各种类型的数据报格式也是需要了解的重点,使用Sniffer软件可以十分方便的在电脑上查看各种数据报的收发状态.同时Sniffer也是以后调试TCPIP协议寨的一个很有用的工具,Sniffer的使用方式可以在www.google.com上很方便的搜索到. TCP/IP的分层,以太网封装,IP首部,子网寻址和子网掩码,ARP地址解析协议,ICMP控制报文协议中的ECHO(Ping程序),UDP用户数据报协议,TFTP简单文件传送协议,特别是TCP传输控制协议是TCPIP在MCU上应用所必需掌握的关键知识. 在对TCPIP有了一定程度的了解之后,如何具体的实现就成了问题的关键,我在学习TCPIP的过程中前后一共使用或阅读了下面的3中TCPIP协议寨,这里有对3个协议寨的比较和下载地址. uIP,适合8bit单片机上使用,但是结构比较复杂,不适宜进行移植,也不是一份很适合阅读的代码.下载地址 http://www.sics.se/~adam/uip/ Lwip,适合16/32bit单片机上使用,是嵌入式系统开发人员最好的学习TCPIP的代码,下载地址 http://www.sics.se/~adam/lwip/ zLip,南开大学电子应用实验室编写的一个协议寨,有uip和lwip的优点,推荐初学者学习 http://www.zlmcu.com/project/ZLIP/zlip.htm或 http://www.laogu.com/display.aspx?did=859 在了解了具体实现之后,就有需要在MCU上具体的运行一下了,这里提供一个我做的硬件电路,但是其中我使用了GAL16V8芯片进行地址分配,所以需要有一个支持16V8的烧写器了,同时,如果将at89c55芯片换成sst89c58,并从www.sst.com公司网站上下载一个monitor 51的仿真监控程序,使用烧写器写入sst89c58中,就可以通过串口和Keil软件配合进行硬件仿真了.(市场上的那些100多元的51仿真器就是这个样子的)

阅读全文

与51单片机网相关的资料

热点内容
plc闪光电路编程实例 浏览:297
socket编程试题 浏览:201
华为的服务器怎么设置从光驱启动 浏览:867
程序员真的累吗 浏览:323
学信网app为什么刷脸不了 浏览:871
天蝎vs程序员 浏览:991
单片机下载口叫什么 浏览:186
程序员的道 浏览:924
云服务器不实名违法吗 浏览:556
怎样查看文件夹图片是否重复 浏览:993
文件怎么导成pdf文件 浏览:806
打开sql表的命令 浏览:101
安卓手机如何面部支付 浏览:37
天元数学app为什么登录不上去 浏览:822
明日之后为什么有些服务器是四个字 浏览:102
安卓系统l1是什么意思 浏览:24
服务器一直崩应该用什么指令 浏览:924
cm202贴片机编程 浏览:729
php构造函数带参数 浏览:179
解压电波歌曲大全 浏览:345