mcs51-51单片机c语言程序设计与实践 金杰 电子教案,MCS-51单片机C语言程序设计与实践(第2版)简介,目录书摘...

目录:

项目一  认识单片机及其开发工具 1

项目基本知识 1

知识一  初识单片机 1

知识二  MCS-51单片机 4

知识三  单片机开发常用工具 8

项目技能实训 12

技能实训一  制作第一个实例――流水灯 12

技能实训二  Keil开发软件的基本使用方法 13

技能实训三  向单片机写入程序 18

技能实训四  自制STC系列单片机的ISP下载线 24

技能实训五  仿真软件Proteus演练 25

项目小结 29

知识巩固 30

项目二  简单I/O口控制电路的制作 31

项目基本知识 31

知识一  MCS-51单片机并行I/O口 31

知识二  C51语言基础 33

项目技能实训 39

技能实训一  闪烁灯的制作 39

技能实训二  广告灯的制作 47

技能实训三  呼吸灯的设计 52

技能实训四  控制直流电动机 54

项目小结 59

知识巩固 59

项目三  基本功 61

项目基本知识 61

知识一  MCS-51单片机基础 61

知识二  单片机的C51语言基础知识 65

项目小结 79

知识巩固 79

项目四  并行I/O口的应用 80

项目基本知识 80

知识一  LED数码管接口 80

知识二  键盘接口 84

知识三  LED点阵显示模块接口 89

项目技能实训 93

技能实训一  七段LED数码管显示电路的制作 93

技能实训二  按键控制球赛计分牌的制作 98

技能实训三  电子密码锁的制作 104

技能实训四  LED点阵显示屏的制作 110

项目小结 113

知识巩固 114

项目五  中断系统及外部中断的应用 115

项目基本知识 115

MCS-51单片机的中断系统及外部中断的应用 115

项目技能实训 122

技能实训一  防盗报警器的制作 122

技能实训二  LED旋转显示屏的制作 126

项目小结 130

知识巩固 131

项目六  定时/计数器系统的应用 132

项目基本知识 132

认识MCS-51单片机的定时/计数器系统 132

项目技能实训 139

技能实训一  秒闪电路的制作 139

技能实训二  电子计时秒表的制作 142

技能实训三  数字时钟的制作 146

技能实训四  电子琴的制作 153

技能实训五  电子音乐盒的制作 157

技能实训六  数字频率计的制作 162

项目小结 166

知识巩固 166

项目七  串行通信技术 168

项目基本知识 168

认识MCS-51单片机的串行通信系统 168

项目技能实训 174

技能实训一  单片机双机通信系统的制作 174

技能实训二  单片机与PC通信系统的制作 178

项目小结 185

知识巩固 185

项目八  测控技术 186

项目技能实训 186

技能实训一  数字电压表的制作 186

技能实训二  电子温度计的制作 194

技能实训三  超声波倒车雷达的制作 207

技能实训四  液晶万年历的制作 212

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我们需要了解MCS-51单片机的基本结构与特性。MCS-51单片机是一款典型的8位单片机,包含了CPU、RAM、ROM、I/O端口等基本模块,同时它还具备较强的定时器/计数器、中断、串口通信等功能模块。因此,我们可以考虑利用MCS-51单片机的强大功能来设计一款智能时钟。 一、硬件设计 1.主控芯片:MCS-51单片机 2.显示模块:数码管 3.时钟模块:DS1302时钟芯片 4.按键模块:矩阵按键 5.电源模块:电池或者外部电源 二、软件设计 1.初始化:设置MCS-51单片机的I/O端口方向、定时器/计数器、中断等相关参数。 2.时钟设置:通过DS1302时钟芯片实现时钟的设置与读取,并将其显示在数码管上。 3.按键扫描:通过矩阵按键实现对时钟的调整与设置功能。 4.闹钟设置:通过按键设置闹钟,并在闹钟时间到达时,触发相应的中断事件。 5.睡眠模式:在闹钟未触发的情况下,考虑采用睡眠模式,减少功耗,延长电池寿命。 三、C语言编程思路 1.初始化:配置MCS-51单片机的I/O端口、定时器/计数器、中断等相关参数,如下所示: ```c void init() { // 配置IO口 P0 = 0xff; P1 = 0xff; P2 = 0x00; P3 = 0xff; // 定时器/计数器初始化 TMOD = 0x01; TH0 = 0x3c; TL0 = 0xb0; // 中断初始化 EA = 1; ET0 = 1; TR0 = 1; } ``` 2.时钟设置:通过DS1302时钟芯片实现时钟的设置与读取,并将其显示在数码管上,如下所示: ```c void displayTime() { int year, month, day, hour, minute, second; // 读取DS1302时钟芯片的时间 year = DS1302_Read(0x8d) + 2000; month = DS1302_Read(0x89); day = DS1302_Read(0x87); hour = DS1302_Read(0x85); minute = DS1302_Read(0x83); second = DS1302_Read(0x81); // 将时间显示在数码管上 P2 = 0x01; SBUF = year/1000 + '0'; while(!TI); TI = 0; SBUF = year/100%10 + '0'; while(!TI); TI = 0; SBUF = year/10%10 + '0'; while(!TI); TI = 0; SBUF = year%10 + '0'; while(!TI); TI = 0; P2 = 0x02; SBUF = month/10 + '0'; while(!TI); TI = 0; SBUF = month%10 + '0'; while(!TI); TI = 0; P2 = 0x04; SBUF = day/10 + '0'; while(!TI); TI = 0; SBUF = day%10 + '0'; while(!TI); TI = 0; P2 = 0x08; SBUF = hour/10 + '0'; while(!TI); TI = 0; SBUF = hour%10 + '0'; while(!TI); TI = 0; P2 = 0x10; SBUF = minute/10 + '0'; while(!TI); TI = 0; SBUF = minute%10 + '0'; while(!TI); TI = 0; P2 = 0x20; SBUF = second/10 + '0'; while(!TI); TI = 0; SBUF = second%10 + '0'; while(!TI); TI = 0; } ``` 3.按键扫描:通过矩阵按键实现对时钟的调整与设置功能,如下所示: ```c void keyscan() { int key; key = P3 & 0x0f; switch(key) { case 0x0e: // "SET"键 // 进入设置模式 break; case 0x0d: // "UP"键 // 增加时间 break; case 0x0b: // "DOWN"键 // 减少时间 break; case 0x07: // "ALARM"键 // 设置闹钟 break; default: break; } } ``` 4.闹钟设置:通过按键设置闹钟,并在闹钟时间到达时,触发相应的中断事件,如下所示: ```c void alarm() { int hour, minute; // 读取闹钟时间 hour = DS1302_Read(0x91); minute = DS1302_Read(0x93); // 判断是否到达闹钟时间 if(hour == currentHour && minute == currentMinute) { // 触发中断事件 // ... } } ``` 5.睡眠模式:在闹钟未触发的情况下,考虑采用睡眠模式,减少功耗,延长电池寿命,如下所示: ```c void sleep() { // 进入睡眠模式 PCON |= 0x01; } ``` 以上是基于MCS-51单片机的智能时钟设计的C语言编程思路,其中包括了硬件设计和软件设计两个部分。根据这个思路,我们可以进一步完善代码,实现一款功能齐全、性能稳定的智能时钟。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值