找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1765|回复: 2
收起左侧

STC15F2K60S2单片机HT1621b芯片源代码

[复制链接]
ID:50487 发表于 2022-3-22 08:42 | 显示全部楼层 |阅读模式
为了大家少走弯路,提供源代码下载,亲自测试过,没任何问题

单片机源程序如下:
  1. #include "HT1621B.H"
  2. #include <STC15F2K60S2.H>
  3. #include "string.h"
  4. uchar table[]={
  5. 0x0f,0x0f,0x0f,0x0f,
  6. 0x0f,0x0f,0x0f,0x0f,
  7. 0x0f,0x0f,0x0f,0x0f,
  8. 0x0f,0x0f,0x0f,0x0f,0x0f,};
  9. uchar table1[]={
  10. 0xff,0xff,0xff,0xff,
  11. 0xff,0xff,0xff,0xff,0xf0,};
  12. uchar table2[]={
  13. 0xe6,0xf8,0xb0,0xb0,0xbe,};
  14. uchar table3[]={
  15. 0x01,0x03,0x07,0x0f,};
  16. uchar table4[]={
  17. 0xde,0x22,0xfe,0x22,
  18. 0x0e,0x22,0xfa,0x22,
  19. 0xda,0x22,0xc6,0x22,
  20. 0x5e,0x22,0x7c,0x22,
  21. 0x06,0x22,0xbe,0x22 ,};
  22. uchar table5[]={
  23. 0xbe,0x06,0x7c,0x5e,
  24. 0xc6,0xda,0xfa,0x0e,
  25. 0xfe,0xde,};


  26. //写数据函数
  27. void wr_data(uchar da,uchar cnt)
  28. {
  29.     uchar i;
  30.     for(i=0;i<cnt;i++)
  31.     {
  32.         wr=0;
  33.         delayus(10);
  34.         dat=(bit)(da&0x80);/*if(da>=0x80)
  35.             dat=1;
  36.         else
  37.             dat=0;*/
  38.         delayus(10);
  39.         wr=1;
  40.         delayus(10);
  41.         da<<=1;
  42.     }
  43. }
  44. //清屏
  45. void wr_clearlcd()
  46. {
  47.     uchar i;
  48.     cs=0;
  49.     delayus(10);
  50.     wr_data(0xa0,3);
  51.     wr_data(0x00<<2,6);
  52.     for(i=0;i<16;i++)
  53.     {
  54.         wr_data(0x00,8);
  55.     }
  56.     cs=1;
  57.     delayus(10);
  58. }
  59. //写命令函数
  60. void wr_com(uchar com)
  61. {
  62.     cs=0;
  63.     delayus(10);
  64.     wr_data(0x80,4);
  65.     wr_data(com,8);
  66.     cs=1;
  67.     delayus(10);
  68. }
  69. //写连续地址
  70. void wr_all_lcd(uchar add,uchar *p,uchar cnt)
  71. {
  72.     uchar i;
  73.     cs=0;
  74.     delayus(10);
  75.     wr_data(0xa0,3);
  76.     wr_data(add<<2,6);
  77.     for(i=0;i<cnt;i++)
  78.     {
  79.         wr_data(*p,8);
  80.         p++;
  81.     }
  82.     cs=1;
  83.     delayus(10);
  84. }
  85. //初始化
  86. void lcd_init()
  87. {
  88.     cs=1;
  89.     wr=1;
  90.     dat=1;
  91.     delayms(20);
  92.     wr_com(BIAS);
  93.     wr_com(RC256);
  94.     wr_com(SYSDIS);
  95.     wr_com(WDTDIS);
  96.     wr_com(SYSEN);
  97.     wr_com(LCDON);
  98.     wr_clearlcd();
  99. }
  100. char HT1621_CHAR_A(char cha,char d)
  101. {
  102. char r_cha=0;
  103. switch(cha)
  104.         {
  105.         case 0: r_cha=1<<7|1<<6|1<<5|1<<4|1<<3|1<<1;               
  106.                     break;
  107.         case 1: r_cha=1<<3|1<<1;        
  108.                                 break;
  109.         case 2: r_cha=1<<7|1<<5|1<<4|1<<3|1<<2;        
  110.                                 break;
  111.         case 3: r_cha=1<<7|1<<4|1<<3|1<<2|1<<1;        
  112.                                 break;
  113.         case 4: r_cha=1<<6|1<<3|1<<2|1<<1;        
  114.                                 break;
  115.         case 5: r_cha=1<<7|1<<6|1<<4|1<<2|1<<1;        
  116.                                 break;
  117.         case 6: r_cha=1<<7|1<<6|1<<5|1<<4|1<<2|1<<1;        
  118.                                 break;
  119.         case 7: r_cha=1<<7|1<<3|1<<1;        
  120.                                 break;
  121.         case 8: r_cha=1<<7|1<<6|1<<5|1<<4|1<<3|1<<2|1<<1;        
  122.                                 break;
  123.         case 9: r_cha=1<<7|1<<6|1<<4|1<<3|1<<2|1<<1;        
  124.                                 break;
  125.         case '_': r_cha=0;
  126.                           break;        
  127.   default:break;                                       
  128.         }
  129.         if(d=='.')r_cha|=1;
  130. return r_cha;
  131. }
  132. char HT1621_CHAR_B(char cha,char d)
  133. {
  134. char r_cha=0;
  135. switch(cha)
  136.         {
  137.         case 0: r_cha=1<<7|1<<5|1<<3|1<<2|1<<1|1;                        
  138.                     break;
  139.         case 1: r_cha=1<<7|1<<5;        
  140.                                 break;
  141.         case 2: r_cha=1<<7|1<<6|1<<3|1<<1|1;        
  142.                                 break;
  143.         case 3: r_cha=1<<7|1<<6|1<<5|1<<3|1;               
  144.                                 break;
  145.         case 4: r_cha=1<<7|1<<6|1<<5|1<<2;               
  146.                                 break;
  147.         case 5: r_cha=1<<6|1<<5|1<<3|1<<2|1;        
  148.                                 break;
  149.         case 6: r_cha=1<<6|1<<5|1<<3|1<<2|1<<1|1;        
  150.                                 break;
  151.         case 7: r_cha=1<<7|1<<5|1<<3;        
  152.                                 break;
  153.         case 8: r_cha=1<<7|1<<6|1<<5|1<<4|1<<3|1<<2|1<<1|1;        
  154.                                 break;
  155.         case 9: r_cha=1<<7|1<<6|1<<5|1<<4|1<<3|1<<2|1;               
  156.                                 break;
  157.         case '_': r_cha=0;
  158.                           break;
  159.   default:break;                                
  160.         }
  161.         if(d=='.')r_cha|=1<<4;
  162. return r_cha;
  163. }
  164. char HT1621_CHAR_C(char cha,char d)
  165. {
  166. char r_cha=0;
  167. unsigned char numtab[16]={0xF5,0x05,0xD3,0x97,0x27,0xB6,0xF6,0x15,0xF7,0xB7,0x77,0xE6,0xF0,0xC7,0xF2,0x72};
  168. r_cha=numtab[cha];
  169. if(d=='.')r_cha|=1<<3;
  170. return r_cha;
  171. }

  172. char HT1621_CHAR_D(char cha,char d)
  173. {
  174. char r_cha=0;
  175. unsigned char code numtab[16]={0x5F,0x50,0x3D,0x79,0x72,0x6B,0x6F,0x51,0x7F,0x7B,0x77,0x6E,0x0F,0x7C,0x2F,0x27};
  176. r_cha=numtab[cha];
  177. if(d=='.')r_cha|=1<<7;
  178. return r_cha;
  179. }

  180. extern int test,test_cnt;

  181. void HT1621_DIP(char *d,char *x)
  182. {
  183. char HT1621_DIP_TABLE[16];        
  184. HT1621_DIP_TABLE[0]=HT1621_CHAR_A(d[0],x[0]) ;
  185. HT1621_DIP_TABLE[1]=HT1621_CHAR_B(d[1],x[1]);        
  186. HT1621_DIP_TABLE[2]=HT1621_CHAR_B(d[2],x[2]);        
  187. HT1621_DIP_TABLE[3]=HT1621_CHAR_B(d[3],x[3]);        
  188. HT1621_DIP_TABLE[4]=HT1621_CHAR_C(d[4],x[4]);
  189. HT1621_DIP_TABLE[5]=HT1621_CHAR_C(d[5],x[5]);
  190. HT1621_DIP_TABLE[6]=HT1621_CHAR_C(d[6],x[6]);        
  191. HT1621_DIP_TABLE[9]=HT1621_CHAR_D(d[7],x[7]);        
  192. HT1621_DIP_TABLE[8]=HT1621_CHAR_D(d[8],x[8]);        
  193. HT1621_DIP_TABLE[7]=HT1621_CHAR_D(d[9],x[9]);
  194. HT1621_DIP_TABLE[10]=HT1621_CHAR_C(d[10],x[10]);
  195. HT1621_DIP_TABLE[11]=HT1621_CHAR_C(d[11],x[11]);
  196. HT1621_DIP_TABLE[12]=HT1621_CHAR_C(d[12],x[12]);        
  197. HT1621_DIP_TABLE[15]=HT1621_CHAR_D(d[13],x[13]);        
  198. HT1621_DIP_TABLE[14]=HT1621_CHAR_D(d[14],x[14]);        
  199. HT1621_DIP_TABLE[13]=HT1621_CHAR_D(d[15],x[15]);
  200.         
  201. wr_all_lcd(0,HT1621_DIP_TABLE,16);
  202. }

  203. char xdata HT1621_CHAR[16];
  204. char xdata HT1621_D[16];

  205. void HT1621_APP(void)
  206. {
  207.         HT1621_DIP(HT1621_CHAR,HT1621_D);
  208.   memset(HT1621_D,0,16);
  209.         memset(HT1621_CHAR,0,16);               
  210. }
  211. void HT1621_DOWN(char a,char b,char c,char d,char d1,char d2,char d3,char d4)
  212. {
  213. HT1621_CHAR[0]=d;
  214. HT1621_CHAR[1]=c;        
  215. HT1621_CHAR[2]=b;
  216. HT1621_CHAR[3]=a;
  217. HT1621_D[0]=d4;        
  218. HT1621_D[1]=d3;
  219. HT1621_D[2]=d2;
  220. HT1621_D[3]=d1;
  221. }
  222. void HT1621_MI(char a,char b,char c,char d,char e,char f,char d1,char d2,char d3,char d4,char d5,char d6)
  223. {
  224. HT1621_CHAR[9]=f;
  225. HT1621_CHAR[8]=e;        
  226. HT1621_CHAR[7]=d;
  227. HT1621_CHAR[6]=c;        
  228. HT1621_CHAR[5]=b;
  229. HT1621_CHAR[4]=a;
  230. HT1621_D[9]=d6;
  231. HT1621_D[8]=d5;
  232. HT1621_D[7]=d4;
  233. HT1621_D[6]=d3;        
  234. HT1621_D[5]=d2;
  235. HT1621_D[4]=d1;               
  236. }
  237. void HT1621_UP(char a,char b,char c,char d,char e,char f,char d1,char d2,char d3,char d4,char d5,char d6)
  238. {
  239. HT1621_CHAR[15]=f;
  240. HT1621_CHAR[14]=e;        
  241. HT1621_CHAR[13]=d;
  242. HT1621_CHAR[12]=c;        
  243. HT1621_CHAR[11]=b;
  244. HT1621_CHAR[10]=a;
  245. HT1621_D[15]=d6;
  246. HT1621_D[14]=d5;
  247. HT1621_D[13]=d4;
  248. HT1621_D[12]=d3;        
  249. HT1621_D[11]=d2;
  250. HT1621_D[10]=d1;        
  251. }
复制代码
51hei.png
上图2个文件下载 c代码(请自行移植到各单片机平台):
HT1621.zip (2.11 KB, 下载次数: 67)

评分

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

查看全部评分

回复

使用道具 举报

ID:230742 发表于 2022-3-24 21:14 | 显示全部楼层
大佬给弄个电路图啥的,谢谢了。
回复

使用道具 举报

ID:368534 发表于 2022-4-4 16:56 | 显示全部楼层
非常感谢楼主的奉献。项目可以参考一下,省的走弯路。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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