手把手教你学单片机的C语言程序设计(十六).pdf_第1页
手把手教你学单片机的C语言程序设计(十六).pdf_第2页
手把手教你学单片机的C语言程序设计(十六).pdf_第3页
手把手教你学单片机的C语言程序设计(十六).pdf_第4页
手把手教你学单片机的C语言程序设计(十六).pdf_第5页
全文预览已结束

手把手教你学单片机的C语言程序设计(十六).pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

手把 嘲j l l螂 岫 峨 一、 曲 胡 1 6 2点阵字符液晶模块是 由点阵 字符液 晶显示器件和专用的行 列驱动 器 、 控制器及必要 的连接件 、 结构 件装 配而成, 可以显示数字和英文字符。这 种点阵字符模块本身具有字符发生器, 显示容量大 功能丰富。 液晶点阵字符模块的点阵排列是 由 5 x 7或 5 x 8 5 x l 1的一组 组像素 点 阵排列组成的。每组为 1 位 每位阐有 一 点的间隔 每行间也有一行的间隔 所 以不能显示图形。 一 般在模块控制 、 驱动器内具有已 固化 好 1 9 2个 字 符 字 模 的 字符 库 C GR O M, 还具有让 用户 自定义 建立 专 用字符 的随机 存储 器 C GR AM 允许 用 户建 立 8个 5 x 8点阵的字符 。这种模 块 适用于 M6 8 0 0系列计 算机接 n。 接 口数据传输可用 8位或 4位数据 传输 方式。 点阵字符模块具有丰富的显示功 能 其 驱动芯片大 多为 H D 4 4 7 8 0或 兼 窖电路。 液晶显示器和其它显示器相比 具 有 以下 突出的优点 : 1 低电压、 场致驱动 。 2微功耗 仅 1 uW c m2 。 3平板显示 体积小 而薄。 4与集成电路匹配方便 、 简单。 5被动显示 不怕光冲刷 。 6可彩 色、 黑 白显示 效果逼真 。 7显示面积可大可小 , 目前世界 上 最大的液晶电视尺寸已超过 英寸。 8易于 大批量生产 。 9随着工艺的提高 。 成品率还会进 一 步提高 成本也会进一步下降 。 液晶显示器的缺点: 1 视 角较小。 2显示质不算最高。 3响应 速度较慢 对快速移动图像 可能有一些 拖尾 目前正在克服中。 本刊 2 0 0 5年 2月号 一 7月号连载 了 ( 字符 型 L C D显示器原理及显示技 术) , 对 1 6 t 2点阵字符液晶模块的内部 结构 、 引脚排列 、 工作 原理 、 L CD控制 器的指令等已作了详细介绍 读者朋友 可参考。这里主要介绍单片机 C 5 1 程 序对它的驱动 。 要实现对 L c M的高效控制, 必须 按照模块设计方式 建立起相关豹子程 序下面先详细介绍用C 51 设计的各 功能子程 序。 延时 K 1 m s子程序。 1 2 0 0 0 M H z v o id d e la y( u n s ig n e d in t k ) 函数名 为 d e la y 的莲时子函数 定义k 为无符号整型 变 u r l s g n e d i n 1 型变量 f o = O : 1 序号( 以下同) : 1 s b it L CM _ R S =P 3 3 : 2 s b it L C M R W=P 3 4 : 3 s b it L C M E N= P 3 5 : 1 1 4 # d e f in e B u s y 0 x 8 0 5 u n s ig n e d c h a r R e a d S t a t u s L C M ( v o id ) ; 6 u n s i g n e d c h a r c o d e s t r 0 = ” - T h i s is a L CD一 ! IIl : 7 u n s ig n e d c h a r c o d e s t r l = - D e s ig n b y Z X H - ! “ ; 8 u n s i g n e d c h a r c o d e s t r 2 【 】 = “ ; 9 ” 延时 K 1 mS ” ” “t 1 0 v o i d d e la y ( u n s i g n e d i n t k ) 1 1 f , 1 2 u n s ig n e d in t i , j = 1 3 f o r ( _ 0 : l = O : i 一 一 ) 1 0 1 f , 1 0 2 Wr it e C o mma n d L C M( 0 x 0 1 , 1 ) : 1 0 3 Dis p l a y On e Ch a r ( i ,0 , 0 x 2 0 ) ; 1 0 4 D is p I a y L is t C h a r ( i ,0 ,s t r 0 ) ; 1 0 5 D is p I a y L is t C h a r ( i , 1 ,s t r 1 ) : 1 O 6 d e l a y ( 2 0 0 ) ; 1 0 7 I , 1 0 8 d e la y ( 2 8 0 0 ) ; 1 0 9 向右退出显示屏 “ 1 1 0 ” f o r ( i= 0 ; i = O l i一 一 ) 1 3 6 f , , 1 3 7 Wr it e C o mm a n d L C M( 0 x 0 1 , 1 ) : 1 3 8 D i s p la y O n e C h a r ( i , 0 , 0 x 2 0 ) ; 1 3 9 D is p l a y L is t C h a r ( i 。0 , s t r 0 ) ; I I 1 4 O D is p l a y L is t C h a r ( i , 1 , s t r 1 ) : 1 4 1 d e l a y ,( 2 o 0 ) : 1 4 2 1 4 3 ”“ 向左退 出显示屏 “ 1 4 4 “ f o r ( i = 1 | 序号( 以下同) : 1 # in c I u d e 2 # d e f i n e u c h a r u n s ig n e d c h a r 3 # d e f i n e u in t u n s i g n e d i n t 4 s b it L CM_ R S= P 3 3 ; 5 s b i t L CM R W= P 3 4 ; 6 s b it L CM E N- - P 3 5 : 7 # d e f in e Da t a P o r t P 1 8 # d e f i n e Bu s y O x 8 0 9 u c h a r c o d e e x a mp l = 。 F o r a n e x a m p l e 一B y x i a o q l n 。 ;1 0 v o i d D e la y 4 0 O ms ( v o i d ) ; 1 1 v o i d D e la y 5 m s ( v o i d ) ; 1 2 v o i d Wa i t F o r E n a b le ( v o i d ) ; 1 3 v o i d Wr i t e D a t a L C M( u c h a r d a t a W) ; 1 4 v o i d Wr it e Co mma n d L CM( u c h a r CMD, u c h a r A t t r ib c ) ; 1 1 1 5 S7 维普资讯 v o id I n it L c d ( v o i d ) ;| | 、 6 v o id D i s p la y ( u c h a r d d ) : 1 7 v o id Dis p la y On e Ch a r ( u c h a r x u c h a r Y , u c h a r Wd a t a ) ; 1 8 v o i d e P u t s t r( u c h a r x u c h a r y u c h a r c o d e p t r ) ; # 1 9 广 ”“”“ “ “ ”“ v o id ma in ( v o i d ) u c h a r t e mp ; D e l a y 4 0 0 ms 0 ; I n it L c d O ; t emp=3 2; e P u t s t r ( 0 ,0 e x a mp 1 ) D e la y 4 0 0 m s 0 ; D e la y 4 O O m s O ; D e la y 4 0 0 m s 0 ; D e la y 4 0 0 m s 0 ; D e la y 4 0 0 m s 0 ; D e la y 4 0 0 m s 0 ; D e l a y 4 O O ms O ; D e l a y 4 0 0 ms 0 ; w h i le ( 1 ) t e mp &=0 x 7f ; if ( t e m p 3 1 ) l + + - 】 4 8 f o r ( i = 0 ;i l ; i + + ) 1 4 9 D i s p la y On e C h a r ( x + + ,Y , p 】 ) : 5 0 if ( X = = 1 6 ) 5 1 x = 0 : y = 1 ; 5 2 | | t # 5 3 | | s 4 | | 川 5 6 v o id D is p l a y ( u c h a r d d ) uc h ar;: f o r ( i = 0 : i 1 6 : i + + ) D is p l a y O n e C h a r ( i , dd&=0 x7 f ; i f ( d d 3 2 ) d d = 3 2 : “”“ ”“ 1 d d + ) # 6 8 u c h a r t e mp ; 6 9 t e mp &= 0 x 7 f ; # 7 0 t e mp = p o s x & 0 x 0 f ; # 7 1 p o s y &= 0 x 0 1 : # 7 2 if ( p o s y ) t e mp l = 0 x 4 0 ; # 7 3 t e mp l = 0 x 8 0 ; # 7 4 Wr it e C o mma n d L CM ( t e mp 0 ) ; 1 7 5 7 6 , , “ ”“” “ ”“7 7 v o i d D i s p l a y O n e C h a r( u c h a r x u c h a r y u c h a r Wd a t a lJ # 7 8 # 7 9 L o c a t e X Y ( x ,y ) : # 8 0 Wr it e D a t a L C M( Wd a t a ) ; # 8 1 # 8 2 v o id I n it L c d ( v o id ) # 8 4 # 8 5 Wr it e C o mm a n d L C M K O x 3 8 0 1 ; 8 6 D e la y 5 ms 0 ; # 8 7 Wr it e C o mm a n d L C IM( 0 x 3 8 0 ) : # 8 8 D e l a y 5 m s 0 ; # 8 9 Wr it e C o mm a n d L C M( 0 x 3 8 0 ) : fl 9 0 D e l a y 5 ms 0 ;| fg 、 Wr it e C o mm a n d L C tM( O x 3 8 9 2 Wr it e C o mm a n d L C tM( O x O 8 1 ) : # 9 3 Wr it e C o m ma n d L C M( 0 x 0 1 1 ) : 9 4 Wr it e C o m ma n d L C M( 0 x 0 6 , 1 ) : 9 5 Wr it e C o m ma n d L C M ( O x O c , 1 ) : 9 6 # 9 7 “ ”“”“” 9 8 v o i d Wd t e C c:omma ndL CM II u ch a r CID u c h a r A t t r ib c ) 9 9 f , 1 0 0 if ( A t t r i b c ) Wa it F o r E n a b le 0 ; # 1 0 1 L CM RS = 0 ; L CMRW : 0:一n o p 一 ( ) : # 1 0 2 Da t aP or t =CMD; n o p 一 ( ) : # 1 0 3 L CM E N= I :一n o P _ O ; , n o p O ; L C M 一 E N = 0 ; 0 4 , 1 0 5 广 ”“ “ “”“ “ 1 0 6 v o i d Wr it e D a t a L CM ( u c h a r d a t a W) t 0 7 f , 1 0 8 W a it F o r E n a b le 0 ; 1 0 9 L CM RS=I ; L CM RW=0:一n o p 一 ( ) : 1 1 0 Da t a Po r t =da t a W ; 一n o p 一 ( ) : 1 1 1 L CM E N= I Ln o p一( ) :一 n o p O ; L C M 一 E N = 0 : 广“ ” “ “ ” v o id Wa it F o r E n a b le ( v o id ) Da t a Po r t =O x ff; v o id L o c a t e X Y ( c h a r p o s x ,c h a r p o s y ) # 6 7 L C M R S = 0 ; L C M R W= I ;_ n o p 一 ( ) , 1 1 2 , 1 1 3 1 1 4 | | | | | L CM EN=I:一n o p 一 ( ) :一 ,n o p ( ) w h i le ( D a t a P o r t & 0 x 8 0 ) ; L CM EN= 0 ; , , “”“ “ v o i d D e la y 5 ms ( v o id ) u i n t i-5 55 2; w h i le ( i 一1 : 1 1 9 , 1 2 0 1 2 1 “ 2 2 1 2 3 “2 4 2 5 1 2 6 27 , 1 2 8 v o i d D e la y 4 0 0 m s ( v o id ) # 1 3 0 # 1 3 1 u c h a r ; = 5 : # 1 3 2 u i n t j : # 1 3 3 w h ile ( i 一 一 ) 1 3 4 # 1 3 5 j = 7 2 6 9 ; # 1 3 6 w h i le ( j 一 一 ) : # 1 3 7 # 1 3 8 # 1 3 9 编译通过后 ,将生成的 c s 4 5 h e x 文件烧录到 8 9 S 5 1芯片中,将芯片插 入到 L E D 1 6 2字符液晶试验板上 。 连 接好 1 6 t 2字符液晶模组, 试验板上接 通 9 V电源, 可以看到 , 液晶上第一行 显示“ F o r a n e x a mp l e ” , 第二行显示移 动的A S C I I 字符。 我们对程序进行分析。 序号 1 I 程序解释 ,以下同) :包含头文件 RE G5 1 H。 序号 2 : 包含头文件 I N T R I N S H 。 序号 3 、 4 : 数据类型的宏定义。 序号 5 8 : 端13 定义。 序号 9 : 宏定义。 序号 1 0 : 待显示字符串。 序号 1 1 1 9 : 函数声明。 序号 2 O : 程序分隔。 序号 2 1 : 定义函数名为ma i n的主函数。 序号 2 2 : ma in 主函数开始。 序号 2 3 : 定义局部变量。 序号 2 4 : 延时4 0 0 m S , 等电源稳定。 序号 2 5 : 调用 L C M初始化子函数。 序号 2 6 : 局部变量赋初值。 序号 2 7 :第一行及第二行显示一个预定字 符串。 序号 2 8 3 5 : 保留显示内容 3 2 秒。 序号3 6 : 无限循环。 序号 3 7 : 无限循环语句开始。 序号3 8 : 只显示 A S C l l 字符。 序号 3 9 : 屏蔽控制字符。 不予显示。 序号4 0 : 显示 A S C I I 宇符。 序号4 1 : 延时 4 0 0 mS , 便于观察。 序号 4 2 : 无限循环语句结束。 1 2 3 4 5 6 7 8 9 O 1 2 3 4 5 6 7 8 O 心 棚 7 8 9 O 1 2 3 4 5; 肥肥肥 维普资讯 较 园 屯 子 路灯稳压光控器的试制 本文介绍笔者独立设计试制的 自 动稳压光控系统。 该系统由光控电路和 自动稳压电路组成, 经多年运行的实践 证明是性能可靠的, 值得介绍。本文评 述了设计意图、 安装调试和使用等有关 问题。 作者单位的路灯多达上百盏, 功率 总额高达 5 K W 以上 , 且 市 电电压 由于 距变电站较近而高达 2 4 02 5 0伏 。 过 高的电压造成路灯灯泡被烧的事情频 频发生, 换灯泡成了家常便饭。 再者, 手 动控制路灯又是地点分散,不便操作。 因此, 笔者设计安装了一个 自动稳压光 序号4 3 : m a in主函数结束。 序号 4 4: 程序分隔。 序 号 4 5 :显 示 指 定 座 标 的一 串 字 符 ( x = O 1 5 , v = 0 1 ) 子函数, 函数名为e P u t s t r ,定义X 、 Y为无符号字符型变量 , p f r 为指向 c o d e区的无符号字符型指针变量。 序号 4 6: e P u t s t r 子 函数开始。 序号4 7 : 定义 i 、 l 为无符号字符型变量。 序号 4 8 : p t r I 大于 3 1时 , 为 AS Cl l 码 。 进入 w h i le 语句循环, l 累加, 计算出字符串长度。 序号 4 9 : 进入 f o r 语句循环。 序号5 0 : 显示单个字符。 同时 x 轴座标递增。 序号 5 1 : 若X 等于 1 6 , 进入 if 语句。 序号 5 2 : X 赋 0 , Y与 1 按位异或( 取反 ) 。 序号 5 3 : if 语句结束 。 序号 5 4 : f o r 语句结束。 序号 5 5 : e P u t s t r 子 函数结束。 序号 5 6: 程序分 隔。 序号 5 7 : 演示第二行移动字符串子函数, 函 数名为 D i s p la y ,定义 d d为无符号字符型 变量。 序号 5 8: D i s p la y子函数开始。 序号5 9 : 定义 为无符号字符型变量。 序号 6 0 : 进入f o r 语句循环。 序号 6 1 : 显示单个字符。 序号 6 2 : d d的变化范围0 1 2 7 。 序号6 3 : d d的最小值为 3 2 ,这样 d d的变 化范围为 3 2 1 2 7 。 序号6 4 : f o r 语句结束。 序号6 5 : D i s p la y函数结束。 序号 6 6 : 程序分 隔。 控路灯系统。 广西贺州市技术工人学校黄家植 为减轻水电管理员手工操作的劳 动量,笔者设计一个光控路灯装置, 使 其夜幕降临时自动开通路灯, 黎明来临 时自动关闭路灯。 夜间闪电时不会使路 灯出现突发性熄灭。采用 5 5 5时基集 成块作为核心 的光控电路来实现这一 功能。 为了减少因市电电压过高而造成 路灯使用寿命缩短 。浪费资金和人力 。 序号 6 7 :显示光标定位子函数函数名为 L o c a t e X Y , 定义p o s x 、 p o s x y 为字符 型变量。 序号 6 8 : L o c a t e X Y子函数开始。 序号 6 g : 定义t e mp为无符号字符型变量。 序号 7 0 : t e m p的变化范围O 一 1 5 。 序号 7 1 : 屏蔽高 4 位。 序号 7 2 : p o s y的变化范围0 1 。 序号 7 3 : 若 p o s y为 1 ( 显示第二行 ) , 地址 码 + O x 4 0 。 序号7 4 : 指令码为地址码 + 0 x 8 0 。 序号 7 5 : 将指令 t e mp写入 L C M, 忽略忙信 号检测。 序号7 6 : L o c e X Y子函数结束。 序号 7 7 : 程序分隔。 序 号 7 8 :显 示指 定 座 标 的 一 个 字 符 ( x = O 1 5 , y = O 一 1 )子 函数 , 函数 名 为 D is p O n e C h a r ,定义 x 、 Y 、 Wd a t a 为无符号 字符型变量。 序号 7 9 : D i s p On e C h a r 函数开始。 序号 8 O : 调用L o c a t e X Y函数定位显示地址。 序号 8 1 : 将数据 Wd a t a 写入 L C M。 序号 8 2 : D i s p O n e C h a r 函数结束。 序号 8 3 : 程序分隔。 序号 8 4 9 7 : L C M初始化。 序号9 8 : 程序分隔。 序号9 9 1 0 5 : 写命令到 L C M子程序。 序号 1 O 6 : 程序分隔。 序号 1 0 7 1 1 3 : 写数据到 L C M子程序。 序号 1 1 4 : 程序分隔。 序号 1 1 5 1 2 2 : 等待使能。 序号 1 2 3 : 程序分隔。 笔者设计一个稳定电压的装置, 使其具 备不随电源电压波动的稳压性能 , 当电 源 电压在 2 3 02 5 0伏的电压范围内 变化时。 该稳压装置的输出电压变化值 不超过设定的输出电压的0 5 。为了 节约用电。 提高路灯的使用寿命, 务必 使 稳压装 置的输 出电压在 1 5 02 2 0 伏范围内调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论