首页 [宝典]tm1620_c1q驱动代码

[宝典]tm1620_c1q驱动代码

举报
开通vip

[宝典]tm1620_c1q驱动代码[宝典]tm1620_c1q驱动代码 tm1620_C1q驱动代码 /* 02. *版权信息: 深圳天微技术部 03. *文件名: TM1620 04. *当前版本: 1.0 05. *单片机型号: AT89S52 06. *开发环境: Keil uVision3 07. *晶震频率: 12M 08. *作者: 李建文 09. *完成日期: 2009-05-05 10. 功能: 驱动共阴LED数码屏做时钟显示,可由按键控制时钟暂停,开始,停止以及显示0-9数字 11.*/ 12.#include ...

[宝典]tm1620_c1q驱动代码
[宝典]tm1620_c1q驱动代码 tm1620_C1q驱动代码 /* 02. *版权信息: 深圳天微技术部 03. *文件名: TM1620 04. *当前版本: 1.0 05. *单片机型号: AT89S52 06. *开发环境: Keil uVision3 07. *晶震频率: 12M 08. *作者: 李建文 09. *完成日期: 2009-05-05 10. 功能: 驱动共阴LED数码屏做时钟显示,可由按键控制时钟暂停,开始,停止以及显示0-9数字 11.*/ 12.#include 13.#include 14.#define nop _nop_(); 15.#define uchar unsigned char 16.#define uint unsigned int 17.sbit stb =P1^0; //定义片选通讯口 18.sbit clk =P1^1; //定义时钟通讯口 19.sbit dio =P1^3; //定义数据输入/输出通讯口 20.bdata uchar y=0;//定义可以位寻址全局变量y 21.sbit y7 =y^7; 22.uchar cir_LED[6]={ 0x40,0x20,0x02,0x04,0x10,0x08};//数码屏圆圈做动态显示 23.uchar show[12] = { 0x00,0x00,0x3f,0x00,0x38,0x00,0x38,0x00,0x7b,0x00,0x76};/ /初始化显示“HELLO”字符代码 24. 25.uchar show_LED2[14];//显示寄存器数组 26.uchar TIME_seconds,seconds_2,sub_1,sub_2,shi_1,shi_2; // 时间寄存器,依次从秒个位至小时十位 27.uchar TIME_count; //定时中断控制 28.uchar key_FLAG1;//按键标志位 29.uchar key_LED; //按键单独显示赋值寄存器 30.uchar count6=0; 31.uchar show_2=0x01; 32./********************************* 33.功能: TM1620写数据 34.**********************************/ 35.void write(uchar wr_data) 36.{ 37. uchar i; 38. stb =0; //给有效的片选信号(片选信号是低电平有效) 39. nop; 40. nop; 41. for(i=0;i<8;i++)//开始传送8位数据,每循环一次传送一位数据 42. { 43. clk =0; 44. nop; 45. nop; 46. wr_data >>= 1;//移位数据,低位在前! 47. nop; 48. dio = CY; 49. nop; 50. nop; 51. clk =1; 52. nop; 53. } 54.} 55. 56./********************************* 57. TM1620控制指令 58.功能: 驱动LED屏做相应的显示 59.**********************************/ 60.void xianshi(uchar show_led[14]) 61.{ 62. uchar h; 63. stb = 1; 64. clk = 1; 65. dio = 1; 66. write(0x02);//显示模式设置,设置为6个GRID,8个SEG 67. stb = 1; 68. write(0x40);//写数据到显示寄存器,采用地址自动加一 69. stb = 1; 70. write(0xc0);//显示寄存器的00H单元开始 71. for(h=0;h<12;h++) 72. { 73. write(show_led[h]);//给显示寄存器送数据, 74. } 75. stb=1; 76. write(0x8b);//显示控制参数,点亮数码屏幕,亮度可以通过改变低三位调节 77.} 78./********************************** 79. 定时中断函数入口 80.功能: 每50MS中断一次 81.**********************************/ 82.void time0(void) interrupt 1 using 2 83.{ 84. TH0=0x3c; 85. TL0=0xb0; 86. TIME_count++; 87. if(TIME_count==20) 88. { 89. TIME_count = 0; 90. TIME_seconds++; // 秒寄存器加1 91. count6 +=1; 92. show[2] = (show[2]^0x10);//数码屏幕冒号驱动位 93. } 94.} 95./********************************* 96. 时钟函数 97.功能: 处理时钟显示 98.**********************************/ 99.void TIME_show() 100.{ 101. uchar CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 102. if(count6 == 6) 103. { 104. count6 = 0; 105. } 106. show[8] = cir_LED[count6]; //数码屏圆圈驱动位 107. //show[1] = 0x10; 108. //show[2] = 0x01; 109. show[0] = CODE[TIME_seconds];// 数码屏上最后一个“8” 字,依次下去 110. show[2] = CODE[seconds_2]; //数码屏倒数第二个“8”字, 111. show[4] = CODE[sub_1]; 112. show[6] = CODE[sub_2]; 113. if(TIME_seconds == 10) //对时间数据进行处理,以免溢出。 114. { 115. TIME_seconds = 0; 116. seconds_2+=1; 117. } 118. if(seconds_2 == 6) 119. { 120. seconds_2 = 0; 121. sub_1 +=1; 122. } 123. if(sub_1 == 10) 124. { 125. sub_1 = 0; 126. sub_2 +=1; 127. } 128. if(sub_2 == 6) 129. { 130. sub_2 = 0; //时钟每60分自动清0 131. sub_2 = 0; 132. sub_1 = 0; 133. seconds_2 = 0; 134. TIME_seconds = 0; 135. } 136.} 137./********************************* 138. 延时函数 139.功能: 1ms延时 140.**********************************/ 141.void delay_ms(uchar cyc) 142.{ 143. //当将=1的时候,延时1ms 144. uchar ii,jj; 145. for(jj=1;jj<=cyc;jj++) 146. { 147. for(ii=0;ii<200;ii++) 148. { 149. nop; 150. } 151. } 152.} 153./********************************* 154. 主函数 155.**********************************/ 156.void main() 157.{ 158. P0=0xff; 159. P1=0xff; 160. P2=0xff; 161. P3=0xff;//初始化单片机I/O口 162. TMOD=0x01; //定时器设置 163. TH0=0x3c; 164. TL0=0xb0; 165. IE=0x82; 166. TF0=1; 167. xianshi(show);//初始化显示“HELLO”字符 168. _delay_ms(230); 169. _delay_ms(230); 170. _delay_ms(230); 171. _delay_ms(230); 172. _delay_ms(230); //共延时1s 173. TR0 = 1; 174. show[2] = 0x01; 175. while(1)//循环 176. { 177. stb = 1; 178. dio = 1; 179. clk = 1; 180. TIME_show(); //控制做时钟显示 181. xianshi(show);//根据按键值,给显示寄存器送相应的显示 数据 182. } 183.} 184.
本文档为【[宝典]tm1620_c1q驱动代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_337177
暂无简介~
格式:doc
大小:21KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-09-17
浏览量:27