



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
12232c液晶显示和8051单片机的接口c语言程序以下为彭总编写的c语言程序,我用过了!赫赫!在atmega128中写通讯协议的头四位数字时好像不能分开一位一位的送,而是要把它当作一个16进制的整体移位写入!程序中的comm为写0表示写12232c的指令,dat为1表示写数据。cs,sclk,std分别为片选、时钟、及数据io口,可用sbit指令定义。$ k& Lo* L$ L+ , S/*lcd初始化程序*/3 P+ ) _: M2 I5 Pvoid init_lcd (void) ) 2 U, U x5 Z E! * q9 i: u# I6 b4 J( l/ wr_lcd (comm,0x30); /*30-基本指令集动作,8位控制接口*/ 7 I1 F! k5 n& 2 p) z$ y( a! Twr_lcd (comm,0x01); /*清屏,地址指针指向00H*/6 _! ) K: $ 0 E7 P: |1 delay (80);! a: u5 + P swr_lcd (comm,0x06); /*光标的移动方向,光标右移*/% _ V4 G- - d: f5 , Lwr_lcd (comm,0x0c); /*开显示,关光标*/ _/ p b9 x5 Q; b1 3 Y _. 5 a2 zo# e0 ) P: m* h/*LCD显示任意量程序*/1 o( Q* J2 b5 t, Z5 b! - a! * Q! hvoid eng_disp (uchar x,uchar y,uchar code *eng)( B: u. s; q8 2 $ f- r$ |& d8 |% awuchar i,j;3 K7 A- l8 1 W+ A! W0 Rwr_lcd (comm,0x30);* e8 _+ m. / R$ k$ : c9 u4 U Qzwr_lcd (comm,0x80); /*第一行的起始地址*/% l# A4 w( a, W2 u7 A( G# G( D1 c! bfor(j=0;jy;j+)8 l- x9 W; C3 a0 |8 L3 J: H/ W% , ; f! p: P+ qfor (i=0;ix;i+)3 s) O5 g3 p# _5 H/ a4 Xwr_lcd (dat,engj*16+i); 3 P! w& L7 h h2 Y! Bif(y=2)&(j=1)0 x j0 |6 D* zwr_lcd (comm,0x90); J- W# Z4 t) D2 A8 M) & I Qt8 Rfor (i=0;i8;i+)6 Q; 1 s: O! - ) n4 lwr_lcd (dat,engj*16+i);/ T* R( w5 D: O. U5 P/ T X; |6 K2 M9 e; r$ M. v- e+ T: G0 K- z* r5 _2 x1 G y5 f/*LCD显示中文(欢迎界面)程序*/8 H- i$ e/ v7 n, g+ ?6 _void chn_disp (uchar code *chn) /*lcd显示中文*/( O! R* x5 p$ Y7 Y6 s) l$ F( L6 , Ruchar i,j;, P4 Y1 n3 $ 5 s. B) A5 zwr_lcd (comm,0x30);6 |4 GE9 , Q) o- K% wr_lcd (comm,0x80); /*第一行的起始地址*/ Q/ z1 N- t. N! 9 A* y9 T- wj=0;, I, v0 i) h; B for (i=0;i16;i+)- Q# x* M& t) N: Y5 w% zwr_lcd (dat,chnj*16+i); p: R6 B+ N% - O8 Swr_lcd (comm,0x90); /第二行的起始地址% |3 + z0 W2 hWj=1;4 v( l B: i. qx# wfor (i=0;i16;i+) e/ $ x$ g6 Jk3 wr_lcd (dat,chnj*16+i);5 V9 ?. |/ g/ R& k% Qq. U6 G1 I/*LCD清内存程序*/0 u% T+ K% n$ / o) v/ M9 Rvoid clrram (void) /lcd清内存1 Y0 |+ w: U q/ l0 d& A3 Pj1 ( B& x3 ?wr_lcd (comm,0x30);# j8 O* 3 C8 o, Nwr_lcd (comm,0x01);0 p0 8 q, A4 T+ v4 mdelay (120);/ K) W( n) 1 f- D2 _. R5 f6 l! o% K: 1 ! m/*LCD写数据或写命令子程序*/5 i5 ( m5 f& e$ m* t. D9 Jvoid wr_lcd (uchar dat_comm,uchar content) /*lcd写数据*/ q- N$ W5 r$ X% d* q8 a# C! kuchar a,i,j;( E& x0 r3 Q2 vdelay (40);2 2 y, n, v$ I6 R# k5 Za=content; /a为指令代码或者数据+ i2 f5 W4 W0 g% ics=1; /置位cs开始传输数据, u1 I/ f1 Z( h( o/ k& s asclk=0; /拉低sclk准备给上升沿,发送数据( C0 H: v4 G1 2 Estd=1; /置1- 4 I T$ V8 W5 for(i=0;i5;i+) /*先传输起始字节,首先5个1,sclk的上升沿传输启动*/. W0 4 . / 2 o n9 I. v# U& l. a, c. ?* sclk=1; ?6 x0 Z# Z& x sclk=0;- N/ B# a( C1 g2 n. S) l* i0 m/ H9 q5 p% V# + P std=0; /RW0;& e; J: / s+ e7 F4 |7 d0 D. osclk=1;5 _* o9 _+ X5 Ysclk=0;! L, X 6 U0 P7 nif(dat_comm)p; T6 F9 3 4 I# U7 P0 v, A std=1; /如果是数据则RS为1& f! b8 Yu$ e! h9 |3 z- x: H% J6 s$ Ielse8 * K9 R# t, p6 z O, E vstd=0; /如果是控制字则RS为0, z7 c/ P, S% K4 h0 V( s& tsclk=1; /给上升沿,启动传输* B S0 ( H8 T/ k9 _sclk=0; /拉低sclk3 L: D: U9 N . l2 a0 gC! Z# zstd=0; /第8位为0,起始字节传输完毕; cz1 G8 L7 |0 M. x8 Fsclk=1; /给上升沿,启动传输: H0 q0 i& v9 j- - A( jsclk=0;Z* J0 dP g u! B9 E: n: Lfor(j=0;j2;j+) /一个字节分两次发送,第一次发送高四位,后面补4个0,第二次发送低4位,后面同样补4个00 c) y) v, Y: p5 6 O U; g; ao& o, P C2 z for(i=0;i4;i+) /先传输高4位# i. q! b7 A( H c7 x5 G 8 I% A1 k9 u9 U5 W1 ; o a=a1; /数据循环左移一位,低位补0; U9 r+ k# a( F4 d3 B) C0 s; X2 G2 E std=CY; /把进位进行传输 / ( e% N! O+ A! _ sclk=1;/ C5 i6 + n9 ) U2 C sclk=0;: l. w1 b$ C$ g ; n9 I& n% k7 * m ?% Y std=0;) u4 F, ! E. P: X( n: J2 h1 W for(i=0;i4;i+) /后4位数据为4个01 N* L* s+ Y& N $ J& S1 N& f) d1 b G) p6 p$ u$ u sclk=1;. Y: K- r4 f) g* n o lX# d sclk=0;* c: Y, f$ L$ u4 M% j0 l/ F * z; n1 s: J, a7 ?% 8 9 YY; j9 k% CB ; T9 b n8 + K5 j/ U/ 2 /*LCD延时程序*/ fG$ : 9 void delay (uint us) /lcd延时时间0 u; I j+ k6 S& Z, fP* k- p* y* o1 J4 E% while(us-); M# B! y- L) Z7 p1 I: m1 p8 X) S( Z6 : l1 c7 U2 x9 M5 G; Avoid delay1 (uint ms)4 E R3 R. z9 R, p) h. k ? Y b& _! j nuint i,j;3 - m a8 |7 d9 F+ e% pfor(i=0;ims;i+)# 8 p8 A& l( W$ u4 p7 z0 ffor(j=0;j15;j+) h- o9 P r/ N. ; a2 ddelay(1);2 I: ?; a: d: Q- _ r$ K q( V N4 w7 L) Xp/*显示数据位子程序*/1 P! p- 9 ?+ a: qvoid math_disp(uint math): G3 2 C c) A/ y/ Z uint k;3 S+ Z9 T5 G& G T7 f# E8 j+ uchar i;7 X, 7 z% s uchar j;9 b7 g W8 o2 z, 7 W* v k=math;7 G2 H, . u N% ) B dispbuf0=k/10000; /得到万位数 x% R% g% 4 s4 _2 m6 U4 X7 g; L k=k%10000;0 ) u7 7 x; ? dispbuf1=k/1000; /得到千位数F3 o! u2 j, q7 8 c2 T6 X k=k%1000; l: Q7 f9 k3 P& N; J, V dispbuf2=k/100; /得到百位数$ 2 l/ v+ U; M: w k=k%100;7 V& a5 l! C; E/ n1 o, k dispbuf3=k/10; /得到十位数 W8 - 0 |) NT1 r& 0 u: e0 dispbuf4=k%10; /得到个位数) p: n0 |7 Z+ a9 % _ wr_lcd (comm,0x90); /给第二行的起始地址以让数据在第二行显示,/ q9 o& c: B B: ? for(i=0;i5;i+)! Z5 X* B( z! m9 H4 N# S c$
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子调温电炉培训
- 物业工程安全培训
- 2026届四川省绵阳地区化学九上期中学业水平测试模拟试题含解析
- 2026届北京市丰台区名校九年级化学第一学期期中统考试题含解析
- 传统木工技术概述
- 2026届重庆市南川区部分学校化学九上期末达标检测模拟试题含解析
- 2026届浙江省部分地区化学九年级第一学期期中学业质量监测模拟试题含解析
- 四川省成都市温江区第二区2026届化学九上期中质量检测模拟试题含解析
- 地生教学工作总结
- 湖北省武汉市江汉区2026届九上化学期中复习检测模拟试题含解析
- 《车用氢气传感器》
- 物业员工安全知识教育培训
- 办公楼装饰装修工程施工组织设计方案
- 《机械制图(多学时)》中职全套教学课件
- 2024年公司内部审计制度例文(四篇)
- 江苏省江阴市河塘中学2024-2025学年七年级上学期10月阶级段性练习语文试题
- 小学英语词汇量小学英语词汇大全(约1000词)(按字母顺序)修改版
- 2024年道路交通(驾驶员交通法规及安全)知识考试题库与答案
- 2024年全国职业院校技能大赛中职(数字产品检测与维护赛项)考试题库(含答案)
- 【乡村旅游探究的文献综述4200字】
- 2025年上半年教师资格考试高中历史学科知识与教学能力试卷与参考答案
评论
0/150
提交评论