郭天祥十天学会单片机(完全版)
郭天祥之十天学会单片机视频配套程序-实用!
郭天祥之十天学会单片机视频配套程序-实用! Lesson1作业1、用位操作点亮第一个发光管.适用TX-1C单片机实验板晶振为11.0592M/*********************************************************/ #include<reg52.h> //52单片机头文件sbit led1=P1^0; //单片机管脚位声明void main() //主函数{led1=0; //将单片机P1.0口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。
}2 、用总线操作点亮第一个发光管./*********************************************************/ #include<reg52.h> //52单片机头文件void main() //主函数{P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110 while(1); //程序停止在这里,在后面会讲到为什么这样写。
}3、用位操作点亮最后一个发光管./*********************************************************/ #include<reg52.h> //52单片机头文件sbit led8=P1^7; //单片机管脚位声明void main() //主函数{led8=0; //将单片机P1.7口清零while(1); //程序停止在这里,在后面会讲到为什么这样写。
} 4、用总线操作点亮最后一个发光管./*********************************************************/ #include<reg52.h> //52单片机头文件void main() //主函数{P1=0x7f; //将单片机P1口的8个口由高到低分别赋值为01111111 while(1); //程序停止在这里,在后面会讲到为什么这样写。
郭天祥学习经历--强烈推荐
在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。
因此,在这里我要感谢哈尔滨工程大学的历任领导,我今天成绩的取得得益于他们不断完善的教育体制;衷心地感谢曾经教导过我的刁鸣教授、付永庆教授、王松武教授,没有他们对我的培养,也就没有我的今天。
同时我也希望能有更多的电子爱好者加入创新实验室,在完善自我的同时,在电子行业做出更突出的业绩。
2007年,我以全新的教学方式推出了一套讲述51单片机的教学视频课程——“十天学会单片机”,该视频自从网上发布后,得到了电子爱好者的一致好评,诸多的单片机初学者通过这套视频走上了单片机开发之路。
有很多学员来信或打电话希望我能够将视频中的内容著书出版,让更多的人受益。
为此,从2007年9月至2008年7月,我用了近十个月的时间将本书写完。
本书的写作风格与我在教学视频中的讲课风格相似,它与传统讲授单片机的书籍完全不同,我以学单片机“过来人”的思路,抱着如何才能更容易掌握单片机的态度,理论与实践完全结合的方式清晰地讲解了单片机部分。
其余大部分内容为我多年做项目的经验积累,也有部分内容来自于网络电子高手们的精华总结,应当说,在本书中有太多的知识是大家平时在书本上学不到的。
在这里,先将我在大学期间的学习和生活经历与大家分享,借此鼓舞大家珍惜大学时光,多学习文化知识,开创更加美好的明天。
我的大学写这篇文章的时候,我正处于硕士研究生毕业论文的准备阶段,眼睁睁看着我的大学生活即将画上句号,再看看身边有很多低年级的学生们一天天把时间白白荒费掉,我在心里替他们惋惜,在即将结束我的大学生活之际,我将我的大学几年的有意义的生活与大家分享,看过这篇文章后也许能让那些有梦想的同学为了实现自己的人生目标少走些弯路,大家要相信,大学校园——将为你提供一生最好的学习环境。
单片机百度盘资料
一、51单片机1、祥云51单片机学习光盘(视频教程、例程、操作系统)适合初学者资料下载链接:https:///cJzLQdrBfp2KD 访问密码8f772、普中51单片机学习光盘/s/1pK0c4BL3、郭天祥----十天征服单片机/s/1i4N2Hrn4、新概念51单片机C语言教程.入门、提高、开发(500页,郭天祥著)https:///cYAYJtgFJNUup 访问密码9eb15、力天电子51单片机视频教程/s/1hrulifU6、天狼星51单片机视频教程链接:/s/1pKsD3b9 密码:scy48、STC12C5A60S2例程https:///cjPpH7uBBbIr8 访问密码a471二、AVR单片机1、郭天祥--十天学会AVR单片机视频教程https:///cwVbV5mWw9pxk 访问密码34ba1、锐志电子AVR单片机视频教程https:///cweRHU4JUSypY 访问密码64b22、手把手AVR单片机视频教程https:///cm926G3YrWKhG 访问密码dccb3、DY_miniAVR单片机光盘资料https:///c3fIFUrWu4LEG 访问密码00364、AVR代码生成器https:///c3fILqj5h3aT9 访问密码20615、AVR开发工具https:///c3fI3satMGmSh 访问密码d3566、AVR例程https:///c3fIFfSgCzhWE 访问密码48c1三、msp430单片机1、郭天祥---十天学会msp430单片机https:///cYAYvyxDBaHgr 访问密码4dca2、力天msp430单片机视频教程https:///cYAY83HwRumTn 访问密码d66c3、msp430 c语言.pdfhttps:///cYAY577Ucc7b2 访问密码86b34、msp430教程.pdfhttps:///cYAYtXwXYesgC 访问密码ccbf5、IAR C 430标准库函数.pdfhttps:///cYAYnInwURHZx 访问密码52ef四、PIC单片机1、郭天祥--十天学会pic单片机https:///cYAYDyx2Zydsi 访问密码af9b2、王伟民pic单片机教程https:///cYAYz37WLEaYZ 访问密码2312五、STM32嵌入式教程1、正点原子《手把手教你学STM32-M3》-基于正点原子战舰STM32开发板/s/1hqOsK6K2、正点原子《手把手教你学STM32-M4》-基于正点原子探索者STM32F4开发板/s/1hqOsK7q3、正点原子 UCOS/EMWIN/LWIP视频-基于正点原子STM32开发板/s/1qWsXTfu4、mini基础板视频教程光盘链接:/s/1hqVhZdq 密码:rhab5、stm32历程链接:/s/1jH0maay 密码:hcy26、众想单片机stm32视频教程链接:/s/1hrwmnRY 密码:rb887、李想stm32视频教程链接:/s/1jGZN9kE 密码:m9668、红龙stm32开发板光盘链接:/s/1i4mGYqT 密码:uc5v9、stm’32清晰教程链接:/s/1bogN6Gn 密码:p7pt10、stm32官方文件链接:/s/1c1gfzva 密码:s2gs11、stm32资料pdf资料总汇(20)篇/s/1gdTioq3/s/1eQQ2qPG/s/1i4iDiYh/s/1o7avuCq/s/1gdNIv79/s/1dDTmnRz/s/1mhyggcS12、基于嵌入式实时操作系统的程序设计技术_周航慈_北航.pdf/s/1dEmOZBz13、任哲-嵌入式实时操作系统μCOS-II原理及应用.pdf/s/1jHyjZOM14、嵌入式操作系统uCOS-II(第二版)/s/1dEkhscD15、ucos2经典讲解/s/1o7bHpbG16、邵贝贝ucos操作系统全书.pdf/s/1sklKEz717、零死角玩转stm32-系统篇(uCOS-II)/s/1mhazyQk18、ucosii学习文档集/s/1jGRadIQ六、ARM7、ARM9视频教程1、郭天祥ARM7视频教程https:///cwVbAjCw9JL95 访问密码627d2、郭天祥ARM9视频教程https:///cYARicupI5tjL 访问密码1f283、郭天祥郭天祥CPLD视频教程https:///cwVbfP2dTEeRq 访问密码f955七、CORTEX—A内核arm教程1、基于cortex-a内核的指令链接:/s/1c1qURXe 密码:zux42、国嵌学院cortex-a嵌入式视频全集(内部视频)链接:/s/1pKwEjLh 密码:mc9r3、wince6.0镜像链接:/s/1dEuq3uT 密码:14ww4、wince6.0源码链接:/s/1i4ymmdn 密码:fpb0 5、vs2005链接:/s/1boiP2Bd 密码:7spr 6、QT视频教程链接:/s/1i4fpok1 密码:o4q3 链接:/s/1c0ZtQbI 密码:fwkq 7、QT在Android下编程教程链接:/s/1geft1Z1 密码:z2gq 8、cortex-a下游戏安装集链接:/s/1o84B9WY9、天嵌210光盘资料10张(视频、源码、电路)链接:/s/1boCjt5110、andriod资料链接:/s/1i42VQSH 密码:7fbg 11、windows下资料链接:/s/1i4bRBoT 密码:nqan 12、linux操作系统资料链接:/s/1behIfc 密码:c13n 13、wince操作系统资料/s/1YHVRK14、ARM64-zip链接:/s/1sk1Z6Mx 密码:7uc3 15、QT源码包链接:/s/1boj5ptt 密码:w9bv 16、linux源码包链接:/s/1geyWgPd 密码:qz8z 17、linux开发工具链接:/s/1qXaXmB6 密码:n5ka八、其他资料1、AD6.9 PCB设计教程(15G)https:///cjGM4TkItmeCH 访问密码6e71 2、autocad视频教程https:///cHP5pRjnFbYEA 访问密码ea0d 3、C++课件https:///c3WZYx7h56wZW 访问密码62f8 4、c语言参考手册https:///cjGMTU6WgxQs8 访问密码65a2 5、protel99视频教程https:///c3FHH4rSdp8pH 访问密码1011 6、protues8视频教程https:///cwVbKL73tJtkT 访问密码068e链接:/s/1TYmHg 密码:5l5m 7、SolidWorks视频教程(初级、高级)https:///cYABpMI5Yu4a5 访问密码fc708、VC++视频教程https:///cYABNBtWUfziZ 访问密码71479、zigbee文档资料视频教程https:///cYABipqm9VmTS 访问密码737c10、zigbee-cc2530光盘资料链接:/s/1nubduNf 密码:h6n211、zigbee组网、栈协议教程链接:/s/1nubduNf 密码:h6n212、常用74芯片、电阻、电容、电感、三级管、运放等资料集https:///cYA6ghmYJRUMN 访问密码5449https:///cYA6sTMXiCpEg 访问密码86f4https:///cYA6AztRiuDHN 访问密码8129https:///cYA6fkEyFb9qS 访问密码bd7ahttps:///cYA6KVtPtzN8R 访问密码751a13、VB资料文档+视频教程https:///cYA6Jt5cHvJtJ 访问密码31a514、matlab教程文档+视频https:///cYA6Z4ZneS92Y 访问密码bc3615、瑞萨开发板光盘-电子设计大赛专用https:///cctk6idf8A7HZ 访问密码b92516、你必须知道的495个C语言问题高清PDF中文版全书https:///cYA6QyFqqhcqq 访问密码ee8a 17、电路设计技术与技巧第二版高清晰pdf中文版https:///cYA6cfvbcMtHY 访问密码fcaf 18、战舰-GSM短信模块教程资料链接:/s/1qXaXmIo 密码:e2vk 19、语音模块资料https:///cYA6LifVjRi2n 访问密码0a2920、无线通信模块资料https:///cYA63EabvaH6J 访问密码9eac 21、指纹识别模块资料https:///cYA6r3jtbJKYT 访问密码e9b0 22、顺平linux视频教程(内部)链接:/s/1nuzzQGx 密码:521t 23、jave零基础视频教程链接:/s/1boh3v6B 密码:bqux 24、大数据学习资料链接:/s/1kUtyzPH 密码:miv2 25、android手机端编程视频教程链接:/s/1skiwKOH 密码:rriv 26、陀螺仪-飞控-四旋翼-电路仿真mulitism资料链接:/s/1c1mQU8S 密码:d0e6。
十天学会单片机非常完整版 轻松学51单片机
其运算符为“+”。 “或”运算规则如
下:
0+0=0,
0+1=1+0=1, 1+1=1
3. “非”运算
“非”运算是实现“求反”这种逻
辑的一种运算,如变量A的“非”运算 记作 A 。 其运算规则如下:
1 0, 0 1
4. “异或”运算
“异或”运算是实现“必须不同,
总线(BUS)是计算机各部件之间传送信息的公共通道。 微机中有内部总线和外部总线两类。内部总线是CPU内部之 间的连线。外部总线是指CPU与其它部件之间的连线。 外 部总线有三种: 数据总线DB(Data Bus), 地址总线 AB (Address Bus)和控制总线 CBControl Bus)。
• 五个中断源的中断控制系统; • 一个全双工UART(通用异步接收发送器)的串行I/O口,用 于实现单片机之间或单片机与微机之间的串行通信; • 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。 最高振荡频率取决于单片机型号及性能。
C51知识
• C语言是一种编译型程序设计语言,它兼顾了多种高级语 言的特点,并具备汇编语言的功能。目前,使用C语言进 行程序设计已经成为软件开发的一个主流。用C语言开发 系统可以大大缩短开发周期,明显增强程序的可读性,便 于改进、扩充和移植。而针对8051的C语言日趋成熟,成 为了专业化的实用高级语言。
单板机
单片机
单片机能做什么
• • 1. 2. 3. 4. • 实物展示 用到单片机的项目经验介绍 手持粮库温度寻检设备 毕设答辩打分器 电话台灯 自动感应水龙头 凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根 据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳, 80C51,arm等
郭天祥新概念51单片机C语言教程例题Word版
目录例2.2.1 编写程序,点亮第一个发光二极管(part2_1.c P27 ) .................. - 4 -例2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.c P42) ............................................................................................. - 5 -例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。
(part2_4.c P48) .................................................................................................................................. - 5 -例2.7.1编写程序使第一个二极管以亮200ms、灭800ms的方式闪动。
(part2_5.c P49) ........................................................................................................................... - 6 -例2.8.3利用C51自带库_crol_(),以间隔500ms,实现流水灯程序(part2_6.c P53) .................................................................................................................................. - 6 -例3.2.1编写程序使第一个数码管显示8(part2.1_.1c P59) ......................... - 7 -例3.2.2让实验板上6个数码管同时点亮,依次显示0到F,时间间隔为0.5ms,循环下去。
51单片机C语言教程-郭天祥-PDF转word版第二章
本章详细介绍单片机程序常用编译软件Keil的用法,包括用Kei建立工程、工程配置、C51单片机程序软件仿真、单步、全速、断点设置、变量查看等。同时还介绍如何使用SST89E516RD单片机进行计算机与TX-IC单片机学习板之间的硬件仿真。用一个完整的C51程序来操作发光二极管的点亮与熄灭,然后调用C51库函数来方便地实现流水灯,最后为大家补充蜂鸣器与继电器的操作方法及集电极开路与漏极开路的概念。从这一章开始我们将手把手地讲解单片机C语言编程。认真学好本章,对于初学者来说将会是一个非常好的开头。
REG52.H
Header generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved.
--------------------------------------------------------------------------*/
tx1c实验板上发光二极管处连接锁存器的目的是因为发光二极管通过锁存器连接到单片机的p1口而板上ad芯片的数据输出端也连接到单片机的p1口当我们在做ad实验时ad芯片的数据输出端的数据就会实时发生变化而若不加锁存器那么发光二极管的阴极电平也跟随ad的数据输出的变化而变化这样就会看见发光管无规则闪动为了在做ad实验时不影响发光二极管我们在发光二极管与单片机之间加入一个锁存器用以隔离当做ad实验时我们可通过单片机将此锁存器的锁存端关闭而此时无论单片机p1口数据怎么变化发光二极管也不会闪动
完后续的代码而引发出更多的错误。解决办法如下:我们须将错误信息窗口右侧的滚动条拖到最上面,双击第一条错误信息,可以看到Keil软件自动将错误定位,并且在代码行前面出现一个蓝色的箭头。需要说明的是,有些错误连Keil软件自身也不能准确显示错误信息,更不能准确定位,它只能定位到错误出现的大概位置,我们根据这个大概位置和错误提示信息自己再查找和修改错误。双击图2.2.3中第一条错误信息后,显示如图2.2.4所示。
单片机资料百度盘
一、51单片机一、祥云51单片机学习光盘(视频教程、例程、操作系统)适合初学者资料下载链接:https://yunpan/cJzLQdrBfp2KD 访问密码 8f77二、普中51单片机学习光盘pan.baidu/s/1pK0c4BL3、郭天祥----十天征服单片机4、新概念51单片机C语言教程.入门、提高、开发(500页,郭天祥著)https://yunpan/cYAYJtgFJNUup 访问密码 9eb15、力天电子51单片机视频教程pan.baidu/s/1hrulifU6、天狼星51单片机视频教程链接:pan.baidu/s/1pKsD3b9 密码:scy4八、STC12C5A60S2例程https://yunpan/cjPpH7uBBbIr8 访问密码 a471二、AVR单片机一、郭天祥--十天学会AVR单片机视频教程https://yunpan/cwVbV5mWw9pxk 访问密码 34ba1、锐志电子AVR单片机视频教程https://yunpan/cweRHU4JUSypY 访问密码 64b22、手把手AVR单片机视频教程https://yunpan/cm926G3YrWKhG 访问密码 dccb3、DY_miniAVR单片机光盘资料https://yunpan/c3fIFUrWu4LEG 访问密码 00364、AVR代码生成器https://yunpan/c3fILqj5h3aT9 访问密码 20615、AVR开发工具https://yunpan/c3fI3satMGmSh 访问密码 d3566、AVR例程https://yunpan/c3fIFfSgCzhWE 访问密码 48c1三、msp430单片机一、郭天祥---十天学会msp430单片机https://yunpan/cYAYvyxDBaHgr 访问密码 4dca2、力天msp430单片机视频教程https://yunpan/cYAY83HwRumTn 访问密码 d66c3、msp430 c语言.pdfhttps://yunpan/cYAY577Ucc7b2 访问密码 86b34、msp430教程.pdfhttps://yunpan/cYAYtXwXYesgC 访问密码 ccbf5、IAR C 430标准库函数.pdfhttps://yunpan/cYAYnInwURHZx 访问密码 52ef 四、PIC单片机一、郭天祥--十天学会pic单片机https://yunpan/cYAYDyx2Zydsi 访问密码 af9b2、王伟民pic单片机教程https://yunpan/cYAYz37WLEaYZ 访问密码 2312五、STM32嵌入式教程一、正点原子《手把手教你学STM32-M3》-基于正点原子战舰STM32开发板2、正点原子《手把手教你学STM32-M4》-基于正点原子探讨者STM32F4开发板3、正点原子UCOS/EMWIN/LWIP视频-基于正点原子STM32开发板4、mini基础板视频教程光盘链接:pan.baidu/s/1hqVhZdq 密码:rhab5、stm32历程链接:pan.baidu/s/1jH0maay 密码:hcy26、众想单片机stm32视频教程链接:pan.baidu/s/1hrwmnRY 密码:rb887、李想stm32视频教程链接:pan.baidu/s/1jGZN9kE 密码:m9668、红龙stm32开发板光盘链接:pan.baidu/s/1i4mGYqT 密码:uc5v9、stm’32清楚教程链接:pan.baidu/s/1bogN6Gn 密码:p7pt10、stm32官方文件链接:pan.baidu/s/1c1gfzva 密码:s2gs11、stm32资料pdf资料总汇(20)篇12、基于嵌入式实时操作系统的程序设计技术_周航慈_北航.pdf13、任哲-嵌入式实时操作系统μCOS-II原理及应用.pdf14、嵌入式操作系统uCOS-II(第二版)15、ucos2经典讲解16、邵贝贝ucos操作系统全书.pdf17、零死角玩转stm32-系统篇(uCOS-II)18、ucosii学习文档集六、ARM7、ARM9视频教程一、郭天祥ARM7视频教程https://yunpan/cwVbAjCw9JL95 访问密码 627d2、郭天祥ARM9视频教程https://yunpan/cYARicupI5tjL 访问密码 1f282、郭天祥郭天祥CPLD视频教程https://yunpan/cwVbfP2dTEeRq 访问密码 f955七、CORTEX—A内核arm教程一、基于cortex-a内核的指令链接:pan.baidu/s/1c1qURXe 密码:zux42、国嵌学院cortex-a嵌入式视频全集(内部视频)链接:pan.baidu/s/1pKwEjLh 密码:mc9r3、wince6.0镜像链接:pan.baidu/s/1dEuq3uT 密码:14ww4、wince6.0源码链接:pan.baidu/s/1i4ymmdn 密码:fpb05、vs2005链接:pan.baidu/s/1boiP2Bd 密码:7spr6、QT视频教程链接:pan.baidu/s/1i4fpok1 密码:o4q3链接:pan.baidu/s/1c0ZtQbI 密码:fwkq7、QT在Android下编程教程链接:pan.baidu/s/1geft1Z1 密码:z2gq8、cortex-a下游戏安装集链接:pan.baidu/s/1o84B9WY9、天嵌210光盘资料10张(视频、源码、电路)链接:pan.baidu/s/1boCjt5110、andriod资料链接:pan.baidu/s/1i42VQSH 密码:7fbg2、windows下资料链接:pan.baidu/s/1i4bRBoT 密码:nqan3、linux操作系统资料链接:pan.baidu/s/1behIfc 密码:c13n4、wince操作系统资料pan.baidu/s/1YHVRK5、ARM64-zip链接:pan.baidu/s/1sk1Z6Mx 密码:7uc36、QT源码包链接:pan.baidu/s/1boj5ptt 密码:w9bv7、linux源码包链接:pan.baidu/s/1geyWgPd 密码:qz8z8、linux开发工具链接:pan.baidu/s/1qXaXmB6 密码:n5ka八、其他资料一、AD6.9 PCB设计教程(15G)https://yunpan/cjGM4TkItmeCH 访问密码 6e712、autocad视频教程https://yunpan/cHP5pRjnFbYEA 访问密码 ea0d3、C++课件https://yunpan/c3WZYx7h56wZW 访问密码 62f84、c语言参考手册https://yunpan/cjGMTU6WgxQs8 访问密码 65a25、protel99视频教程https://yunpan/c3FHH4rSdp8pH 访问密码 10116、protues8视频教程https://yunpan/cwVbKL73tJtkT 访问密码 068e链接:pan.baidu/s/1TYmHg 密码:5l5m7、SolidWorks视频教程(低级、高级)https://yunpan/cYABpMI5Yu4a5 访问密码 fc708、VC++视频教程https://yunpan/cYABNBtWUfziZ 访问密码 71479、zigbee文档资料视频教程https://yunpan/cYABipqm9VmTS 访问密码 737c10、zigbee-cc2530光盘资料链接:pan.baidu/s/1nubduNf 密码:h6n211、zigbee组网、栈协议教程链接:pan.baidu/s/1nubduNf 密码:h6n212、经常使用74芯片、电阻、电容、电感、三级管、运放等资料集https://yunpan/cYA6ghmYJRUMN 访问密码 5449https://yunpan/cYA6sTMXiCpEg 访问密码 86f4https://yunpan/cYA6AztRiuDHN 访问密码 8129https://yunpan/cYA6fkEyFb9qS 访问密码 bd7ahttps://yunpan/cYA6KVtPtzN8R 访问密码 751a13、VB资料文档+视频教程https://yunpan/cYA6Jt5cHvJtJ 访问密码 31a514、matlab教程文档+视频https://yunpan/cYA6Z4ZneS92Y 访问密码 bc362、瑞萨开发板光盘-电子设计大赛专用https://yunpan/cctk6idf8A7HZ 访问密码 b9253、你必需明白的495个C语言问题高清PDF中文版全书 https://yunpan/cYA6QyFqqhcqq 访问密码 ee8a4、电路设计技术与技术第二版高清楚pdf中文版https://yunpan/cYA6cfvbcMtHY 访问密码 fcaf5、战舰-GSM短信模块教程资料链接:pan.baidu/s/1qXaXmIo 密码:e2vk6、语音模块资料https://yunpan/cYA6LifVjRi2n 访问密码 0a297、无线通信模块资料https://yunpan/cYA63EabvaH6J 访问密码 9eac8、指纹识别模块资料https://yunpan/cYA6r3jtbJKYT 访问密码 e9b09、顺平linux视频教程 (内部)链接:pan.baidu/s/1nuzzQGx 密码:521t10、jave零基础视频教程链接:pan.baidu/s/1boh3v6B 密码:bqux11、大数据学习资料链接:pan.baidu/s/1kUtyzPH 密码:miv212、android电话端编程视频教程链接:pan.baidu/s/1skiwKOH 密码:rriv13、陀螺仪-飞控-四旋翼-电路仿真mulitism资料链接:pan.baidu/s/1c1mQU8S 密码:d0e6。
郭天祥pdf
跑飞的情况,因此我们也很难人为制造出使单片机程序跑乱的情况,下面的
程序演示利用看门狗的溢出时间来使程序自动复位运行。
【例】:在 TX-1C 实验板上实现如下描述:程序启动后设定看门狗溢
出时间为 2 秒左右,然后点亮第一个发光二极管,稍延时一会,然后熄灭发
光二极管,使程序进入等待死循环状态,并且在死循环中大约每隔 1 秒喂狗
一次,看程序运行是否正常。
新建文件 part3.4.2.c,程序代码如下:
#include <reg52.h>
//52 系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sfr WDT_CONTR=0xe1;
sbit led1=P1^0;
上图设置存储器模式为 large 模式 其次,为安全起见,当程序中定义多于 128 字节的其它变量时,最好申明为 xdata 型,如 uchar xdata table[100];意思为定义一个 100 个字节容量的数组,将其在扩展 RAM 中分配存储空间。另外 一定要注意,在 large 模式下,编写程序时,定义的变量总数千万不要超过对应单片机的内部最大
倍速与双倍速的设置在下载程序软件界面上有设置选择,大家可自行
下载测试程序运行速度。预分频数的值由 PS2、PS1 和 PS0 的组合确
定,如表 4.2.2 所示。晶振频率即为当前系统的时钟频率。
下面我们通过两个例子来进一步讲解使用看门狗和不使用看门狗时程
序运行的区别,由于 STC 单片机的高抗干扰特点,至今我还未曾遇到过程序
ቤተ መጻሕፍቲ ባይዱRAM 字节数,因为即使超过了,编译器也不会提示错误,但是程序必定会出错。
郭天祥单片机教程 第2章硬件
第2章 单片机的硬件结构和原理
2.2 MCS - 51单片机硬件结构 单片机硬件结构
2.2.1 MCS - 51系列单片机的分类 系列单片机的分类
表 2.1 MCS - 51 系列单片机配置一览表
Atmel() 51系列 系列: 系列
AT89c51/52/s53/c2051/c1051;
第2章 单片机的硬件结构和原理
2.3.2 控制器
1. 时钟电路
图 2.2 单片机时钟电路 (a) 内部时钟电路; (b) 外部振荡源
第2章 单片机的硬件结构和原理 2. 复位电路
图 2.3 单片机复位电路 (a)上电复位电路;(b) 开关复位电路
第2章 单片机的硬件结构和原理
表 2.3 复位后内部寄存器状态
第2章 单片机的硬件结构和原理
特殊功能寄存器地址表 表 2.6 SFR特殊功能寄存器地址表 特殊功能寄存器地址表
第2章 单片机的硬件结构和原理 3. 外部数据存储器 外部数据存储器 外部数据存储器一般由静态RAM 外部数据存储器一般由静态 构成, 构成 , 其容量大小由用户根据需要而 定, 最大可扩展到 64 KB RAM , 地址 是 0000H~0FFFFH。CPU通过 通过MOVX 。 通过 指令访问外部数据存储器, 指令访问外部数据存储器 用间接寻址 方式, 方式 R0、R1和 DPTR都可作间接寄 、 和 都可作间接寄 存器。注意, 外部RAM和扩展的 接 和扩展的I/O接 存器。注意 外部 和扩展的 口是统一编址的, 所有的外扩I/O口都 口是统一编址的 所有的外扩 口都 中的地址单元。 要占用 64 KB中的地址单元。 中的地址单元
第2章 单片机的硬件结构和原理 5. 堆栈指针 (Stack Pointer) 堆栈指针SP( ) 堆栈操作是在内存RAM区专门开辟出来的按照 “ 先进 区专门开辟出来的按照“ 堆栈操作是在内存 区专门开辟出来的按照 后出”原则进行数据存取的一种工作方式, 后出”原则进行数据存取的一种工作方式 主要用于子程序 调用及返回和中断处理断点的保护及返回, 调用及返回和中断处理断点的保护及返回 它在完成子程序 嵌套和多重中断处理中是必不可少的。为保证逐级正确返回, 嵌套和多重中断处理中是必不可少的。为保证逐级正确返回 进入栈区的“断点”数据应遵循“先进后出”的原则。 用 进入栈区的“断点”数据应遵循“先进后出”的原则。SP用 来指示堆栈所处的位置, 在进行操作之前, 先用指令给SP赋值 赋值, 来指示堆栈所处的位置 在进行操作之前 先用指令给 赋值 以规定栈区在RAM区的起始地址 ( 栈底层 ) 。 当数据推入 区的起始地址( 栈底层) 以规定栈区在 区的起始地址 栈区后, 的值也自动随之变化。 系统复位后, 栈区后 SP的值也自动随之变化。MCS - 51 系统复位后 SP 的值也自动随之变化 初始化为07H。 。 初始化为
郭天祥十天学会单片机(例程)
郭天祥十天学会单片机视频例程(部分) Lesson3_1-lesson3_4#include<reg52.h>sbit dula=P2^6;sbit wela=P2^7;void main(){wela=1;P0=0xc0;wela=0;dula=1;P0=0x06;dula=0;while(1);}#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;uchar num;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){wela=1;//11101010P0=0xea;wela=0;while(1){for(num=0;num<16;num++){dula=1;P0=table[num];dula=0;delay(1000);}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit d1=P1^0;uchar num;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){EA=1;//开总中断EX0=1;//开外部中断0//IT0=1;TCON=0x01;wela=1;//11101010P0=0xea;wela=0;while(1){for(num=0;num<16;num++){d1=1;dula=1;P0=table[num];dula=0;delay(1000);}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void exter0() interrupt 0{d1=0;}#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit d1=P1^0;uchar num,num1;tt;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){num=0;tt=0;TMOD=0x11;//设置定时器0为工作方式1TH0=(65536-10000)/256;TL0=(65536-10000)%256;TH1=(65536-20000)/256;TL1=(65536-20000)%256;// EA=1;//开总中断ET0=1;//开定时器0中断ET1=1;TR0=1;//启动定时器0TR1=1;wela=1;//11101010P0=0xea;wela=0;dula=1;P0=0x3f;dula=0;while(1){if(num1==25){num1=0;P1=~P1;}if(tt==100){tt=0;num++;if(num==16)num=0;dula=1;P0=table[num];dula=0;}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void time0() interrupt 1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;tt++;}void time1() interrupt 3{TH1=(65536-20000)/256;TL1=(65536-20000)%256;num1++;}Lesson4_1-lesson4_3#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar temp,aa,num;sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z);void main(){num=0;aa=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;temp=0xfe;P1=temp;dula=1;P0=table[0];dula=0;wela=1;P0=0xc0;wela=0;while(1){delay(1000);temp=_crol_(temp,1);P1=temp;/* if(aa==40){aa=0;num++;if(num==16)num=0;dula=1;P0=table[num];dula=0;} */}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==40){aa=0;num++;if(num==16)num=0;dula=1;P0=table[num];dula=0;}}#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar temp,aa,numdu,numwe;sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar code tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//void delay(uint z);void main(){numdu=0;numwe=0;aa=0;TMOD=0x01;TH0=(65536-5000)/256;TL0=(65536-5000)%256;EA=1;ET0=1;TR0=1;while(1){// delay(1000);// temp=_crol_(temp,1);// P1=temp;if(aa==1){aa=0;numdu++;if(numdu==7)numdu=1;dula=1;P0=table[numdu];dula=0;wela=1;P0=tablewe[numwe];wela=0;numwe++;if(numwe==6)numwe=0;}}}/*void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}*/void timer0() interrupt 1{TH0=(65536-5000)/256;TL0=(65536-5000)%256;aa++;}#include<reg52.h>#define uint unsigned int#define uchar unsigned charuchar temp,aa,bai,shi,ge;sbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void display(uchar bai,uchar shi,uchar ge); void delay(uint z);void init();void main(){init();//初始化子程序while(1){if(aa==20){aa=0;temp++;if(temp==100){temp=0;}bai=temp/100;shi=temp%100/10;ge=temp%10;}display(bai,shi,ge);}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void display(uchar bai,uchar shi,uchar ge){dula=1;P0=table[bai];dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delay(1);dula=1;P0=table[shi];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay(1);dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delay(1);}void init(){wela=0;dula=0;temp=0;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;aa++;}Lesson5_1—Lesson5_3#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76,0x79,0x38,0x3f,0};uchar temp,t0,t1,bai,shi,ge,flag,flag1;uint shu;void init();void display(uchar,uchar,uchar,uchar,uchar,uchar);void delay(uint z){uint t1,y;for(t1=z;t1>0;t1--)for(y=110;y>0;y--);}void main(){init();while(1){if(flag1!=1)display(7,6,5,bai,shi,ge);elsedisplay(16,17,18,18,19,20);}}void init(){shu=432;temp=0xfe;P1=temp;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(flag!=1){if(t0==10){t0=1;temp=_crol_(temp,1);P1=temp;}}else{if(t0%4==0)P1=~P1;if(t0==60){TR0=0;P1=0xff;flag1=1;}}}void timer1() interrupt 3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;t1++;if(t1==2){t1=0;shu--;bai=shu/100;shi=shu%100/10;ge=shu%10;if(shu==398){TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;flag=1;t0=0;P1=0xff;TR1=0;}}}void display(uchar aa,uchar bb,uchar cc,uchar ba,uchar sh,uchar g){dula=1;P0=table[aa];dula=0;P0=0xff;wela=1;P0=0xfe;wela=0;delay(1);dula=1;P0=table[bb];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay(1);dula=1;P0=table[cc];dula=0;P0=0xff;wela=1;P0=0xfb;wela=0;delay(1);dula=1;P0=table[ba];dula=0;P0=0xff;wela=1;P0=0xf7;wela=0;delay(1);dula=1;P0=table[sh];dula=0;P0=0xff;wela=1;P0=0xef;wela=0;delay(1);dula=1;P0=table[g];dula=0;P0=0xff;wela=1;P0=0xdf;wela=0;delay(1);}#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit d1=P1^0;sbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};uchar num;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void main(){wela=1;P0=0xfe;wela=0;P3=0xff;while(1){if(key1==0){delay(5);if(key1==0){d1=0;num++;if(num==10)num=0;}while(!key1);delay(5);while(!key1);}elsed1=1;dula=1;P0=table[num];dula=0;}}#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dula=P2^6;sbit wela=P2^7;sbit key1=P3^4;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0};uchar num,temp,num1;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}uchar keyscan();void display(uchar aa);void main(){num=17;dula=1;P0=0;dula=0;wela=1;P0=0xc0;wela=0;while(1){display(keyscan());}}void display(uchar aa){dula=1;P0=table[aa-1];dula=0;}uchar keyscan(){P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xfb;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case 0xeb:num=9;break;case0xdb:num=10;break;case0xbb:num=11;break;case0x7b:num=12;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}P3=0xf7;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P3;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case0xe7:num=13;break;case0xd7:num=14;break;case0xb7:num=15;break;case0x77:num=16;break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}}}return num;}Lesson6_1—Lesson6_3#include<reg52.h>sbit csda=P3^2;sbit wr=P3^6;void main(){csda=0;wr=0;P0=0;while(1);}#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit wr=P3^6;sbit rd=P3^7;void delay(uint z){uint t1,y;for(t1=z;t1>0;t1--)for(y=110;y>0;y--);}void init();void start();void main(){init();while(1){start();delay(20);rd=0;delay(10);rd=1;delay(10);}}void init(){P0=0;}void start(){wr=1;wr=0;wr=1;}Lesson7_1-Lesson7_1#include<reg52.h>unsigned char flag,a;void main(){TMOD=0x20;//设置定时器1为工作方式2TH1=0xfd;TL1=0xfd;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;while(1){/* if(RI==1){RI=0;P1=SBUF;}*/if(flag==1){ES=0;flag=0;SBUF='1';//28;while(!TI);TI=0;SBUF='2';//28;while(!TI);TI=0;SBUF='3';//28;while(!TI);TI=0;ES=1;}}}void ser() interrupt 4{RI=0;// P1=SBUF;a=SBUF;flag=1;}Lesson8#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]="I LIKE MCU!";uchar code table1[]=""; sbit lcden=P3^4;sbit lcdrs=P3^5;sbit dula=P2^6;sbit wela=P2^7;uchar num; void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com){lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_data(uchar date){lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){dula=0;wela=0;lcden=0;write_com(0x38);write_com(0x0e);write_com(0x06);write_com(0x01);write_com(0x80+0x10);}void main(){init();for(num=0;num<11;num++){write_data(table[num]);delay(20);}// write_com(1);write_com(0x80+0x53);for(num=0;num<13;num++){write_data(table1[num]);delay(20);}for(num=0;num<16;num++){write_com(0x18);delay(20);}while(1);}Lesson9#include<reg52.h>#define uchar unsigned charsbit sda=P2^0;sbit scl=P2^1;uchar a;void delay(){ ;; }void start() //开始信号{sda=1;delay();scl=1;delay();sda=0;delay();}void stop() //停止{sda=0;delay();scl=1;delay();sda=1;delay();}void respons() //应答{uchar i;scl=1;delay();while((sda==1)&&(i<250))i++;scl=0;delay();}void init(){sda=1;delay();scl=1;delay();}void write_byte(uchar date){uchar i,temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0;delay();sda=CY;delay();scl=1;delay();// scl=0;// delay();}scl=0;delay();sda=1;delay();}uchar read_byte(){uchar i,k;scl=0;delay();sda=1;delay();for(i=0;i<8;i++){scl=1;delay();k=(k<<1)|sda;scl=0;delay();}return k;}void delay1(uchar x){uchar a,b;for(a=x;a>0;a--)for(b=100;b>0;b--);}void write_add(uchar address,uchar date) {start();write_byte(0xa0);respons();write_byte(address);respons();write_byte(date);respons();stop();}uchar read_add(uchar address){uchar date;start();write_byte(0xa0);respons();write_byte(address);respons();start();write_byte(0xa1);respons();date=read_byte();stop();return date;}void main(){init();write_add(23,0xaa);delay1(100);P1=read_add(23);while(1);}Lesson 10#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbit rs=P3^5;sbit lcden=P3^4;sbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;sbit rd=P3^7;uchar count,s1num;char miao,shi,fen;uchar code table[]=" 2007-7-30 MON"; uchar code table1[]=" 00:00:00"; void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com){rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date){rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){uchar num;dula=0;wela=0;lcden=0;// fen=59;// miao=53;// shi=23;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<15;num++){write_date(table[num]);delay(5);}write_com(0x80+0x40);for(num=0;num<12;num++){write_date(table1[num]);delay(5);}TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}void write_sfm(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}void keyscan(){rd=0;if(s1==0){delay(5);if(s1==0){ s1num++;while(!s1);if(s1num==1){TR0=0;write_com(0x80+0x40+10);write_com(0x0f);}}if(s1num==2){write_com(0x80+0x40+7);}if(s1num==3){write_com(0x80+0x40+4);}if(s1num==4){s1num=0;write_com(0x0c);TR0=1;}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+7);}if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);}}}if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1){/* if(miao==0){miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);}*/miao--;if(miao==-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);}if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4);}}}}}void main(){init();while(1){keyscan();}// while(1);}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++; if(count==18){count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;}write_sfm(4,shi);}write_sfm(7,fen);}write_sfm(10,miao);}}Lesson 11#include<reg52.h>#include<define.h>void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void didi(){beep=0;delay(50);beep=1;delay(100);beep=0;delay(50);beep=1;}void write_com(uchar com){rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date){rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){uchar num;EA=1;EX0=1;IT0=1;dula=0;wela=0;lcden=0;// set_time();set_alarm(14,13,10);write_ds(0x0B,0x26);read_ds(0x0c);// fen=59;// miao=53;// shi=23;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num<15;num++){write_date(table[num]);delay(5);}write_com(0x80+0x40);for(num=0;num<12;num++){write_date(table1[num]);delay(5);}}void write_sfm(uchar add,uchar date) {uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_date(0x30+shi);write_date(0x30+ge);}void keyscan(){rd=0;if(flag1==1){if(s2==0){delay(5);if(s2==0){while(!s2);flag1=0;}}if(s3==0){delay(5);if(s3==0){while(!s3);flag1=0;}} }if(s1==0){delay(5);if(s1==0){ s1num++;flag=1;flag1=0;while(!s1);if(s1num==1){TR0=0;write_com(0x80+0x40+10);write_com(0x0f);}}if(s1num==2){write_com(0x80+0x40+7);}if(s1num==3){write_com(0x80+0x40+4);}if(s1num==4){s1num=0;write_com(0x0c);flag=0;write_ds(0,miao);write_ds(2,fen);write_ds(4,shi);}}if(s1num!=0){if(s2==0){delay(1);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao); write_com(0x80+0x40+10);}if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen); write_com(0x80+0x40+7);}if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);}}}if(s3==0){delay(1);if(s3==0){while(!s3);if(s1num==1){/* if(miao==0){miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);}*/miao--;if(miao==-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10);}if(s1num==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7);}if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4);}}}}}void write_ds(uchar add,uchar date){dscs=0;dsas=1;dsds=1;dsrw=1;P0=add;dsas=0;dsrw=0;P0=date;dsrw=1;dsas=1;dscs=1;}uchar read_ds(uchar add) {uchar ds_date;dsas=1;dsds=1;dsrw=1;dscs=0;P0=add;dsas=0;dsds=0;P0=0xff;ds_date=P0;dsds=1;dsas=1;dscs=1;return ds_date;}void set_time(){write_ds(4,10);write_ds(2,32);}void set_alarm(uchar ashi,uchar afen,uchar amiao) {write_ds(1,amiao);write_ds(3,afen);write_ds(5,ashi);}void main(){init();while(1){keyscan();if(flag1==1)didi();if(flag==0){miao=read_ds(0);fen=read_ds(2);shi=read_ds(4);write_sfm(10,miao);write_sfm(7,fen);write_sfm(4,shi);}}}void exter() interrupt 0{ uchar c;flag1=1;c=read_ds(0x0c);}。
(完整版)十天学会单片机C语言_郭天祥---课后习题答案
(完整版)十天学会单片机C语言_郭天祥---课后习题答案郭天祥十天学通单片机TX-1C单片机实验板所有课作业+答案,特别整理,供单片机爱好与学习者使用讲次内容细节第一讲学单片机预备知识、如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。
点亮一个发光管,第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。
第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深用单片机的定时器及中断设计一个60秒定时器第五讲独立键盘、矩阵键盘的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用第六讲AD、DA的工作原理及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD 及DA、ADC0804的操作方法、DAC0832的操作方法第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。
第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、目前非常通用的一种通信机制第十讲利用51单片机的定时器设计一个时钟综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。
(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信)第十一讲用DS12C887时钟芯片设计一个高精度时钟DS12C887内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、月、日、时、分、秒等。
单片机实训总结
单片机实训总结(实用版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的实用范文,如工作计划、工作总结、演讲稿、合同范本、心得体会、条据文书、应急预案、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of practical sample essays for everyone, such as work plans, work summaries, speech drafts, contract templates, personal experiences, policy documents, emergency plans, teaching materials, complete essays, and other sample essays. If you want to learn about different formats and writing methods of sample essays, please stay tuned!单片机实训总结单片机实训总结(通用3篇)单片机实训总结篇1《单片机》这门课程我已经学了一个学期了,在这一个学期的学习过程中,我一开始不怎么懂得编程,但慢慢的我现在已经不仅会读程序还会写程序了。
我的大学四年——郭天祥
书,这样就理解得很透彻了,就是从那时起我每天早上八点之前就到实验室了,除了选上部分课外,其他时间都泡在实验室里,一直到晚上十点多看楼的大爷用脚踹着实验室的门叫我走我才离开实验室。
那时每天就摆弄单片机,没有人教我,全是我自己一个人摸索,而且当时学的是非常难懂的汇编语言。
记得大一时也学过C语言,可我发现等要用的时候我什么也不会,根本和单片机联系不起来,就和没学一样,我只好选择汇编语言,大概一个月后,也就是快放暑假时,我做出来了自己的第一个单片机作品,一个电子钟。
有人说你要是用单片机做出一个电子钟,那你基本上已经掌握单片机的80%了。
这句话有道理,电子钟对编程的综合性要求还是相当高的。
那时,我对单片机已经有了初步的掌握,假期的时候我报名参加了2004年黑龙江省大学生电子设计大赛,那天起我搬进了学校的电子创新实验室,我们选的题目是无线数据通信,当时指导老师让我们用FPGA做,其中还要用到VC编程及C++语言,我那时还不懂什么是FPGA,于是我开始拼命地学这些知识,每天吃饭都在实验室。
省赛不同国赛,省赛是把题目先发下来,两个月后交作品就行,其实学FPGA/CPLD也和学单片机一样,关键是自己动手写程序实践,不停地写程序,然后看程序运行的效果,这两个月里我把VHDL语言搞得很熟练,但是VC还差了一点。
我们队一共三个人,除我之外还有路智超(做模拟电路部分)和魏旭东(上位机VC程序),魏旭东是我校理学院的,VC学得相当好,他的VC编程也全是自已业余学的。
魏旭东编程时,我就在旁边看,他耐心地给我解释每一行每一句,等空闲时我自己再练,那段时间我对VC有了初步的了解。
比赛结果很好,我们获得了黑龙江省一等奖,这也是我的第二次获奖,这次获奖给了我很大的鼓舞,接下来我发现必须要学单片机C语言编程了,汇编编程非常烦琐,一个全面的人才不能只将知识局限于某一方面。
从大三开始学校里有各种电子设计竞赛,我总是积极报名参加,为自己寻找锻炼的机会,我为此放弃了我最喜欢的篮球、足球运动,再没有逛过一次街,每天早上起床、洗脸、刷牙,然后就拿着书去实验室,白天在实验室写程序、调电路,做各种硬件练习,晚上回来补充理论知识,模电、数电、高频一遍一遍地重复看,每晚差不多两点睡觉,充分地把实践与理论结合在了一起,那时我才发现大学里的理论知识同样是那么重要,而原来根本没有意识到。
十天学会单片机非常完整版
C-51数据的存储类型
例:
数据类型 变量名
char var1; bit flags; unsigned char vextor[10]; int wwww; 注意:变量名不能用C语言中的关 键字表示。
工业自动化:数据采集、测控技术。 智能仪器仪表:数字示波器、数字信号源、 数字万用表、感应电流表等。 消费类电子产品:洗衣机、电冰箱、空调机、 电视机、微波炉、手机、IC卡、汽车电子设 备等。 通讯方面:调制解调器、程控交换技术、手 机、小灵通等。 武器装备:飞机、军舰、坦克、导弹、航天 飞机、鱼雷制导、智能武器等。 等等…..
5. 由于具有方便的模块化编程技术,使 已编好程序可容易地移植;
C-51的数据类型
基本数据类型
类型 符号 有 整 型 无 有 实 型 有 字 有 符 型 无 关键字 (signed) int (signed) short (signed) long unsigned int unsigned short int unsigned long int float double char unsigned char 数的表示范围 所占位数 16 -32768~32767 16 -32768~32767 32 16 16 32 32 64 8 8 -2147483648~2147483647 0~65535 0~65535 0~4294967295 3.4e-38~3.4e38 1.7e-308~1.7e308 -128~127 0~255
单板机 单片机
单片机能做什么
1. 2. 3. 4. 实物展示 用到单片机的项目经验介绍 手持粮库温度寻检设备 毕设答辩打分器 电话台灯 自动感应水龙头 凡是与控制或简单计算有关的电子设备都可以用 单片机来实现,再根据具体实际情况选择不同性 能的单片机,如:atmel,stc,pic,avr,凌阳,80C51, arm等
单片机学习步骤
学习单片机步骤学习使用单片机就是理解单片机硬件结构,以及内部资源的应用,在C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。
参考视频:郭天祥十天学会单片机视频,必备教材:郭天祥《新概念51单片机C语言教程:入门、提高、开发拓展全攻略》,此书为舞蹈机器人基地电子组指定教材。
第一点:数字I/O的使用(推荐时间:两天【达到理解数码管共阴共阳与矩阵键盘的水准】,51寄存器其实主要在中断优先级等部分学习,所以渗透在后续的学习中)使用按钮输入信号,发光二极管显示输出电平,就可以学习引脚的数字I/O 功能,在按下某个按钮后,某发光二极管发亮,这就是数字电路中组合逻辑的功能,虽然很简单,但是可以学习一般的单片机编程思想,例如,必须设置很多寄存器对引脚进行初始化处理,才能使引脚具备有数字输入和输出输出功能。
每使用单片机的一个功能,就要对控制该功能的寄存器进行设置,这就是单片机编程的特点,千万不要怕麻烦,所有的单片机都是这样。
第二点:定时器的使用(推荐时间:两天真正理解定时器计数器工作原理【与晶振频率的关系,有利于后续时钟方面的学习】,)学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。
数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。
定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。
第三点:中断(推荐时间:三天这个很重要,但是可能一开始不会很懂,先多读几遍课本,然后研究下他的代码,以后用到的机会很多)单片机的特点是一段程序反复执行,程序中的每个指令的执行都需要一定的执行时间,如果程序没有执行到某指令,则该指令的动作就不会发生,这样就会耽误很多快速发生的事情,例如,按钮按下时的下降沿。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单板机
单片机
单片机能做什么
实物展示 用到单片机的项目经验介绍 1. 手持粮库温度寻检设备 2. 毕设答辩打分器 3. 电话台灯 4. 自动感应水龙头 凡是与控制或简单计算有关的电子设备都可以用
单片机来实现,再根据具体实际情况选择不同性 能的单片机,如:atmel,stc,pic,avr,凌阳,80C51, arm等
1 0,0 1
4. “异或” “异或”运算是实现“必须不同, 否则就没有”这种逻辑的一种运算, 运 算符为“ ”。其运算规则是:
0 0 0,0 1 1,1 0 1,11 0
80C51系列介绍
80C51是MCS-51系列中的一个典型品种; 其它厂商以8051为基核开发出的CMOS工艺 单片机产品统称为80C51系列。当前常用的 80C51系列单片机主要产品有:
工业自动化:数据采集、测控技术。 智能仪器仪表:数字示波器、数字信号源、
数字万用表、感应电流表等。
消费类电子产品:洗衣机、电冰箱、空调机、 电视机、微波炉、手机、IC卡、汽车电子设 备等。
通讯方面:调制解调器、程控交换技术、手 机、小灵通等。
武器装备:飞机、军舰、坦克、导弹、航天 飞机、鱼雷制导、智能武器等。
等等…..
怎么开始学习?
实践第一。 补充必要的理论知识,即缺什么补什么。 做工程项目积累经验。(可在网络上搜集题
目,也可自己有什么想法大胆的去试验)
预备知识
电平特性 2进制与16进制的表示及转换 二进制数的逻辑运算 8051单片机介绍 C51基础知识
关于电平特性
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器) 的串行I/O口,用于实现单片机之间或单片机 与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微 调电容需要外接。最高振荡频率取决于单片 机型号及性能。
C51知识
C语言是一种编译型程序设计语言,它兼顾 了多种高级语言的特点,并具备汇编语言的 功能。目前,使用C语言进行程序设计已经 成为软件开发的一个主流。用C语言开发系 统可以大大缩短开发周期,明显增强程序的 可读性,便于改进、扩充和移植。而针对 8051的C语言日趋成熟,成为了专业化的实 用高级语言。
学单片机需要什么基础? 1. 与以前所学的知识关联很少;
2. 只需要掌握很基本的数电模电知识,如 二进制、十进制、十六进制之间的转换, 与、或、非逻辑关系等;
3. 对各种器件的概念基本上是从0开始; 4. 如果要用C语言编程,需具备简单的C语
言基础;
5. 所有人都站在了同一起跑线上;
什么是单片机?
十进制 二进制 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 16 10000
十六进制 9 A B C D E F 10
二进制数的逻辑运算 1. “与” “与”运算是实现“必须都有, 否 则就没有”这种逻辑关系的一种运算。 运算符为“· ”, 其运算规则如下:
注:类似的还有Philips公司的 87LPC64,20引脚 8XC748/750/(751),24引脚 8X749(752),28引脚 8XC754,28引脚 等等
P3第二功能各引脚功能定义:
P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR外部写控制 P3.7:RD外部读控制
CPU:由运算和控制逻辑组成,同时还包括 中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的 中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入, 也可用作输出;
T/C:两个定时/记数器,既可以工作在定时 模式,也可以工作在记数模式;
RST 1 P3.0/RXD 2 P3.1/TXD 3
XTAL2 4 XTAL1 5 P3.2/INT0 6 P3.3/INT1 7 P3.4/T0 8 P3.5/T1 9
GND 10
20 VCC 19 P1.7 18 P1.6 17 P1.5 16 P1.4 15 P1.3 14 P1.2 13 P1.1/AIN1 12 P1.0/AIN0 11 P3.7
int
wwww;
注意:变量名不能用C语言中的关
键字表示。
C-51的包含的头文件
通常有:reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h reg52.h
(定义特殊功能寄存器和位寄存器); math.h (定义常用数学运算);
◆单片机
在一片集成电路芯片上集成微处理器、
存储器、I/O接口电路,从而构成了单芯片 微型计算机,即单片机。 Intel公司推出了 MCS-51系列单片机:集成 8位CPU、4K字 节ROM、128字节RAM、4个8位并口、1个 全双工串行口、2个16位定时/计数器。寻址 范围64K,并有控制功能较强的布尔处理器。
8
-128~127
8
0~255
C语言中的基本数据类型
类型 符号
关键字
有
整 型
无
实有 型有
字有
符 型
无
(signed) int (signed) short (signed) long
unsigned int unsigned short int unsigned long int
float double char unsigned char
2 10
8
1000
3 11
9
1001
4 100
10
1010
5 101
11
1011
十六进制
是二进制的简短表示形式。 十进制中的0-15分别表示为十六进制的0、1、 2、3、4、5、6、7、8、9、A、B、C、D、 E、F
熟练掌握二进制与十六进制之间的转换。 规律:一般把四个二进制数放在一起转换成 一个十六进制数,转换时先把二进制数转换 成十进制数,再把十进制数转换成十六进制 数。
总线(BUS)是计算机各部件之间传送信
息的公共通道。微机中有内部总线和外部总 线两类。内部总线是CPU内部之间的连线。 外部总线是指CPU与其它部件之间的连线。 外部总线有三种: 数据总线DB(Data Bus), 地址总线 AB(Address Bus)和控制总线 CBControl Bus)。
﹡ Intel的:80C31、80C51、87C51,80C32、 80C52、87C52等;
﹡ ATMEL的:89C51、89C52、89C2051等; ﹡ Philips、华邦、Dallas 、STC
Siemens(Infineon)等公司的许多产品 。 补充:关于型号的介绍
80C51的引脚封装
如:0001B -> 1 -> 1H B表示为二进制,H为十六进制
1001B -> 9 -> 9H 1010B -> 10 -> AH 0010 1100 -> 44 -> 2CH
各种进位制的对应关系
十进制 二进制
0
0
1
1
2
10
3
11
4
100
5
101
6
110
7
111
8 1000
十六进制 0 1 2 3 4 5 6 7 8
0·0=0, 0·1=1·0=0, 1·1=1
2. “或” “或”运算是实现“只要其中之一 有, 就有”这种逻辑关系的一种运算, 其运算符为“+”。 “或”运算规则如 下: 0+0=0, 0+1=1+0=1, 1+1=1
3. “非”运算 “非”运算是实现“求反”这种逻 辑的一种运算,如变量A的“非”运算 记作A 。 其运算规则如下:
数字电路中只有两种电平:高和低 (本课程中)定义单片机为TTL电平:
高 +5V 低 0V RS232电平:计算机的串口
高 -12V 低+12V 所以计算机与单片机之间通讯时需要加电 平转换芯片max232(实验板上左下角)。
二进制
数字电路中的两种电平特性决定了它
00
6
110
11
7
111
VSS 20
40 VCC 39 P0.0 38 P0.1 37 P0.2 36 P0.3 35 P0.4 34 P0.5 33 P0.6 32 P0.7 31 EA/VPP 30 ALE/PROG 29 PSEN 28 P2.7 27 P2.6 26 P2.5 25 P2.4 24 P2.3 23 P2.2 22 P2.1 21 P2.0
所占位数
数的表示范围
16
-32768~32767
16
-32768~32767
32
-2147483648~2147483647
16
0~65535
16
0~65535
32
0~4294967295
32
3.4e-38~3.4e38
64
1.7e-308~1.7e308
8
-128~127
8
0~255
C-51的数据类型扩充定义
十天学会单片机 完整版
十天学会单片机 完整版
第一讲
学单片机需要什么基础? 什么是单片机、单片机能做什么、怎么开始
学习单片机。 学单片机需要的一些预备知识 C51基础知识。 了解TX-1C单片机学习板系统结构 如何用TX-1C单片机学习板在短时间内掌握