[宝典]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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。