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);
}