久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6232|回復(fù): 1
收起左側(cè)

利用NOKIA 3310 LCD 顯示屏做個(gè)電子時(shí)鐘

[復(fù)制鏈接]
ID:85192 發(fā)表于 2015-7-10 02:10 | 顯示全部樓層 |閱讀模式

做了一個(gè)3310顯示的時(shí)鐘,只是用到定時(shí)器,簡(jiǎn)單一點(diǎn)。



  1. //E:\DPJ-C\3310-16\3310_CLOCK\3310_CLOCK.C  2012 01 05

  2. #include<reg51.h>
  3. #include<intrins.h>
  4. #include"tab.h"
  5. #include"tab1.h"
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. sbit SCLK=P1^0;
  9. sbit SDIN=P1^1;
  10. sbit DC=P1^2;
  11. sbit SCE=P1^3;
  12. sbit RES=P1^4;
  13. sbit key_s_p=P3^0;
  14. sbit key_clear=P3^1;
  15. sbit key_hh=P3^2;
  16. sbit key_mm=P3^3;
  17. sbit key_ss=P3^4;

  18. uchar time,time1,num,hh,mm,ss,h_1,h_0,m_1,m_0,s_1,s_0;
  19. bit flag,Lkey;

  20. void delay(uint ms);
  21. void keyscan();
  22. void TimerINTinit();
  23. void write_dat(uchar dat);
  24. void write_com(dat);
  25. void set_add(uchar x,uchar y);
  26. void clear_scr();
  27. void disp_HH_MM(uchar x,uchar y,uchar *p );
  28. void disp_SS(uchar x,uchar y,uchar *s);
  29. void init_3310();


  30. void TimerINTinit()
  31. {
  32. TMOD=0x11;
  33. EA=1;
  34. ET0=1;
  35. ET1=1;
  36. TH0=(65536-50000)/256;
  37. TL0=(65536-50000)%256;
  38. TH1=(65536-50000)/256;
  39. TL1=(65536-50000)%256;
  40. }

  41. void keyscan()
  42. {
  43. while(!key_s_p)
  44. {
  45.   delay(10);
  46.   if(key_s_p)
  47.   TR0=!TR0;
  48. }
  49. while(!key_clear)         //清零鍵
  50. {
  51.   delay(10);
  52.   if(key_clear)
  53.   {
  54.    TR0=0;
  55.    hh=0;
  56.    mm=0;
  57.    ss=0;
  58.   }
  59. }
  60. while(!key_hh)   //調(diào)時(shí)鍵
  61. {
  62.   delay(10);
  63.   TR1=1;
  64.   if(time1>=10)
  65.   {
  66.    time1=0;
  67.    Lkey=1;   //長(zhǎng)按標(biāo)志置1
  68.   }
  69.   if(key_hh)
  70.   {
  71.    TR1=0;
  72.    time1=0;
  73.    if(Lkey)
  74.    {
  75.     hh=hh+10;
  76.     Lkey=0;
  77.     if(hh>24)
  78.     hh=0;
  79.    }
  80.    else
  81.    {
  82.     hh++;
  83.    }
  84.   }
  85.   if(hh==24)
  86.   hh=0;
  87. }
  88. while(!key_mm)   //調(diào)分鍵
  89. {
  90.   delay(10);
  91.   TR1=1;
  92.   if(time1>=10)
  93.   {
  94.    time1=0;
  95.    Lkey=1;   //長(zhǎng)按標(biāo)志置1
  96.   }
  97.   if(key_mm)
  98.   {
  99.    TR1=0;
  100.    time1=0;
  101.    if(Lkey)
  102.    {
  103.     mm=mm+10; //長(zhǎng)按加10
  104.     Lkey=0;
  105.     if(mm>60)
  106.     mm=0;
  107.    }
  108.    else
  109.    {
  110.     mm++;
  111.    }
  112.   }
  113.   if(mm==60)
  114.   mm=0;
  115. }
  116. while(!key_ss)   //調(diào)秒鍵
  117. {
  118.   delay(10);
  119.   TR1=1;
  120.   if(time1>=10)
  121.   {
  122.    time1=0;
  123.    Lkey=1;   //長(zhǎng)按標(biāo)志置1
  124.   }
  125.   if(key_ss)
  126.   {
  127.    TR1=0;
  128.    time1=0;
  129.    if(Lkey)
  130.    {
  131.     ss=ss+10; //長(zhǎng)按加10
  132.     Lkey=0;
  133.     if(ss>60)
  134.     ss=0;
  135.    }
  136.    else
  137.    {
  138.     ss++;
  139.    }
  140.   }
  141.   if(ss==60)
  142.   ss=0;
  143. }
  144. }
  145.      
  146. void delay(uint ms)
  147. {
  148. uchar i;
  149. while(ms--)
  150. for(i=0;i<123;i++);
  151. }

  152. void write_dat(uchar dat)
  153. {
  154. uchar i;
  155. SCE=0;
  156. for(i=0;i<8;i++)
  157. {
  158.   SCLK=0;
  159.   dat<<=1;
  160.   SDIN=CY;
  161.   _nop_();
  162.   _nop_();
  163.   _nop_();
  164.   SCLK=1;
  165. }
  166. DC=1;
  167. SCE=1;
  168. }

  169. void write_com(dat)
  170. {
  171. DC=0;
  172. write_dat(dat);
  173. }

  174. void set_add(uchar x,uchar y)
  175. {
  176. write_com(x|0x80);//設(shè)置RAM的x地址    1 X?6?4 X?6?3 X?6?2  X?6?1 X?6?0  X?6?9 X?6?8
  177. write_com(y|0x40);//設(shè)置RAM的y地址 0 1 0 0   0 Y?6?0 Y?6?9 Y?6?8
  178. }
  179. void clear_scr()
  180. {
  181. uchar i,j;
  182. for(i=0;i<6;i++) //6行、84列 
  183. {
  184.   write_dat(0x00);
  185.   while(j<84)
  186.   {
  187.   write_dat(0x00);
  188.   j++;
  189.   }
  190.   j=0;
  191. }
  192. }

  193. void disp_HH_MM(uchar x,uchar y,uchar *p )
  194. {
  195. uint i;
  196. set_add(x,y);
  197. {
  198.   for(i=0;i<16;i++)
  199.   {
  200.    write_dat(p[2*i]);
  201.   }
  202. }
  203. set_add(x,y+1);
  204. {
  205.   for(i=0;i<16;i++)
  206.   {
  207.    write_dat(p[2*i+1]);
  208.   }
  209. }
  210. }
  211. void disp_SS(uchar x,uchar y,uchar *s)
  212. {
  213. uint i;
  214. set_add(x,y);
  215. {
  216.   for(i=0;i<8;i++)
  217.   {
  218.    write_dat(s[i]);
  219.   }
  220. }
  221. }

  222. void init_3310()
  223. {
  224. write_com(0x21); //功能設(shè)定,使用擴(kuò)充命令
  225. write_com(0x99); //設(shè)定液晶電壓
  226. write_com(0x20); //使用基本命令
  227. write_com(0x0d); //設(shè)定顯示模式,反白顯示
  228. clear_scr();
  229. }

  230. void main()
  231. {
  232. TimerINTinit();
  233. RES=0;
  234. RES=0;
  235. RES=0;
  236. RES=0;
  237. _nop_();
  238. _nop_();
  239. RES=1;
  240. init_3310();
  241. while(1)
  242. {
  243.   keyscan();
  244.   if(ss==60)
  245.   {
  246.    ss=0;
  247.    mm++;
  248.    if(mm==60)
  249.    {
  250.     mm=0;
  251.     hh++;
  252.    }
  253.    if(hh==24)
  254.    hh=0;
  255.   }
  256.    h_1=hh/10;
  257.    h_0=hh%10;
  258.    m_1=mm/10;
  259.    m_0=mm%10;
  260.    s_0=ss%10;
  261.    s_1=ss/10;
  262.    disp_HH_MM(0x02,0x02,tab+h_1);
  263.    disp_HH_MM(0x12,0x02,tab+h_0);
  264.    disp_HH_MM(0x30,0x02,tab+m_1);
  265.    disp_HH_MM(0x40,0x02,tab+m_0);
  266.    disp_SS(0x40,0x05,tab1+s_1);
  267.    disp_SS(0x48,0x05,tab1+s_0);
  268.    if(!flag)
  269.    disp_HH_MM(0x21,0x02,tab+10);
  270.    else
  271.    disp_HH_MM(0x21,0x02,tab+11);

  272. }
  273. }

  274. void T0INT()interrupt 1
  275. {
  276. TH0=(65536-50000)/256;
  277. TL0=(65536-50000)%256;
  278. time++;
  279. if(time==20)
  280. {
  281.   time=0;
  282.   ss++;
  283.   flag=!flag;
  284. }
  285. }
  286. void T1INT()interrupt 3
  287. {
  288. TH1=(65536-50000)/256;
  289. TL1=(65536-50000)%256;
  290. time1++; //長(zhǎng)按標(biāo)志

  291. }

復(fù)制代碼


"TAB.H"
  1. //16x16 逐列、逆向、陰碼 Microsoft Sans Serif    寬 31   高 25
  2. unsigned char code tab[12][32]=
  3. {

  4. {0x00,0x00,0xE0,0x0F,0xF8,0x3F,0xFC,0x7F,0x1C,0x70,0x0E,0xE0,0x06,0xC0,0x06,0xC0,
  5. 0x06,0xC0,0x06,0xC0,0x0E,0xE0,0x1C,0x70,0xFC,0x7F,0xF8,0x3F,0xE0,0x0F,0x00,0x00,},/*"0",0*/

  6. {0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x38,0x00,0x18,0x00,
  7. 0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},/*"1",1*/

  8. {0x00,0x00,0x10,0xE0,0x18,0xE0,0x1C,0xF0,0x0E,0xD8,0x06,0xD8,0x06,0xCC,0x06,0xCC,
  9. 0x06,0xC6,0x06,0xC6,0x06,0xC3,0x8E,0xC1,0xFC,0xC1,0xFC,0xC0,0x78,0xC0,0x00,0x00,},/*"2",2*/

  10. {0x00,0x00,0x10,0x30,0x1C,0x70,0x1C,0x70,0x0E,0xE0,0x06,0xC0,0x86,0xC1,0x86,0xC1,
  11. 0x86,0xC1,0x86,0xC1,0xCE,0xC3,0xFC,0x63,0x7C,0x7F,0x38,0x3E,0x00,0x1C,0x00,0x00,},/*"3",3*/

  12. {0x00,0x00,0x00,0x0E,0x00,0x0F,0x80,0x0D,0xC0,0x0C,0x60,0x0C,0x60,0x0C,0x30,0x0C,
  13. 0x18,0x0C,0x0C,0x0C,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0x00,0x0C,0x00,0x0C,0x00,0x00,},/*"4",4*/

  14. {0x00,0x00,0x00,0x10,0xE0,0x71,0xFE,0x71,0xFE,0xE1,0x9E,0xC0,0xC6,0xC0,0xC6,0xC0,
  15. 0xC6,0xC0,0xC6,0xC0,0xC6,0xE1,0xC6,0x71,0x86,0x7F,0x06,0x3F,0x00,0x1E,0x00,0x00,},/*"5",5*/

  16. {0x00,0x00,0xE0,0x0F,0xF8,0x3F,0xFC,0x7F,0xBC,0x71,0x8E,0xE1,0xC6,0xC0,0xC6,0xC0,
  17. 0xC6,0xC0,0xC6,0xC0,0xC6,0xE1,0xCE,0x61,0x9C,0x7F,0x1C,0x3F,0x10,0x1E,0x00,0x00,},/*"6",6*/

  18. {0x00,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x80,0x06,0xE0,0x06,0xF0,0x06,0xFC,
  19. 0x06,0x3F,0xC6,0x0F,0xE6,0x03,0xFE,0x01,0x7E,0x00,0x1E,0x00,0x06,0x00,0x00,0x00,},/*"7",7*/

  20. {0x00,0x00,0x00,0x3C,0x38,0x7E,0x7C,0x7E,0xFC,0xE7,0xCE,0xC3,0xC6,0xC1,0x86,0xC1,
  21. 0x86,0xC1,0xC6,0xC1,0xCE,0xC3,0xFC,0xE7,0x7C,0x7E,0x38,0x7E,0x00,0x3C,0x00,0x00,},/*"8",8*/

  22. {0x00,0x00,0xF0,0x10,0xF8,0x71,0xFC,0x73,0x0C,0xE7,0x0E,0xC7,0x06,0xC6,0x06,0xC6,
  23. 0x06,0xC6,0x06,0xC6,0x0E,0xE3,0x1C,0x7B,0xFC,0x7F,0xF8,0x1F,0xE0,0x0F,0x00,0x00,},/*"9",9*/

  24. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x30,0x30,
  25. 0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},/*":",10*/

  26. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  27. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},/*" ",11*/

  28. };

  29. /***************************************************************/
復(fù)制代碼

"TAB1.H"
  1. // 8x8 逐列、逆向、陰碼 Microsoft Sans Serif    字寬 14   字高 12

  2. unsigned char code tab1[10][8]=
  3. {
  4. {0x00,0x7C,0x82,0x82,0x82,0x82,0x7C,0x00,},/*"0",0*/
  5. {0x00,0x00,0x04,0x04,0xFE,0x00,0x00,0x00,},/*"1",1*/
  6. {0x00,0x84,0xC2,0xA2,0xA2,0x92,0x8C,0x00,},/*"2",2*/
  7. {0x00,0x44,0x82,0x92,0x92,0x92,0x6C,0x00,},/*"3",3*/
  8. {0x00,0x20,0x30,0x28,0x24,0xFE,0x20,0x00,},/*"4",4*/
  9. {0x00,0x4E,0x8A,0x8A,0x8A,0xCA,0x72,0x00,},/*"5",5*/
  10. {0x00,0x7C,0xD6,0x92,0x92,0x92,0x64,0x00,},/*"6",6*/
  11. {0x00,0x02,0x82,0x42,0x32,0x0A,0x06,0x00,},/*"7",7*/
  12. {0x00,0x6C,0x92,0x92,0x92,0x92,0x6C,0x00,},/*"8",8*/
  13. {0x00,0x4C,0x92,0x92,0x92,0xD2,0x7C,0x00,},/*"9",9*/
  14. };

復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:218023 發(fā)表于 2018-3-23 22:23 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美五月婷婷 | 这里精品 | 欧美成人精品一区二区男人看 | 激情视频中文字幕 | 欧美一级毛片久久99精品蜜桃 | 久久久性色精品国产免费观看 | 国产小视频在线看 | av 一区二区三区 | 久久99精品国产麻豆婷婷 | 国产a区| 国产日韩一区二区 | 夜夜骑首页| 国产欧美精品一区 | 五月激情婷婷六月 | 国产激情视频网 | 天天干夜夜操 | 99福利视频导航 | 免费国产一区 | 狠狠干网站 | 亚洲欧美日本在线 | 色综网 | 成人精品一区二区三区中文字幕 | 精品一区二区三 | 97人人草| 欧美成人一区二免费视频软件 | 亚洲香蕉| 欧美多人在线 | 国产日批 | 亚洲一区 | 男人天堂网址 | 日韩视频一区二区 | 一区二区精品 | 久久一区二区视频 | 91精品国产欧美一区二区成人 | 欧美激情视频一区二区三区在线播放 | 亚洲国产一区二区在线 | 久久一区二区免费视频 | 欧美在线二区 | 国产成人精品一区二区三区视频 | 国产一区二区三区在线 | 三级视频国产 |