版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年杭州市西湖区事业编单位人员招聘考试试题及答案详解
- 2026年新疆维吾尔自治区克拉玛依市中小学编制教师招聘考试模拟试题及答案详解
- 2025年黑龙江省双鸭山市中小学编制教师招聘笔试试题及答案详解
- 2026年广西壮族自治区桂林市中小学编制教师招聘笔试参考试题及答案详解
- 2026年盘锦市双台子区事业编单位人员招聘笔试备考试题及答案详解
- 2026年山西省忻州市中小学编制教师招聘考试参考题库及答案详解
- 2026年宿迁市宿城区中小学编制教师招聘考试参考试题及答案详解
- 2025年洛阳市老城区中小学编制教师招聘笔试试题及答案详解
- 2025年安徽省铜陵市中小学编制教师招聘考试试题及答案详解
- 2025年佛山市南海区事业编单位人员招聘考试试题及答案详解
- 甲状腺髓样癌2025年CSCO指南
- 浅谈习惯性违章及对策措施
- 凉茶管理规范制度
- 2026年江西省吉安市辅警考试真题及答案
- 风电项目集电线路监理实施细则
- 工业产品质量安全风险管控清单内容
- 上交所培训课件
- 杭州市钱塘区工业企业安全生产管理指导手册(一)
- GB/T 5783-2025紧固件六角头螺栓全螺纹
- JJG(交通) 187-2023 水泥混凝土搅拌机
- 点读笔采购合同范本
评论
0/150
提交评论