单片机编程群(单片机程序编程)

海潮机械 2022-12-14 10:21 编辑:admin 211阅读

1. 单片机程序编程

第一步、先安装AT89C51单片机的开发工具软件,如KeilUV2第二步、在Keil中创建51单片机的工程,并编写相应的控制代码,之后生成HEX文件第三步、打开51单片机专用的串口烧写工具软件,如STC_ISP,并设置型号以及其它参数第四步、用STC_ISP调入Keil生成的HEX文件,准备下载程序第五步、使用电脑的9针串口,并利用串口数据线连接至51单片机开发板,并将开发板通电第六步、先点击STC_ISP的下载按钮,之后再将开发板复位,开发板都有复位按键的哦至此,便可完成AT89C51单片机的程序烧写步骤了

觉得有用点个赞吧

2. 单片机程序编程编译软件

现在市面上有很多种类型的单片机,如果你是初学者建议学习51系列,这样的话网上的学习资源会后很多。

51单片机的编译软件现在最流行的是keil c51,你可以用这个软件进行编程和编译。单片机自身完成不了什么任务需要有外电路的配合,所以你需要购买一块51单片机开发板或者你如果嫌麻烦或者经济上不允许的话也可以用软件仿真,比如proteus 软件,它可以构建单片机的外围电路,让单片机完成一定的功能。

书店里有很多51单片机的书,网上也有很多电子版。建议你从51的汇编语言学起这样会对单片机内部的工作原理有一个较深入的了解。

3. 单片机程序编程题

#include

sbit M=P1^0;void delayms(unsigned char ms)

{

unsigned int i;

while(ms--)

{

for (i=0 ;i

}

}

main ()

{ unsigned char LED;

LED =0xff;

P1=LED;

while(1)

{ LED=0xe7;

P1=LED;

delayms(1000);

LED=0xdb;

P1=LED;

delayms(1000);

LED=0xbd;

P1=LED;

delayms(1000);

LED=0x7e;

P1=LED;

delayms(1000);

}

}

4. 单片机程序编程注意点

可以用复位引脚+简单的复位电路,

内部看门狗复位,

程序复位

可以和其它51单片机一样使用。

5. 单片机编程软件

vs是开发Windows平台软件用的,arm或者51属于单片机硬件,开发环境不是vs,可选择iar或者keil进行开发,但是,编程对象不同,用到的指令不一定相同,此外开发环境也是针对不同对象的。

比如iar有iar for 8051,arm,msp430,stm8等,keil也分keil c51和mdk两种

6. 单片机程序编程控制按键

//假设按键输入P1.0,P1.1,LED控制P2.0,都是低电平有效#include"reg51.h"sbitKEY0=P1^0;关灯按键sbitKEY1=P1^1;开灯按键sbitLED=P2^0;灯voidmain(void){LED=1;while(1){if(KEY0==0)LED=1;if(KEY1==0)LED=0;}}

7. 单片机程序编程,按下按钮全亮

你流水灯都写好了 全亮全灭还不简单啊,设置 P0=0X00 (假设低电平亮,高电平灭) 在延迟一下 在P0=0XFF 在延时 不就OK了 把这几个指令打包下放到一个子程序里 你用按键控制的时候就让按键执行这个子程序 如果是 主程序循环的 话就放进主程序

8. 单片机程序编程中STATUS EQU 30H是什么意思

EQU 跟变量申请差不多,比如 DIS EQU 30H 就是定义变量DIS的地址是30H,以后DIS操作相当于对寄存器30H的操作。0 SHL 4 好像没有什么实际意义,如果是1 SHL 4的话,还可以理解为1左移4位,但0左移4位意义不大。

9. 单片机程序编程进阶

从大一的时候在大学图书馆看到关于AVR单片机的书籍,到参加竞赛、工作,我和单片机已经打了六七年的交道了吧。其间我都是在做产品的软件开发,与硬件工程师合作,根据需求选择合适的单片机型号和外围器件,完成代码编写。积累了一点对单片机选型、特点的认识。

所以这篇想谈谈关于单片机特点和选型。

单片机

MCU,微处理器,他有很多名字,但是我还是喜欢叫他单片机,因为他就是单单的一片,没什么其他的模块,一片里面就集成了CPU,RAM、ROM等,冯·诺依曼必有的结构单元。只要外部给他晶振,给他电源,他就能像计算机一样工作起来。高级一点的单片机内部RC就能起振,外部晶振都可以免去,只要外部给个稳定的3.3V,就可以工作。

单片机设备做的可以有多小?看到老外玩的蚊子飞机,就知道了,大学的时候非常的震惊,也是这样,让我对飞行器着迷不已。

听过一个趣闻,就是为什么一个字节是8个BIT,而不是12个?据说是最早的芯片,因为工艺限制了,只能有八个引脚,想要更多的引脚怎么办,多用几个八脚芯片就好了,于是1个字节对应一个芯片,一个芯片的八个脚对应八个比特就顺理成章了。

计算机的技术从来都是往两个方向发展的,一个是计算速度快,资源多,同时可处理的事件多,相对应的,功耗大,体积大。一个就是计算速度慢,资源少,但是价格低廉,体积小,功耗低。

前者所发展而来的就是咱们的计算机,WINDOWS\LINUX操作系统,后者就是单片机系统了,各种嵌入式操作系统。手机的范畴有点迷了,我还是愿意把手机放在单片机系统这个层面来看。

在从业人数规模来看,前者发展出来的计算机,软件编程带动了多少人的就业,我们把这从事这职业的人叫做“码农”,他们的工作就是在前人对计算机一层一层又一层的封装下,进行针对应用的开发。顶层软件层的开发需要,促成JAVA、C#、PYTHON这样的语言出现,这些语言本身不涉及底层,只是调用底层的接口函数。显而易见的,想通过JAVA让计算机主板发出一个方波信号出来,是何等困难,但对应的是用JAVA在通用电脑屏幕上显示一串数字是何等的简单。

后者单片机,开发的人数就不如通用计算机了,单片机资源少,可用的“轮子”少,啥玩意都需要自己自力更生。能快速的发出方波,如果有DDS芯片的话,可以调制出正弦波,等等通用主机模块做不到的功能。更加的自定义!缺陷的话,显而易见的,想通过单片机在屏幕上显示一串HELLO WORLD字符,那得是进阶的人才能做到的咯!

所以单片机软件开发不是“纯软件”开发,也需要对硬件有相当的学习,对数字电路、模拟电路也要了解才行。这一行门槛高,很难速成,一定是慢慢积累~

是否“裸奔”

裸奔,顾名思义就是单片机穿不穿衣服?衣服是啥,操作系统呗!

选单片机的时候,根据需求不同,首先要选此单片机是否需要跑操作系统,还是裸奔。

· 当需要用复杂协议栈的时候,操作系统变得非常有用。

例如,希望咱们的单片机可以连互联网,通过网线联网,或者通过WIFI信号联网,那么多半需要运行操作系统,如果不跑操作系统也行,但是工作量很大,不稳定。

工程师需要比方案,咱们比比方案。

1 、开源的RTOS几乎都提供TCP/IP协议栈,社区的开源代码经过很多人,很多年的稳定运行。

2、自己写TCP/IP协议栈,嵌入到裸奔工程中,稳定性未知,BUG数量未知。

两个方案肯定选择前者,笔者自己试过在ENC28J60网卡芯片上自己硬刚协议栈,其中艰难不言而喻,到最后还是妥协选择开源社区。

·当需要运行多个复杂任务的时候,操作系统很有用

操作系统提供TASK机制,消息管理机制,如果上位机编程经验的人,对线程会有很深刻的理解,不同的TASK就是不同的线程。有了TASK机制,对任务的管理就会方便的多。好像安卓系统运行起来了,咱们可以用JAVA为他随时增加新功能,下个APK包,安装就好了,对吧。

什么时候,我会选择裸奔单片机?

裸奔有裸奔的好处,笔者怕黑。认为“上位机”开发人员之所以天天加班,有干不完的事,改不完的BUG,最大的原因就是“黑”。黑盒子太多了。黑盒子指的是一个程序块,这个程序块你压根不知道他是怎么实现的,你只知道他提供什么功能,至于自己是不是正确的调用了黑盒子的接口,你只能通过文档去看,然后就不断不断的试错,效率极低。所以很多时候大神上位机开发人员,是对黑盒子(某语言提供的对象、方法)有深刻掌握的人!

裸奔的单片机不一样,如果你愿意,启动时的汇编代码都可以自己写,配置好时钟,配置好各样的寄存器,所有的代码都是你自己写的,出了问题自己找,自己的代码还找不出原因,那就废了。如果你觉得C语言也是黑盒子,为了躲避C语言开发者给你留的坑,你甚至可以用汇编写代码,当然这个我不推荐了,C语言很棒,bug很少。裸奔开发,你眼前唯一的黑盒子就是硬件是如何实现的,也只有硬件能坑你一把。

不言而喻,裸奔的单片机代码,虽然简单,但是所能做的功能也会有局限。

裸奔的话,联网什么的别想了。

所以如果需求比较简单,一定裸奔,需求困难,就跑操作系统。

什么单片机支持操作系统?

理论上,只要ROM/RAM资源足够,所有的单片机都可以执行嵌入式操作系统,但是,不是所有人都有移植操作系统的能力。

新手还是得靠厂家帮你移植操作系统,所以选单片机的时候,得问一下,上网查一下,它支持哪些操作系统?

以TI的 CC2640为例,这玩意支持TI自家的嵌入式操作系统 TI-RTOS,好用!

裸奔的话,所有单片机都能裸奔,毕竟不穿衣服谁不会啊~

温度特性

注意要看设计产品的工作温度区间,是民用级,还是军工级,有些单片机芯片高低温实验过不了的,会出现代码起飞,内部FLASH莫名丢几个等这些问题,不要等代码写好,送去拿证了,过不了高低温,被老板骂~

低功耗特性

芯片是否有较好的休眠模式,老牌的芯片厂家都非常注重硬件低功耗模式,提出了各种各样的睡眠方式,TI就是把低功耗做的很好的厂家。如果是设计电池供电的产品,一定要考虑低功耗。低功耗更多需要代码去优化,这看一个软件工程师的水平~

一个纽扣电池,产品用一年,那就太牛了!

开发环境

喜欢IAR还是MDK?笔者喜欢IAR多一点,感觉界面很硬朗,MDK的话显得像是在写上位机软件~CORTEX Mx系列的单片机多半都是用MDK开发的,STM32算是明星级产品了。TI的产品大多是用IAR。所以哪个开发环境你更熟悉,也可以作为考虑范畴。

芯片是否冷门?

STM32的技术支持是真的多,资料满天飞,所以如果对自己读DATASHEET的能力有所怀疑的话,一定要选类似STM32这样的popular芯片。

选冷门芯片是对自己的很大挑战,你会发现百度问题几乎没人答,你得写英文e-mail给原厂工程师,满心欢喜克服语言困难写完,他也不会理你。你得翻墙去国外论坛找资料。但是一旦你开发好,你会成就感爆棚,也会觉得,单片机不过如此~然后写一些关于这个芯片的CSDN文章,帮助建设社区!

学生的话可以推荐尝试尝试,工作的就算了,都996了别升级007咯~

最近的状态

大学的时候,对单片机,对飞行器的热情,我都在年复一年,日复一日的工作中慢慢淡去了。现在我唯一想的就是努力把产品做好,卖到世界的各个角落,这也算change world的一种方式吧~嘿嘿,自己给自己熬点鸡汤,愿明天会好~

分享的这些,若是有用的话,点个赞呗~

10. 单片机程序编程文件

1,keil中,需要把写好的代码程序生成HEX文件,在 keil软件的菜单栏中的点击Project--Options for target选项。

2,在Options for target对话框中,切换到Output选项卡,勾选Create HEX file t选项,点击确定,如果没设定生成的HEX的目录,生成的HEX文件与工程文件在同一个目录。

3,电脑与烧写工具或者开发版进行连接,这里以开发版为例,打开STC-ISP软件,点击单片机型号栏下三角,选择对应的单片机型号。

4,点击扫描,会自动选择已连的COM串口,如果没有扫描出来,观察驱动是否安装成功,并重新安装。

5,点击打开程序文件,选择刚生成好的HEX文件,如果有EEPROM文件的,也要在EEPROM项中同时选上并打开。

6,点击下载/编程,稍微等待,关闭电源开关,重新上电,等待提示区提示操作成功,代表程序代码已成功下载到单片中。

7,最终可以看一下,单片机开发版运行起来效果,花样的闪烁,已成功运行keil中代码。

11. 单片机程序编程失败

分两种情况:1、做一个真正的USB键盘,这种设计基本上不涉及大量的软件编码。2、做一个模拟的USB键盘,实际上可以没有按键功能,这种的需要考虑大量的软件编码,实际上是一个单片机。第一种设计:买现成的USB设备芯片,然后焊好就可以了,几乎没听说过谁自己从零开始做USB设备芯片的,首先晶振之类的如何满足要求就是一个问题。基本原理就是按键,转换扫描码,写入寄存器,然后等主机那边去读就可以了。主机端实际上不需要做什么设计,因为键盘属于标准的class设备,都是自带驱动的。第二种设计:首先要找到一个支持OTG的单片机(板子),编写完整的USB Device Stack(大概几万行),定义好USB描述符(Descriptor)和HID描述符(Windows需要),然后等待主机的中断传输请求即可。每次把需要发送的扫描码(scan code)写到中断传输的缓冲区里,让device stack把数据发送走即可。至于硬件信号部分,这些都是USB控制器(简称控制器,下同)集成的,如果说你要自己写一个控制器,那么需要的技术就太复杂了,全球也没有多少厂商能弄出来自己的控制器。做控制器需要熟练背诵USB2.0技术规范以及EHCI/UHCI/OHCI技术规范。---------------------既然问具体怎么做,那么我也补充一些吧---------------------首先,需要一个支持OTG或者USB Device工作模式的板子/芯片/模块。板子可大可小,可以是工业级的带OTG的板子,也可以是小小的只有一个单片机的那种。小的那种我没有用过,我就说大的。OTG的意思可以大概

理解为这个USB口既可以作为主机口接设备,也可以作为设备接入主机,新一点的手机都带这个功能。我所知道的OTG控制器有Mentor Graphics的,还有Freescale有一些板子也支持。找到这样的板子,然后就是找代码了,Linux里实际上就有这样的代码,比如Mentor Graphics的控制器驱动的代码在:linux-3.7.1\drivers\usb\musb,这里,当然如果你用的是别的版本的Linux,在相应的位置也能找到代码。不知道Linux源码从哪里找?传送门:The Linux Kernel Archives

有了代码,你还需要U-boot或者其它的东西去启动这个板子,同时要使用对应的交叉编译器,应该是arm的交叉编译器。于是,板子能起来了,接到主机(比如PC上)也能识别出来一个“未知设备”了,剩下的工作就是给这个未知设备写驱动。首先,要通过控制器代码去编写相关的USB设备描述符,PC能识别各种设备都是靠描述符,对此,需要先了解USB技术规范:《Universal Serial Bus Specification Revision 2.0》

,这个百度一下就能下载,但是全英文的,我见过中文的,但翻译的很糟糕并且不全。在此技术规范的章节:9.6.1 Device

里有详细描述了USB设备描述符的信息。具体怎么把描述符写到驱动里,这个我不是特别清楚,所以只能说你要自己看代码了。有了设备描述符,实际上还有很多别的描述符要设置,比如接口描述符、配置描述符等等,这些规范里都有,需要一一阅读。有了这些,你只是制造了一个USB设备,但Windows还不认账,此时,需要设置HID描述符,因为键盘输入HID设备,关于HID的描述也有技术规范《Device Class Definition for Human Interface Devices (HID) Version 1.11》

,同样没有中文的。然后,你就可以根据这个规范发送对应的中断传输(interrupt)信号,就可以跟主机通信了。然后具体你想模拟哪个按键,需要发送对应的扫描码,具体的内容参考这里:Scancode

,扫描码的介绍是有中文的,找到以后,你就可以很开心的发送键盘按键信息了。然后,就完事了,难度就是要阅读很多技术规范,以及大量的代码。当然,某些商用的嵌入式系统

自带USB设备模拟驱动,如果有钱(很贵的),买一套成品过来,找一个板子就可以了。