版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/* *版权信息: 深圳天微技术部 *文件名: TM1721 *当前版本: 1.0 *单片机型号: AT89S52 *开发环境: Keil uVision3 *晶震频率: 12M *作者: 李建文 *完成日期: 2008-6-19 *功能: 按键控制LCD屏显示0-9;以及全屏显示和全灭。*/#include#include#define nop _nop_();#define uchar unsigned char#define uint unsigned int#define void delay_ms(uchar cyc);sbit stb =P10;/定义片选通讯口sbit clk =
2、P11;/定义时钟通讯口sbit dio =P12;/定义数据输入/输出通讯口bdata unsigned char y=0;/定义可以位寻址全局变量ysbit y7 =y7;unsigned char m,d,e,i;unsigned char w4=0xff,0xff;/-写数据给IC-void write(uchar wr_data) uchar i; stb =0; /给有效的片选信号(片选信号是低电平有效) nop; nop; for(i=0;i= 1;/移位数据,低位在前! nop; dio = CY; nop; nop; /delay_ms(200); clk =1;/delay
3、_ms(200); nop; /-读按键数据-unsigned char read() stb = 0; /给有效的片选信号(片选信号是低电平有效) dio = 1; /这里必须置高,因为没有按键按下时,键值默认为00H,此时为了与键值有区别 /unsigned char d; for(d=0;d1);return(y);void delay_ms(uchar cyc)/当将=1的时候,延时1msuchar jj;for(jj=1;jj=cyc;jj+)nop;/-显示子程序-void xianshi(unsigned char p) unsigned char h; stb = 1; clk
4、 = 1; dio = 1; write(0x0c);/显示模式设置, stb = 1; write(0x40);/写数据到显示寄存器,采用地址自动加一 stb = 1; write(0xc0);/显示寄存器的00H单元开始 for(h=0;h16;h+) write(p);/给显示寄存器送数据, stb=1; write(0x92);/显示控制参数,点亮数码屏幕,亮度可以通过改变低三位调节/-判按键子程序-void panjian(unsigned char k4) if(k0=0x02)m=0x3f; /当KS0与SEG29按键按下时候,数码管显示数字0 if(k0=0x04)m=0x06
5、; /当KS0与SEG30按键按下时候,数码管显示数字1 if(k0=0x20)m=0x5b; /当KS1与SEG29按键按下时候,数码管显示数字2。 if(k0=0x40)m=0x4f; /当KS1与SEG30按键按下时候,数码管显示数字3。 if(k1=0x02)m=0x66; /当KS2与SEG29按键按下时候,数码管显示数字4。 if(k1=0x04)m=0x6d; /当KS2与SEG30按键按下时候,数码管显示数字5。 if(k1=0x20)m=0x7d; /当KS3与SEG29按键按下时候,数码管显示数字6。 if(k1=0x40)m=0x07; /当KS3与SEG30按键按下时候
6、,数码管显示数字7。 if(k2=0x02)m=0x7f; /当KS4与SEG29按键按下时候,数码管显示数字8。 if(k2=0x04)m=0x6f; /当KS4与SEG30按键按下时候,数码管显示数字9 if(k2=0x20)m=0xff; /当KS5与SEG29按键按下时候,全屏显示。 if(k2=0x40)m=0x00; /当KS5与SEG30按键按下时候,全灭。 /return(m);/-主函数-void main() P0=0xff; P1=0xff; P2=0xff; P3=0xff;/初始化单片机I/O口 m = 0x00; while(1)/循环读按键 stb = 1; di
7、o = 1; clk = 1; write(0x0c);/模式设置 stb = 1; write(0x42);/送读按键命令(42H), for(e=0;e3;e+) we=read();/读8位按键数据, panjian(w);/判断按键值。 xianshi(m);/根据按键值,给显示寄存器送相应的显示数据 -文件:TM系列IC的库包含信息编写:BLACK日期:09.07.21 16:11-IC型号:TM1721引脚分布: IC供电: PIN1-VDD PIN5-GND 数据传输: PIN2-DIO PIN3-CLK PIN4-STB 驱动公共端:PIN48PIN45-COM0COM3 LC
8、D驱动口: PIN44-SEG0 PIN43-SEG1 PIN42-空 PIN41PIN12-SEG2SEG31 键扫列线: PIN6PIN11-KS0KS5 (复用) 键扫行线: PIN15PIN12-KEY0KEY3 (复用) 拨码开关: PIN19PIN16-SW0SW3 (复用) PWM输出: PIN23PIN20-PWM0PWM3 (复用)- TM1721驱动的流程-step1、工作模式设置(放置在程序的初始化程序中,设定完成后程序中不可更改)step2、显示 1)显示模式指令(固定地址or地址自动加一) 2)case1:固定地址模式 执行固定地址模式显示函数 写入显示地址 写入显示
9、数据 写入显示地址 写入显示数据 3)case2:地址自动加一显示模式 执行地址自动加一模式显示函数 写入要显示字符串的起始地址 写入显示数据step3、打开显示控制命令step4、PWM输出控制 1)输出模式指令(固定地址or地址自动加一) 2)case1:固定地址模式 执行固定地址模式显示函数 写入显示地址 写入显示数据 写入显示地址 写入显示数据 3)case2:地址自动加一显示模式 执行地址自动加一模式显示函数 写入要显示字符串的起始地址 step5、读取按键 1)送入读取按键指令 2)一个时钟周期为一个段检测数据端口的值,送入单片机存储器 3)判断键值,送入传递变量step6、结束一
10、个周期-驱动包含函数:-/*函数:写一字节函数参数:dat-写入的一字节数据返回值:无*/void TM1721_Write_Byte(unsigned char dat) unsigned char i; TM1721_Delay_ms(2); /用于片选信号的延时 TM1721_STB=0; /有效的片选信号 for(i=0;i=1; TM1721_Delay_ms(2); /用于片选信号的延时/*函数:地址自动加一显示函数参数:addr-显示字符串的起始地址 *dat-显示数据的数组指针 count-需要显示的数据的个数返回值:无*/void TM1721_Write_String(un
11、signed char addr,unsigned char *dat,unsigned char count) unsigned char i; TM1721_Write_Byte(DISP_WRITE); TM1721_STB=1; TM1721_Write_Byte(0xc0+addr); /显示寄存器的00H单元开始 for(i=0;icount;i+) TM1721_Write_Byte(*dat); /给显示寄存器送数据, dat+; TM1721_STB=1;/*函数:PWM输出控制函数参数:addr-选择哪一路PWM输出:0、1、2、3 dat-输出的PWM的数据返回值:无*/
12、 void TM1721_Write_PWM(unsigned char addr,unsigned char dat) TM1721_STB=1; TM1721_Write_Byte(PWM_WRITE); /PWM设定、采用固定地址 TM1721_STB=1; TM1721_Write_Byte(0xc0+addr); /PWM控制地址设定 TM1721_Write_Byte(dat); TM1721_STB=1; /*函数:按键扫描位读取函数参数:无返回值:read_var返回值类型:unsigned char*/unsigned char TM1721_Read_Key(void) u
13、nsigned char i,read_bit,read_var; TM1721_Delay_ms(2); /用于片选信号的延时 TM1721_STB=0; TM1721_DIO=1; /初始化数据端口 for(i=0;i8;i+) TM1721_CLK=0; if(TM1721_DIO=1) read_bit=1; else read_bit=0; TM1721_CLK=1; /上升沿 read_var=read_var|(read_biti); return(read_var); /传递返回值/*函数:按键键值的判断函数参数:无返回值:无*/void TM1721_Key_Scan(voi
14、d) unsigned char KEY_VAR3; /存放按键键值数组,最多存放3字节的数据,键值缓冲区 unsigned char i; TM1721_STB=1; TM1721_Write_Byte(KEY_READ); /读按键指令、地址自动加一 TM1721_Delay_ms(2); /延时 for(i=0;i3;i+) KEY_VAR0=TM1721_Read_Key(); /读取按键键值 TM1721_Delay_ms(2); /每读完一字节数据之后,一个小的延时、重要! switch(KEY_VAR0&0x0f) /SHX500键盘电路只是KS0有效 case 0x01: /K
15、EY0 ret_var=0x01; break; case 0x02: /KEY1 ret_var=0x02; break; case 0x04: /KEY2 ret_var=0x04; break; case 0x08: /KEY3 ret_var=0x08; break; default: ret_var=0x00; break; /*函数:TM1721的初始化函数参数:无返回值:无*/void TM1721_Init(void) TM1721_Delay_ms(2); /等待电压稳定 TM1721_STB=1; /端口配置初始化 TM1721_CLK=1; TM1721_DIO=1; TM1721_Write_Byte(MODE_SET); /显示模式 TM1721_STB=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省自贡市高新区六校2026年中考临门一脚语文试题试卷含解析
- 四川省成都市名校2025-2026学年初三下学期开学考试语文试题理试题含解析
- 浙江省台州市温岭市箬横镇东浦中学2026届初三下学期开学考试(2月)英语试题含解析
- 陕西省榆林市绥德重点中学2025-2026学年中考第七次适应性训练英语试题含解析
- 浙江省嘉兴市海宁市2026届初三下学期第二次模拟考试语文试题试卷含解析
- 土地联营合同
- 2026年邮寄送达合同(1篇)
- 有创动脉血压监测实操指南
- 《药物分析》药物制剂检验试卷及答案
- 2026年通风空调系统综合效能调试总结报告
- 军事训练情况登记表
- 2025年山东地区光明电力服务公司招聘笔试参考题库附带答案详解
- 2024年郑州财税金融职业学院单招职业适应性考试题库附答案详解
- 新入职员工信息安全培训
- DB3206∕T 1018-2021 医疗保险 医疗服务大数据智慧结算系统管理规范
- 食材供应知识培训内容课件
- 维修家电基础知识培训课件
- 自动化仪表检修手册
- 2025杭州市萧山区事业单位编外招聘73人考试参考试题及答案解析
- 实施指南(2025)《DL-T 664-2016带电设备红外诊断应用规范》
- 企业安全生产管理台账完整范本
评论
0/150
提交评论