单片机C语言程序设计实训100例——基于8051+Proteus仿真
分類: 图书,计算机/网络,程序设计,C C++ C# VC VC++,
作者: 彭伟 编著
出 版 社: 电子工业出版社
出版时间: 2009-6-1字数:版次: 1页数: 362印刷时间:开本: 16开印次:纸张:I S B N : 9787121087578包装: 平装内容简介
本书基于Keil μVision程序设计平台和Proteus硬件仿真平台,精心编写了100余个8051单片机C语言程序设计案例。
全书基础设计类案例贯穿8051单片机最基本的端口编程、定时/计数器应用、中断和串口通信;硬件应用类案例涵盖常用外部存储器扩展、接口扩展、译码、编码、驱动、光机、机电、A/D与D/A转换等内容;综合设计类案例涉及大量消费类电子产品、仪器仪表及智能控制设备的相关技术。
本书可作为大专院校学生学习实践单片机c语言程序设计的教材或参考书,也可作为电子工程技术人员或单片机技术爱好者的参考资料。
目录
第1章 8051单片机C语言程序设计概述
1.1 8051单片机引脚
1.2 数据与程序内存
1.3 特殊功能寄存器
1.4 外部中断、定时/计数器及串口应用
1.5 有符号与无符号数应用、数位分解、位操作
1.6 变量、存储类型与存储模式
1.7 数组、字符串与指针
1.8 流程控制
1.9 可重入函数和中断函数
1.10 C语言在单片机系统开发中的优势
第2章 Proteus操作基础
2.1 Proteus操作界面简介
2.2 仿真电路原理图设计
2.3 元件选择
2.4 调试仿真
2.5 Proteus与 V3的联合调试
第3章 基础程序设计
3.1 闪烁的LED
3.2 从左到右的流水灯
3.3 左右来回循环的流水灯
3.4 花样流水灯
3.5 LED模拟交通灯
3.6 单只数码管循环显示0~9
3.7 8只数码管滚动显示单个数字
3.8 8只数码管显示多个不同字符
3.9 数码管闪烁显示
3.10 8只数码管滚动显示数字串
3.11 K1~K4控制LED移位
3.12 K1~K4按键状态显示
3.13 K1~K4分组控制LED
3.14 K1~K4控制数码管移位显示
3.15 K1~K4控制数码管加减演示
3.16 4×4键盘矩阵控制条形LED显示
3.17 数码管显示4×4键盘矩阵按键
3.18 开关控制LED
3.19 继电器控制照明设备
3.20 数码管显示拨码开关编码
3.21 开关控制报警器
3.22 按键发音
3.23 播放音乐
3.24 INT0中断计数
3.25 INT0中断控制LED
3.26 INT0及INT1中断计数
3.27 TIMER0控制单只LED闪烁
3.28 TIMER0控制流水灯
3.29 TIMER0控制4只LED滚动闪烁
3.30 T0控制LED实现二进制计数
3.31 TIMER0与TIMER1控制条形LED
3.32 10s的秒表
3.33 用计数器中断实现100以内的按键计数
3.34 10 000s以内的计时程序
3.35 定时器控制数码管动态显示
3.36 8×8 LED点阵屏显示数字
3.37 按键控制8×8 LED点阵屏显示图形
3.38 用定时器设计的门铃
3.39 演奏音阶
3.40 按键控制定时器选播多段音乐
3.41 定时器控制交通指示灯
3.42 报警器与旋转灯
3.43 串行数据转换为并行数据
3.44 并行数据转换为串行数据
3.45 甲机通过串口控制乙机LED闪烁
3.46 单片机之间双向通信
3.47 单片机向主机发送字符串
3.48 单片机与PC串口通信仿真
第4章 硬件应用
4.1 74LS138译码器应用
4.2 74HC154译码器应用
4.3 74HC595串入并出芯片应用
4.4 用74LS148扩展中断
4.5 I2C-24C04与蜂鸣器
4.6 I2C-24C04与数码管
4.7 用6264扩展内存
4.8 用8255实现接口扩展
……
第5章 综合设计
参考文献
书摘插图
第1章 8051单片机C语言程序设计概述
1.6变量、存储类型与存储模式
全局变量定义在函数外面,生命期从所定义的地方开始,其后面的所有函数都可以读/写该全局变量,本书案例在使用定时器时,为得到更大的延时值,程序中定义了全局变量tCount,在定时器中断内对该变量累加,从而得到更大的延时间隔,如果程序中其他地方不需要使用tCount,该变量可以不必放在程序最前面,而是放在定时器中断函数的上一行。
局部变量定义在函数内部,对于循环及其他的临时计算,应尽可能使用局部变量,作为优化处理的一部分,编译程序会试图将局部变量维持在寄存器中,寄存器访问是最快的内存访问类型,特别是unsigned char’和unsigned int类型的变量。
对于刚才讨论的tCount变量,在C语言程序设计时,还可以定义在中断函数内部实现计时累加,但要注意在定义前面加上static,因静态变量仅在函数首次调用时被初始化一次,此后不再被初始化。
8051系列单片机中,程序存储器与数据存储器严格分开,特殊功能寄存器与片内数据存储器统一编址,这与一般微型计算机的存储结构是不同的。
Keil C5l编译器完全支持805l单片机硬件结构,可完全访问8051硬件系统的所有部分,编译器通过将变量、常量定义成不同的存储类型(data、bdata、idata、pdata、xdata、code),从而将它们定位在不同的存储区中。……