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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3219|回復: 0
打印 上一主題 下一主題
收起左側

HT1621燃氣抄表程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:399111 發表于 2020-1-18 22:30 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人自寫的燃氣炒表程序,,用到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)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区在线免费观看 | 亚洲精品一区二区在线观看 | 狠狠色综合网站久久久久久久 | 日韩欧美在线一区 | 精品国产乱码久久久久久果冻传媒 | 欧美日韩国产精品一区二区 | 一区二区三区免费在线观看 | 久久r免费视频 | 超碰日韩 | 另类视频在线 | 日韩一区二区福利视频 | 在线成人免费视频 | 特黄色一级毛片 | 国产成人午夜高潮毛片 | 宅女噜噜66国产精品观看免费 | 欧美性生活视频 | 超碰97免费在线 | 人人爽人人爽人人片av | 欧美一区二区在线播放 | 一级片在线免费播放 | 亚洲精品视频播放 | 久久中文字幕在线 | 亚洲精品一区二区冲田杏梨 | 国产精品入口 | 久久精品国产精品青草 | 欧美国产精品久久久 | 国产亚洲一区二区精品 | 国产精品久久久久久久久 | 97成人免费 | 一级一级毛片免费看 | 日韩成人在线观看 | 欧美激情精品久久久久 | 久久成人精品视频 | 黄色欧美在线 | 亚洲精品国产偷自在线观看 | 不卡一区二区在线观看 | 精品免费国产 | 黄色欧美视频 | 久久久夜色精品亚洲 | 日韩视频国产 | 亚洲区一 |