郭天祥之十天学会单片机练习题目
Lesson1作业 1用位操作点亮第一个发光管. // 适用 TX-1C单片机实验板 // 晶振为11.0592M /*********************************************************/ #include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main() //主函数 { led1=0; //将单片机P1.0口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 }
2/ 用总线操作点亮第一个发光管. // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 void main() //主函数 { P1=0xfe; //将单片机P1口的8个口由高到低分别赋值为11111110 while(1); //程序停止在这里,在后面会讲到为什么这样写。 }
3 / / 用位操作点亮最后一个发光管. // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 sbit led8=P1^7; //单片机管脚位声明 void main() //主函数 { led8=0; //将单片机P1.7口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 } 4 // 用总线操作点亮最后一个发光管. // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 void main() //主函数 { P1=0x7f; //将单片机P1口的8个口由高到低分别赋值为01111111 while(1); //程序停止在这里,在后面会讲到为什么这样写。 } 5 // 用位操作点亮1,3,5,7发光管. // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 sbit led3=P1^2; //单片机管脚位声明 sbit led5=P1^4; //单片机管脚位声明 sbit led7=P1^6; //单片机管脚位声明 void main() //主函数 { led1=0; //将单片机P1.0口清零 led3=0; //将单片机P1.2口清零 led5=0; //将单片机P1.4口清零 led7=0; //将单片机P1.6口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 } 6 // 用总线操作点亮1,3,5,7发光管. // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 void main() //主函数 { P1=0xaa; //将单片机P1口的8个口由高到低分别赋值为10101010 while(1); //程序停止在这里,在后面会讲到为什么这样写。 } 7 // 用位操作点亮2,4,5,6发光管. // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 sbit led2=P1^1; //单片机管脚位声明 sbit led4=P1^3; //单片机管脚位声明 sbit led5=P1^4; //单片机管脚位声明 sbit led6=P1^5; //单片机管脚位声明 void main() //主函数 { led2=0; //将单片机P1.1口清零 led4=0; //将单片机P1.3口清零 led5=0; //将单片机P1.4口清零 led6=0; //将单片机P1.5口清零 while(1); //程序停止在这里,在后面会讲到为什么这样写。 } 8 // 用总线操作点亮2,4,5,6发光管. // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 void main() //主函数 { P1=0xc5; //将单片机P1口的8个口由高到低分别赋值为11000101 while(1); //程序停止在这里,在后面会讲到为什么这样写。 } 9 // 尝试让第一个发光管闪烁.(程序看不懂没关系,后面章节会有详细讲解) // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 sbit led1=P1^0; //单片机管脚位声明 void main() //主函数 { unsigned int i; //定义一个int型变量 while(1) { i=50000; //变量赋初值为50000 led1=0; //点亮灯 while(i--); //延时 i=50000; led1=1; //熄灭灯 while(i--); }
} 9 // 尝试写出流水灯程序(程序看不懂没关系,后面章节会有详细讲解) // 适用 TX-1C单片机实验板 // 晶振为11.0592M /*********************************************************/ #include //52单片机头文件
void main() //主函数 { unsigned int i; //定义一个int型变量 while(1) { i=50000; //变量赋初值为50000 P1=0xfe; //点亮第一个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xfd; //点亮第二个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xfb; //点亮第三个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xf7; //点亮第四个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xef; //点亮第五个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xdf; //点亮第六个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0xbf; //点亮第七个灯 while(i--); //延时 i=50000; //变量赋初值为50000 P1=0x7f; //点亮第八个灯 while(i--); //延时 }
} Lesson 2 1 // 第一个发光管以间隔200ms闪烁 // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit led1=P1^0; //单片机管脚位声明
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms. { //delay(500);大约延时500ms. uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() //主函数 { while(1) //大循环 { led1=0; //点亮小灯 delay(200); //延时200毫秒 led1=1; //熄灭小灯 delay(200); //延时200毫秒 } } 2 // 8个发光管由上至下间隔1s流动 //,其中每个管亮500ms,灭500ms,亮时蜂鸣器响 //,灭时关闭蜂鸣器,一直重复下去。 // 适用 TX-1C单片机实验板 // 晶振为11.0592M
/*********************************************************/ #include //52单片机头文件 #include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit beep=P2^3; void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms. { //delay(500);大约延时500ms. uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() //主函数 { uchar a; a=0xfe;
郭天祥新概念51单片机C语言教程例题
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()
郭天祥10天学会单片机完整版精品PPT课件
▪ 工业自动化:数据采集、测控技术。 ▪ 智能仪器仪表:数字示波器、数字信号源、
数字万用表、感应电流表等。
▪ 消费类电子产品:洗衣机、电冰箱、空调机、 电视机、微波炉、手机、IC卡、汽车电子设 备等。
▪ 通讯方面:调制解调器、程控交换技术、手 机、小灵通等。
▪ 武器装备:飞机、军舰、坦克、导弹、航天 飞机、鱼雷制导、智能武器等。
▪ CPU:由运算和控制逻辑组成,同时还包括 中断系统和部分外部特殊功能寄存器;
▪ RAM:用以存放可以读写的数据,如运算的 中间结果、最终结果以及欲显示的数据;
▪ ROM:用以存放程序、一些原始数据和表格;
▪ I/O口:四个8位并行I/O口,既可用作输入, 也可用作输出;
▪ T/C:两个定时/记数器,既可以工作在定时 模式,也可以工作在记数模式;
﹡ Intel的:80C31、80C51、87C51,80C32、 80C52、87C52等;
﹡ ATMEL的:89C51、89C52、89C2051等; ﹡ Philips、华邦、Dallas 、STC
Siemens(Infineon)等公司的许多产品 。 补充:关于型号的介绍
80C51的引脚封装
总线型
非总线型
80C51/89C51 89C2051
P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 RST/VPD 9 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.5/T1 15 P3.6/WR 16 P3.7/RD 17 XTAL2 18 XTAL1 19
sfr:特殊功能寄存器声明 sfr16:sfr的16位数据声明 sbit:特殊功能位声明 bit:位变量声明 例:sfr SCON = 0X98;
51单片机,郭天祥,第三章,PDF,Word
3.4中断概念中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。
它也是单片机最重要的功能之一, 是我们学习单片机必须要掌握的。
很多初学者被困在中断中,学了很久仍然不知道中断究竟是个什么东西,大家千万不要认为它有多难,其实只要掌握正确的学习方法,没有哪个知识点是学不会的。
51单片机内部一共有5个中断源,也就是说,有5种情况发生时,会使单片机去处理中断程序。
在本章我们只讲解其中的一种中断情况——定时器中断,只要大家从理论和实践中真正明白了中断的概念,其他几种情况便能轻松掌握。
为了能让大家更容易理解中断概念,我们先来举一个生活事例:你打开火,烧上一壶水, 然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。
这个过程中实际上就发生了一次中断,其流程图如图3.4.1所示。
对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU 迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B (中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A (中断返回),这一过程称为中断,其流程图如图3.4.2所示。
再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服,水开报警这是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。
这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。
单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。
郭天祥之十天学会单片机视频配套程序-实用!
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); //程序停止在这里,在后面会讲到为什么这样写。
}用位操作点亮最后一个发光管./*********************************************************/ #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); //程序停止在这里,在后面会讲到为什么这样写。
郭天祥十天学会单片机PPT课件
十天学会单片机 完整版
五个中断源的中断控制系统; 一个全双工UART(通用异步接收发送器) 的串行I/O口,用于实现单片机之间或单片机 与微机之间的串行通信; 片内振荡器和时钟产生电路,石英晶体和微 调电容需要外接。最高振荡频率取决于单片 机型号及性能。
C51知识
C语言是一种编译型程序设计语言,它兼顾 了多种高级语言的特点,并具备汇编语言的 功能。目前,使用C语言进行程序设计已经 成为软件开发的一个主流。用C语言开发系 统可以大大缩短开发周期,明显增强程序的 可读性,便于改进、扩充和移植。而针对 8051的C语言日趋成熟,成为了专业化的实 用高级语言。
非总线型
RST P3.0/RXD P3.1/TXD XTAL2 XTAL1 P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 GND 1 2 3 4 5 6 7 8 9 10 20 19 18 17 16 15 14 13 12 11 VCC P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1/AIN1 P1.0/AIN0 P3.7
C-51数据的存储类型
例:
数据类型 变量名
char var1; bit flags; unsigned char vextor[10]; int wwww; 注意:变量名不能用C语言中的关 键字表示。
◆单板机 将CPU芯片、存储器芯片、I/O接口芯片和 简单的I/O设备(小键盘、LED显示器)等装 配在一块印刷电路板上,再配上监控程序(固 化在ROM中),就构成了一台单板微型计算 机(简称单板机)。
郭天祥十天学会单片机例程
void delay1s();//声明子函数
void main()//主函数
{
while(1)//大循环
{
led1=0;/*点亮第一个发光二极管*/
delay1s();//调用延时子函数
led1=1;/*关闭第一个发光二极管*/
delay1s();//调用延时子函数
void delayms(uint);//声明子函数
void main()//主函数
{
while(1)//大循环
{
led1=0;/*点亮第一个发光二极管*/
delayms(200);//延时200毫秒
led1=1;/*关闭第一个发光二极管*/
delayms(800);//延时800毫秒
}
}
void delayms(uint xms)
}
}
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系列单片机头文件
#define uint unsigned int //宏定义
sbit led1=P1^0;//声明单片机P1口的第一位
uint i,j;
void main()//主函数
{
while(1)//大循环
{
led1=0;/*点亮第一个发光二极管*/
#include <reg52.h> //52系列单片机头文件
郭天祥新概念51单片机C语言教程例题
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0;
/* TCON */
sbit TF1 = TCON^7;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7;#include<>All rights reserved.
Modification according to DataSheet from April 1999
- SFR's AUXR and AUXR1 added for 80C51Rx+ derivatives
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7; // alternatively "FE"
sbit FE = SCON^7;
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
单片机练习题及例题
单片机练习题及例题单片机课堂练习题/例题总结习题和思考题一1、一个完整的单片微机芯片内至少有哪些部件?2、根据程序存储器的差别单片机可以分为那些类型?3、单片机的主要特性是什么?它适宜于构成一个通用微机系统还是专用微机系统?为什么?习题与思考题二1、8051单片机内包含哪些主要逻辑功能部件?2、MCS-51单片机结构上有哪些主要特点?习题和思考题三1、详细描绘MCS-51单片机的存储器配置图。
2、MCS-51单片机是通过哪些方法将程序存储器和数据存储器严格分开的?3、什么是单片机的特殊功能寄存器?8051/8052各有几个特殊功能寄存器?这些特殊功能寄存器占有的地址范围?4、MCS—51单片机有哪些可直接寻址的位?5、什么是堆栈?8031的堆栈区可以设在什么地方?一般应设在什么区域?如何实现?试举例说明。
习题和思考题四1、试根据P1口和P3口的结构特性,指出它们作为输入口或第二功能输入/输出的条件。
2、MCS-51中无ROM型单片机在应用中P2口和P0口能否直接作为输入/输出连接开关、指示灯之类的外围设备?为什么?3、画出MCS-51系列单片机进行系统扩展时的三总线结构图。
课堂练习一1、8031有四个工作寄存器区,由PSW状态字中的RS1、RS0两位的状态来决定,单片机复位后,若执行SETBRS1指令,此时只能使用()区的工作寄存器。
A、0区B、1区C、2区D、3区2.09H位所在的单元地址是()A.02HB.21HC.08HD.20H3.单片机在进行取指令操作时,指令的地址是由()的内容决定。
A.SPB.PCC.DPTRD.PSEN和ALE4.P1口作输入用途之前必须()。
A.外接高电平B.外接上拉电阻C.相应端口先置0D.相应端口先置15.程序计数器PC用来()。
A.存放指令B.存放上一条的指令地址C.存放下一条的指令地址D.存放正在执行的指令地址思考题1.数123可能是()。
A.二进制数B.八进制数C.十六进制数D.四进制数E.十进制数2.8031单片机内部RAM包括()A.程序存储区B.堆栈区C.工作寄存器及特殊功能区D.位寻址区E.中断入口地址区3.8051单片机CPU的主要功能有()。
十天学会单片机和C语言编程郭天祥视频教程配套课件
C-51的基本语句
与标准C语言基本相同:
if
选择语言
while
循环语言
for
循环语言
switch/case 多分支选择语言
do-while
循环语言
中断服务程序
函数名()interrupt n using m {
函数内部实现 …. }
I/O口定义
sbit beep=P2^3;
单片机主要掌握以下几点
总线型
非总线型
80C51/89C51 89C2051
P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 RST/VPD 9 P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14 P3.5/T1 15 P3.6/WR 16 P3.7/RD 17 XTAL2 18 XTAL1 19
▪ 最小系统能够运行起来的必要条件。 1.电源 2.晶振3.复位电路
▪ 对单片机任意IO口的随意操作 1.输出控制电平高低2.输出检测电平高低。
▪ 定时器:重点掌握最常用的方式2 ▪ 中断:外部中断、定时器中断、串口中断 ▪ 串口通信:单片机之间、单片机与计算机间
KEIL的使用
▪ 掌握KEIL工程的建立和软件的开发; ▪ 掌握KEIL中软件仿真的基本应用; ▪ 掌握用KEIL直接硬件仿真TX-1C单片机学习
▪ 实践第一。 ▪ 补充必要的理论知识,即缺什么补什么。 ▪ 做工程项目积累经验。(可在网络上搜集题
目,也可自己有什么想法大胆的去试验)
预备知识
▪ 电平特性 ▪ 2进制与16进制的表示及转换 ▪ 二进制数的逻辑运算 ▪ 8051单片机介绍 ▪ C51基础知识
