找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1632|回复: 0
打印 上一主题 下一主题
收起左侧

基于mega16单片机1602LCD显示程序,定时亮灯装置

[复制链接]
跳转到指定楼层
楼主

自制定时亮灯装置。单片机程序如下。
  1. // Target : M16
  2. // Crystal: 12.000Mhz

  3. #include <iom16v.h>
  4. #include <macros.h>

  5. #define uchar unsigned char  
  6. #define uint unsigned int  
  7. #define mclk 1000000
  8. //12000000
  9. //8000000
  10. #pragma interrupt_handler uart_rx:12

  11. #define key_port PORTD     
  12. #define key_port_ddr DDRD
  13. #define key_port_pin PIND
  14. uchar WENZI1[]="JIESHOUDAOD: ...."; //WENZI1
  15. uchar WENZI2[]="receiving ... ..."; //WENZI2
  16.   uint FASONGSHUZU[10];                  //SHUJU1
  17. uint x=9;
  18. uchar temn,count;
  19. uchar temtab;
  20. long int i,w,e;
  21. long int jd,k,sz;
  22. int g,s;

  23. uchar rdata,flag=0;//baocun jieshoudao d shuju



  24. void delay (uint ms)
  25. {
  26.           uint i,j;
  27.           for(i=0;i<ms;i++)
  28.           {
  29.                      for (j=0;j<1141;j++);
  30.           }
  31. }

  32. void DelaymS (uint i)
  33. {
  34.           uint j;
  35.           for(;i!=0;i--)
  36.           {
  37.                      for (j=20;j!=0;j--);
  38.           }
  39. }


  40. void uart_init(uint baud)
  41. {
  42. PORTA = 0x00;

  43. DDRA  = 0x01;

  44. UCSRB=0X00;
  45. UCSRA=0X00;//
  46. UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0);//选择UCSRC,异步模式,禁止校验,1位停止位,8为数据位。
  47. baud=mclk/16/baud-1;
  48. UBRRL=baud;
  49. UBRRH=baud>>8;
  50. UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);//接收、发送使能,接收中断使能。
  51. SREG=BIT(7);
  52. DDRD  = 0x3F;//portd6输入,其他输出,显示程序//pd7shuru
  53. DDRB = 0XFF; //输出,显示程序
  54. //DDRD|=0X02;//配置pd1,TXD为输出,通信
  55. DDRC  = 0xFF;//配置C为输出,通信
  56. }
  57. void uart_rx()
  58. {
  59. UCSRB&=~BIT(RXCIE);//jieshou zhongduan guanbi ,
  60. rdata=UDR;
  61. flag=1;
  62. UCSRB|=BIT(RXCIE);//DAKAI JIESHOU ZHOGNDUAN HANSHU
  63. }


  64. void uart_sendB(uchar data)
  65. {
  66. while(!(UCSRA&(BIT(UDRE))));//di5wei=1;DENGDAI JICUNQI WEIKONG
  67. UDR=data;
  68. while(!UCSRA&(BIT(TXC)));//fasong jieshu
  69. UCSRA|=BIT(TXC);
  70. }

  71. void write_com(uchar com)
  72. {
  73.   PORTD &= ~BIT(4);
  74. PORTD &= ~BIT(5); //KONGZHIKOU,PD4,5,3 为RS,R/W,EA。数据位为PB口
  75. PORTB = com; //SHUJUKOU
  76. PORTD |= BIT(3); //
  77. delay(1);
  78. PORTD &= ~BIT(3); //
  79. }
  80. void write_data(uchar data)
  81. {
  82.   PORTD |= BIT(4);
  83. PORTD &= ~BIT(5);
  84. PORTB = data;
  85. PORTD |= BIT(3); //
  86. delay(1);
  87. PORTD &= ~BIT(3);//
  88. }


  89. void shujuchuli(long int  count)
  90. {
  91. uint i,j1,j2,j3,j4,j5,j6;
  92. count=count%100000;
  93.     j1=count/100000;
  94.         j2=count/10000;count=count%10000;   //小数点后第一位 + '0'
  95.         j3=count/1000;count=count%1000;   //小数点后第一位 + '0'
  96.         j4=count/100;count=count%100;
  97.         j5=count/10;count=count%10;
  98.         j6=count;

  99. FASONGSHUZU[0]=j1+0x30;
  100. FASONGSHUZU[1]=j2+0x30;
  101. FASONGSHUZU[2]=j3+0x30;
  102. FASONGSHUZU[3]=j4+0x30;
  103. FASONGSHUZU[4]=j5+0x30;
  104. FASONGSHUZU[5]=j6+0x30;
  105. }



  106. void xianshi1(uchar tab)
  107. {
  108. uint i;
  109.   write_com(0X38);
  110. delay(5);
  111.   write_com(0X01);
  112. delay(5);
  113. write_com(0X0C);
  114. delay(5);
  115. write_com(0X06);
  116. delay(5);
  117. write_com(0X80+0);
  118. delay(5);
  119.   for(i=0;i<16;i++)
  120. {
  121.    write_data(WENZI1[i]);
  122.   delay(5);
  123. }
  124. }



  125. void DISSHUJU(uint num)

  126. {
  127.    uint i;
  128.    write_com(0X80+0X40);
  129.    delay(5);
  130.    for(i=0;i<6;i++)
  131.      {
  132.             write_data(FASONGSHUZU[i]);
  133.            delay(5);
  134.            }
  135. }




  136. void xianshi2(uchar tab)
  137. {
  138. uint i;
  139.   write_com(0X38);
  140. delay(5);  
  141. write_com(0X01);
  142. delay(5);
  143. write_com(0X0C);
  144. delay(5);
  145. write_com(0X06);
  146. delay(5);
  147. write_com(0X80+0);
  148. delay(5);
  149. for(i=0;i<16;i++)
  150. {
  151.    write_data(WENZI2[i]);
  152.   delay(5);
  153. }
  154. }




  155. void YANSHIMIN(uint i)
  156. {
  157.           uint j;
  158.           for(;i!=0;i--)
  159.           {
  160.                      for (j=60;j!=0;j--)
  161.                  {
  162.                  DelaymS (5000);
  163.                  DelaymS (5000);
  164.                  }
  165.           }
  166. }

  167. //************************main***********************
  168. void main (void)                 //程序主函数
  169. {
  170.         uint k,i=8;
  171. uint j=20;
  172. unsigned char tem;
  173.         uart_init(1200);//初始化端口。同时打开串口。可接收串口数据。
  174.         //uart_sendB(i);
  175.         //delay(10);
  176.         //uart_sendB(j);
  177.         //delay(10);

  178.         DelaymS (5000);        
  179.         PORTA=0X00;//DENGMIE
  180.         DelaymS (5000);        
  181.         PORTA=0XFF;//DENGMIE
  182.         //以下,接收按键调整延时时间
  183.         PORTD=PORTD|0X80;//ZHI 1,pd7  
  184.           for(j;j!=0;j--)
  185.           {
  186.         
  187.          tem=key_port_pin&0x80;
  188.         if( tem==0x00)
  189.         i=i++;
  190.         DelaymS (5000);        
  191.                 }                                
  192.         
  193.         //以下,显示,延时
  194.         xianshi1(WENZI1[i]);
  195.         for(i;i!=0;i--)
  196.         {               
  197.         PORTA=0XFF;//DENGMIE
  198.         xianshi2(WENZI2[i]);
  199.                          shujuchuli(i);
  200.                           xianshi1(WENZI1[i]);
  201.                          DISSHUJU(FASONGSHUZU[i]);
  202.                         DelaymS (5000);        
  203.                         
  204.                           YANSHIMIN(60);
  205.                         
  206.                         
  207.                         
  208.         }
  209.         PORTA=0X00;//
  210.         DelaymS (5000);        
  211.         
  212. }

复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表