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

標題: HT1621燃氣抄表程序 [打印本頁]

作者: YYZZ052    時間: 2020-1-18 22:30
標題: HT1621燃氣抄表程序
本人自寫的燃氣炒表程序,,用到HT1621驅動顯示屏,希望能幫到大家

單片機源程序如下:
  1. //ICC-AVR application builder : 2005-3-3 17:58:11
  2. // Target : M8
  3. // Crystal: 4.0000Mhz
  4. //1621引線:CS:PB4  WR:PB5  Data:PB3

  5. #include <iom8v.h>
  6. #include <macros.h>
  7. #include <eeprom.h>

  8. #define WR      0B00100000//時鐘線
  9. #define DATA    0B00001000//數據線
  10. #define CS      0b00010000//片選線
  11. #define P       0x80      
  12. #define data_length 8
  13. const char   seg_tab[]={0x5f,0x06,0x6b,0x2f,0x36,0x3d,0x7d,0x07,0x7f,0x3f,
  14.                         0x77,0x7c,0x59,0x6e,0x79,0x71,0x58,0x76,0x00};
  15. unsigned char disbuff[6] ={0,0,0,0,0,0};//對應LCD的6位
  16. unsigned char p1 =0;
  17. unsigned char p2 =0;


  18. unsigned long int time =0;//每一毫秒加1
  19. //1621的顯存是4位*32的,故用16*8位的寄存器就能滿足要求奇數顯存放高4位,偶數放低4位
  20. /*****************************************************************/
  21.    //1621初始化命令
  22. const char init_tab[]={
  23.                                                 0b00000001,//打開系統振蕩器命令
  24.                              0b00000011,//打開LCD偏壓發生器命令
  25.                                         0b00000101,//WDT 溢出標志輸出失效命令
  26.                                        0b00000110,//時基輸出使能命令
  27.                                        0b00011000,//系統時鐘源片內RC振蕩器命令
  28.                                        0b00101001,//LCD1/3偏壓選項4個公共口命令
  29.                                        //0b01000000,//聲音頻率4KHz命令
  30.                                        //0b00001001,//打開聲音輸出命令
  31.                                        0b10100000,//時基/WDT 時鐘輸出1Hz命令
  32.                                        0b10001000 //使/IRQ 輸出有效命令
  33.                                           };
  34.        
  35.        
  36. void send_data(unsigned char data_bus,unsigned char loop);
  37. void delayns(void);
  38. void display(void);
  39. void display_init(void);
  40. void votlageget(void);
  41. void delay(int temp);
  42. void port_init(void)
  43. {
  44. PORTB = 0xFF;
  45. DDRB  = 0B11111000;
  46. PORTC = 0x00; //m103 output only
  47. DDRC  = 0x00;
  48. PORTD = 0xFF;
  49. DDRD  = 0XFF;
  50. }
  51. void timer1_init(void)
  52. {
  53. TCCR1B = 0x00; //stop
  54. TCNT1H = 0xFE; //setup
  55. TCNT1L = 0x0C;
  56. OCR1AH = 0x01;
  57. OCR1AL = 0xF4;
  58. OCR1BH = 0x01;
  59. OCR1BL = 0xF4;
  60. ICR1H  = 0x01;
  61. ICR1L  = 0xF4;
  62. TCCR1A = 0x00;
  63. TCCR1B = 0x02; //start Timer
  64. }

  65. #pragma interrupt_handler timer1_ovf_isr:9
  66. void timer1_ovf_isr(void)     //每毫秒中斷一次
  67. {
  68. //TIMER1 has overflowed
  69. TCNT1H = 0xFE; //reload counter high value
  70. TCNT1L = 0x0C; //reload counter low value
  71. time ++;

  72. disbuff[5] =time&0x0f;
  73. disbuff[4] =(time>>4)&0x0f;
  74. disbuff[3] =(time>>8)&0x0f;
  75. disbuff[2] =(time>>12)&0x0f;
  76. disbuff[1] =(time>>16)&0x0f;
  77. disbuff[0] =(time>>20)&0x0f;

  78. display();  //刷新1621的緩存
  79. }

  80. //***********************************************************************/
  81. void display_init(void)
  82. {
  83.   unsigned char t;
  84.   PORTB &=~CS;
  85.   send_data(0b10000000,3);//送3位命令模式代碼100
  86.   for(t=0;t<=7;t++)
  87.   {
  88.    send_data(init_tab[t],9);//送9位命令代碼
  89.   }
  90.   PORTB |=CS;
  91.   PORTB |=WR;
  92. }

  93. //***********************************************************************/
  94. void display(void)
  95. {
  96.   unsigned char t;
  97.   unsigned char seg_temp;
  98.   
  99.   PORTB &=~CS;
  100.   PORTB &=~WR;
  101.   send_data(0b10100000,3);//送3位“寫 ”模式命令代碼101
  102.   send_data(0,6);//送6位首地址00h
  103.   for(t=0;t<=5;t++)
  104.   {
  105.     seg_temp =seg_tab[disbuff[t]];
  106.   
  107.     send_data(seg_temp,data_length);//向顯存送數據
  108.   }
  109.   PORTB |=CS;
  110.   PORTB |=WR;
  111. }

  112. //***********************************************************************/

  113. void send_data(unsigned char data_temp,unsigned char loop)
  114. {
  115.   for(;loop!=0;loop--)
  116.   {
  117.     delayns();
  118.     PORTB &=~WR;
  119.     delayns();
  120.   if((data_temp&0b10000000)==0)
  121.   {
  122.     PORTB &=~DATA;
  123.   }
  124.   else
  125.   {
  126.     PORTB |=DATA;
  127.   }
  128.     data_temp=(data_temp<<1);
  129.     PORTB |=WR;
  130.   }
  131. }
  132. //~~~~~~~~~~~~~~~~~~~~~`
  133. void delayns(void)
  134. {
  135.   asm("nop");
  136.   asm("nop");
  137.   asm("nop");
  138.   asm("nop");
  139.   asm("nop");
  140.   asm("nop");
  141. }

  142. //call this routine to initialize all peripherals
  143. void init_devices(void)
  144. {
  145. //stop errant interrupts until set up
  146. CLI(); //disable all interrupts
  147. port_init();
  148. timer1_init();
  149. TIMSK = 0x04; //timer interrupt sources
  150. SEI(); //re-enable interrupts
  151. }

  152. void main(void)
  153. {
  154.   init_devices();  //單片機初始化

  155.   display_init();  //1621初始化
  156.   while(1)
  157.   {
  158.     ;
  159.   }
  160. }
復制代碼

所有資料51hei提供下載:
ht1621.rar (768.63 KB, 下載次數: 24)







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人啊啊啊 | 日韩中文字幕一区二区 | 黄色一级电影免费观看 | 久久毛片| 国产精品一区一区三区 | 国产美女视频一区 | 国产综合精品一区二区三区 | 日韩三级一区 | 欧美一级二级三级视频 | 欧美在线一区二区三区 | 国产区免费视频 | 日本精品视频一区二区 | 黄色毛片网站在线观看 | h视频在线观看免费 | 成人av免费网站 | 免费视频一区二区三区在线观看 | 国产成人99久久亚洲综合精品 | 91精品国产综合久久久动漫日韩 | 在线视频国产一区 | 国产精品久久久久久久久久久久午夜片 | 亚洲欧美日韩电影 | 亚洲欧美激情网 | 视频一区中文字幕 | 国产精品久久久久久久久久 | 中文字幕 在线观看 | 国产精品视频一二三区 | 一区二区三区亚洲 | 99精品视频在线 | 2019天天操 | 免费成人高清在线视频 | 国产精品国产a级 | 欧美激情五月 | 欧美日本韩国一区二区 | www.黄色在线观看 | 欧美成人一区二区三区 | 一区二区三区四区在线视频 | 91在线视频观看 | 久久国内精品 | 日韩国产一区二区 | 黄色在线免费观看 | 99一区二区 |