手把手教你C51单片机(史上最详细)

前期准备:

        首先,我们需要准备开发51单片机的软件或者开发板

        在这篇文章里,我们会用到Keil uVision5来作为我们写代码的地方

        然后需要一个注册机来破解我们的Keil5

        还需要STC-ISP(版本v6.86)来导入我们的HEX文件到开发版上

        这些我都上传到百度网盘上了:

                https://pan.baidu.com/s/103tXH_TqyoVK9SgnrLH9Cw

                (提取码是8952)

                下载到你的电脑里,最好把杀毒软件提前关掉,不然有可能会误删文件

        另外,开发板需要自己买,通常在淘宝上搜索“51单片机开发板”就能买到,要买普中科技的

        这是我的开发板,供参考:

        这样一个开发板外加一条USB连接线,用于和电脑进行连接

下载并破解Keil:

        首先,打开c51v954.exe,这是安装程序,下面跟着我一步步来

        1.点Next:

        2.勾选左下角的框框,然后再点Next:

         3.选择一个路径,通常不要改,默认就好了,然后点Next

         4.图中有4个输入框,随便填,填什么都行,然后点Next

        5.这个时候Keil就开始下载了,  慢慢等就行了,  完成之后点Next和Finish, Keil就安装好了

         此时你的桌面上按理来说应该会出现一个快捷方式,  双击它就能打开Keil了

        但是通常来说此时还是没有注册好的,  所以接下来的步骤就是破解了

        1.点击File->License Management,  然后会出现一个窗口,  在右上角找到CID,  然后复制

        

        2.打开我们的注册机,  就是KEIL_Lic.exe,  双击,  然后把CID复制进去,  然后点Generate

       3. 然后框框里就会出现一串字符,   把它复制到这里,  点Add LIC,  最后点Close,  就完成了

 正片开始:

        准备了这么久,  我们终于可以开始写代码了,  我先教大家怎么新建一个工程

        1.打开Keil点击Project->New uVision Project, 然后在一个路径里存文件, 文件名自由选择        

         2.此时出现一个框框,  让我们选择单片机的型号,  在搜索框搜索AT89C52,  然后点OK

        

      3.出现一个小框,  显示是否要添加STARTUP.A51,  我们点否

      4.工程建好了, 我们要添加一个写代码的文件,  点击Target 1的加号,  出现一个Source group 1

        5.右键Source group 1,  点击Add New Item To"Source group 1"

        

        6.点击C File(.c),  然后在Name里输入main,  最后点Add

         写代码的文件就创建好了!

开始写代码 :

        现在就可以开始写代码了

        这篇文章的目标是点亮一个LED灯

        板子上的这一块就是LED灯了:

                

        板子上的每一个位置都会有一个端口,  这个LED的端口就是P2

        因为有多个LED灯所以这个端口还可以划分成P2_0,  P2_1, P2_2等等

        这篇文章要点亮的是P2_0

        看看程序该怎么写吧 :

#include <REGX52.H>

void main(){
	P2_0=0;
	while (1);
}

        有一定C/C++基础的人一定知道#include <REGX52.H>是什么意思,  就是导入一个库

        这个库包含了一个变量P2_0,  这样我们更容易去控制LED灯

        void main()就是主函数,  就是你操作单片机的地方

        P2_0=0;的功能就是点亮LED, 0代表点亮,  1代表不亮

        while (1)的作用是不让程序这么快结束,  没有这个的话,  灯就会点亮一瞬间就没了

        把代码放入Keil中:

        接下来要设置程序编译的时候产生HEX文件的作用

        点击这个图标:

        然后点Output->勾选 Create HEX file,  最后点OK

        这样程序在编译的时候就能创建HEX文件了

        点这个图标编译:

         编译后如果显示0 error, 0 warnings,  就代表你成功了

        

使用STC-ISP把HEX文件导入到板子里:

        打开STC-ISP:

        

        把单片机型号改成STC89C52RC/LE52RC

        接着用USB线把电脑和单片机连接起来

        然后把串口号改成有USB的那个 (每个人的单片机串口号不一样,  我的是COM3) 

        

        STC-ISP就设置好了,  然后点打开程序文件,  在Object里面有一个HEX,  文件,  双击就行了

        最后,  点击下载/编程 

      

         此时会显示: "正在检测目标单片机..."

        这个时候我们按下单片机上的启动按钮,  LED就亮了

        

        完

本目录下提供的是《手把手你学51单片机(C语言)材中所有例程与作业习题的源代码。 请将整个目录复制到电脑硬盘上使用,如直接在光盘路径下打开工程可能会导致软件报错。 运行目录下的Clean.bat可以清理程序编译过程中产生的中间文件和临时文件。 lesson2 (第2章): 点亮一个LED示例,所在章节2.4 lesson3 (第3章): LED闪烁示例,所在章节3.5 lesson4 (第4章): 4_1:用P0口控制LED的示例,所在章节4.8 4_2:用P0口控制实现流水灯效果,所在章节4.8 4_t4:作业题4,逐次右移的流水灯效果,所在章节4.9 4_t5:作业题5,左右往复移动的流水灯效果,所在章节4.9 lesson5 (第5章): 5_1:基于定时器查询模式的LED闪烁,所在章节5.2.3 5_2:静态点亮数码管的某几段,所在章节5.3.2 5_3:数码管静态显示一位字符,所在章节5.3.3 5_t3:作业题3,定时器查询模式实现左右移动的流水灯,所在章节5.4 5_t5:作业题5,变更lesson5_3的正计数为倒计数,所在章节5.4 lesson6 (第6章): 6_1:数码管动态显示原理示例(if...else if...语句示例),所在章节6.4 6_2:数码管动态显示原理示例(switch...case...语句示例),所在章节6.4 6_3:基于中断带消隐的数码管动态显示示例,所在章节6.5 6_t4:作业题4,在lesson6_3多位数字显示的基础上不显示高位的0,所在章节6.6 6_t5:作业题5,变更lesson6_3的正计数为倒计数,所在章节6.6 lesson7 (第7章): 7_1:基于数码管计时程序的静态变量演示,所在章节7.2 7_2:点亮LED点阵上的一个点,所在章节7.3 7_3:点亮LED点阵上的一行,所在章节7.3 7_4:点亮LED点阵上的全部点,所在章节7.3 7_5:LED点阵显示静态图形,所在章节7.4 7_6:LED点阵显示纵向移动的动画,所在章节7.5.1 7_6_h:LED点阵显示横向移动的动画(掉转板子方向的取巧方式),所在章节7.5.2 7_7:LED点阵显示横向移动的动画,所在章节7.5.2 7_t3:作业题3,lesson7_6的向上移动改为向下移动,所在章节7.6 7_t4:作业题4,lesson7_7的向左移动改为向右移动,所在章节7.6 7_t5:作业题5,基于LED点阵的9~0倒计数,所在章节7.6 7_t6:作业题6,独立LED、数码管、点阵LED同时全亮,所在章节7.6 lesson8 (第8章): 8_1:基于数码管计时程序的函数调用演示,所在章节8.2 8_2:按键基本原理演示例程,所在章节8.4.3 8_3:独立按键扫描原理演示例程,所在章节8.4.3 8_4:独立按键消抖原理演示例程,所在章节8.4.4 8_5:独立按键扫描并消抖的演示例程,所在章节8.4.4 8_6:矩阵按键扫描并消抖的演示例程,所在章节8.4.5 8_7:基于矩阵按键和数码管实现的简易加法计算器,所在章节8.5 8_t4:作业题4,变更lesson8_5的递增计数为递减计数,所在章节8.6 8_t5:作业题5,在lesson8_7基础上实现简易加减计算器,所在章节8.6 lesson9 (第9章): 9_1:步进电机驱动的基础示例,所在章节9.3.3 9_2:步进电机转动任意角度的示例,所在章节9.3.4 9_3:实用的步进电机驱动示例,所在章节9.3.5 9_4:按键控制步进电机转动的示例,所在章节9.3.6 9_5:蜂鸣器驱动的基础示例,所在章节9.4 9_6:蜂鸣器演奏简单乐谱——“两只老虎”,所在章节9.4 lesson10 (第10章): 10_1:基于数码管显示的数字秒表,所在章节10.1 10_2:基于PWM方式控制LED的亮度,所在章节10.2 10_3:基于PWM方式控制LED实现呼吸灯效果,所在章节10.2 10_4:交通信号灯示例,所在章节10.3 10_5:长短按键/连续按键功能实现示例,所在章节10.5 10_t3:作业题3,数码管计时与流水灯同时运行的示例,所在章节10.6 lesson11 (第11章): 11_1:普通IO口模拟实现串口通信的示例,所在章节11.4 11_2:单片机硬件UART查询方式实现串口通信的示例,所在章节11.5.3 11_3:单片机硬件UART中断方式实现串口通信的示例,所在章节11.5.3 11_4:UART串口通信及控制数码管显示的示例,所在章节11.6 11_t5:作业题5,UART串口控制流水灯流动和停止,所在章节11.7 11_t6:作业题6,UART串口控制蜂鸣器的开关,所在章节11.7 lesson12 (第12章): 12_1:指针作为函数参数的示例,所在章节12.1 12_2:指向变量的指针与变量关系的示例,所在章节12.2 12_3:指针、字符串、字符数组、ASCII码演示示例,所在章节12.3 12_4:1602液晶基本操作演示示例,所在章节12.4 lesson13 (第13章): 13_1:1602液晶显示两行字符串,并实现整屏的重复左移,所在章节13.2 13_2:多c文件示例,1602液晶显示两行字符串,并实现整屏的重复左移,所在章节13.3 13_3:整型数为操作数的简易+-*/计算器,所在章节13.4 13_4:基于帧模式的实用串口程序示例,所在章节13.5 13_t2:作业题2,1602液晶显示两行字符串,并实现整屏的重复右移,所在章节13.6 lesson14 (第14章): 14_1:寻址I2C总线上存在的和不存在的地址,将应答状态显示到液晶上,所在章节14.2 14_2:用单字节读写模式访问EEPROM,每次+1后写回,所在章节14.3.1 14_3:用多字节读写模式访问EEPROM,依次+1,+2,+3...后写回,所在章节14.3.2 14_4:用连续读与分页写模式访问EEPROM,依次+1,+2,+3...后写回,所在章节14.3.3 14_5:读取EEPROM中的数据显示到液晶,并可通过UART修改EEPROM中的数据,所在章节14.4 14_t3:作业题3,以lesson10_4为基础实现可通过UART设定时间的交通灯示例,所在章节14.5 14_t4:作业题4,基于液晶、按键、EEPROM的密码锁示例,所在章节14.5 lesson15 (第15章): 15_1:用单次读写模式访问DS1302,并将日期时间显示在液晶上,所在章节15.3.4 15_2:用突发读写模式访问DS1302,并将日期时间显示在液晶上,所在章节15.3.5 15_3:DS1302实现简易电子钟,通过按键校时,所在章节15.5 lesson16 (第16章): 16_1:接收NEC协议的红外编码并将用户码和键码显示到数码管上,所在章节16.3 16_2:控制DS18B20测量温度并将温度值显示到液晶上,所在章节16.4 16_t2:作业题2,用遥控器控制步进电机正反转,所在章节16.5 16_t4:作业题4,带温度显示的电子钟,所在章节16.5 lesson17 (第17章): 17_1:将模拟输入通道0、1、3的电压值显示到液晶上,所在章节17.4 17_2:由按键控制DA输出可调电压值,所在章节17.6 17_3:由按键控制DA输出可变化的波形,所在章节17.7 17_t3:作业题3,可调频率的信号发生器,所在章节17.8 lesson18 (第18章): 18_1:RS485基本示例,接收任意数据帧并添加回车换行后送回,所在章节18.1 18_2:基于RS485的Modbus通信示例,支持寄存器读写操作,所在章节18.3 18_t3:作业题3,基于Modbus协议实现电子钟校时,所在章节18.4 lesson19 (第19章): 19_1:多功能电子钟例程,所在章节19.4
  Keil C51开发系统基本知识Keil C51开发系统基本知识   1. 系统概述   Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。   Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。   2. Keil C51单片机软件开发系统的整体结构   C51工具包的整体结构,如图(1)所示,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。   使用独立的Keil仿真器时,注意事项   * 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。   * 仿真器上的复位按钮只复位仿真芯片,不复位目标系统。   * 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。 注:祝大家好好学习,天天向上。
学习单片机C程序设计是一项具有挑战性但也非常有趣的任务。下面我将用手把手的方式来你学习单片机C程序设计的程序。 首先,你需要准备一款可以编写C程序的单片机开发板。常见的单片机开发板有Arduino、Raspberry Pi等。选择一款适合你的开发板,并确保你已经安装了相应的开发环境,如Arduino IDE或Raspberry Pi OS。 接下来,我们来学习C语言的基础知识。你可以通过阅读C语言程书籍或在线资源来学习C语言的基本语法、数据类型、运算符等。掌握好这些基础知识对于后续的单片机C程序设计至关重要。 然后,你可以从简单的实例开始编写C程序。比如,点亮一个LED灯或在LCD屏幕上显示一些文字。你可以通过查阅开发板的说明书来了解如何连接电路和控制IO口,并通过C编程来实现你的想法。 在你编写C程序的过程中,要注意一些常见的编程技巧和注意事项。比如,要注意变量的声明和作用域、函数的调用和参数传递、循环和条件语句的使用等。此外,还需要学会调试和排除程序中的错误,这对于程序的正确运行至关重要。 后,为了提高自己的编程能力,你可以尝试解决一些更复杂的问题或挑战。比如,设计一个温度监测系统或一个遥控车。通过不断地学习和实践,你会逐渐掌握单片机C程序设计的技巧和方法。 总之,学习单片机C程序设计需要耐心和实践。通过手把手学,你可以逐步学习和掌握相关知识,并在实践中不断提升自己的编程能力。祝你学习愉快!
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值