单片机课程设计说明书撰写
单片机课程设计说明书撰写

内容:设计一 个基于单片机 的控制系统, 实现特定的功
能
硬件设计:选 择合适的单片 机型号,设计 电路图,选择
元器件
软件编程:编 写程序,实现 对硬件的控制
和功能实现
测试和调试: 对设计进行测 试和调试,确 保其正常工作
报告撰写:撰 写课程设计说 明书,包括设 计思路、实现 方法、测试结
果等
08 课程设计总结与展望
课程设计总结和收获
课程设计过程:从选题、设计、实施 到总结,全面回顾
收获:理论知识与实践相结合,提高 了动手能力和解决问题的能力
团队合作:与团队成员共同完成项目, 提高了团队协作能力
创新思维:在课程设计中,培养了创 新思维和解决问题的能力
展望:对未来单片机课程的学习充满 信心,期待更多的实践机会和挑战
提高学生的实践能 力
培养学生的创新思 维和解决问题的能 力
帮助学生理解理论 知识在实际中的应 用
提高学生的团队合 作和沟通能力
课程设计的目标和要求
掌握单片机的基本原理和结构
学会使用单片机进行编程和调 试
理解单片机在控制系统中的应 用
提高解决问题的能力和创新能 力
课程设计的任务和内容
任务:完成一 个单片机课程 设计项目,包 括硬件设计和
复位电路:使单片 机在启动时处于已 知状态
晶振电路:为单片 机提供稳定的时钟 信号
输入输出接口电路 :实现单片机与外 部设备的通信
电路板制作和焊接
电路板设计:根据单片机硬件电路 设计要求,设计电路板布局和布线
焊接:选择合适的焊接工具和材料, 如电烙铁、焊锡、助焊剂等,进行 电路板焊接
添加标题
添加标题
模块化设计:将程序划分为 多个模块,每个模块负责特
单片机课程设计说明书(word文档+全!)

调试工具:J-Link、ST-Link等 仿真工具:Proteus、Multisim等 编程技巧:模块化编程、代码优化等
程序流程图设计与实现
流程图设计:根据 需求分析,设计出 流程图
流程图实现:根据 流程图,编写程序 代码
程序调试:对编写 的程序进行调试, 确保其正确运行
人工智能:单片机在人工智能领域的应用将更加深入,如智能机器人、智能语音识别等
医疗健康:单片机在医疗健康领域的应用将更加普及,如智能医疗设备、智能穿戴设备等 环保节能:单片机在环保节能领域的应用将更加重要,如智能能源管理、智能环保设备等
感谢您的观看
汇报人:
软件测试与优化
测试方法:单元测试、集成测试、系统测试等 测 试 工 具 : J U n i t 、 Te s t N G 、 S e l e n i u m 等 优化目标:提高代码质量、提高运行效率、降低资源消耗等 优化方法:代码重构、算法优化、性能调优等
课程设计总结与 展望
课程设计总结
课程设计目标:掌 握单片机基本原理 和编程方法
课程设计目的
掌握单片机的基本原理和应用
提高编程能力和硬件设计能力
培养创新思维和解决问题的能 力
提高团队合作和沟通能力
课程设计要求
课程设计 目的:掌 握单片机 原理和应 用技术
课程设计 内容:包 括硬件设 计和软件 设计两部 分
课程设计要 求:硬件设 计要求实现 特定功能, 软件设计要 求编写程序 实现特定功 能
调试步骤:根据测 试结果,对硬件进 行调试和优化
常见问题:信号 干扰、电源不稳 定、硬件故障等
解决方案:根据问题 原因,采取相应的解 决方案,如更换元器 件、调整电路参数等
单片机课程设计计划书(精选五篇)

单片机课程设计计划书(精选五篇)第一篇:单片机课程设计计划书机电科学与工程系电气自动化技术专业(专科)《单片机原理及接口技术课程设计》计划书一、目的及要求1.目的:通过本课程设计,•使学生进一步掌握单片机应用系统的硬、•软件开发方法,输入/输出(I/O)接口的扩展技术,应用程序设计技术并结合专业能设计简单、实用的单片机应用系统。
主要针对课堂重点讲授内容使学生加深对单片机硬件原理的理解及提高汇编语言程序设计的能力,提高学生的开发创新能力。
2.基本要求:重点研究单片机、A/D转换器、运算放大器、传感器、LED显示器、固态继电器、微型直流电机等元器件的特性、功能及使用方法;同时掌握主程序、子程序、中断服务程序框图的设计方法与汇编语言程序设计方法。
要求设计系统具有可靠性高、可维护、维修性好及检测精度高等优点。
设计内容可参考设计题目,也可根据自身情况自己拟定。
3.任务要求:了解控制对象、环境参数检测原理,在充分掌握单片机、A/D转换器、运算放大器、传感器、LED显示器、固态继电器、微型直流电机等元器件的工作原理、特性、功能及使用方法的基础上,创造性的、两人一组分工协作(一人偏软、一人偏硬)独立的设计本课题的内容。
二、设计内容、步骤及材料要求1.设计内容画出硬件原理图一张(A4号);软件框图(包括主程序框图、主要子程序框图、中断服务程序框图等)和系统初始化的汇编语言原程序。
提交不少于4000字的设计报告一份(A4纸)。
从整体方案的规划设计到各功能模块的设计,可实现功能及各元器件的选择,参数计算均需表述清楚。
报告的书写要清除工整,层次清晰,文字流畅。
后附5篇以上的参考文献。
2.设计步骤设计时间为5天,前2天进行硬件原理草图设计,指导教师审查之后用1天的时间再进行绘图;第四天进行软件框图(包括主程序框图、主要子程序框图、中断服务程序框图)的设计及系统初始化的汇编语言原程序的设计;第5天答辩。
3.设计图纸要求(1)硬件原理图的绘制:元件图正确、型号标注要准确、连线清楚.(2)软件框图的绘制:流程清晰。
(完整版)单片机技术毕业课程设计说明书范文

郑州工业应用技术学院课程设计说明书题目:姓名:院(系):专业班级:学号:指导教师:成绩:时间:年月日至年月日郑州工业应用技术学院课程设计任务书题目: 电子秒表设计专业、班级学号姓名主要内容、基本要求、主要参考资料等:主要内容:利用单片机设计一个电子秒表,完成四位显示××.××秒,并具备开始计时、暂停、清零等功能。
基本要求:1.利用单片机设计一个电子秒表,完成四位显示××.××秒,并设定按钮完成开始计时、暂停、清零等功能。
2.利用proteus软件完成设计电路和仿真;3.掌握定时器的使用和数码管显示的方法;4.通过此次设计将单片机软硬件结合起来对程序进行编辑、校验,锻炼实践能力和理论联系实际的能力。
主要参考资料:[1]李全利,单片机原理及接口技术[M],高等教育出版社[2]王文杰,单片机应用技术[M],冶金工业出版社[3]朱清慧,PROTEUS教程——电子线路设计、制版与仿真[M],清华大学出版社[4]单片机实验指导书,天煌教仪[5]彭伟,单片机C语言程序设计实训100例[M],电子工业出版社完成期限:指导教师签名:课程负责人签名:年月日目录1.引言 (1)2.方案设计与论证 (3)2.1 直流调速系统 (3)2.1 检测系统 (4)2.3显示电路 (9)2.4系统原理图 (9)3.硬件设计 (10)3.1 80C51单片机硬件结构 (10)3.2 最小应用系统设计 (11)3.3前向通道设计 (12)3.4后向通道设计 (15)3.5显示电路设计 (17)4.软件设计 (20)4.1主程序设计 (20)4.2显示子程序设计 (24)4.3避障子程序设计 (25)4.4软件抗干扰技术 (26)4.5“看门狗”技术 (28)4.6可编程逻辑器件 (29)5.测试数据、测试结果分析 (30)6.结论 (31)致谢 (31)参考文献 (32)附录A 程序清单 (33)附录B 硬件原理图 (41)1.引言随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。
单片机课程设计任务书5(5篇)

单片机课程设计任务书5(5篇)第一篇:单片机课程设计任务书5课程设计任务书学生姓名:石樊专业班级:光信科1102指导老师:陈梦苇工作单位:武汉理工大学理学院题目:定时闹铃的设计初始条件:电脑一台、protel作图软件、keilc51编译器、medwin仿真软件、isp在线编程软件要求完成的主要任务:(包括课程设计工作量及其技术要求以及说明书撰写等具体要求)1、技术要求:以89s51单片机为核心芯片,设计一个定时闹铃,要求如下:A、能够显示定时的时间;B、定时时间到让相应的发光二极管发光;2、主要任务:(1)复习有关课程,如数字电路、单片机等;(2)以89s51为核心,根据设计指标设计电路的框图;(3)根据要求设计出电路逻辑图和装配图;(4)查阅资料,确定所需各元器件型号和参数;(5)自拟调整测试方法,并调试电路使其达到设计指标要求;(6)撰写设计说明书,进行答辩。
3、撰写课程设计说明书:封面:题目,学院,专业,班级,姓名,学号,指导教师,日期任务书目录正文:1、技术指标;2、设计方案及其比较;3、实现方案;4、调试过程及结论;5、心得体会;6、参考文献时间安排:课程设计时间:18周:明确任务,查阅资料,初步设计电路原理图;19~20周:按照电路原理图布线,并调试通过。
按照要求撰写课程设计说明书。
指导教师签名:年月日系主任(或负责老师)签名:年月日第二篇:单片机课程设计任务书“单片机课程设计”任务书一、设计目的通过该课程设计,主要达到以下目的:①使学生增进对单片机系统的感性认识,加深对单片机理论方面的理解,为顺利完成毕业设计打基础。
②使学生掌握对单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口和串行口通讯等。
③进一步深化和巩固所学基础理论、专业知识及实验技能,提高学生的技术应用能力,使学生了解和掌握单片机应用系统的软、硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。
单片机课程设计说明书

代码重构:简化代码结构, 提高可读性和可维护性
优化算法:提高程序运行效 率,减少资源消耗
性能测试:通过测试找出性 能瓶颈,进行针对性优化
错误处理:完善错误处理机制, 提高程序稳定性和可靠性
收获:掌握了单片机的基本原理和编程方法 收获:提高了解决问题的能力和创新能力 不足:对单片机的应用领域了解不够深入 不足:对单片机的性能和局限性认识不足
具备一定的硬件 设计和制作能力
能够独立完成课 程设计的任务和 要求
ห้องสมุดไป่ตู้
定义:单片机是 一种集成电路芯 片,将微处理器、 存储器、输入/输 出接口等集成在 一个芯片上
分类:根据指令 集和架构,可以 分为8位、16位、 32位等不同类型
应用:广泛应用 于工业控制、家 电、汽车电子等 领域
特点:体积小、 功耗低、可靠性 高、编程简单、 易于扩展等
,a click to unlimited possibilities
汇报人:
01
02
03
04
05
06
提高学生的实践能力 培养学生的创新思维和解决问题的能力 帮助学生理解单片机的工作原理和应用领域 为学生未来的职业生涯打下坚实的基础
单击添加项标题
智能家居:控制家电、照明、安防等
单击添加项标题
电路板设计:根据单片机功能需求,设计电路板布局和元件位置 电路板制作:使用PCB软件绘制电路板,然后进行蚀刻、打孔等工艺 元件焊接:将元器件按照电路板设计进行焊接,注意焊接顺序和焊接质量 电路板测试:焊接完成后,进行电路板测试,确保电路板功能正常
调试步骤:检查电源、检查 电路连接、检查信号输出等
电路图的绘制:使用 电路设计软件绘制电 路原理图,包括元件 符号、连线、注释等
单片机课程设计书写

单片机课程设计书写一、课程目标知识目标:1. 让学生掌握单片机的基本原理,包括其内部结构、工作原理及功能特点;2. 使学生了解单片机编程的基本语法和编程技巧,能运用C语言或汇编语言进行程序设计;3. 帮助学生掌握单片机外围电路的设计方法,能够根据实际需求选用合适的传感器和执行器。
技能目标:1. 培养学生运用所学知识分析和解决实际问题的能力,能够完成简单的单片机控制系统设计;2. 提高学生的动手实践能力,能够独立完成单片机程序的编写、调试及下载;3. 培养学生团队协作和沟通表达的能力,能够在项目设计中与其他同学进行有效合作。
情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养其主动学习和持续探究的精神;2. 培养学生的创新意识,鼓励他们在设计中勇于尝试,发挥自己的想象力和创造力;3. 增强学生的责任心,使他们认识到所学知识在实际应用中的重要性,为我国电子科技事业的发展贡献力量。
分析课程性质、学生特点和教学要求,本课程将目标分解为具体的学习成果,以便后续的教学设计和评估。
通过本课程的学习,学生将能够独立完成简单的单片机控制系统设计,具备一定的编程和实践能力,为后续深入学习电子技术打下坚实基础。
同时,课程注重培养学生的团队协作和沟通能力,提高他们的综合素质。
二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础知识:介绍单片机的内部结构、工作原理及功能特点,使学生了解单片机的基本概念,为后续学习打下基础。
教材章节:第一章 单片机概述2. 单片机编程语言:讲解C语言和汇编语言的基本语法,编程技巧,使学生掌握单片机编程的基本方法。
教材章节:第二章 单片机编程语言3. 单片机外围电路设计:介绍常用传感器、执行器的工作原理,指导学生如何根据实际需求选用合适的器件并进行外围电路设计。
教材章节:第三章 单片机外围电路设计4. 单片机程序设计:通过实例分析,让学生掌握程序设计的方法,培养学生编程思维。
单片机课程设计说明书内容及格式要求

遇到的问题及解决方法
问题:硬件设计困难 解决方法:查阅相关资料,请教老师或同学 解决方法:查阅相关资料,请教老师或同学
问题:软件编程困难 解决方法:参加培训课程,请教老师或同学 解决方法:参加培训课程,请教老师或同学
问题:调试过程中出现错误 解决方法:仔细检查代码,查找错误原因 解决方法:仔细检查代码,查找错误原因
保护电路: 防止过压、 过流等异 常情况
元器件清单
单片机:型号、数量、功能
添加标题
输入设备:型号、数量、功 能
添加标题
其他辅助设备:型号、数量、 功能
电源:型号、电压、电流
添加标题
添加标题
添加标题
存储器:型号、容量、功能
添加标题
输出设备:型号、数量、功 能
添加标题
连接器:型号、数量、功能
电路板布线图
硬件测试方法与步骤
硬件测试的目的:验证硬件设计的正确性和稳定性
硬件测试的内容:包括电路设计、元器件选择、焊接工艺等
硬件测试的方法:包括功能测试、性能测试、可靠性测试等
硬件测试的步骤:制定测试计划、准备测试工具、执行测试、记录测试结果、分析测试数据、 编写测试报告等
04 软件设计
软件流程图
软件流程图是描述软件逻辑过 程的工具
社,2018年
2020年
相关图纸及源代码
电路板图:展示电路板布局 和元器件位置
电路原理图:展示电路设计 原理和布局
源代码:提供单片机程序源 代码,包括主程序、子程序
等
注释说明:对电路原理图和 源代码进行注释说明,便于
理解和使用
感谢您的观看
汇报人:
单片机课程设计说明 书大纲
,a click to unlimited possibilities
单片机课程设计撰写说明

单片机课程设计(论文)撰写说明
1.摘要部门撰写说明
摘要部分主要是对整个设计(论文)内容的提炼,相当于一篇文章的中心思想,要让读者看了你的摘要后就能很快的获取你的设计(论文)的主体内容。
常用的格式应该是:首先简单介绍一下所做课题的背景,然后介绍设计(论文)的主要工作,比如“设计(论文)对……的硬件进行了设计,包括……的设计,然后设计了系统的软件流程和程序源代码………,最后为了验证所设计的……正确性,在proteus环境下建立了……的仿真模型,仿真结果表明本设计多设计的是正确的”
2.设计(论文)总体架构说明
整个设计(论文)的总体架构主要分为前言部分(或者设计任务及要求部分)、整体方案设计、硬件电路设计、软件设计、系统仿真及调试、设计总结等。
前言部分是对所做课题的情况做一个简要的介绍(包括课题的意义、研究现状等),整体方案设计主要是根据设计任务书要求进行方案论证并确定设计方案,要给出整体方案框图并说明其工作原理。
硬件电路设计应包括:单片机最小系统设计(时钟电路设计、电源电路设计、键盘显示电路设计、RAM/ROM扩展等)、A/D、D/A、放大电路、传感器信号处理电路等设计(没有此部分的电路无需设计)。
软件设计主要包括软件流程图和程序源代码设计,要给出程序流程图(主程序流程图和各子程序图)和程序源代码。
系统仿真及调试主要包括仿真软件(系统)的简介、仿真模型的建立、仿真模型的运行及仿真结果与分析。
3.设计(论文)格式
设计(论文)格式严格按照邵阳学院毕业设计(论文)要求(详见邵阳学院网站)。
单片机课程设计说明书

《单片机原理及应用》期末课程设计
题目:4×4矩阵式键盘识别显示电路的设计
专业:机械设计制造及其自动化
班级:机械xxx班
姓名:xsxxx
学号:
指导老师:雷冀南
成绩:
第1节 引 言……………………………………………………………………2
1.1 4*4矩阵式键盘系统概述……………………………………………2
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。
符号和引脚 共阳极 共阴极
LED数码管的外形结构如图2-4,外部有10个引脚,其中3, 8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。
由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。LED有共阴极和共阳极两种。如图3-1所示。
图2-2中R1和Cl组成上电复位电路,其值R取为1KΩ, C取为10pF。
2.2.3 矩阵式键盘电路
AT89C51单片机的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;P1口输出按键信息,在数码管上显示每个按键的“0-F”序号。实际电路图连接如图2-4所示。
个机器周期时间以上的高电平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。
单片机课程设计说明书

目录第一章绪论第二章元器件介绍2.2 单片机模块2.3温度检测模块2.4 时钟模块2.5 温度存储模块2.6 液晶显示模块第三章硬件设计第四章软件设计第五章结论第六章参考文献第一章绪论当今社会,温度测量系统被广泛的应用于社会生产、生活的各个领域。
在工业、环境检测、医疗、家庭等多方面均有应用。
同时单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。
目前温度测量系统种类繁多,功能参差不齐。
有简单的应用于家庭的如电饭煲、太阳能热水器等。
也有用于航天级火箭、卫星发射高精度温度测量系统。
有简单的测量本地温度的有线温度测量系统,也有远程的无线温度测量系统。
有单点的温度测量系统,也有多点的温度测量系统。
现在最新的研究主流是将多个无线温度测量系统组成无线传感器网络,以增强温度测量的测量范围和精度。
单片机在检测和控制系统中得到广泛的应用, 温度则是系统常需要测量、控制和保持的一个量。
本文主要讨论了一种简单的温度测量系统。
系统使用DS18B20作为温度测量传感器,以AT89C2051单片机为核心来构成整个系统。
该系统具有温度测量和简单报警功能,可以满足初级工业应用的要求。
本文详细描述了该温度测量系统的系统设计方案、硬件电路设计和软件设计,并利用keil仿真软件对所开发的C语言程序进行了验证。
第二章元器件介绍2.2 单片机模块2.3温度检测模块2.4 时钟模块2.5 温度存储模块2.6 液晶显示模块第三章硬件设计第四章软件设计第五章结论第六章参考文献[1]丁元杰.单片微机原理及应用[M].北京:机械工业出版社,2003。
[2]马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2003.[3]何立明.单片机应用系统设计[M].北京:北京航空航天大学出版社,1990.[4]潘新民.微型计算机控制技术[M].北京:人民邮电技术出版社,1988.[5]杭和平,杨芳,谢飞.单片机原理与应用[M].北京:机械工业出版社,2008.[6]张靖武,周灵彬.单片机系统的PROTEUS设计与仿真[M].北京:电子工业出版社,2008.[7]沙占友。
单片机原理及应用课程设计说明书一

单片机原理及应用课程设计说明书1、绪论1.1主要内容:1:芯片选择:选择适当的单片机芯片是设计大气参数传感器的首要步骤。
考虑到电源要求、计算力、数据存储以及外设接口等因素,选择具备足够性能和功能的单片机芯片,选择STC89C52芯片。
2显示模块:使用BMP180气压传感器和DS18B20温度传感器,可以检测出大气温度和压强,并且DS18B20可以通过气压换算绝对高度,采用数码管进行显示温度和压强。
1.2设计原则:1.硬件和软件结合:在设计中,需要合理选择和使用单片机的硬件资源,并编写适合的软件程序来实现所需功能。
2.用户友好性:设计应重视用户界面的友好度,使用户能够方便地进行设置、调整和查看功能。
3.系统稳定性:设计应确保可调式电子日历系统的稳定性,以便可靠地显示和管理日期时间信息。
这涉及到正确的时钟源选择、合理的电源管理、抗干扰措施等。
4.易用性:大气参数检测仪应提供直观、易用的用户界面,以便用户能够方便地操作。
使用合适的输入设备如按键,以及直观的显示界面,可以提高用户的使用体验。
5.功能性:电子日历应该提供一系列实用的功能,如日期和时间显示、日程安排、提醒功能等。
这些功能应该能够满足用户的需求,并具备高可靠性和准确性。
6.可调性:设计中应该考虑到不同用户的个性化需求,提供可调式的显示格式、主题、颜色方案等选项。
这样用户可以根据自己的喜好和需求来设置和调整数码管的外观。
1.3技术标准:1.电气标准:设计过程需遵循相关的电气安全标准和EMC(电磁兼容性)要求。
2.编程语言和工具:根据单片机型号选择合适的编程语言和开发工具,如C语言和Keil等。
3.I/O接口标准:设计中使用的输入输出接口应符合通用的标准,如GPIO或I2C等2、硬件设计2.1 单片机系统图2. 1 单片机系统中间部分是控制芯片,左上角和右边的电阻都是上拉电阻,目的是限流。
左边中间的部分是复位电路,使用后按下实现复位功能。
左下角是晶振电路为系统提供时钟信号。
单片机课程设计说明书 (word文档+全)

单片机课程设计说明书 (word文档+全)单片机课程设计说明书(word文档+全) 盐城工学院课程设计说明书(2015)单片机课程设计说明书用ADC0832设计的两路电压表(用LCD1602显示) 专业新能源科学与工程学生姓名班级学号指导教师完成日期2015年1 月28 日用ADC0832设计的两路电压表(用LCD1602显示) 摘要:本设计是简易两路数字电压表,数字电压表是采用数字化测量设计的电压仪表。
随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。
本设计利用单片机STC89C52借助软件实现数字显示功能、自动校准、LED显示,A/D转换器采用ADC0832构成数模转换电路。
该电压表测量范围在0~5V。
由于采用高性能的单片机芯片为核心,同时利用LED数码管为显示设备,这样就使显示清晰直观、读数准确,减少了因为人为因素所造成的测量误差事件,同时提高了测量的准确度。
根据电压表的主要功能,提出了设计方案并进行了论证。
设计包括硬件设计和软件设计两大部分。
硬件部分包括单片机最小系统、数模转换电路、显示模块四个部分。
首先在Proteus中设计并绘制了电路图,并编写程序使仿真正确。
然后便根据设计的电路在万能板上制作完成了实物并调试成功。
接着在SD301学习板上完成了同样的功能。
接着画了电路原理图,制作了小视频,完成了课程设计。
关键词:单片机,ADC0832,LCD1602,A/D转换,电压表目录 1 概述1 1.1 课程设计研究背景与意义1 1.2 课程设计内容2 2 设计方案论证与方案选择2 2.1 方案论证2 2.2 方案选择2 3 系统硬件电路设计3 3.1 单片机最小系统3 3.2 模数转换电路5 3.3 显示电路7 4 系统软件设计10 4.1 主程序10 4.2 A/D转换程序11 4.3液晶显示子程序11 5 系统调试13 6 结束语15 参考文献16 附录17 附录1 ADC0832设计的两路电压表电路原理图18 附录2 ADC0832设计的两路电压表Proteus仿真电路图19 附录3 ADC0832设计的两路电压表元器件清单20 附录4 ADC0832设计的两路电压表程序清单21 用ADC0832设计的两路电压表(用LCD1602显示) 1 概述1.1 课程设计研究背景与意义近年来计算机技术及微电子器件在工程技术中应用十分广泛。
单片机课程设计说明书

一概述1.1 课程设计的目的和意义通过课程设计使我进一步熟悉了单片机的内部结构和工作原理,掌握了单片机应用系统设计的基本方法和步骤;通过利用MCS-51单片机,理解单片机在自动化装置中的作用以及掌握单片机的编程调试方法;通过设计一个简单的实际应用输入控制及显示系统,掌握protues和keil以及各种仿真软件的使用。
目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等,温度计中传感器是它的重要组成部分,它的精度、灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。
传感器应用极其广泛,目前已经研制出多种新型传感器。
但是,作为应用系统设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统连接起来,从而构成性能优良的监控系统。
1.2 任务及要求设计内容:所设计数字电压表应具有以下功能:(1)可以测量-50到110摄氏度内的温度。
(2)在4位LED数码管上显示温度,分别为百位、十位、个位和小数点后一位。
(3)测量精度误差在0.5摄氏度以内。
设计要求:1、根据题目要求进行系统总体设计。
2. 完成系统硬件电路的设计。
(1)硬件电路图。
(2)硬件电路说明。
3. 系统程序的设计。
(1)程序流程图。
(2)完整源程序。
4.完成的控制系统能达到题目的要求。
5.书写设计说明书。
二总体设计方案1 功能简介数码管直接显示DS18B20所测量的温度,超出-50~110℃范围时喇叭报警并且数码管开始闪烁,在温度范围内时喇叭停止报警并且数码管停止闪烁,运行期间可以随时进行复位操作。
2 设计思路AT89C51作为温度测试系统设计的核心器件,具有低电压供电和体积小等特点。
该器件是INTEL公司生产的MCS-5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51的CMOS 产品。
芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O接口等计算机所需的基本功能部件。
单片机课程设计说明书 (1)

烟台大学机091-2 课程设计目录一.设计任务................................ ...............二.功能与框图................................ ..........三.单片机部分................................ .........四.基本人机接口设计..........................五.附录................................ ........................六.总程序................................ ..................七.参考文献................................ ..............一.设计任务1.1设计题目:频率计1.2任务要求:检测十秒内人按按钮的最快频率,并用三位LED显示出实际检测的频率。
1.3设计内容:⑴设计思路:根据任务要求,确定设计要分为三个小部分:首先,设计程序检测出人按按键的频率;然后,设计一个比较子程序,筛选出人按按键的最快频率;最后,将筛选出的频率值输出到LED上进行显示。
其中最主要的是如何检测人按按钮的频率,对此,有三种设计方案,(1)通过定时器定时1S,检测人按按钮的频率;(2)通过检测相邻两次按键动作的时间间隔计算频率,也需用到定时器;(3)直接定时检测十秒内人按按键的频率(因为任务要求可以理解为不同的含义)。
综合考虑,我们选择了第一种设计方案。
(2)基本人机接口设计①完成显示接口设计。
②完成按键接口设计。
设计要求:①完成设计说明书;②软件设计;③硬件设计;④程序仿真;1.4设计步骤⑴理解并确定设计要求⑵确定整体控制方案⑶编写程序说明书附录附上电路图一张及汇编控制程序一份。
二.功能与框图按键接外部中断一→89C51单片机→LED 显示端口如上图,按键按下,外部中断一产生中断,此时定时器0已经开始计时,等时间到后记录数据,将数据送至单片机。
单片机课程设计说明书内容及格式要求

1 引言1.1 数字时钟的发展史电子钟有着很长的历史,从民国19年的电钟,研制始於60年代中期的国内电晶体、半导体管钟,到研制始於70年代末的石英电子钟,再到今天我们所用的智能电子钟。
以前的电子钟存在着很多缺点,其外观体积庞大,在功能上有死摆、走时时间不长、走时精确度不高等缺点。
如今的电子数字时钟无论是外观,还是在功能上,都有了很大的改进。
1.2 设计的目的与意义我们大学生的生活包括:学习、休息以及参与社会的多种实践活动,环环有条理,丰富多彩。
时钟的计时功能与我们的各种行为和活动有着密切的联系,于是时钟的作用便体现出来,只有合理安排时间,养成良好的时间观念,才能给我们的生活、学习带来极大的方便,这就需要电子钟时刻提醒我们。
因此,在这里设计一个较简单的电子钟,它能完成计时的功能。
这个时钟系统很简单,但对于我们学生很实用。
1.3 设计的基本思路与主要内容设计一个电子产品,首先了解它能实现的功能,时钟系统最基本的功能就是实现计时,在这里设计的数字数字时钟,它能实现计时的功能,给数字时钟加上电自动计时。
设计一个数字时钟,要求:开机时,显示00:00:00的时间开始计时,“秒”的调整,每按一次加1s;“分”的调整,每按一次加1min;“时”的调整,每按一次加1h。
计时满23:59:59时,返回00:00:00重新计时。
硬件设计很简单,主要包括:单片机、按键电路、驱动显示电路,以及LED 显示器四个部分。
单片机选用AT89C51芯片,它无须外扩程序存储器,设计电路很简单。
显示时、分、秒加两个分隔符,采用8位的数码管,用74LS245来驱动LED数码管显示字符。
以秒计数并显示时、分、秒。
其中秒和分为60进制,小时为24进制计数。
2 数字时钟系统的整体设计2.1 系统的功能要求以单片机技术为核心,充分应用各种外围电路元器件,设计一个通过显示器显示时间(时、分、秒)的数字时钟。
要求:1、开始时,时、分、秒显示为00:00:00;2、P0.0/AD0控制“秒”的调整,每按一次加1s;3、P0.1/AD1控制“分”的调整,每按一次加1min;4、P0.2/AD2控制“时”的调整,每按一次加1h。
单片机课程设计报告[5篇]
![单片机课程设计报告[5篇]](https://img.taocdn.com/s3/m/92b7e9f1c0c708a1284ac850ad02de80d4d806a6.png)
单片机课程设计报告[5篇]第一篇:单片机课程设计报告《单片机课程设计报告》学校:专业:班级:姓名:学号:指导教师:摘要由于单片机体积小、成本低、使用方便,所以被广泛地应用于仪器仪表、现场数据的采集和控制。
通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用。
关键词单片机,程序,流水灯,数码管,温度计,键盘扫描,定时器等。
实验内容一、课程设计的目的以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。
在根据该电路设计出软件的功能模块、从而完成程序流程图,在根据流程图完成程序的设计,并通过反复的调试、运行、更正,直至完成既定功能为止,最后将软件、硬件结合进行调试、运行,对其功能进行最终测试,并反复思考其测试中遇到相应问题的原因,并将其一一处理,从而完成本次设计的实验要求,以及本次课程设计的最终目的。
实验一:键盘操作实验实验要求:通过本次实验实现对键盘的控制,操作数码管的显示数字。
实验程序:#include #include #include #include #define WR273 XBYTE[0XC000] #define RD244 XBYTE[0XC000] #define uchar unsigned char #define uint unsigned int sbit DQ =P1^0;uint count=0,x,buf[20],tim,flag;uchar fen,shi;uchar codetable_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80 ,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar codetable_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x0 0,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};voidled_clc(void){ XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE [0XA000]=0XFF;XBYTE[0XB000]=0XFF;}void delay(unsigned int i){ while(i--);} void delay_1ms(uint z){ uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);} uchar key_test(){ WR273=0XF0;if((RD244&0X0F)!=0X0F)return 1;else return 0;}void time_init(){ TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;TR0=1;ET0=1;EA=1;} void time_display(){if(count==10000)count=0;XBYTE[0X8000]=table_16_1[coun t%10];XBYTE[0X9000]=table_16_1[count%100/10];XBYTE[0XA00 0]=table_16_1[count%1000/100];XBYTE[0XB000]=table_16_1[co unt/1000];} void TIME_SET(){ uchar a,b,c,d,key;while(flag==1){ led_clc();while(!key_test());a=keyscan();XBYTE[0XB000]=table_16_1[a];while(!key_test());b=keyscan();XBYTE[0XA000]=table_16_2[b];while(!key_test());c=keyscan();XBYTE[0X9000]=table_16_1[c];while(!key_test());d=keyscan();XBYTE[0X8000]=table_16_1[d] ;while(!key_test());key=keyscan();if(key==11){shi = a*10+b;fen = c*10+d;flag=0;} } } void TIME_DIS(){if(tim==60){ fen++;tim=0;if(fen==60){ shi++;fen=0;if(shi==24)shi=0;} } XBYTE[0X8000]=table_16_1[fen%10];XBYTE[0X9000]=table_16_1 [fen/10];XBYTE[0XA000]=table_16_2[shi%10];XBYTE[0XB000]=ta ble_16_1[shi/10];} void main(){ uint temp;led_clc();// serial_init();time_init();while(1){ temp=keyscan();if(temp==10)fla g=1;TIME_SET();//XBYTE[0X8000]=table_16_1[temp];//time_display();TIME_DIS();} } void time()interrupt 2 { uchar m;TH0=(65536-46080)/256;TL0=(65536-46080)%256;m++;if(m==20){ m=0;count++;tim++;} } void serial()interrupt 4 { if(RI==1){ x=SBUF;RI=0;} put_char(x);delay_1ms(5);}实验心得体会:通过本次实验,让我对单片机实验有了更深的了解,认为这个实验还是比较容易的,没有花太多的时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机及控制系统》课程设计报告题目: LCD显示设计院(系):机电及自动化学院专业班级:电气工程及其自动化1204学生姓名:夏德君学号:20121131177指导教师:李思2015年 6 月 23日至2015年 7 月 3日华中科技大学武昌分校制《单片机及控制系统》课程设计任务书(2) LCD显示电路采用122×32A点阵式LCD液晶显示模块,内置SED1520液晶显示控制器,电路如图1所示。
图1 LCD显示电路(3) LCD及单片机的连接(如图2)1.摘要 (1)2.课程设计题目及要求 (2)2.1课程设计题目 (2)2.2课程设计要求 (2)3.设计分析 (2)3.1L C D显示原理 (2)3.2L C D显示电路 (2)3.3 LCD引脚说明……………………………………………………………33.4S E D1520的基本原理 (4)3.5S E D1520的指令系统 (5)3.6L C D及单片机的连接 (6)4.软件设计 (9)4.1程序流程 (9)4.2课程设计具体程序 (10)4.2.1L C D翻屏程序 (15)4.2.2L C D纵向滚屏程序 (29)4.2.3L C D横向滚屏程序 (39)5.总结....................................................................................参考文献 (3)1.摘要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于及控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
随着以计算机为轴心的各种各样信息处理装置的诞生,为适应这种新形势,信息家电,网络终端,广播-通信等用途的LCD市场也将迅速扩大,而且如今LCD发展方向不仅在于大屏幕,而且在中小屏幕方面,例如汽车导航系统,摄像机,数字式照相机,便携式电视,PDA(个人数字助理),娱乐/游戏机,摄影机等有着进一步的发展。
液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其他显示器无法比拟的优点,近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。
LCD可分为段式LCD、字符式LCD和点阵式LCD。
其中,段式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线以及汉字、动画,并且可以实现屏幕滚动、反转、闪烁等功能,用途十分广泛。
由此可见LCD的应用是如此广泛,所以用MPU控制液晶显示器是很普遍的应用。
本设计主要研究通过单片机控制来实现液晶模块字符的显示。
2. 课程设计题目及要求2.1课程设计题目LCD显示设计2.2课程设计要求了解122×32A点阵式LCD液晶显示的结构、工作原理、编程方法;SED1250的特性、内部结构、各个管脚的功能,以及获取字模的方法;编写一个完整的程序,按要求在LCD上显示内容。
具体显示效果为:(1)显示汉字:专业、姓名。
(2)实现显示内容的翻屏功能。
扩展:实现显示内容滚屏功能。
3.设计分析3.1 LCD显示的原理液晶是一呈液体状的化学物质,象磁场中的金属一样,当受到外界电场影响时,其分子会产生精确的有序排列。
如果对分子的排列加以适当的控制,液晶分子将会允许光线穿越。
无论是笔记本电脑还是桌面系统,采用的LCD显示屏都是由不同部分组成的分层结构。
位于最后面的一层是由荧光物质组成的可以发射光线的背光层。
背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层。
液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。
当LCD中的电极产生电场时,液晶分子就会产生扭曲,从而将穿越其中的光线进行有规则的折射,然后经过第二层过滤层的过滤在屏幕上显示出来。
3.2 LCD显示电路图3-1 LCD显示电路3.3 引脚说明表3.1 LCD引脚说明3.4 SED1520的基本原理SED为内置液晶显示器控制器,集行、列驱动器和控制器及一体,广泛应用于小型液晶显示模块中,内置2560位显示RAM区(32行80列),RAM中的1位数据控制液晶屏上一个像素的亮暗,“1”为亮,“0”为暗。
图3-2 液晶显屏(1)0-60列为左半屏;61-121为右半屏。
(2)每半屏页数分配一致。
(3)每页含8行80列(80个字节)。
(前61列有效)(4)每半屏为32行,共4页。
(5)每个汉字占16行,即用2页才能写完。
(6)液晶屏上最多能显示两行汉字(静态时最多显示16字)。
3.5 SED1520的指令系统表3.2SED1520的13条指令3.6 LCD及单片机的连接页面地址设置01 0 1 1 1 0P1 P0(0-3)列地址设置000 C6 C5 C4 C3 C2 C1 C0(0-79)启动改写方式01 1 1 0 0 00 0结束改写方式01 1 1 0 1 11 0读取状态字01BUSY ADC ON/OFF RESET 0 0 0 0写显示数据 1数据读显示数据 11数据图3-3 LCD 及单片机的连接单片机及LCD 模块之间有四种基本操作: 写命令:R/W 接低电平即A7为0 读状态:R/W 接高电平即A7为1 写显示数据:A0 接高电平读显示数据:A0 接低电平表3.3单片机及LCD 模块之间有四种基本操作4. 软件设计E2 F800H F880H F840H F8C0H4.1程序流程图4-1 初始化程序图4-2 清屏子程序图4-3 显示主程序4.2课程设计具体程序4.2.1 LCD翻屏程序#include "reg51.h"#include "absacc.h"#include "intrins.h"#define PD1 61 /* 122/2 分成左右两半屏(122x32) */ unsigned char hang ;unsigned char Column;unsigned char Page_ ; /* 页地址寄存器 D1,DO:页地址 */ unsigned char Code_ ; /* 字符代码寄存器 */unsigned char Command; /* 指令寄存器 */unsigned char LCDData; /* 数据寄存器 */#define CWADD1 XBYTE[0xfa00] /* 写指令代码地址(E1) */#define DWADD1 XBYTE[0xfa40] /* 写显示数据地址(E1) */#define CRADD1 XBYTE[0xfa80] /* 读状态字地址(E1) */#define DRADD1 XBYTE[0xfac0] /* 读显示数据地址(E1) */#define CWADD2 XBYTE[0xf800] ///* 写指令代码地址(E//2#define DWADD2 XBYTE[0xf840] ///* 写显示数进地址(E#define CRADD2 XBYTE[0xf880] ///* 读状态字地址(E2#define DRADD2 XBYTE[0xf8c0] ///* 读显示数据地址(E2#define _Nop() _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_()/* 中文字模库 16x16点阵 */unsigned char code CCTAB[][32] ={/* 点阵:16x16提取点阵方向:纵向字节掉转:是字节方式:C语言 */0x20,0x20,0x24,0x24,0x24,0xE4,0x26,0x24, //武000x20,0xFF,0x20,0x22,0x2C,0x20,0x20,0x00,0x20,0x60,0x3F,0x20,0x20,0x1F,0x11,0x11,0x10,0x03,0x1C,0x20,0x40,0x80,0xE0,0x00,0x00,0x00,0x00,0x7F,0x49,0x49,0x49,0x49, //昌010x49,0x49,0x49,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x01,0x00,0x00,0x04,0x04,0x04,0xE4,0x25,0x26,0x34,0x2C, //首02 0x24,0x26,0x25,0xF4,0x24,0x06,0x04,0x00,0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x30,0xC0,0x00,0x02,0x0C, //义030x00,0x80,0x60,0x18,0x06,0x00,0x00,0x00,0x00,0x80,0x80,0x40,0x20,0x11,0x0A,0x04,0x0A,0x11,0x10,0x20,0x60,0xC0,0x40,0x00,0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96, //学04 0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0xFE,0x22,0x5A,0x96,0x0C,0x24,0x24, //院05 0x25,0x26,0x24,0x34,0xA4,0x14,0x0C,0x00,0x00,0xFF,0x04,0x08,0x87,0x81,0x41,0x31,0x0F,0x01,0x3F,0x41,0x41,0x41,0x70,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48, //电06 0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,0x40,0x20,0x58,0x47,0x54,0x54,0x54,0x54, //气07 0x54,0x54,0xD4,0x14,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x80,0x70,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC, //工08 0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0x7E, //程09 0x42,0x42,0x42,0x42,0x42,0x7F,0x02,0x00,0x08,0x06,0x01,0xFF,0x00,0x43,0x41,0x49,0x49,0x49,0x7F,0x49,0x4D,0x69,0x41,0x00,0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00, // -1-0a 0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00, // -2-0b 0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00, // -0-0c0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00, // -4-0d 0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0xFD,0x55,0x55,0x57,0x55,0x55,0x55,0x55,0xFD,0x01,0x01,0x00,0x00,0x00,0x20,0x90,0x89,0x87,0x4D,0x55,0x25,0x25,0x55,0x4D,0x85,0x80,0x80,0x00,0x00,0x20,0x10,0x8C,0x63,0x04,0xF4,0x94,0x94,0xF4,0x9F,0xF4,0x94,0x94,0xF6,0x04,0x00,0x02,0x01,0xFF,0x00,0x42,0x32,0x02,0x3A,0x42,0x46,0x5A,0x42,0x62,0x12,0x62,0x00,0x10,0x10,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0x92,0xFF,0x12,0x18,0x10,0x00,0x40,0x20,0x10,0x0C,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00/* 1.写指令代码子程序(E1) */void WriteCommandE1(){//while(IN(CRADD1) & 0x80); //实际的液晶操作中可以不判断是否忙CWADD1=Command;_Nop();}/* 2.写显示数据子程序(E1) */void WriteDataE1(){//while(IN(CRADD1) & 0x80);DWADD1=LCDData;_Nop();}/* 4.写指令代码子程序(E2) */void WriteCommandE2(){//while(IN(CRADD2) & 0x80); CWADD2=Command;_Nop();}/* 5.写显示数据子程序(E2) */ void WriteDataE2(){//while(IN(CRADD2) & 0x80); DWADD2=LCDData;_Nop();}/* 初始化程序 */void Init(){Command = 0xe2;WriteCommandE1();WriteCommandE2();Command = 0xa4;WriteCommandE1(); WriteCommandE2();Command = 0xa9; WriteCommandE1(); WriteCommandE2();Command = 0xa0; WriteCommandE1(); WriteCommandE2();Command = 0xc0; WriteCommandE1(); WriteCommandE2();Command = 0xaf; WriteCommandE1(); WriteCommandE2(); }/* 清屏 */void Clear(){unsigned char i,j;i = 0;do {Command = (i + 0xb8);/* 页地址设置 */WriteCommandE1();WriteCommandE2();Command = 0x00; /* 列地址设置为"0" */ WriteCommandE1();WriteCommandE2();j = 0x50; /* 一页清 80个字节 */ do {LCDData = 0x00; /* 显示数据为"0" */WriteDataE1();WriteDataE2();}while(--j !=0); /* 页内字节清零循环 */}while(++i !=4); /* 页地址暂存器加一 */ /* 显示区清零循环 */}/*延时函数*/void delay1(){unsigned int i;for(i=0;i<=50000;i++);}void delay2(){unsigned int i;for(i=0;i<=5000;i++);}/* 中文显示子程序 */void WriteCHN8x16(){unsigned char i,j,k;i = 0;j = 0;while(j<2) {Command = ((Page_ + j) & 0x03) | 0xb8; /* 设置页地址 */ WriteCommandE1();WriteCommandE2();k = Column; /* 列地址值 */while(k < Column + 8){if (k < PD1) { /* 为左半屏显示区域(E1) */ Command = k;WriteCommandE1(); /* 设置列地址值 */LCDData = CCTAB[Code_][i]; /* 取汉字字模数据 */WriteDataE1(); /* 写字模数据 */} else{ /* 为右半屏显示区域(E2) */ Command = k-PD1;WriteCommandE2(); /* 设置列地址值 */LCDData = CCTAB[Code_][i]; /* 取汉字字模数据 */WriteDataE2(); /* 写字模数据 */};i++;if( ++k >= PD1 * 2) break; /* 列地址是否超出显示范围 */ } ;j++;};}/* 中文显示程序 *//*闪烁(延时delay1,delay2)*/ void main(){Init();Clear();delay2();while(1){Clear();for(i=31;i>0;i--){hang=0xc0+i;Command = hang; WriteCommandE1();WriteCommandE2();Column = 0x00;Code_ = 0x00;WriteCHN16x16();Column = 0x10;WriteCHN16x16();Column = 0x20; Code_ = 0x02;WriteCHN16x16();Column = 0x30; Code_ = 0x03;WriteCHN16x16();Column = 0x40; Code_ = 0x04;WriteCHN16x16();Column = 0x50; Code_ = 0x05;WriteCHN16x16();Code_ = 0x06;WriteCHN16x16();Column = 0x10; Code_ = 0x07;WriteCHN16x16();Column = 0x20; Code_ = 0x08;WriteCHN16x16();Column = 0x30; Code_ = 0x09;WriteCHN16x16();Column = 0x40; Code_ = 0x0a;WriteCHN8x16();Column = 0x48;Code_ = 0x0b;WriteCHN8x16();Column = 0x50;Code_ = 0x0c;WriteCHN8x16();Column = 0x58;Code_ = 0x0d;WriteCHN8x16();Page_ = 0x02; //“夏”,0e Column = 0x30;Code_ = 0x0e;WriteCHN16x16();Page_ = 0x02; //“德”,0f Column = 0x40;Code_ = 0x0f;WriteCHN16x16();Page_ = 0x02; //“君”,10Column = 0x50;Code_ = 0x10;WriteCHN16x16();delay1();}}}4.2.2LCD纵向滚屏程序#include "reg51.h"#include "absacc.h"#include "intrins.h"#define PD1 61 /* 122/2 分成左右两半屏(122x32) */ unsigned char hang ;unsigned char Column;unsigned char Page_ ; /* 页地址寄存器 D1,DO:页地址 */ unsigned char Code_ ; /* 字符代码寄存器 */unsigned char Command; /* 指令寄存器 */unsigned char LCDData; /* 数据寄存器 */#define CWADD1 XBYTE[0xfa00] /* 写指令代码地址(E1) */#define DWADD1 XBYTE[0xfa40] /* 写显示数据地址(E1) */#define CRADD1 XBYTE[0xfa80] /* 读状态字地址(E1) */#define DRADD1 XBYTE[0xfac0] /* 读显示数据地址(E1) */#define CWADD2 XBYTE[0xf800] ///* 写指令代码地址(E//2#define DWADD2 XBYTE[0xf840] ///* 写显示数进地址(E#define CRADD2 XBYTE[0xf880] ///* 读状态字地址(E2#define DRADD2 XBYTE[0xf8c0] ///* 读显示数据地址(E2#define _Nop() _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ ()/* 中文字模库 16x16点阵 */unsigned char code CCTAB[][32] ={/* 点阵:16x16提取点阵方向:纵向字节掉转:是字节方式:C语言 */0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48, //电06 0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,0x40,0x20,0x58,0x47,0x54,0x54,0x54,0x54, //气07 0x54,0x54,0xD4,0x14,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x80,0x70,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC, //工08 0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0x7E, //程09 0x42,0x42,0x42,0x42,0x42,0x7F,0x02,0x00,0x08,0x06,0x01,0xFF,0x00,0x43,0x41,0x49,0x49,0x49,0x7F,0x49,0x4D,0x69,0x41,0x00,0x00,0x01,0x01,0xFD,0x55,0x55,0x57,0x55,0x55,0x55,0x55,0xFD,0x01,0x01,0x00,0x00,0x00,0x20,0x90,0x89,0x87,0x4D,0x55,0x25,0x25,0x55,0x4D,0x85,0x80,0x80,0x00,0x00,0x20,0x10,0x8C,0x63,0x04,0xF4,0x94,0x94,0xF4,0x9F,0xF4,0x94,0x94,0xF6,0x04,0x00,0x02,0x01,0xFF,0x00,0x42,0x32,0x02,0x3A,0x42,0x46,0x5A,0x42,0x62,0x12,0x62,0x00,0x10,0x10,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0x92,0xFF,0x12,0x18,0x10,0x00,0x40,0x20,0x10,0x0C,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00};/* 1.写指令代码子程序(E1) */void WriteCommandE1(){//while(IN(CRADD1) & 0x80); //实际的液晶操作中可以不判断是否忙CWADD1=Command;_Nop();}/* 2.写显示数据子程序(E1) */ void WriteDataE1(){//while(IN(CRADD1) & 0x80); DWADD1=LCDData;_Nop();}/* 4.写指令代码子程序(E2) */ void WriteCommandE2(){//while(IN(CRADD2) & 0x80); CWADD2=Command;_Nop();}/* 5.写显示数据子程序(E2) */ void WriteDataE2(){//while(IN(CRADD2) & 0x80); DWADD2=LCDData;_Nop();}/* 初始化程序 */ void Init(){Command = 0xe2; WriteCommandE1(); WriteCommandE2();Command = 0xa4; WriteCommandE1(); WriteCommandE2();Command = 0xa9; WriteCommandE1(); WriteCommandE2();Command = 0xa0; WriteCommandE1(); WriteCommandE2();Command = 0xc0; WriteCommandE1();WriteCommandE2();Command = 0xaf;WriteCommandE1();WriteCommandE2();}/* 清屏 */void Clear(){unsigned char i,j;i = 0;do {Command = (i + 0xb8);/* 页地址设置 */WriteCommandE1();WriteCommandE2();Command = 0x00; /* 列地址设置为"0" */ WriteCommandE1();WriteCommandE2();j = 0x50; /* 一页清 80个字节 */ do {LCDData = 0x00; /* 显示数据为"0" */WriteDataE1();WriteDataE2();}while(--j !=0); /* 页内字节清零循环 */}while(++i !=4); /* 页地址暂存器加一 */ /* 显示区清零循环 */}/*延时函数*/void delay1(){unsigned int i;for(i=0;i<=20000;i++);}void delay2(){unsigned int i;for(i=0;i<=20000;i++);}/* 中文显示子程序 */void WriteCHN16x16(){unsigned char i,j,k;i = 0;j = 0;while(j<2) {Command = ((Page_ + j) & 0x03) | 0xb8; /* 设置页地址 */ WriteCommandE1();WriteCommandE2();k = Column; /* 列地址值 */while(k < Column + 16){if (k < PD1) { /* 为左半屏显示区域(E1) */ Command = k;WriteCommandE1(); /* 设置列地址值 */LCDData = CCTAB[Code_][i]; /* 取汉字字模数据 */WriteDataE1(); /* 写字模数据 */} else{ /* 为右半屏显示区域(E2) */ Command = k-PD1;WriteCommandE2(); /* 设置列地址值 */LCDData = CCTAB[Code_][i]; /* 取汉字字模数据 */WriteDataE2(); /* 写字模数据 */};i++;if( ++k >= PD1 * 2) break; /* 列地址是否超出显示范围 */ } ;j++;};}/* 中文显示程序 *//*闪烁(延时delay1,delay2)*/void main(){unsigned char i;Init();Clear();while(1){Clear();for(i=31;i>0;i--){hang=0xc0+i;Command = hang&0x1f|0xc0; WriteCommandE1();WriteCommandE2();Column = 0x00;Code_ = 0x00;WriteCHN16x16();Column = 0x10;Code_ = 0x01;WriteCHN16x16();Column = 0x20;Code_ = 0x02;WriteCHN16x16();Column = 0x30;Code_ = 0x03;WriteCHN16x16();Column = 0x40; Code_ = 0x04;WriteCHN16x16();Column = 0x50; Code_ = 0x05;WriteCHN16x16();Column = 0x60; Code_ = 0x06;WriteCHN16x16();delay1();}}}4.2.3LCD横向滚屏程序#include "reg51.h"#include "absacc.h"#include "intrins.h"#define PD1 61 /* 122/2 分成左右两半屏(122x32) */ unsigned char hang ;unsigned char Column;unsigned char Page_ ; /* 页地址寄存器 D1,DO:页地址 */ unsigned char Code_ ; /* 字符代码寄存器 */unsigned char Command; /* 指令寄存器 */unsigned char LCDData; /* 数据寄存器 */#define CWADD1 XBYTE[0xfa00] /* 写指令代码地址(E1) */#define DWADD1 XBYTE[0xfa40] /* 写显示数据地址(E1) */#define CRADD1 XBYTE[0xfa80] /* 读状态字地址(E1) */#define DRADD1 XBYTE[0xfac0] /* 读显示数据地址(E1) */#define CWADD2 XBYTE[0xf800] ///* 写指令代码地址(E//2#define DWADD2 XBYTE[0xf840] ///* 写显示数进地址(E#define CRADD2 XBYTE[0xf880] ///* 读状态字地址(E2#define DRADD2 XBYTE[0xf8c0] ///* 读显示数据地址(E2#define _Nop() _nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ ()/* 中文字模库 16x16点阵 */unsigned char code CCTAB[][32] ={/* 点阵:16x16提取点阵方向:纵向字节掉转:是字节方式:C语言 */0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48, //电060x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,0x40,0x20,0x58,0x47,0x54,0x54,0x54,0x54, //气070x54,0x54,0xD4,0x14,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x80,0x70,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC, //工080x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0x7E, //程09 0x42,0x42,0x42,0x42,0x42,0x7F,0x02,0x00,0x08,0x06,0x01,0xFF,0x00,0x43,0x41,0x49,0x49,0x49,0x7F,0x49,0x4D,0x69,0x41,0x00,0x00,0x01,0x01,0xFD,0x55,0x55,0x57,0x55,0x55,0x55,0x55,0xFD,0x01,0x01,0x00,0x00,0x00,0x20,0x90,0x89,0x87,0x4D,0x55,0x25,0x25,0x55,0x4D,0x85,0x80,0x80,0x00,0x00,0x20,0x10,0x8C,0x63,0x04,0xF4,0x94,0x94,0xF4,0x9F,0xF4,0x94,0x94,0xF6,0x04,0x00,0x02,0x01,0xFF,0x00,0x42,0x32,0x02,0x3A,0x42,0x46,0x5A,0x42,0x62,0x12,0x62,0x00,0x10,0x10,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0x92,0xFF,0x12,0x18,0x10,0x00,0x40,0x20,0x10,0x0C,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFE,0x04,0x00,0x00};/* 1.写指令代码子程序(E1) */void WriteCommandE1(){//while(IN(CRADD1) & 0x80); //实际的液晶操作中可以不判断是否忙CWADD1=Command;_Nop();}/* 2.写显示数据子程序(E1) */void WriteDataE1(){//while(IN(CRADD1) & 0x80);DWADD1=LCDData;_Nop();}/* 4.写指令代码子程序(E2) */void WriteCommandE2(){//while(IN(CRADD2) & 0x80);CWADD2=Command;_Nop();}/* 5.写显示数据子程序(E2) */ void WriteDataE2(){//while(IN(CRADD2) & 0x80); DWADD2=LCDData;_Nop();}/* 初始化程序 */void Init(){Command = 0xe2;WriteCommandE1();WriteCommandE2();Command = 0xa4;WriteCommandE1();WriteCommandE2();。