Transcript Document
第一章 单片机的C语言概述
教材
《单片机C语言轻松入门》
周坚编著,北京航空航天大学出版社
参考书目:
《单片机C语言设计实例精讲》,戴佳等编著,电
子工业出版社,2008年12月第二版。
《单片机C语言编程与实例》,赵亮等编著,人民
邮电出版社,2003年9月第二版。
《新概念51单片机C语言教程》,郭天祥编著,电
子工业出版,2009年3月第一版。
课程安排
共64个学时
本课程强调实
际应用为主,
以培养学生的
实际实践能力
为主。
1.
理论课程
2.
实验课程
(48个学时)
(16个学时)
考评办法
总评成绩的组成:
期末成绩
50%
10%
30%
实验成绩
• 实验报告
• 出勤情况
10%
期中考试
考勤及测试
• 课堂提问
• 出勤情况
• 课堂测验
第一章 单片机C语言概述
单片机现状分析
大量的应用需求
广泛的应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的
智能化管理及过程控制等领域 。
单片机主要厂商
INTEL公司的8051系列单片机;Motorola 公司(FREESCALE,飞思卡尔
)的M68系列单片机;MicroChip公司的PIC系列单片机;Philips公司的
P89系列; ATMEL公司AT89C51系列,AVR系列;Zilog公司的Z80系列单片
机。
单片机广泛的应用
单片机应用
电讯方面
工业方面
汽车方面
民用方面
仪表方面
数据处理方面
本课程主要内容
本课程以80C51系列中的AT89C51单片机为例
学习单片机的C语言编程技术。
结合AT89C51的结构特点,利用Keil软件作为开
发环境,Proteus作为电路仿真软件,学习C语言
编程技术实现所需电路功能。
单片机开发板
单片机的特点及应用
1. 单片机的特点
体积小,重量轻
电源单一,功耗低
功能强,价格低
运行速度快,抗干扰能力强,可靠性高
可以嵌入到电子产品中——嵌入式应用系统
AT89C51单片机
AT89C51简介
4k字节可编程闪烁存储器(FPEROM )
寿命1000写/擦 循环
数据保留时间:10年
128字节内部RAM(随机存取存储器)
32可编程I/O线
两个16位定时器/计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
MCS-51单片机硬件结构
T0 T1
时钟电路
ROM
RAM
并行接口
串行接口
定时计数器
CPU
P0 P1 P2 P3
TXD RXD
结构框图
中断系统
INT0 INT1
• 并行I/O口:4个
• 8位的I/O口P0、
中央处理器
CPU:8位,
P1、P2、P3。
•
内部ROM:
运算和控制
• 串行口:一个全
4KB掩膜ROM,
功能
•
中断控制系统:
双工串行口。
• 5个中断源(外
时钟电路:可
用于存放程序、
产生时钟脉冲
原始数据和表
• 部中断2个,定
内部RAM:共
•
定时/计数器:
序列,允许晶
格。
时/计数中断2
256个RAM单
两个16位的定
振频率6MHZ
个,串行中断1
元,用户使用
时/计数器,实
和12MHZ
个)
前128个单元,
现定时或计数
(XTAL1和
用于存放可读
功能。
XTAL2)
写数据,后
128个单元被
专用寄存器占
用。
Keil C软件开发环境
单片机开发中除必要的硬件外,同样离不开软件
常用的单片机C语言编程环境是Keil软件
Keil 软件的使用主要包括四部:(演示过程)
(1)源文件的建立
(2)工程的建立
(3)工程的设置
(4)编译、链接(生成.hex文件)
本课程主要讲解单片机的C语言编程,其扩展名为.c,此
外该软件也可使用汇编语言,扩展名为.asm
Keil C启动界面
电路仿真软件proteus
Proteus软件是英国Labcenter electronics公司
出版的EDA工具软件。
不仅具有其它EDA工具软件的仿真功能,还能仿
真单片机及外围器件。
目前最好的仿真单片机及外围器件的工具。
在本课程学习主要应用proteus软件模拟仿真单
片机硬件实验电路,辅助可以使用教材提供的键
盘、LED实验仿真板。
Proteus界面
Proteus仿真实例界面
下载编程器
下载器软件界面
采用C语言编程的优势
(1)结构化控制语句
(2)适用范围大和可移植性好
(3)简洁紧凑,灵活方便
(4)运算符丰富
(5)数据结构丰富
(6)程序设计自由度大
(7)允许直接访问物理地址,可直接对硬件进行
操作
(8)生成代码质量高
一个简单小实例
C程序代码
#include "reg51.h"
sbit p1_0 = P1^0;
void main()
{
p1_0 = 0;
}
一个简单小实例
仿真电路演示
对简单程序分析
#include "reg51.h"
sbit p1_0 = P1^0;
void main()
{
p1_0 = 0;
}
reg51.h
sfr(特殊寄存器)
sbit(对应可位寻址空间的一个位)
main函数(一个程序有且只有一个,后必有大括号)
关键词使用用法
sfr:
sfr变量名= 地址值;
例如:sfr P1=0x90;
sbit(3种):
(1)sbit 位变量名=地址值;
(2)sbit 位变量名=sfr名称^变量位地址值;
(3)sbit 位变量名=sfr地址值^变量位地址值;
C程序特性分析
(1)C程序由函数组成(至少有一个main函数)
(2)C程序总是从main程序开始执行
(3)C语言注意区分大小写
(4)书写格式自由,但建议规范写
(5)每个语句和定义最后有分号,分号不可缺少
(6)注释用/*…*/或是//
例1.2让接在P1.0引脚上LED闪烁发光
优秀程序员的素质之一:
使用TAB缩进
{}对齐
有足够的注释
有合适的空行
main( )
{
int i , j , sum;
sum=0;
for(i=1; i<10;i++)
{
for(j=1;j<10;j++)
{
sum+=i*j ;
}
}
printf(“%d\n”,sum);
}