熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2018-7-7 21:14
正文摘要:最近一個(gè)客戶聯(lián)系到沙鷗,打算對(duì)一個(gè)市面上現(xiàn)有的測(cè)試儀器進(jìn)行升級(jí)改進(jìn),電話初步交流了一下,當(dāng)時(shí)一想,儀器無(wú)非就是探頭加二次電路,應(yīng)該SO EASY,客戶發(fā)來產(chǎn)品資料,于是簡(jiǎn)單調(diào)研了一下這個(gè)儀器,發(fā)現(xiàn)光是這種類 ... |
1. #include <STC15F2K60S2.H> 2. #include <intrins.h> 3. 4. /*7段數(shù)碼段對(duì)應(yīng)的8Bit順序依次為bit7~bit0:abcx_fged 5. --01-- 6. | | 7. 10 02 08 8. | --20-- | 9. 40 04 08 10. | | 11. --80-- 12. */ 13. 14. /*-------------------------------------------------------------- 15. LCD操作相關(guān)的宏定義和函數(shù)聲明 16. ----------------------------------------------------------------*/ 17. #define ComMode 0x52 //4COM,1/3bias 偏壓比 1000 0101 0010 18. //#define ComMode 0x50 //4COM,1/2bias 1000 0101 0000 19. #define RCosc 0x30 //內(nèi)部RC振蕩器(上電默認(rèn))1000 0011 0000 20. #define LCD_on 0x06 //打開LCD顯示 偏壓發(fā)生器1000 0000 0110 21. #define LCD_off 0x04 //關(guān)閉LCD顯示(上電默認(rèn)) 22. #define Sys_en 0x02 //系統(tǒng)振蕩器開 1000 0000 0010 23. #define Ctrl_cmd 0x80 //寫控制命令 1000 24. #define Data_cmd 0xa0 //寫數(shù)據(jù)命令 1010 25. 26. sbit DIPIN =P3^7; //LCD液晶屏DI引腳 27. sbit CLKPIN =P3^6; //LCD液晶屏CLK引腳 28. sbit CSPIN =P3^5; //LCD液晶屏CS引腳 29. 30. //SMS0707B LCD Drive code 31. //Write bit data 寫位數(shù)據(jù) 32. void SendBit_1621(unsigned char sdata,unsigned char cnt) 33. //sdata 的高cnt 位寫入HT1621,高位在前 34. { 35. unsigned char i; 36. for(i=0;i<cnt;i++) 37. { 38. CLKPIN=0; 39. if(sdata&0x80) 40. DIPIN=1; 41. else DIPIN=0; 42. CLKPIN=1; 43. sdata<<=1; 44. } 45. } 46. 47. /*-------------------------------------------------------------------------------------------------------- 48. Name: SendCmd(送命令) 49. 寫入標(biāo)志碼"100"和9位comma命令,由于沒有使用到更改時(shí)鐘輸出等命令 50. 為了編程方便直接將command 的最高位寫"0" 51. ----------------------------------------------------------------------------------------------------------*/ 52. void SendCmd_1621(unsigned char command)//寫命令 53. { //3位標(biāo)志碼 + 9位命令,共12位 54. CSPIN=0; //執(zhí)行一個(gè)下降沿 55. SendBit_1621(0x80,4); 56. //寫入標(biāo)志碼"100"和9位comma命令的最高1位共4位 57. SendBit_1621(command,8); 58. //寫入9位comma命令的后8位,組成1000 xxxx xxxx 59. CSPIN=1; //送數(shù)完成后置高電平 60. } 61. 62. /******------------------------------------------------------------------------- 63. Name: Write_1621(送命令和數(shù)據(jù)程序) 64. 寫入標(biāo)志碼"101"和6位addr地址碼和8位sdata顯示數(shù)據(jù)。 65. ---------------------------------------------------------------------------*******/ 66. void Write_1621(unsigned char addr,unsigned char sdata,unsigned char len)//寫數(shù)據(jù) 67. {//3位標(biāo)志碼 + 6位寫數(shù)據(jù)命令 + 8(4)位數(shù)據(jù),共17位 68. addr<<=2;//高6位有效 69. CSPIN=0; //執(zhí)行一個(gè)下降沿 70. SendBit_1621(0xa0,3); //寫入標(biāo)志碼"101" 寫數(shù)據(jù)命令101 71. SendBit_1621(addr,6); //寫入addr 的高6位 寫數(shù)據(jù)命令xxxx xx 72. SendBit_1621(sdata,len); //寫入8/4位 sdata數(shù)據(jù) len=8/4 73. CSPIN=1;//送數(shù)完成后置高電平 74. } 75. 76. /**------------------------------------------------------------------------- 77. Name: Init_1621(初始化1621) 78. -------------------------------------------------------------------------******/ 79. void LCD_Init() //初始化 80. { //程序輸入100 0+8=9位命令 81. SendCmd_1621(Sys_en); //Sys_en 0x02 系統(tǒng)振蕩器開 100 0 0000 0010 82. SendCmd_1621(RCosc); 83. //RCosc 0x30 內(nèi)部RC振蕩器(上電默認(rèn)) 100 0 0011 0000 84. SendCmd_1621(ComMode); //4COM,1/3bias 100 0 0101 0020 85. SendCmd_1621(LCD_on); 86. //LCD_on 0x06 打開LCD顯示 偏壓發(fā)生器100 0 0000 0110 87. } 88. 89. /*------------------------------------------------------------------------- 90. Name: lcdwd1(點(diǎn)亮1621全部Seg) 91. -------------------------------------------------------------------------*/ 92. void LCDWD1(void) 93. { 94. unsigned char i; 95. unsigned char addr=9;//5位顯示碼寄存器起始地址0x09 96. for(i=0;i<5;i++) 97. { 98. Write_1621(addr,LCD_Buffer[i+1],8); 99. //addr為地址碼,l_data為數(shù)據(jù),8為8位數(shù)據(jù) 100. addr+=2; //順延2個(gè)4位地址碼 101. } 102. } |
很高興你能分享和詳細(xì)說明1621原理,一直不懂怎么下手編程。 |
先看看,應(yīng)該用的著 |
沒有設(shè)計(jì)代碼 |
就需要在COM1-SEG1和SEG2,COM2-SEG1和SEG2, COM3-SEG1和SEG2, COM4-SEG1和SEG2,之間同時(shí)施加交流電壓 SEG1-COM2、SEG1-COM3 |
網(wǎng)上有現(xiàn)成的代碼,移值過來就行了吧。有時(shí)不必什么都懂。有時(shí)我們是做產(chǎn)品,不是搞科研,當(dāng)教授。 |
請(qǐng)問樓主現(xiàn)在還接51內(nèi)核的方案嗎 |
這個(gè)地址到底是怎么看的 |
除了兩處對(duì)應(yīng)不上,講得算是比較清楚的了 |
先看看,后面應(yīng)該用的著 |
先頂起!應(yīng)該是很好的資料 |
蠻詳細(xì)的 感謝分享 |
1元感謝樓主![]() ![]() |
正在研究1621,樓主講得簡(jiǎn)單易懂,學(xué)習(xí)了。 |
不錯(cuò)不錯(cuò)! |
很好的資料,先收藏了 |
圖6和圖7之間那段話應(yīng)該是COM1-SEG1和COM2-SEG1z,這樣才能和圖7對(duì)應(yīng)起來,否則會(huì)讓人產(chǎn)生誤解 |
樓主上面關(guān)于點(diǎn)亮第一個(gè)“8”的段碼有問題 按照?qǐng)D片的顯示應(yīng)該是COM0-SEG1,COM1-SEG0和SEG1, COM2-SEG0和SEG1, COM3-SEG0和SEG1,即1A 1B 1C 1D 1E 1F 1G7個(gè)筆段。 |
Powered by 單片機(jī)教程網(wǎng)