ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:22.40KB ,
资源ID:17824009      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17824009.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(毕业设计单片机液晶显示器多功能显示Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

毕业设计单片机液晶显示器多功能显示Word文档格式.docx

1、3按下KS3可以看到一副图片。第二章 原理介绍3.1汉字显示原理汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5右边为2、4、6根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节直到32B显示完就可以LCD上得到一个完整汉字。跟汉字一样,只不过它的宽和高不再是个定值,而是一个变量,把高先分成8的倍数,然后一行一行扫描,不足的补零。3.3.1 概述DS1302 是DALLAS 公司推出的

2、涓流充电时钟芯片内含有一个实时时钟/日历和31 字节静态RAM 通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线1 RES 复位2 I/O 数据线3 SCLK串行时钟时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mWDS1302 是由DS1202 改进而来增加了以下的特性双电源管脚用于主电源和备份电源供应Vcc1 为可

3、编程涓流充电电源附加七个字节存储器它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域下面将主要的性能指标作一综合􀁺 实时时钟具有能计算2100 年之前的秒分时日日期星期月年的能力还有闰年调整的能力 31 8 位暂存数据存储RAM 串行I/O 口方式使得管脚数量最少 宽范围工作电压2.0 5.5V 工作电流2.0V 时,小于300nA 读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式 8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配 简单3 线接口 与TTL 兼容Vcc=5V 可选工业级温度范围-40 +85 与DS1202 兼容

4、在DS1202 基础上增加的特性对Vcc1 有可选的涓流充电能力双电源管用于主电源和备份电源供应3.3.2 管脚接线X1 X2 32.768KHz 晶振管脚GND 地RST 复位脚I/O 数据输入/输出引脚SCLK 串行时钟Vcc1,Vcc2 电源供电管脚3.3.4 内部寄存器CH: 时钟停止位寄存器2 的第7 位12/24 小时标志CH=0 振荡器工作允许bit7=1,12 小时模式CH=1 振荡器停止bit7=0,24 小时模式WP: 写保护位寄存器2 的第5 位:AM/PM 定义WP=0 寄存器数据能够写入 AP=1 下午模式WP=1 寄存器数据不能写入 AP=0 上午模式TCS: 涓流

5、充电选择 DS: 二极管选择位TCS=1010 使能涓流充电 DS=01 选择一个二极管TCS=其它 禁止涓流充电 DS=10 选择两个二极管DS=00 或11, 即使TCS=1010, 充电功能也被禁止3.3.4 数据寄存器地址80h 秒单元内容为59h82h 分单元内容为59h84h 时单元内容为13h86h 日期单元内容为21h88h 月单元内容为06h8ch 年单元内容为00h第三章 程序#include nokia_5110.h bmp_pixel.hds1302.hunsigned char gettimebuf7;unsigned char settimebuf7;unsigne

6、d char time1=am : : ;unsigned char date=20 - - sbit KS1 = P00;sbit KS2 = P01; sbit KS3 = P37;/*#define delay_time 25767unsigned char t4;unsigned char x2;void delay(unsigned int x) unsigned int y,z; for(y=0;y0;z-);void shijian(void)ds1302int(0x10,0x10,0x5,0x15,0x49,0x01); LCD_init(); LCD_clear(); whi

7、le(1) gettimebuf0=read_1302 (0x81); time16=(gettimebuf0)/16+48; time17=(gettimebuf0)%16+48; delay(50); gettimebuf1=read_1302 (0x83); time13=(gettimebuf1)/16+48; time14=(gettimebuf1)%16+48; gettimebuf2=read_1302 (0x85); time10=(gettimebuf2)/16+48; time11=(gettimebuf2)%16+48; LCD_write_english_string(

8、0,1,time1+0); delay(50); LCD_write_english_string(6,1,time1+1); gettimebuf3=read_1302 (0x87); date8=(gettimebuf3)/16+48; date9=(gettimebuf3)%16+48; gettimebuf4=read_1302 (0x89); date5=(gettimebuf4)/16+48; date6=(gettimebuf4)%16+48; gettimebuf5=read_1302 (0x8d); date2=(gettimebuf5)/16+48; date3=(gett

9、imebuf5)%16+48; LCD_write_english_string(0,0,date+0); delay(50); LCD_write_english_string(6,0,date+1); void hanzi(void) LCD_write_chinese_string(0,2,12,3,0,1); LCD_write_chinese_string(1,4,12,6,3,2); chinese_string(0, 0, 30000);void main(void) unsigned int i; /初始化液晶 BELL=0; LCD_LED=1; while(1) P0=0x

10、ff;KS3=1; KS1=0; i=P0; switch(i) case 0xfa:delay(100);if(i=0xfa)LCD_clear();hanzi();break; case 0xf6:if(i=0xf6)LCD_clear();shijian(); case 0xee:if(i=0xee)LCD_clear();LCD_draw_bmp_pixel(0,0,bmp,84,48); default:break; delay(100); english_6x8_pixel.hwrite_chinese_string_pixel.hmove_chinese_string_pixel

11、.h/*-LCD_init : 3310LCD初始化编写日期 :2009-5-1最后修改日期 :-*/void delay_1us(void) /1us延时函数 for(i=0;i1000;i+); void delay_1ms(void) /1ms延时函数 for (i=0;1140;void delay_nms(unsigned int n) /N ms延时函数 unsigned int i=0;n;i+) delay_1ms();void LCD_init(void) / 产生一个让LCD复位的低电平脉冲 LCD_RST = 0; delay_1us(); LCD_RST = 1; /

12、关闭LCD LCD_CE = 0; / 使能LCD LCD_CE = 1; LCD_write_byte(0x21, 0); / 使用扩展命令设置LCD模式 LCD_write_byte(0xc8, 0); / 设置偏置电压 LCD_write_byte(0x06, 0); / 温度校正 LCD_write_byte(0x13, 0); / 1:48 LCD_write_byte(0x20, 0); / 使用基本命令 / 清屏 LCD_write_byte(0x0c, 0); / 设定显示模式,正常显示 / 关闭LCDLCD_clear : LCD清屏函数void LCD_clear(void

13、) LCD_write_byte(0x80, 0); i504; i+) LCD_write_byte(0, 1);LCD_set_XY : 设置LCD坐标函数输入参数:X :083 Y :05void LCD_set_XY(unsigned char X, unsigned char Y) LCD_write_byte(0x40 | Y, 0); / column LCD_write_byte(0x80 | X, 0); / rowLCD_write_char : 显示英文字符c :显示的字符;void LCD_write_char(unsigned char c) unsigned cha

14、r line; c -= 32; for (line=0; line6; line+) LCD_write_byte(font6x8cline, 1);LCD_write_english_String : 英文字符串显示函数*s :英文字符串指针; X、Y : 显示字符串的位置,x 0-83 ,y 0-52009-5-1 void LCD_write_english_string(unsigned char X,unsigned char Y,char *s) LCD_set_XY(X,Y); while (*s) LCD_write_char(*s); s+;LCD_write_chines

15、e_string: 在LCD上显示汉字X、Y :显示汉字的起始X、Y坐标; ch_with :汉字点阵的宽度 num :显示汉字的个数; line :汉字点阵数组中的起始行数 row :汉字显示的行间距2009-5-1 测试: LCD_write_chi(0,0,12,7,0,0); LCD_write_chi(0,2,12,7,0,0); LCD_write_chi(0,4,12,7,0,0);-*/ void LCD_write_chinese_string(unsigned char X, unsigned char Y, unsigned char ch_with,unsigned c

16、har num, unsigned char line,unsigned char row) unsigned char i,n; /设置初始位置num;) for (n=0; nch_with*2; n+) /写一个汉字 if (n=ch_with) /写汉字的下半部分 if (i=0) LCD_set_XY(X,Y+1); else LCD_set_XY(X+(ch_with+row)*i),Y+1); LCD_write_byte(write_chineseline+in,1); i+; LCD_set_XY(X+(ch_with+row)*i),Y);LCD_move_chinese_

17、string: 汉字移动 T :移动速度;2009-5-2void chinese_string (unsigned char X, unsigned char Y, unsigned char T) unsigned char i,n,j=0; unsigned char buffer_h84=0; unsigned char buffer_l84=0;130; buffer_h83 = move_chinese_stringi/12j; buffer_l83 = move_chinese_stringi/12j+12; j+; if (j=12) j=0; for (n=0;83; n+)

18、 buffer_hn=buffer_hn+1; buffer_ln=buffer_ln+1; LCD_write_byte(buffer_hn,1); LCD_set_XY(X,Y+1); LCD_write_byte(buffer_ln,1); delay_nms(T);LCD_draw_map : 位图绘制函数位图绘制的起始X、Y坐标; *map :位图点阵数据; Pix_x :位图像素(长) Pix_y :位图像素(宽)void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map, unsigned

19、char Pix_x,unsigned char Pix_y) unsigned int i,n; unsigned char row; if (Pix_y%8=0) row=Pix_y/8; /计算位图所占行数 else row=Pix_y/8+1;nrow;n+) LCD_set_XY(X,Y);Pix_x; LCD_write_byte(mapi+n*Pix_x, 1); Y+; /换行LCD_write_byte : 使用SPI接口写数据到LCDdata :写入的数据; command :写数据/命令选择;void LCD_write_byte(unsigned char dat, unsigned char command) unsigned char i; /PORTB &= LCD_CE ; if (command = 0) / PORTB

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1