VC控制单片机
基于单片机的炉温温度控制系统设计
摘要在工业生产过程中,往往需要对各类加热炉、热处理炉、反应炉的温度进行检测和调节,因此需要一种合适的系统对其温度进行精确控制。
由于单片机具有低功耗、高性能、可靠性好、易于产品化等特点,因此采用单片机对温度进行控制不仅节约成本,控制方法灵活多样,并且可以达到较高的控制精度,从而能够大大提高产品的质量,因此单片机被广泛应用在中小型控制系统中。
自动控制技术尤其是温度控制技术在国内外得到广泛的应用和发展。
时滞效应始终困扰着其实际应用,为此人们发明了多种控制方法来解决时滞问题,例如比例控制方式、DDC控制方式。
本文将针对一种温度控制方式进行学习,并设计一个以AT89S52单片机为核心、利用新型集成化智能1-Wire总线数字温度传感器DS18B20实现的温度采集控制系统,同时还阐述了直接数字控制(DDC)控制算法。
本系统按照模块化程序设计思想,完成了对系统软件部分的设计,给出了各个功能模块的设计思想和流程图。
温度采集控制系统不但能够准确地进行温度数据的采样转换,稳定进行升温、恒温的控制过程,而且可以记录温度—时间对应关系,并以现今广泛使用的液晶显示器作为输出设备,使数据读取更加直观。
现场仿真表明,该系统在测试过程中工作稳定,满足设计要求。
本设计采用以8位AT89S52单片机作为系统的CPU。
使用电加热器升温,配合键盘输入,液晶显示器显示。
具有硬件结构简单、人机界面友善、管理功能健全、系统可靠性高、记录数据准确、使用维护方便等优点。
关键字:温度采集系统;单片机;DS18B20;温度控制The Design of Furnace Temperature Control System Based onSingle Chip MicrocomputerAbstractIn the industrial production process, often require various types of furnace, heat treatment furnace, reactor temperature detection and regulation, so it needs a proper system of precise control of its temperature. as low power consumption single chip, high performance, reliability, easy-to-market commodity and so on, so to control the temperature using SCM not only save on cost, control method of flexible and diverse, and can achieve higher precision, which can greatly enhance the quality of the product, so SCM is widely used in the Small control system.The automatic control technique is a temperature particularly controls technique at domestic and international get the extensive application with develop. Time postpone effect perplex always in fact on the occasion of applied, for this person invents various controls method to resolve the problem of Time postpone. This paper introduces a design of temperature data acquisition system based on single-chip AT89S52. The system collects temperature data through 1-Wire Digital Thermometer DS18B20, and the control algorithm of DDC parameters is presented.This system according to mold a design for turning procedure design toughing, completing to system software part of designs, giving each function mold piece thought with flow chart. A function temperature control system can proceed accurately the data adopts the kind converts, stabilizing the proceeding heat, the control process of the constant temperature, and can satisfy completely to the request of the system accuracy. and can show them to the operators by the way of the Liquid Crystal Display. This system used the present the usage the LCD and actions output equipments, make data kept the view more. The results of the simulation show that the system works stably and meets the expected design requirements.The temperature data acquisition and control system adoption with 8 bit AT89S52 single a machine for system CPU. The usage electricity heating apparatus heats, matching with the keyboard importation, displays with the LCD. It has simple structure, high system reliability, and the data recorded are reliable and the operation and maintenance are convenient.Key words: temperature data acquisition system; single-chip; DS18B20; temperature control目录1 绪论 (1)1.1 课题背景 (1)1.2 选题的目的和意义 (2)1.3 炉温控制的国内外研究现状及发展趋势 (2)1.4 本系统的任务和本文的主要内容 (4)2 系统总体分析与设计 (5)2.1 系统方案选择 (5)2.1.1 主控芯片单片机的选型 (5)2.1.2 温度传感器的选择 (5)2.2 系统的组成和工作原理 (6)2.3 系统主要元件介绍 (7)2.3.1 AT89S52单片机简介 (7)2.3.2 1602液晶显示器 (10)2.3.3 DS18B20数字温度传感器 (14)2.3.4 固态继电器 (18)2.4 本章小结 (19)3 硬件系统设计 (20)3.1 单片机的最小应用系统 (20)3.2 温度采集转换系统 (21)3.3 升温驱动控制系统 (22)3.4 键盘显示系统 (23)3.5 报警系统 (25)3.6 系统电源模块 (26)3.7 本章小结 (27)4 软件系统设计 (28)4.1 软件总体设计 (28)4.2 系统初始化函数 (29)4.3 控制函数 (30)4.4 读温度子程序 (31)4.5 键盘显示函数 (32)4.6 时间函数 (33)4.7 本章小结 (34)5 系统的调试与仿真 (35)5.1 软件调试 (35)5.2 硬件调试 (36)5.3 本章小结 (37)6 结论 (38)致谢 (39)参考文献 (40)附录1 (1)附录2 (18)1 绪论1.1 课题背景及时准确地得到温度信息并对其进行适时的控制,在许多工业场合中都是重要的环节。
VC + + 6.0在计算机与多单片机系统通信中的应用
无 锡 职 业 技 术 学 院 学 报
\7?N@BQ 7P [?]J H@KIJI?IM 7P 5MR>@7Q7GY
+7Q. 3 97. & 1ML. !""#
+, - - #. " 在
计 算 机 与 多 单片 机
系 统 通 信 中 的 应 用
张春宝, 黄* 堃, 赵翱东
离长的优点外, 还具 有更 强的 多点 ( 同一 条传 输线 上最 多可达 !" 个 节点 ) 、 驱 动和 冲突 保护 能力 。因此, 我们 选用 #$ % &’(, 工业现场控制系统中经常采用该总线标 准进行数据传输。 )* "+ 拓扑结构 系统采用主从式结构: 即上位计算机为主机, 各单片 机作为从 机, 主 机发送的 信息可传送 到各从机 和指定的 从机, 从机不 主动发送命 令或数据, 一 切都由主 机控 制, 各台从机 之间也不 能相互通讯, 即使 有信息交 换也必须 通过主机 转发。参考 图 ) , 各台从 机通过 #$ % &’( 总线 驱动芯片 $,-()-. 连至总线。$,-()-. 的发送 和接收功 能转换是 由芯 片 的 / #0 、 10 端控 制 的, / #0 2 ), 10 2 ) 时, $,-()-. 发送状态; / #0 2 3 , 10 2 3 时, $,-()-. 处于 接收状态。 )* !+ 通信规则 由于 #$ % &’( 通讯 是一 种半 双 工通 讯, 同 一时 刻, 只允许一台单片机处于发送状态。因此要求应答的单片 机必须在 侦听到总 线上呼叫信 号已经发 送完毕, 并且没 有其它单片机发出 应答信号 的情况 下, 才能应 答。要做 到总线上 的设备在 时序上的严 格配合, 必须要 遵从以下 几项原则: () ) 复位时, 各从机都应该处于接收状态。45’67() 单片机的一根口线 经反向 后接至 $,-()-. 的 / #0 和 10 端, 使得在上 电时 $,-()-. 处于 接收状 态。在上电 时或 正式通讯之前, 对串行口做几次空操作, 清除端口的非法 数据和命令。 (" ) 控制端 / #0 、 10 的 信号的 有效 脉宽 应该大 于发 送或接收一帧信号的宽度。 由于 #$ ! &’( 为半 双工通 讯, $,-()-. 的发送和接收都由同一器件 完成, 并且发送 和接收使 用同一物 理链路, 单片机必 须对控制 信号进行 切换。发送时, 检测 58 是否建立起 来, 当 58 为高 电平后 关闭发送功能转为接 收功能; 接收 时, 检测 #8 是否 建立 起来, 当 #8 为高电平后, 接收完 毕, 又可以转为发送。 (! ) 总线上所连接的各单片 机的发送 控制信 号在时 序上完全隔开, 以避免总线争端。 关闭 打开
单片机系统及其应用概述
3.1 单片机开发语言的选择
单片机的应用首先要考虑的是它的开发 平台,也即我们常说的开发环境。单片 机编程语言一般有汇编语言和高级语言 两种。
3.1 单片机开发语言的选择
汇编语言的优点:代码最小,最直接, 效率最高。 汇编语言的缺点:编程员必须十分了解 所用单片机的硬件结构,程序编写困难, 代码难以理解,不易于识读,难于移植, 排错困难,编写程序花的时间相当多, 调试不便等等。
操作 译码
取操作 数地址
执行 操作
a) 取指 阶 段
b) 执 指 阶段
直接寻址的指令执行周期
add
A,#05
7405H
3 单片机系统开发环境及工具
要点:了解开发环境及工具
学习内容: 3.1 单片机开发语言的选择 3.2 目前的常用C语言编译器介绍 3.3 单片机系统开发环境及工具
要点:什么是单片机系统
内容: 单片机与单片机系统 单片机分类 主流单片机
1.1单片机与单片机系统
单片机 单片机是将微机的CPU、存储 器、I/O接口和总线制作在一 块芯片上的超大规模集成电路
单片机系统 单片机系统单片机加一些外围芯 片和软件组成的完整系统。 单片机系统可以分为最小系统和 扩展系统两大类。
2.4 MCS-51单片机的工作方式
单步执行方式
单步执行就是通过外来脉冲控制程序 的执行,使之达到来一个脉冲就执行 一条指令的目的。而外来脉冲是通过 按键产生的,因此单步执行实际上就 是按一次键执行一条指令。
2.4 MCS-51单片机的工作方式
程序执行方式
单片机的基本工作方式。由于复位后 PC=0000H,因此程序总是从地址0000H 开始
基于VC的单片机仿真系统的设计
¥bl t ,b n ig ln igcmp s e bu ts eh l— c t n r cs fsa ig po espo rm ie) e dn ,f gn o o i - ln i oe u t gp oeso tmpn r cs rg a i l a t d i s
投资小 、 收效快 的优选 手 段 。单 片机 软 件 开发 系 统 对大专 院校 的单 片机 教 学起 到很 重 要 的辅 助 作用 。 单 片机的教学 必须 与 实 验相 结 合 , 当前 的实 验 使 而 用 的是单 片单板 机 , 这样 的实 验 效 率是 较 低 的。若 使 用单片 机软件 开发 系 统 , 仅 可 以充 分 利 用现 有 不 丰富的 P C机 资源提 高实 验效 率 , 而且 , 只需 对 软件 开 发系统 的部分 程 序稍 作 修 改 , 可升 级 为新 的单 便 片机软件 开发 系统 以满 足教 学 内容 的要 求 。
d sg e co dn o t efau eo h a t n tc nc l e u r me t e in d a c r i g t h e t r ft ep r sa d e h ia q ie n ,wih t ec n e on ol we h n t h e t rp itt o rt e
信 息 资料对 试验 结 果进 行 分 析 和研 究 , 而做 出决 进 策 的一 门综 合性 的试验 性科学 。 目前 , 在单 片机应 用 系统 的开发或 教学 实验 时 , 往往要 用 到仿真 器 , 序 运行 调 试 的传 统 方 法 也是 程 利用 P C机 连 接仿 真器 进 行 联 调 , 件 和 手 段 均 比 条 较 落后 , 学生做 实验 的效果 也不 尽人意 。因此 , 们 我 面向 大中专 院 校 研 制开 发 以 P C机 为 操 作平 台 、 基 于 Vi aC- + 的单 片 机仿 真 系统 , 现对 单 片 机 s l t u - 实 软 硬 件系统 的仿 真 。
基于VC6.0的单片机和PC简易通信设计
t a a r d b L X 1 K1 h p o tr o a y h t s o me y F E O 0 c i f e a C mp n w f Al
TXD 8 3 01 GND
RXD
5
一
IM B
—
P C
1 2 V 5V
r , GND
ห้องสมุดไป่ตู้
RXD
静 T X D
图 2 采用 M X 3 接 口的串行通信 电路图 A 22
图1 P C机与单片机串行通信接 1线路 图 : 3 图 1 , C48 11 中 M 18 将 1 L电平转换为 R 一3C电平 , 电电压为 ̄2 S22 供 1 V M 18 则是把 R -3C标准 电平转换 为 电平 ,供 电电压 为+ : C 49 S22 m 5 V C机输 出的电平信号经过 MC49电平转 换器转换成 T L电平信 。P 18 r 号, 送到 M S 5 单 片机的 R D端 : C 一 1 C -1 X M S5 单片机 串行 发送引脚 T D X
社 ,0 4 8 2 0 :.
2 串行通信的软件实现
2 上位机(c 的 串行通信实现方法 . 1 P l
( 实习编辑 : 红 ) 张
师范学院电气工程 系应用 电子技术 教育专业 , 理讲师 , 助 常州冶金 技师
学 院机 电系 , 江苏省常州市新冶路 4 号 。109 1 23 1.
第一作者简介 : 骆震波 , , 7 年 7 男 16 9 月生 ,00 20 年毕业 于常州技术
Th sg f eDe i n o EDA p rm e t x Ha d r s d o Ex e i n Bo r wa eBa e n FLEXI KI O O
单片机及控制-第一章单片机基础知识
关于逻辑高低电平: 1) 5V CMOS 、 HC 、 AHC 、 AC 中 , 输 入 大 于 3. 5V 算 高 电 平 , 输 入 小 于 1.5 V 算 低 电 平 ; 2) 5 V TTL 、 AB T 、 AHCT 、 HC T 、 ACT 中 , 输 入 大 于 2 V 算 高 电 平 , 输 入 小 于 0. 8V 算 低 电 平 ; 3) 3. 3V LV TTL 、 LV T 、 L VC 、 AL VC 、 LV 、 AL V T 中 ,输 入 大 于 2V 算高电平 | | 输 入 小 于 0. 8V 算 低 电 平 ;
【单片机的应用领域】 目前单片机渗透到我们生活的各个领域, 几乎很难找到哪个领域没有单片机的踪迹。 导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程 的实时控制和数据处理,广泛使用的各种智能 IC 卡,民用豪华轿车的安全保障系统,录像 机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。 更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应 用将造就一批计算机应用与智能化控制的科学家、工程师。
AT89S52 具有以下标准功能:8K 字节 Flash,256 字节 RAM,32 位 I/O 口线,看门狗定 时器,2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行 口,片内晶振及时钟电路。另外,AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选 择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一 个中断或硬件复位为止。
单片机控制系统按键的类型
012 3 0
456 7 1
8 9 10 11 2
12 13 14 15 3
0 123
图7.5 矩阵式键盘结构
+5 V
矩阵式键盘中,行、列线分别连接到按键开关的两 端,行线通过上拉电阻接到+5V上。当无键按下时,行 线处于高电平状态;当有键按下时,行、列线将导通, 此时,行线电平将由与此行线相连的列线电平决定。这 是识别按键是否按下的关键。然而,矩阵键盘中的行线、 列线和多个键相连,各按键按下与否均影响该键所在行 线和列线的电平,各按键间将相互影响,因此,必须将 行线、列线信号配合起来作适当处理,才能确定闭合键 的位置。
图7.8是一种简易键盘接口电路,该键盘是由8051 P1口 的高、低字节构成的4×4键盘。键盘的列线与P1口的高4位 相连,键盘的行线与P1口的低4位相连,因此,P1.4P1.7是 键输出线,P1.0P1.3是扫描输入线。图中的4输入与门用于 产生按键中断,其输入端与各列线相连,再通过上拉电阻接 至+5 V电源,输出端接至8051的外部中断输入端。
2. 矩阵式键盘按键的识别 识别按键方法很多,其中最常见的方法是扫描法。下 面以图7.5中8号键的识别为例来说明扫描法识别按键的过程。 按键按下时,与此键相连的行线与列线导通,行线在 无键按下时处在高电平。显然,如果让所有的列线也处在 高电平,那么,按键按下与否不会引起行线电平的变化, 因此,必须使所有列线处在低电平。只有这样,当有键按 下时,该键所在的行电平才会由高电平变为低电平。CPU 根据行电平的变化,便能判定相应的行有键按下。8号键按 下时,第2行一定为低电平。然而,第2行为低电平时,能 否肯定是8号键按下呢?
(3) 求按键位置。根据前述键盘扫描法,进行逐 列置0扫描。图7.6中,32个键的键值分布如下(键值 由4位十六进制数码组成,前两位是列的值,即A口数 据,后两位是行的值,即C口数据,X为任意值):
单片机的原理概述
绪 论 二 十世纪跨越了= i 个 “ 电”的时代 ,即电气时代 、电子时代和现 已 进入的电脑时代 ,不过 ,这种 电脑 ,通常是指个人计算机 ,简称 P C机。 它由主机 、 键盘 、显示器等组成 。还有一类计算机 ,大多数人却不怎么 熟悉,这种计算机就是把智能赋予各种机械的单片机 ( 亦称微控制器 ) 口 顾名思义 ,这种计算机的最小系统只用 了一片集成电路 ,即可进行简单 运算和控制 。它的出现时近代计算机技术发展史上的一个重要里程碑 , 它因为体积小 ,通常都 藏在被控机械的 “ 肚子”里。它在这个装置中 , 起着有如人类头脑 的作用 , 它出了毛病 ,整个装置就瘫痪 了。 单片机具有体积小 、功能强 、应用 面广等优点 ,目前正 以前所未见 的速度取代着传统电子线路构成的经典 系统 ,蚕食着传统数字 电路与模 拟电路 固有的领地。它体积小 、质量轻 、价格便宜 、为学 习、应用和开 发提供 了便利条件。同时,学习使用单 片机 了解计算机原理与结构的最 佳选择 。 现在 ,这种单片机 的使用领域已十分广泛 。彩电 、冰箱 、空调 、录 像机 、V C D、 遥控器 、游戏机 、电饭煲等无处不见单 片机 的影子 ,单片 机早 已深深地融人我们每个人的生活之中。
一
、
本功能单元有定时器计 数器 、中断系统和串行接口。8 0 C 5 1内部资源扩 展后 的所有衍生型号都保持 了 8 0 C 5 1的基核结构 ,并实现指令不变 ,总 线不变 ,D I P 4 0封装引脚不变 ,保证了 8 0 C 5 1系列单片机有最佳的兼容 性能。8 0 C 5 1的内部资源扩展 主要有速度扩展 、C P U 外f 萄 扩展 、基本功 能单元扩展和外围单元扩展 。与资源扩展的同时 ,为了满 足构成小型 、 廉价应用系统要求 , 8 0 C 5 l 通过对 内部资源 的删减 , 推出了不少小型、 廉 价型的 8 0 C 5 1系列单 片机 。其主要有并行总线删减 、功能删减和某些功
单片机程序设计中C语言的具体应用
本栏目责任编辑:谢媛媛软件设计开发单片机程序设计中C 语言的具体应用郑露萍(重庆工商职业学院,重庆401520)摘要:随着计算机技术的飞速发展,单片机的开发愈发受到社会各界的广泛关注,人们不断加大对单片机的研发力度,使得单片机的发展已经进入到智能化发展阶段。
C 语言因为具有较强的可移植性,在单片机程序设计中得到了广泛的应用。
该文全面地探索并介绍了单片机程序设计中C 语言的具体应用,仅供参考。
关键词:单片机程序;C 语言;应用中图分类号:TP311文献标识码:A文章编号:1009-3044(2021)15-0072-02开放科学(资源服务)标识码(OSID ):以往单片机程序的设计大多借助汇编语言完成,随着社会各领域对单片机功能需求的不断增多,汇编语言愈发满足不了单片机程序的设计需求。
作为一门高级编程语言,C 语言的应用范围较为广泛,在单片机程序设计中,合理地应用C 语言进行程序设计,对于单片机的开发的发展具有积极的意义。
1单片机及其开发情况从表面上看,单片机就是一个芯片,但是其功能却相当于一个微型的计算机,和普通的计算机相比,单片机不具备输入、输出端口设备。
单片机具有体积小、质量轻、价格便宜、方便携带、应用便捷等诸多优势。
深入的探索单片机的开发和使用过程,有助于帮助人们更好的认识计算机结构,了解计算机的运行原理。
就世界范围来看,单片机在工业控制领域的应用是最为广泛的,主要用于智能仪表、通讯设备等的功能保证上。
工业领域因为单片机的应用,生产效率得到明显的提升,同时产品更新换代的速度也越来越快。
和C 语言相比,汇编语言应用过程更加简单方面,控制效果更好,一直以来,单片机都应用汇编语言进行程序设计。
但是随着科技的发展,处理器对语言的需求越来越高,汇编语言已经难以满足这些需求,这样的背景下,C 语言在单片机开发中的应用优势愈发明显。
C 语言较汇编语言,可执性更高,应用过程更加方便,即使编程人员不了解单片机处理器的机构,也可以应用C 语言的编辑器完成程序设计,可以说,C 语言单片机的开发工作中具有十分广阔的应用前景。
单片机 C语言开发 sbit使用方法
单片机C语音开发sbit使用方法··1.bit和sbit都是C51扩展的变量类型。
bit和int char之类的差不多,只不过char=8位, bit=1位而已。
都是变量,编译器在编译过程中分配地址。
除非你指定,否则这个地址是随机的。
这个地址是整个可寻址空间,RAM+FLASH+扩展空间。
bit只有0和1两种值,意义有点像Windows下VC中的BOOL。
sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。
一旦用了sbi xxx = REGE^6这样的定义,这个sbit量就确定地址了。
sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。
2.bit位标量bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。
它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。
3.sfr特殊功能寄存器sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。
利用它可以访问51单片机内部的所有特殊功能寄存器。
如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们用以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
sfr P1 = 0x90; //定义P1 I/O 口,其地址90Hsfr 关键定后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,名字最好有一定的含义如P1 口可以用P1 为名,这样程序会变的好读好多.等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看附录中的相关表.sfr 是定义8 位的特殊功能寄存器而sfr16 则是用来定义16 位特殊功能寄存器,如8052 的T2 定时器,可以定义为:sfr16 T2 = 0xCC; //这里定义8052 定时器2,地址为T2L=CCH,T2H=CDH用sfr16 定义16 位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上.注意的是不能用于定时器0 和1 的定义.sbit 可定义可位寻址对象.如访问特殊功能寄存器中的某位.其实这样应用是经常要用的如要访问P1 口中的第2 个引脚P1.1.我们可以照以下的方法去定义:(1) sbit 位变量名=位地址sbit P1_1 = Ox91;这样是把位的绝对地址赋给位变量.同sfr 一样sbit 的位地址必须位于80H-FFH 之间. (2) sbit 位变量名=特殊功能寄存器名^位位置sft P1 = 0x90;sbit P1_1 = P1 ^ 1; //先定义一个特殊功能寄存器名再指定位变量名所在的位置,当可寻址位位于特殊功能寄存器中时可采用这种方法(3) sbit 位变量名=字节地址^位位置sbit P1_1 = 0x90 ^ 1;这种方法其实和2 是一样的,只是把特殊功能寄存器的位址直接用常数表示. 在C51存储器类型中提供有一个bdata 的存储器类型,这个是指可位寻址的数据存储器,位于单片机的可位寻址区中,可以将要求可位录址的数据定义为bdata,如:unsigned char bdata ib; //在可位录址区定义ucsigned char 类型的变量ibint bdata ab[2]; //在可位寻址区定义数组ab[2],这些也称为可寻址位对象sbit ib7=ib^7 //用关键字sbit 定义位变量来独立访问可寻址位对象的其中一位sbit ab12=ab[1]^12;操作符"^"后面的位位置的最大值取决于指定的基址类型,char0-7,int0-15,long0-31.sfr 并标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新的关键词,其用法是:sfrt 变量名=地址值。
单片机C语言编程实例
单片机C语言编程实例前言INTEL公司的MCS-51单片机是目前在我国应用得最广泛的单片机之一.随着单片机应用技术的不断发展,许多公司纷纷以51单片机为内核,开发出与其兼容的多种芯片,从而扩充和扩展了其品种和应用领域.C语言已成为当前举世公认的高效简洁而又贴近硬件的编程语言之—。
将C语言向单片机上的移植,始于20世纪80年代的中后期。
经过十几年的努力,C语言终于成为专业化单片机上的实用高级语言。
用C语言编写的8051单片机的软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完善的系统。
因此,不管是对于新进入这一领域的开发者来说,还是对于有多年单片机开发经验的人来说,学习单片机的C语言编程技术都是十分必要的..C语言是具有结构化.模块化编译的通用计算机语言,是国际上应用最广。
最多的计算语言之一。
C51是在通用C语言的基础上开发出的专门用于51系列单片机编程的C语言。
与汇编语言相比,C51在功能上.结构上以及可读性。
可移植性。
可维护性等方面都有非常明显的优势.目前最先进、功能最强大、国内用户最多的C51编译器是Keil Soft ware公司推出的KeilC51.第一章单片机C语言入门1。
1建立您的第一个C项目使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。
KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持PLM、汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能.因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。
以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。
KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发。
51单片机C语言编程入门(详讲版)
中国科学技术大学业余无线电协会编目 录§1 前言 (1)§2 单片机简介 (2)2.1 数字电路简介 (2)2.2 MCS-51单片机简介 (2)2.3 Easy 51 Kit Pro简介 (5)2.4 Easy 51 Kit Pro电路功能分析 (5)§3 MCS-51单片机的C语言编程 (8)3.1 汇编语言 (8)3.2 建立你的第一个C项目 (8)3.3 生成hex文件 (12)3.4 Keil C语言 (14)3.5 单片机I/O (18)3.6 中断 (25)3.7 定时器/计数器 (27)3.8 定时器的应用举例 (29)3.9 外部中断 (34)3.10 串行通信 (38)3.11 定时器2 (43)3.12 看门狗 (47)3.13 空闲模式和掉电模式 (50)§4 MCS-51单片机C语言编程应用进阶 (51)4.1 扫描式键盘 (51)4.2 EEPROM芯片AT93C46的读写 (55)4.3 Keil C的高级使用 (63)§5 编写高质量的单片机C程序 (64)5.1 文件结构 (64)5.2 程序的版式 (66)5.3 单片机程序命名规则与变量选择 (70)5.4 表达式和基本语句 (73)5.5 函数设计 (77)5.6 单片机程序框架 (79)附图:Easy 51 Kit Pro电路图(最小系统板) (80)附图:Easy 51 Kit Pro电路图(学习板) (81)§1 前言什么是单片机,目前还没有一个确切的定义。
普通认为单片机是将CPU、RAM、ROM、定时器/计数器以及输入输出(I/O)接口电路等计算机主要部件集成在一块芯片上,这样所组成的芯片级微型计算机称为单片微型计算机(Single Chip Microcomputer)。
简称为单片微机或单片机。
利用单片机程序,可以实现对硬件系统的小型化的智能控制。
ANSI C标准函数库 C语言所有库函数 VC++6.0 NI CVI 单片机
原形:void far *farmalloc(unsigned long nbytes)
使用方式:fptr=farmalloc(字节数);
头文件:stdlib.h
bcd()把一个数转换成对应的BCD码的函数
原形:bcd bcd(int x)
bcd bcd(double x)
bcd bcd(double x,int decimals)
注意:BCD码的精度可达17位。参数decimals是可选的,用来指定转换后小数点后的位数。
头文件:bcd.h
bdos()
原形∶int bdos(intfnum,unsigned dx,unsigned al)
其中fnum是系统调用号;dx是传给寄存器DX的值;al是传给寄存器AL的值;
功能∶DOS系统调用(INT21H)
返回值∶AX中的值
biosdisk()调用BIOS磁盘驱动程序函数
原形:char biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)
功能:根据amode的值,设置由path所指文件的存取权限。
amode的值 存取权限
S_IWRITE允许写
S_IREAD允许读(只读)
S_IREAD|S_IWRITE可读可写
返回值:0(成功);-1(失败)
头文件:io.h、sys\stat.h
clock()
原形∶longclock(void)
功能∶测得从程序开始到调用处处理机所用的时间
功能∶计算arg(弧度)的余弦值
头文件∶math.h
STC89C52RC单片机介绍
STC89C52RC单片机介绍STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
主要特性如下:1. 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3. 工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48M Hz4. 用户应用程序空间为8K字节5. 片上集成512字节RA M6. 通用I/O口(32个),复位后为:P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。
7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(R xD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8. 具有EEPR OM功能9. 具有看门狗功能10. 共3个16位定时器/计数器。
即定时器T0、T1、T211. 外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒12. 通用异步串行口(UART),还可用定时器软件实现多个UART13. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)14. PDIP封装STC89C52RC单片机的工作模式掉电模式:典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序● 空闲模式:典型功耗2m A● 正常工作模式:典型功耗4M a~7mA● 掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备STC89C52RC引脚图STC89C52RC引脚功能说明VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O 口。
用串口类实现VC与MCS51单片机之间的通信
u lC + + a d RS一23 a n 2.t e a v na e o e a l s sc a fe h d a t g fs r lc a si lri d.An h o g h k n i i d t ru h t e ma i g
p o e so i l ii ls v b e o i o r p r c s f mp e d gt a a l s lg a h,t e p o e so lme t g t e c mmu i ai n s a l h r c s fi e n i h o mp n nc t o
导致 程 序 的 执 行 速 率 相 对 较 慢. 者 曾 经 用 笔
MS o m控 件 和 串 口类 两种 方 法 编 制 简 易 数 字 示 Cm
波器的程序 , 结果前者的数据采集速率明显低于后
作者简介 : 代明军(9 2一) 男, 18 , 硕士 , 研究方向 :iu Ln x嵌入式技术 , 计算机通信 网络及管理
种广泛使用的单片机之间的通信很有意义.
1 串 口通 信 方 式
编制串口通信的程序有很多软件 , Vsa 而 i l u c++由于具有 M C类库的强大支持 , F 以及强大的 可视化编程能力与高效 的代码执行速 率而受到许
基于VC6.0的多台MSP430单片机和PC机串口通讯实现方案
中 , 定 一 个 明确 而合 理 的通 讯 协 由于 单 片 机 多 应 用 于 实 时 性 较 强 的 确 议 是关 键 , 括 对 数 据格 式 、 讯 方 控 制 场 合 , 此 , 应 将 及 时 响 应 和 包 通 因 式、 传送 速 度 、 送 步 骤 、 纠 错 方 控 制对 象 的动 作 放 在 优 先 考 虑 的位 传 检
波特 率 为 9 0 , 部 时钟 为 A L 。 60外 C K
软侔 计
下位机 程序设计
主要 由数据发送和数据接 收子 程 序 组 成 设 计 单 片机 通 信 程序
系统通讯协议
在 P 机 和 多 台 单 片 机 的 通 讯 时 ,必 须 充 分 发 挥 单 片 机 的效 率 。 C
率 的整数倍, 这一组 合也能使 MS 4 0 P 机 发 送 单 片 机 接 收 的 时候 也 相 P 3 C 正常 工 作 而且 还可 以使 其 通 讯 协 议 似 的协 议 规 定 。
工作在最大 的波特 率 。 采用这 一技
术 ,即使用 手表晶振 ( 7 8 z, 3 6 H ) 波 2 特率也可 以达到 4 D 和 9 0 , 80 6 0 选择
维普资讯 http://www.cqvቤተ መጻሕፍቲ ባይዱ
Di &pi¨s设计应用 e n Apc n s g lr c。
基于V 6 的多台M 3 单片机和 C. 0 40 S P P C机串口 通讯实现方案
S r l ei a Com m u i a i e h d B t e C d M S 4 0 nc t onM t o e we n P an P 3
MS 4 0 19单 片机支 持 两种 不 P 3F6
代码 效率 。 数字控 制 的振 荡器 提供 快 同的 串行协议 , 通用 同步 协议 ( S T U AR 速从所有低 功耗模式 苏醒 到活动模式 协 议 ) 同 步 协 议 ( P 协议 ) 用 控 和 SI , 的能 力时 间少 于 6 。 P 3 F6 msMS 4 0 19带 制寄存器 U T 表 1 C L( )中的控 制位 有两个 1 定时器 ( 6位 带看 门狗功 能 ) S N 来 选 择所 需 的模 式 。Y C O 、 YC SN = :
基于VC的PC机与单片机无线串行通信的实现
据 为 无 线 发 送 数 据 此 端 应 置 为 逻辑 “ ” 1。 当上 位 机 串 口 无 数 据 发 出 时 , T D R端 的 功 能 为 指 示 上 位 机 是 否 可 以 接 收 计算 机 的 数 据 : 上 位 机 准 备 好 接 收 模 块 的 数 据 时 此 当
端 为 逻 辑 “ ” 当 上 位 机 不 能 接 收模 块 的 数据 时此 端 为 逻 辑 “” 0, 1。
端 5 G D) 地 (N :
端 6 R D)模 块 外 部 红 色指 示灯 驱动 (E : 端 7 GR E N)模 块 外 部 绿 色 指示 灯 驱 动 ( EE :
端 8 G D) 地 (N :
2无线 通信 模块 及 其连 接
本 设 计 采 用 无 线 通 信 模 块 来 实 现无 线 数 据 传 输 , 品 为 北 京 产 捷 麦 通 信 器 材 公 司 生 产 的 F 1 M, 采 用 F K 调 制 方 式 , 信 距 2D 它 s 通 离 1 M, 口为 r K 接 r L电平 , 以直 接 和 单 片 机 的 异 步 通 信 口连 接 。 可
(. fr t nSi c n etnt t o b i iesyo i c dT cn lg , i h ag0 0 5 ,hn;,otrdaeI i t 1 n mao c n eadp c Ist e f Io i e i Hee Un rt f S e ea eh oo y a u n 50 4C ia P s aut mtue u v i cn n s z 2 g t
c t n h w o n a e u e o o a o o t lk fc mmu i a o o t l n at S mm e l e t eP a d o e h p c mp t r i s n c t n c n r l g p r M Co i oi o t r a z C n —c i o u e . i h n
基于单片机的多路温度控制器硬件设计
加 热 驱 动 电路 采用 了光 电耦 合 器 件 和 大 功 率 场效 应管 组 成 的 固态 继 电器 , 可达 到无 触 点 无 火 花地 接 通 和 断 开 电 路 的 目的 , 如 图 5 所示 。 前级采用光 电耦合器进行强弱电路隔离 , 有效的降低了后级强 电流 对 前 级控 制系 统 的 干 扰 。 后 级 我 们使 用 了动 态 内阻 小 , 功耗 低 的N沟 道 MO S F E T 管, I R F 3 7 1 0 极限I D 为4 0 A, 完全 能够 满足 条 件 。
一
斗 r i I 用
I 数 字 技 术
数 控 技术
基于单片机的多路温度控制器硬件设计
0
张迎 雪
( 徐州生物工程职业技术学院 江苏徐州 2 2 1 0 0 6 )
摘要 : 多路 温度控 制 器是研 究 温度 的 实时采 集与检 测技 术 。 详 细介 绍基 于单 片机 的 多路 温度 控 制 系统 。 该 系统 采 用M c s 一 5 1 单 片机 来对 温 度进 行控 制, 不仅 具有 控制 方便 、 组 态简单 和灵 活性 大等优 点, 而且可 以大 幅度提 高被控 温 度的技 术指 标, 从 而能够 大大提 高 产品 的质量 和数量 。
2工 作原 理及 系统 结构
用单片机 系统对温度进行实 时采集与控 制 , 即用温度传感器 AD 5 9 0 ;  ̄  ̄ g b 界温度进行实 时采集 , 采集回来 的实际温度与设定的两 个温度进行 比较来控制风扇和加热器的工作 , 同时要在数码管上显 示出温度 。 而且我们可 以通过按键随意 的设定两个温度值( 在0 " C一 9 9  ̄ C) 。 主要解 决的是要对传感器AD 5 9 0 采集回来 电流信号首先要 转换为 电压信号接着要对它进行调理 , 调理后的模拟量要通过A / D 转换TL C 2 5 4 3 转换为数字信号再送给单片机处理 。 系统的结构框图如 图l 所示 :
【几种常用的单片机型号】
当今单片机厂商琳琅满目,产品性能各异。
针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。
采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。
它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。
采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。
这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。
同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。
属于CISC结构的单片机有Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Win bond(华邦)W78系列、荷兰Philips的PCF80C51系列等;属于RISC结构的有Microchip公司的PIC系列、Silo 的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。
一般来说,控制关系较简单的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如通讯产品、工业控制系统应采用CISC单片机。
不过,RISC单片机的迅速完善,使其佼佼者在控制关系复杂的场合也毫不逊色。
根据程序存储方式的不同,单片机可分为EPROM、OTP(一次可编程)、QTP(掩膜)三种。
我国一开始都采用Rimless型单片机(片内无ROM,需片外配EPROM),对单片机的普及起了很大作用,但这种强调接口的单片机无法广泛应用,甚至走入了误区。
如单片机的应用一味强调接口,外接I/O及存储器,便失去了单片机的特色。
目前单片机大都将程序存储体置于其内,给应用带来了极大的方便。
值得一提的是,以往OTP型单片机的价格是QTP的3倍,而现在已降至1.5-1.2倍,选用OTP型以免订货周期、批量的麻烦是可取的。
单片机KEIL C51的应用
40 20 10 RXD 11 TXD 30 AL E 29 PSEN
10
11
12
13
14
15
16
9
5V
R 1K
8
7
6 P 07
5 P 06
4 P 05
3 P 04
2 P 03
1 P 02
P 01
float double char unsigned char
所占位数
数的表示范围
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
unsigned int unsigned short int unsigned long int
float double char unsigned char
所占位数
数的表示范围
16
-32768~32767
16
-32768~32767
32
-2147483648~2147483647
16
0~65535
C-51与ASM-51相比,有如下优点: 1. 对单片机的指令系统不要求了解,仅要求对 8051 的存贮器结构有初步了解; 2. 寄存器分配、不同存贮器的寻址及数据类型 等细节可由编译器管理; 3. 程序有规范的结构,可分成不同的函数,这 种方式可使程序结构化; 4. 具有将可变的选择与特殊操作组合在一起的 能力,改善了程序的可读性; 5. 提供的库包含许多标准子程序,具有较强的 数据处理能力; 6. 由于具有方便的模块化编程技术,使已编好 程序可容易地移植;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC串口通信程序
上位机使用CSerialPort串口类,如何添加和使用这个类在这里就不详细描述了,VC串口通信技术网有其它文章进行介绍。
上位机串口接收函数是OnReceiveChar,每收到一个字符就执行一次,在函数里需要对数据包进行实时解析,分析包头,接收命令,分析命令,执行命令,代码如下:1////////////////////////////////////////////////////////////
2//OnReceiveChar: 串口接收服务函数,每收到一个字符即调用一次
3//参数ch: 收到的字符
4//参数port: 收到字符的串口号(打开多个串口时有用)
5LONG CLEDStateDlg::OnReceiveChar(WPARAM ch, LPARAM port)
6{
7//下位机返回数据格式:1字节导引头+ 5字节命令+ 1字节数据
8//导引头固定为字符'$'
9//命令为5个字节的字符串,目前已定义的有:LEDST(LED状态),OKAY!(下位机收到上位机查询设备是否存在命令)
10
11static BOOL bReceiveCmd = FALSE; //接收命令状态
12static BOOL bReceiveData= FALSE; //接收数据状态
13static int nCmdByte = 0; //收到命令字节数
14static CString strCmd; //存放命令
15static unsigned char cData; //存放数据
16BOOL bReceiveComplete = FALSE; //收到一个完整的数据流(导引头+命令+数据)
17CString strTemp;
18BOOL bD0,bD1,bD2,bD3,bD4,bD5,bD6,bD7;
19
20
21if(ch=='$') //收到导引头
22{
23bReceiveCmd = TRUE;
24nCmdByte = 0;
25strCmd = "";
26bReceiveComplete = FALSE;
27}
28else if(bReceiveCmd) //接收命令中
29{
30strTemp.Format("%c",ch);
31strCmd += strTemp;
32nCmdByte++;
33if(nCmdByte==5) //已经收满5个字节的命令
34{
35bReceiveCmd = FALSE;
36bReceiveData= TRUE; //为接收数据做准备
37}
38}
39else if(bReceiveData) //接收数据中
41cData = (unsigned char) ch;
42bReceiveComplete = TRUE;
43}
44else //收到干扰数据
45{
46bReceiveCmd = FALSE;
47bReceiveData = FALSE;
48bReceiveComplete= FALSE;
49strCmd = "";
50nCmdByte = 0;
51}
52
53if(bReceiveComplete) //收到完整的数据流
54{
55bReceiveComplete = FALSE;
56
57if(strCmd=="OKAY!") //下位机已连接
58{
59m_strMsg.Format("串口COM%d已打开,设备已连接",(int) port);
60m_bFindDevice = TRUE;
61}
62
63else if(strCmd=="LEDST") //收到显示LED状态命令,数据字节的每位对应D0~D7的状态64{
65m_cLedState = cData;
66bD0 = (~cData)&0x01;
67bD1 = ((~cData)&0x02) > 1;
68bD2 = ((~cData)&0x04) > 2;
69bD3 = ((~cData)&0x08) > 3;
70bD4 = ((~cData)&0x10) > 4;
71bD5 = ((~cData)&0x20) > 5;
72bD6 = ((~cData)&0x40) > 6;
73bD7 = ((~cData)&0x80) > 7;
74
75m_ctrlD0.SetLedState(bD0);
76m_ctrlD1.SetLedState(bD1);
77m_ctrlD2.SetLedState(bD2);
78m_ctrlD3.SetLedState(bD3);
79m_ctrlD4.SetLedState(bD4);
80m_ctrlD5.SetLedState(bD5);
81m_ctrlD6.SetLedState(bD6);
82m_ctrlD7.SetLedState(bD7);
83}
85UpdateData(FALSE); 86}
87
88
89
90return 1;
91}
VC编写的串口通信程序
实例用到的51单片机学习板。