郭天祥新概念51单片机C语言教程例题
(完整版)十天学会单片机C语言_郭天祥---课后习题答案.docx
郭天祥十天学通单片机TX-1C单片机实验板所有课作业 +答案,特别整理,供单片机爱好与学习者使用讲次内容细节第一讲学单片机预备知识、如何点亮一个发光管单片机能做什么,基本电子知识,如何用 TX-1C单片机学习板学习单片机, C51 知识简介,如何申请免费芯片样品。
点亮一个发光管,第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。
第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深用单片机的定时器及中断设计一个60 秒定时器第五讲独立键盘、矩阵键盘的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用第六讲AD、 DA 的工作原理及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD 及 DA、ADC0804 的操作方法、 DAC0832 的操作方法第七讲串口通讯原理及操作流程串口通讯工作方式、 10 位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。
第八讲1602 液晶、 12864 液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作第九讲 IIC 总线 AT24C02芯片工作原理 IIC 总线工作原理、目前非常通用的一种通信机制第十讲利用 51 单片机的定时器设计一个时钟综合运用 51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。
(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信)第十一讲用 DS12C887时钟芯片设计一个高精度时钟DS12C887 内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、月、日、时、分、秒等。
51单片机应用技术(C语言版)习题答案(1)
解:计数初值X=216- T/T机=65536-1000/1=64536=FC18H
则TH0 = 0xfc
TL0 = 0x18
定时器0方式1时,TMOD=0x01
查询法参考程序:
#include<reg51.h>
同级或低级中断请求不能打断正在执行的中断;
同级中断源同时提出请求时按自然优先级响应:
单片机复位时,IP各位都被置0,所有中断源为低级中断。
自然优先级顺序是:/INT0→ T0 → /INT1→T1→TI/RI
5.答:有一按键接到单片机外部中断0引脚上,要求编程对按键动作进行计数和显示,达到99后重新由0开始计数(采用中断方式)。
答:MCS-51单片机的存储器采用的是哈佛结构,即把程序存储器和数据存储器分开,有各自的寻址系统、控制信号和功能。
MCS-51单片机存储器的最大寻址空间64KB。
4.MCS-51单片机的时钟周期,状态周期,机器周期,指令周期的含义是什么?当晶振频率为6MHZ时,它们分别为多少?
答:时钟周期:由振荡电路产生的时钟脉冲的周期;
MCS-51单片机提供了4个8位的I/O端口,分别命名为P0、P1、P2、P3,这些端口既可以按字节一次输入或输出8位数据,同时它们的每一位都可以独立进行输出或输出操作。
MCS-51单片机内部有两个16位的定时器/计数器,既可以做定时功能,又可以做计数功能。
2.MCS-51单片机的P0-P3口在功能上各有什么用途和区别?当它们做I/O口使用时,具有哪些特点?
sbit p1_0=P1^0;
void main()
{
TMOD=0x01;
郭天祥单片机C语言课后答案
郭天祥单片机C语言课后答案郭天祥十天学通单片机 TX-1C单片机实验板所有课作业+答案,特别整理,供单片机爱好与学习者使用讲次内容细节第一讲学单片机预备知识、如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。
点亮一个发光管,第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。
第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深用单片机的定时器及中断设计一个60秒定时器第五讲独立键盘、矩阵键盘的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用第六讲AD、DA的工作原理及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。
第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、目前非常通用的一种通信机制第十讲利用51单片机的定时器设计一个时钟综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。
(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信)第十一讲用DS12C887时钟芯片设计一个高精度时钟D S12C887内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、月、日、时、分、秒等。
郭天祥十天征服单片机--课后答案
郭天祥十天学通单片机所有课作业+答案,特别整理,供单片机爱好与学习者使用讲次内容细节第一讲学单片机预备知识、如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。
点亮一个发光管,第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。
第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深用单片机的定时器及中断设计一个60秒定时器第五讲独立键盘、矩阵键盘的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用第六讲AD、DA的工作原理及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。
第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、目前非常通用的一种通信机制第十讲利用51单片机的定时器设计一个时钟综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。
(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信)第十一讲用DS12C887时钟芯片设计一个高精度时钟DS12C887内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、月、日、时、分、秒等。
(本节由学生自己设计电路)第十二讲使用Protell99绘制电路图全过程Protell99软件使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工第十三讲Altium designer 6.5绘制电路图全过程最顶级电路板设计软件Altium Designer使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工lesson1对照TX-1C单片机学习板原理图写程序用位操作和总线操作两种方法完成以下题目1.熟练建立KEIL工程2.点亮第一个发光管.3.点亮最后一个发光管4.点亮1、3、5、75.点亮二、四、五、六6.尝试让第一个发光管闪烁7.尝试设计出流水灯程序=========================================================== ===========================================================lesson2第一个发光管以间隔200ms闪烁8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
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单片机,郭天祥,第三章,PDF,Word
3.4中断概念中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。
它也是单片机最重要的功能之一, 是我们学习单片机必须要掌握的。
很多初学者被困在中断中,学了很久仍然不知道中断究竟是个什么东西,大家千万不要认为它有多难,其实只要掌握正确的学习方法,没有哪个知识点是学不会的。
51单片机内部一共有5个中断源,也就是说,有5种情况发生时,会使单片机去处理中断程序。
在本章我们只讲解其中的一种中断情况——定时器中断,只要大家从理论和实践中真正明白了中断的概念,其他几种情况便能轻松掌握。
为了能让大家更容易理解中断概念,我们先来举一个生活事例:你打开火,烧上一壶水, 然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。
这个过程中实际上就发生了一次中断,其流程图如图3.4.1所示。
对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU 迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B (中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A (中断返回),这一过程称为中断,其流程图如图3.4.2所示。
再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服,水开报警这是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。
这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。
单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。
51单片机c语言考试题和答案
51单片机c语言考试题和答案一、单项选择题(每题2分,共20分)1. 51单片机中,以下哪个寄存器是用于存储程序计数器(PC)的值?A. DPTRB. SPC. PCD. ACC答案:C2. 在51单片机中,以下哪个指令用于将累加器A的内容传送到外部数据存储器?A. MOV A, @R0B. MOV @R0, AC. MOV A, #dataD. MOV DPTR, #address答案:B3. 51单片机的定时器/计数器有几种工作模式?A. 2种B. 3种C. 4种D. 5种答案:C4. 51单片机中,以下哪个指令用于将立即数传送到累加器A?A. MOV A, #dataB. MOV A, @R0C. MOV A, R0D. MOV A, DPTR答案:A5. 51单片机的串行通信中,以下哪个寄存器用于存储串行数据?A. TCONB. SCONC. PCOND. IE答案:B6. 51单片机中,以下哪个指令用于将累加器A的内容与寄存器R0的内容进行异或操作?A. XOR A, R0B. ORL A, R0C. ANL A, R0D. CPL A答案:A进行逻辑与操作?A. ANL A, #dataB. ORL A, #dataC. XRL A, #dataD. CPL A答案:A8. 51单片机中,以下哪个指令用于将累加器A的内容与寄存器R0的内容进行逻辑或操作?A. ORL A, R0B. ANL A, R0C. XRL A, R0D. CPL A答案:AR0的内容进行逻辑异或操作?A. ORL A, R0B. ANL A, R0C. XRL A, R0D. CPL A答案:C10. 51单片机中,以下哪个指令用于将累加器A的内容与寄存器R0的内容进行逻辑非操作?A. ORL A, R0B. ANL A, R0C. XRL A, R0D. CPL A答案:D二、填空题(每题2分,共20分)1. 51单片机的外部中断有______个,分别是INT0和INT1。
51单片机c语言考试题目及答案
51单片机c语言考试题目及答案一、单项选择题(每题2分,共20分)1. 51单片机中,以下哪个寄存器用于存储程序计数器(PC)?A. R0B. SPC. DPTRD. PC答案:D2. 在51单片机中,哪个寄存器用于存储堆栈指针?A. R0B. SPC. DPTRD. PC答案:B3. 51单片机的定时器/计数器有几种工作模式?A. 2种B. 3种C. 4种D. 5种答案:C4. 51单片机中,哪个指令用于将累加器A的内容送入外部数据存储器?A. MOV A, #dataB. MOV A, @R0C. MOVX @DPTR, AD. MOVX A, @DPTR答案:C5. 51单片机中,哪个指令用于将累加器A的内容送入寄存器R0?A. MOV A, R0B. MOV R0, AC. MOV A, #dataD. MOVX @DPTR, A答案:B6. 51单片机中,哪个指令用于将立即数送入累加器A?A. MOV A, R0B. MOV A, #dataC. MOVX @DPTR, AD. MOVX A, @DPTR答案:B7. 51单片机中,哪个指令用于将累加器A的内容与寄存器R0的内容进行逻辑“或”操作?A. ORL A, R0B. ORL A, #dataC. ORL @R0, AD. ORL A, @R0答案:A8. 51单片机中,哪个指令用于将累加器A的内容与立即数进行逻辑“与”操作?A. ANL A, R0B. ANL A, #dataC. ANL @R0, AD. ANL A, @R0答案:B9. 51单片机中,哪个指令用于将累加器A的内容与寄存器R0的内容进行逻辑“异或”操作?A. XRL A, R0B. XRL A, #dataC. XRL @R0, AD. XRL A, @R0答案:A10. 51单片机中,哪个指令用于将累加器A的内容与寄存器R0的内容进行逻辑“非”操作?A. CPL AB. CPL R0C. CPL @R0D. CPL A, R0答案:A二、填空题(每题2分,共20分)1. 51单片机的内部RAM共有______字节。
新概念51单片机C语言教程例题
目录例编写程序,点亮第一个发光二极管(P27 )错误!未定义书签。
例利用for 语句延时特性,编写第一个发光二极管以间隔1S 亮灭闪动的程序(P42 )错误!未定义书签。
例编写程序使第一个发光二极管以间隔500ms亮灭闪动。
(P48 )错误!未定义书签。
例编写程序使第一个二极管以亮200ms灭800ms的方式闪动。
P49)错误味定义书签。
例利用C51自带库_crol_(),以间隔500ms实现流水灯程序(P53)错误味定义书签。
例编写程序使第一个数码管显示8(P59 )....... 错误!未定义书签。
例让实验板上6个数码管同时点亮,依次显示0到F,时间间隔为,循环下去。
(P61 )..................... 错误!未定义书签。
例第一个数码管显示 1 ,时间为,然后关闭它,立即让第二个数码管显示2,时间为,在关闭它……一直到最后一个数码管显示6,时间同样为,关闭它之后再回来显示第一个数码管,一直循环下去。
(P62 ) ... 错误!未定义书签。
例利用定时器0 工作方式1,在实验板上实现第一个发光管以1s 亮灭闪烁。
(P74 )..................... 错误!未定义书签。
例用定时器0的方式1实现个第一发光二极管以200ms间隔闪烁,用定时器1 的方式 1 实现数码管前两位59s 循环计时。
(P75 )错误!未定义书签。
例用数码管前两位显示一个十进制数,变化范围为00~59,开始时显示00,每按下S2键一次,数值加1;每按下S3键一次,数值减1;每按下S4键一次,数值归零;按下S5键一次,利用定时器功能使数值开始自动每秒加1,再次按下S5键,数值停止加1,保持显示原数。
(P82 )....... 错误!未定义书签例实验班上电时,数码管不显示,顺序按下矩阵键盘后,数码管上依次显示0~F,六个数码管同时静态显示即可。
(P87 )....... 错误!未定义书签例用单片机控制ADC0804进行数模转换,当拧动实验板上A/D旁边的电位时,在数码管的前三位以十进制方式显示出A/D转换后的数字量(8位A/D转换后数值在0~255变化)。
郭天祥_十天学通单片机_所有课后作业 答案
郭天祥_十天学通单片机_所有课后作业答案lesson1对照TX-1C单片机学习板原理图写程序用位操作和总线操作两种方法完成以下题目1.熟练建立KEIL工程2.点亮第一个发光管.3.点亮最后一个发光管4.点亮1、3、5、75.点亮二、四、五、六6.尝试让第一个发光管闪烁7.尝试设计出流水灯程序======================================================================================================================lesson2第一个发光管以间隔200ms闪烁8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。
用8个发光管演示出8位二进制数累加过程。
8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。
重复此过程。
间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。
======================================================================================================================lesson31、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。
2、利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。
(完整版)十天学会单片机C语言_郭天祥---课后习题答案
郭天祥十天学通单片机TX-1C单片机实验板所有课作业+答案,特别整理,供单片机爱好与学习者使用讲次内容细节第一讲学单片机预备知识、如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51 知识简介,如何申请免费芯片样品。
点亮一个发光管,第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。
第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深用单片机的定时器及中断设计一个60 秒定时器第五讲独立键盘、矩阵键盘的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用第六讲AD、DA 的工作原理及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD 及DA、ADC0804 的操作方法、DAC0832 的操作方法第七讲串口通讯原理及操作流程串口通讯工作方式、10 位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。
第八讲 1 602液晶、12864 液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、目前非常通用的一种通信机制第十讲利用51 单片机的定时器设计一个时钟综合运用51 单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。
(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信)第^一讲用DS12C887时钟芯片设计一个高精度时钟DS12C887内部带有锂电池,系统掉电情况下可自行精确走10 年,并带有闹钟功能、年、月、日、时、分、秒等。
郭天祥单片机教程 第3章指令
第 3 章 MCS - 51单片机指令系统
5. 基址寄存器加变址寄存器间接寻址 这种寻址方式用于访问程序存储器中的数据表格, 它以 基址寄存器DPTR或PC的内容为基本地址, 加上变址寄存器 A的内容作为操作数的地址。 例如: MOVC A, @A+DPTR MOVC A, @A+ PC JMP @A+DPTR
第二条指令是以DPTR作为基址寄存器, 累加器A的内容作为无符号数与 DPTR内容相加, 得到一个 16 位的地址, 并把该地址指出的程序存储器单元 的内容送到累加器A。这条指令的执行结果只与指针DPTR及累加器A的内 容有关, 与该指令存放的地址无关, 因此, 表格的大小和位置可以在 64 KB程 序存储器中任意安排, 并且一个表格可以为各个程序块所共用。
7. 位寻址
该种寻址方式中, 操作数是内部RAM单元中某一位的信息。 例: SETB P3.2 SETB 20H CLR ACC.0 JNB P3.2,LOOP
第 3 章 MCS - 51单片机指令系统
3.2 指令系统
3.2.1 指令分类
按指令的功能, MCS -51 指令系统可分为下列 5 类: (1) 数据传送; (2) 算术运算; (3) 逻辑运算; (4) 位操作; (5) 控制转移。
在51指令系统中, 直接寻址方式中可以访问3种存储器空间:
(1) 内部数据存储器的低 128 个字节单元(00H~7FH); (2) 特殊功能寄存器; 如: MOV A,80H 与 MOV A,P0 等效 (3) 位地址空间。如:SETB 20H
第 3 章 MCS - 51单片机指令系统
3. 寄存器寻址 在该寻址方式中, 参加操作的数存放在寄存器里。 寄存器(已命了名的内部存储单元)包括: 8个工作寄存器R0~R7、 累加器A 、 寄存器B、 数据指针DPTR
郭天祥十天学会单片机和C语言编程-
CPU:由运算和控制逻辑组成,同时还包括 中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的 中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入, 也可用作输出;
T/C:两个定时/记数器,既可以工作在定时 模式,也可以工作在记数模式;
所占位数
数的表示范围
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语言中的基本数据类型
C-51的特点
C语言作为一种非常方便的语言而得到广泛 的支持,很多硬件开发都用C语言编程,如: 各种单片机、DSP、ARM等.
C语言程序本身不依赖于机器硬件系统,基 本上不作修改就可将程序从不同的单片机中 移植过来。
C提供了很多数学函数并支持浮点运算,开 发效率高,故可缩短开发时间,增加程序可 读性和可维护性。
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
郭天祥-十天学通单片机-实验板所有课后作业+答案
郭天祥《十天学通单片机》———“ TX-1C单片机实验板”所有课后作业+答案,供单片机爱好与学习者使用第一讲学单片机预备知识、如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。
点亮一个发光管,第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。
第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深用单片机的定时器及中断设计一个60秒定时器第五讲独立键盘、矩阵键盘的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用第六讲AD、DA的工作原理及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD及DA、ADC0804的操作方法、DAC0832的操作方法第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。
第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、目前非常通用的一种通信机制第十讲利用51单片机的定时器设计一个时钟综合运用51单片机知识设计一个可以随意调节时间、带整点闹铃的时钟。
(其中用到定时器、中断、按键、蜂鸣器、数码管或串口通信)第十一讲用DS12C887时钟芯片设计一个高精度时钟DS12C887内部带有锂电池,系统掉电情况下可自行精确走10年,并带有闹钟功能、年、月、日、时、分、秒等。
(本节由学生自己设计电路)第十二讲使用Protell99绘制电路图全过程Protell99软件使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工第十三讲Altium designer 6.5绘制电路图全过程最顶级电路板设计软件Altium Designer使用、元件库、封装库设计、绘制原理图、错误检查、生成PCB、手动、自动布线、送去加工lesson1对照TX-1C单片机学习板原理图写程序,用位操作和总线操作两种方法完成以下题目1.熟练建立KEIL工程2.点亮第一个发光管.3.点亮最后一个发光管4.点亮1、3、5、75.点亮二、四、五、六6.尝试让第一个发光管闪烁7.尝试设计出流水灯程序====================================================== lesson2第一个发光管以间隔200ms闪烁8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
郭天祥51单片机教程
各种进位制的对应关系
十进制 二进制
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
十进制 二进制 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 16 10000
十六进制 9 A B C D E F 10
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的数据类型扩充定义
sfr:特殊功能寄存器声明 sfr16:sfr的16位数据声明 sbit:特殊功能位声明 bit:位变量声明 例:sfr SCON = 0X98;
▪ CPU:由运算和控制逻辑组成,同时还包括 中断系统和部分外部特殊功能寄存器;
▪ RAM:用以存放可以读写的数据,如运算的 中间结果、最终结果以及欲显示的数据;
▪ ROM:用以存放程序、一些原始数据和表格;
▪ I/O口:四个8位并行I/O口,既可用作输入, 也可用作输出;
▪ T/C:两个定时/记数器,既可以工作在定时 模式,也可以工作在记数模式;
RST 1 P3.0/RXD 2 P3.1/TXD 3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sbit wela=P2^7; //申明U2锁存器的锁存端
void main()
{
wela=1; //打开U2锁存器
P0=0xFE; //送入位选信号
wela=0; //关闭U2锁存器
dula=1; //打开U1锁存器
P0=0x7F; //送入段选信号
{
while(1)//大循环
{
led1=0;/*点亮第一个发光二极管*/
for(i=1;i>0;i--)//延时
for(j=110;j>0;j--);
led1=1;/*关闭第一个发光二极管*/
for(i=1000;i>0;i--)//延时
for(j=110;j>0;j--);
}
}
例
#include <reg52.h>//52系列单片机头文件
sbit led1=P1^0;//声明单片机P1口的第一位
void delayms(uint);//声明子函数
void main()//主函数
{
while(1)//大循环
{
led1=0;/*点亮第一个发光二极管*/
delayms(200);//延时200毫秒
led1=1;/*关闭第一个发光二极管*/
uchar num;
unchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delayms(uint);
void main()
{
wela=1;//打开U2锁存端
#define uint unsigned int//宏定义
sbit led1=P1^0;//声明单片机P1口的第一位
void delay1s();//声明子函数
void main()//主函数
{
while(1)//大循环
{
led1=0;/*点亮第一个发光二极管*/
delay1s();//调用延时子函数
P0=0xco;//送入位选信号
wela=0;//关闭U2锁存端
while(1)
{
for(num=0;num<16;num++)//16个数循环显示
{
dula=1;//打开U1锁存端
P0=table[num];//送入段选信号
dula=0;//关闭U1锁存端
delay(500);//延时0.5秒
}
}
delayms(500); //延时500毫秒
aa=_crol_(aa,1); //将aa循环左移1位后再赋给aa
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)//i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
例
#include <reg52.h>//52系列单片机头文件
void delayms(uint);
void main()
{
while(1)
{
dula=1;
P0=table[1]; //送段选数据
dula=0; //关闭U2锁存器
while(1); //程序停止到这里
}
例
#include <reg52.h> //52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;//申明U1锁存器的锁存端
sbit wela=P2^7; //申明U2锁存器的锁存端
}
void delayms(uintxms)
{
uinti,j;
for(i=xms;i>0;i--)//i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
例
#include <reg52.h> //52系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
void main()//主函数
{
PHale Waihona Puke =0xaa;//while(1);
}
例
#include <reg52.h> //52系列单片机头文件
#define uint unsigned int //宏定义
sbit led1=P1^0;//声明单片机P1口的第一位
uint i,j;
void main()//主函数
例
#include <reg52.h> //52系列单片机头文件
sbit led1=P1^0;//声明单片机P1口的第一位
void main()//主函数
{
led1=0; /*点亮第一个发光二极管*/
}
例2.2.2编写程序,点亮P1口的若干二极管(part2_2.c P39)
#include <reg52.h> //52系列单片机头文件
led1=1;/*关闭第一个发光二极管*/
delay1s();//调用延时子函数
}
}
void delay1s()//子函数体
{
uint i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}
例
#include <reg52.h>//52系列单片机头文件
#define uint unsigned int//宏定义
delayms(800);//延时800毫秒
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)//i=xms即延时约xms毫秒
for(j=110;j>0;j--);
}
例
#include <reg52.h>//52系列单片机头文件
#include <intrins.h>
#define uint unsigned int//宏定义
#define uchar unsigned char
void delayms(uint);//声明子函数
uchar aa;
void main()//主函数
{
aa=0xfe;//赋初值11111110
while(1)//大循环
{
P1=aa;
sbit dula=P2^6;//申明U1锁存器的锁存端
sbit wela=P2^7; //申明U2锁存器的锁存端
uchar num;
unchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};